HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0824
ななしさん。HGIMG3のsetxinfoを使ってボーンを動かしたい2未解決


ななしさん。

リンク

2009/8/24(Mon) 00:10:55|NO.27268

HGIMG3のsetxinfoを使って、Xファイルの3Dオブジェクトのボーンを動かしたいですが、うまくいきません。

setxinfo オブジェクトID,動かしたいボーンの番号,設定モード(この場合2),x軸角度,Y軸角度,z軸角度

という命令の書き方でいいはずなのですが、どうも動いていません。

RokDeBone2でアニメを含むXファイルを作りましたが、コピーするボーン指定を行って、アニメするノードを限定したから、それ以外のノードはsetXinfoで動くと思ったのですが・・・

たとえば、HGIMG3のサンプル「test10」の改造スクリプトですが、

#include "hgimg3.as" screen 0,640,480,0 hgini ; テクスチャフォント表示の準備 texmake 640,480 ;テクスチャのサイズ mest = stat ;テクスチャのID番号 font "MS ゴシック",16 color 255,255,255 clscolor $80 ; Xモデル登録 ; addxfile m_xmodel,"font_c.x" regobj obj, m_xmodel setangr obj,0,128,0 setpos obj,0,0,20 getxinfo info, obj, 0,$1000 ; モデルのマテリアル色を取得 str2fv fv,info ; もとの色をfvに取得する sw = 0 ddim po,3:po(2)=20.0 *main getxinfo test, obj, 0,1 ; モデルのローカル座標を取得 texmes test,mest,320,0 ; モデルのローカル座標を表示 stick key,15 if key&16 { ; マテリアル色の切り替え sw=sw^1 if sw=0 { setxinfo obj,0,$1000,fv.0,fv.1,fv.2 } else { setxinfo obj,0,$1000,0,255,0 } } hgdraw gmode 2,640,480 pos 320,240 hgrotate mest,0,0 hgsync 15 texcls mest,0 ;テクスチャの初期化 if key&128 : goto *owari ; モデルのローカル座標を変更 if key&2 : setxinfo obj,0,1,po(0)-0.05,po(1),po(2) if key&8 : setxinfo obj,0,1,po(0)+0.05,po(1),po(2) if key&4 : setxinfo obj,0,1,po(0),po(1)+0.05,po(2) if key&1 : setxinfo obj,0,1,po(0),po(1)-0.05,po(2) goto *main *owari hgbye end
 マテリアルの切り替えはできるのですが、ローカル座標は変更できません。
 自分のスクリプトにおかしいところがあるのでしょうか?



この記事に返信する


ななしさん。

リンク

2009/8/24(Mon) 00:34:47|NO.27269

すみません。上のスクリプトに間違いがありました。


#include "hgimg3.as" screen 0,640,480,0 hgini ; テクスチャフォント表示の準備 texmake 640,480 ;テクスチャのサイズ mest = stat ;テクスチャのID番号 font "MS ゴシック",16 color 255,255,255 clscolor $80 ; Xモデル登録 ; addxfile m_xmodel,"font_c.x" regobj obj, m_xmodel setangr obj,0,128,0 setpos obj,0,0,20 getxinfo info, obj, 0,$1000 ; モデルのマテリアル色を取得 str2fv fv,info ; もとの色をfvに取得する sw = 0 ddim po,3:po(2)=20.0 *main getxinfo test, obj, 0,1 ; モデルのローカル座標を取得 texmes "getxinfoで取った値="+test,mest,0,0 ; モデルのローカル座標を表示 texmes "setxinfoで入れた値="+po(0)+","+po(1)+","+po(2),mest,0,20 ; モデルのローカル座標を表示 stick key,15 if key&16 { ; マテリアル色の切り替え sw=sw^1 if sw=0 { setxinfo obj,0,$1000,fv.0,fv.1,fv.2 } else { setxinfo obj,0,$1000,0,255,0 } } hgdraw gmode 2,640,480 pos 320,240 hgrotate mest,0,0 hgsync 15 texcls mest,0 ;テクスチャの初期化 if key&128 : goto *owari ; モデルのローカル座標を変更 if key&2 : po(0)=po(0)-0.5 if key&8 : po(0)=po(0)+0.5 if key&4 : po(1)=po(1)+0.5 if key&1 : po(1)=po(1)-0.5 setxinfo obj,0,1,po(0),po(1),po(2) goto *main *owari hgbye end
しかし、これでもローカル座標は変化しません

あと、角度変化のスクリプトも載せます

#include "hgimg3.as" screen 0,640,480,0 hgini ; テクスチャフォント表示の準備 texmake 640,480 ;テクスチャのサイズ mest = stat ;テクスチャのID番号 font "MS ゴシック",16 color 255,255,255 clscolor $80 ; Xモデル登録 ; addxfile m_xmodel,"font_c.x" regobj obj, m_xmodel setangr obj,0,128,0 setpos obj,0,0,20 getxinfo info, obj, 0,$1000 ; モデルのマテリアル色を取得 str2fv fv,info ; もとの色をfvに取得する sw = 0 ddim po,3 *main getxinfo test, obj, 0,1 ; モデルのローカル座標を取得 texmes "getxinfoで取った値="+test,mest,0,0 ; モデルのローカル座標を表示 texmes "setxinfoで入れた値="+po(0)+","+po(1)+","+po(2),mest,0,20 ; モデルのローカル座標を表示 stick key,15 if key&16 { ; マテリアル色の切り替え sw=sw^1 if sw=0 { setxinfo obj,0,$1000,fv.0,fv.1,fv.2 } else { setxinfo obj,0,$1000,0,255,0 } } hgdraw gmode 2,640,480 pos 320,240 hgrotate mest,0,0 hgsync 15 texcls mest,0 ;テクスチャの初期化 if key&128 : goto *owari ; モデルの回転角度を変更 if key&2 : po(0)=po(0)-0.05 if key&8 : po(0)=po(0)+0.05 if key&4 : po(1)=po(1)+0.05 if key&1 : po(1)=po(1)-0.05 setxinfo obj,0,2,po(0),po(1),po(2) goto *main *owari hgbye
これでも、角度は変わりません。



ななしさん。

リンク

2009/8/25(Tue) 23:55:44|NO.27306

あれからいろいろ試しまして、setxinfoのモード1で、ノードを動かせるようになりました。
どうも、ボーンのノードを指定して位置を動かすことで、そのオブジェクトが動きます。
ですから上のボーンの無いサンプルのモデルは、いくらやっての動かないようです。
変なサンプルを上げてすみません。

ただ、setxinfoのモード2でボーンを回転させることができません。
同じサンプルプログラムで、setxinfoのモード番号を1と2を書き換えるだけなんですが、1だとちゃんと指定した数値どおりにローカル座標が移動するのに、2にするとまったく動きません。
位置座標はgetxinfoで調べることができますが、回転角度はgetxinfoでも調べることができませんので、実際内部でどうなっているかわかりません。

自分ではお手上げなので、setxinfoのモード2でボーンを回転させる方法を知っている方がいましたら、お手数ですが、どうか教えてください。



ONION software Copyright 1997-2023(c) All rights reserved.