#include "hgimg4.as" #include "mod_gputil.as" ; gpnodeinfo sample ; 珠音(たまね)3D modelのモデル階層を表示 ; (mod_gputilモジュールのgptree_getを使用することで全階層を取得できます) ; 階層の一部(asi_L_)を取り出し座標を取得 ; title "HGIMG4 Test" gpreset setcls CLSMODE_SOLID, $404040 gpload id_model,"res/tamane2" ; モデル読み込み sc = 0.01 ; モデルのスケール setscale id_model, sc, sc, sc ;setpos id_model, 2,0,0 gpfloor id_floor, 8,8, $00ffff ; 床ノードを追加 gpbox id_box, 0.2 setpos GPOBJ_CAMERA, 0,1,5 ; カメラ位置を設定 gpact id_model button "TREE",*view_tree nodename = "asi_L_" ; 取得するノード名 infonode = 0 x=0.0:y=0.0:z=0.0 *main stick key,15 if key&128 : end redraw 0 ; 描画開始 ; カーソルキーでカメラ位置を動かす if key&1 : addpos GPOBJ_CAMERA, -0.2, 0 if key&4 : addpos GPOBJ_CAMERA, 0.2, 0 if key&8 : addpos GPOBJ_CAMERA, 0, 0 , 0.2 if key&2 : addpos GPOBJ_CAMERA, 0, 0 , -0.2 gplookat GPOBJ_CAMERA, 0,1.2,0 ; カメラから指定した座標を見る ;addang id_model,0,0.02 ; ノード回転 gpdraw ; シーンの描画 ; 特定の階層をノードとして取り出す gpnodeinfo infonode,id_model, GPNODEINFO_NODE, nodename if infonode>0 { getscale id_model,myscx,myscy,myscz getpos id_model,myx,myy,myz getang id_model,myax,myay,myaz getpos infonode,x,y,z getang infonode,ax,ay,az gpcnvaxis x,y,z, x,y,z, 2 x*=myscx:y*=myscy:z*=myscz fvset fv, -myax,-myay,-myaz : fvdir fv, x,y,z myx+=fv(0):myy+=fv(1):myz+=fv(2) setpos id_box,myx,myy,myz color 255,255,255 pos 80,0:mes nodename+"("+x+","+y+","+z+")" setang id_box,myax,myay,myaz addang id_box,ax,ay,az } redraw 1 ; 描画終了 await 1000/60 ; 待ち時間 addang id_model, 0,0.01,0 goto *main *view_tree sdim s1,256 gptree_get s1,id_model dialog s1 goto *main