pronama3.hsp

sample\pronama3d\pronama3.hsp » Plain Format

#include "hgimg4.as"
#packopt name pronama3
#packopt xsize 960
#packopt ysize 640

	;	暮井 慧(プロ生ちゃん) 3D model (C) Pronama LLC
	;
	;	HGIMG4対応 HSP3用スクリプトサンプル
	;	※このスクリプト及びサンプルデータは、ライセンス規約のもと
	;	 自作ソフトで自由にお使い頂けます
	;	※詳しくは、 https://kei.pronama.jp/
	;
	;	背景キューブマップ素材(res/cubesky.png)は、
	;	http://www.custommapmakers.org/
	;	で公開されている、Colin Lowndes氏のデータを使用させて頂きました。
	;

	title "HGIMG4 Test"

#define GRP_SKY $8000

	gpreset
	setreq SYSREQ_LOGWRITE,1		; 終了時にログを出力
	setcls CLSMODE_SOLID, $404040

	gpload id_model,"res/pronamachan"		; モデル読み込み

	setscale id_model, 0.025,0.025,0.025

	gpaddanim id_model,"WALK00_F"			; アニメーションクリップを設定
	gpact id_model,"WALK00_F"			; アニメーションクリップを再生

	;setalpha id_model,128

	sx=960:sy=640:id_render=1
	buffer id_render,sx,sy,screen_offscreen
	sdx=512:sdy=512:id_shadow=2
	buffer id_shadow,sdx,sdy,screen_offscreen

	gpusermat id_cubemat, "res/shaders/skybox.vert", "res/shaders/skybox.frag"
	gpmatprmt id_cubemat, "u_diffuseTexture", "res/cubesky.png", GPOBJ_MATOPT_NOMIPMAP|GPOBJ_MATOPT_CUBEMAP
	gpmatprm4 id_cubemat, "u_voffset", 0,8.0,0,0

	gpbox id_box,-30,-1, id_cubemat
	setpos id_box,0,3,0

	setobjrender id_box, GRP_SKY
	setobjrender GPOBJ_CAMERA, -1

	gpscrmat id_texmat, id_shadow, GPOBJ_MATOPT_NOLIGHT|GPOBJ_MATOPT_NOMIPMAP|GPOBJ_MATOPT_MIRROR
	gpfloor id_floor, 8,8, -1,id_texmat	; 床ノードを追加
	setalpha id_floor,128

	gpnull id_camera
	gpcamera id_camera, 45.0, 1.0, 0.5, 768

	camx=0.0:camy=3.0:camz=3.0

	gsel 0
*main

	;	タッチでカメラ位置を動かす
	if dragmd {	; ドラッグ中
		getkey a,1
		if a=1 {
			camx=0.05*(mousex-dragx)+cx
			camy=0.05*(mousey-dragy)+cz
		} else {
			dragmd=0
		}
	} else {	; ドラッグなし
		getkey a,1
		if a {
			cx=camx:cz=camz
			dragx=mousex:dragy=mousey
			dragmd=1
		}
	}


	;	カーソルキーでカメラ位置を動かす
	if key&1 : camx -=0.2
	if key&4 : camx +=0.2
	if key&8 : camz +=0.2
	if key&2 : camz -=0.2


	;addang id_model,0,0.02		; ノード回転

	gosub *render

	await 1000/60			; 待ち時間

	goto *main

*render
	stick key,15+64
	if key&128 : end

	gpusecamera id_camera			; 使用するカメラを選択する
	gpcnvaxis dx,dy,dz,0,-3,3, 3
	;setpos id_camera, dx,dy,dz
	setpos id_camera, dx*0.8,dy*0.8,dz*0.8

	;setpos id_camera, camx,-camy,camz		; カメラ位置を設定
	gplookat id_camera, 0,0,0		; カメラから指定した座標を見る

	gsel id_shadow
	redraw 0			; 描画開始
	gpdraw GPDRAW_OPT_DRAWSCENE|GPDRAW_OPT_DRAWSCENE_LATE	; シーンの描画
	redraw 1			; 描画終了

	gpusecamera GPOBJ_CAMERA		; 使用するカメラを選択する
	setpos GPOBJ_CAMERA, camx,camy,camz		; カメラ位置を設定
	gplookat GPOBJ_CAMERA, 0,1.8,0		; カメラから指定した座標を見る

	gsel id_render
	redraw 0			; 描画開始
	gpdraw				; シーンの描画
	redraw 1			; 描画終了

	gsel 0
	redraw 0			; 描画開始

	gmode 0
	pos 0,0:celput id_render

	;pos 0,0:celput id_shadow,0,0.25,0.25

	color 255,255,255
	pos 8,8:mes "HGIMG4 sample"

	redraw 1			; 描画終了
	return