思い通りにいく部分と行かない部分があるようですが、どなたかの参考になれば幸いです。
お気づきの点あれば、ご意見ください。
/* 物理設定のテスト spaceshipモデルを使用した。 モデル内部でMESHが分かれているようなので、ルートノードのみに物理設定がされる。 モデル内で親子関係が設定されていないMESHは分離する。 読み込むモデルデータによって挙動が変わるところがある。 */ #include "hgimg4.as" #include "mod_gputil.as" chdir dir_exe+"\\sample\\hgimg4" gpreset setcls CLSMODE_SOLID, $000000 ; 画面クリア設定 gpload id_ufo1,"res/sphaceship" ;UFO1 物理設定なし setscale id_ufo1,1.5,1.5,1.5 ;スケール1.5倍 setpos id_ufo1,15,0,0 ;右のUFO setangr id_ufo1,0,-64 ;90度回転 gpload id_ufo2,"res/sphaceship" ;UFO2 物理設定 GPPBIND_MESH setscale id_ufo2,2,2,2 ;スケール2倍 setpos id_ufo2,0,0,0 ;真ん中のUFO setangr id_ufo2,0,-64 ;90度回転 gppbind id_ufo2,1,0.5,GPPBIND_MESH ;★メッシュのスケールが無視される⇒モデルによって違う★バウンディングボックスにはスケールが適用される ;★モデルデータによってスケールが適用されたりされなかったり[spaceship]は正常、[duck]は異常、[tamane]も異常 ;gppbind id_ufo2,1,0.5 ;★GPPBID_MESHを指定しない場合、円形が適用されるが、全ノードがバラバラに離れない setcoli id_ufo2,0,0 ;コリジョン設定 gpload id_ufo3,"res/sphaceship" ;UFO3 物理設定 GPPBIND_MESH setscale id_ufo3,3,3,3 ;スケール3倍 setpos id_ufo3,-15,0,0 ;左のUFO setangr id_ufo3,0,-64 ;90度回転 gppbind id_ufo3,0,0.5,GPPBIND_MESH ;重さゼロ→スケール有効 setcoli id_ufo3,0,0 ;コリジョン設定 gpload id_ufo4,"res/sphaceship" ;UFO4 物理設定 GPPBIND_MESH setscale id_ufo4,4,4,4 ;スケール4倍 setpos id_ufo4,0,15,0 ;上のUFO setangr id_ufo4,0,-64 ;90度回転 gppbind id_ufo4,1,0.5,GPPBIND_MESH ;重さあり→スケール有効(キネマティック有効の場合) setcoli id_ufo4,0,0 ;コリジョン設定 gppset id_ufo4,GPPSET_KINEMATIC,1 ;キネマティック設定有効(重さゼロだと動かない、他ノードは動く、、) gptexmat id_texmat ,"res/qbox.png" ;テクスチャマテリアル作成 gpbox id_box,50,$FF0000,id_texmat ;床用のbox setpos id_box,0,-50,0 setcoli id_box,0,0 ;コリジョン設定 gppbind id_box,0,0.5,GPPBIND_MESH ;重さゼロ pos 0,0 button "TREE",*view_tree *main redraw 0 stick keys,1+2+4+8 if keys&2{ addang id_ufo1,-0.1,0,0;ufo1 回転テスト(当然動く) addang id_ufo2,-0.1,0,0;ufo2 回転テスト(当然動かない、他ノードは動く、、) addang id_ufo3,-0.1,0,0;ufo3 回転テスト(当然動かない、他ノードは動く、、) addang id_ufo4,-0.1,0,0;ufo4 回転テスト(当然動く) } if keys&4{ addpos id_ufo1, 0.1,0,0;ufo1 移動テスト(当然動く) addpos id_ufo2, 0.1,0,0;ufo2 移動テスト(当然動かない、他ノードは動く、、) addpos id_ufo3, 0.1,0,0;ufo3 移動テスト(当然動かない、他ノードは動く、、) addpos id_ufo4, 0.1,0,0;ufo4 移動テスト(当然動く) } gpdraw ,GPDRAW_OPT_DEBUG_PHY pos 0,24:color 255,255,255 mes "HSPのバージョン番号は" + strf("%4x", hspver) ;テスト実行環境は3.7beta6 mes "getpos" getpos id_ufo1,x,y,z:mes "ufo1:"+x+":"+y+":"+z ;右ufo1→正しい値を返す(物理なし) getpos id_ufo2,x,y,z:mes "ufo2:"+x+":"+y+":"+z ;中ufo2→正しい値を返す(物理あり、重さあり) getpos id_ufo3,x,y,z:mes "ufo3:"+x+":"+y+":"+z ;左ufo3→★誤った値を返す(物理あり、重さゼロ) getpos id_ufo4,x,y,z:mes "ufo4:"+x+":"+y+":"+z ;上ufo4→★誤った値を返す(物理あり、重さあり、キネマティック) mes " " mes "getang" getang id_ufo1,x,y,z:mes "ufo1:"+x+":"+y+":"+z ;右ufo1→正しい値を返す(物理なし) getang id_ufo2,x,y,z:mes "ufo2:"+x+":"+y+":"+z ;中ufo2→正しい値を返す(物理あり、重さあり) getang id_ufo3,x,y,z:mes "ufo3:"+x+":"+y+":"+z ;左ufo3→★誤った値を返す(物理あり、重さゼロ) getang id_ufo4,x,y,z:mes "ufo4:"+x+":"+y+":"+z ;上ufo4→★誤った値を返す(物理あり、重さあり、キネマティック) mes " " mes "getscale" getscale id_ufo1,x,y,z:mes "ufo1:"+x+":"+y+":"+z ;右ufo1→正しい値を返す(物理なし) getscale id_ufo2,x,y,z:mes "ufo2:"+x+":"+y+":"+z ;中ufo2→★誤った値を返す(物理あり、重さあり) getscale id_ufo3,x,y,z:mes "ufo3:"+x+":"+y+":"+z ;左ufo3→★誤った値を返す(物理あり、重さゼロ) getscale id_ufo4,x,y,z:mes "ufo4:"+x+":"+y+":"+z ;上ufo4→★誤った値を返す(物理あり、重さあり、キネマティック) mes " " mes "getquat" getquat id_ufo1,x,y,z,w:mes "ufo1:"+x+":"+y+":"+z+":"+w ;右ufo1→正しい値を返す(物理なし) getquat id_ufo2,x,y,z,w:mes "ufo2:"+x+":"+y+":"+z+":"+w ;中ufo2→正しい値を返す(物理あり、重さあり) getquat id_ufo3,x,y,z,w:mes "ufo3:"+x+":"+y+":"+z+":"+w ;左ufo3→★誤った値を返す(物理あり、重さゼロ) getquat id_ufo4,x,y,z,w:mes "ufo4:"+x+":"+y+":"+z+":"+w ;上ufo4→★誤った値を返す(物理あり、重さあり、キネマティック) //circleテスト(ver3.7beta6) circle 0,500,50,550,0 circle 50,500,100,550,1 //マウスホイールテスト(ver3.7beta6) temp_w=mousew mes ""+temp_w //ローカル座標の取得テスト(ver3.7beta6) gpnodeinfo var,id_ufo1,GPNODEINFO_NODE,"pPropulsion" getwork var,x,y,z mes "ノード名 pPropulsionのlocal座標:"+x+":"+y+":"+z setpos var,x,y,z redraw 1:await 1000/60 goto *main *view_tree sdim s1,256 gptree_get s1,id_ufo1 dialog s1 goto *main