|
|
|
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でボーンを回転させる方法を知っている方がいましたら、お手数ですが、どうか教えてください。
|
|