前回の質問と同じくHGIMG3の事でよろしいでしょうか。
addbox のモデルと X モデルでは回転順序の初期値が違います。
必要に応じて modelorder で順序を変える必要があります。
以下のサンプルの modelorder のモードを変えてみるとわかると思います。
以下を "BOX.x" として保存してください。
xof 0303txt 0032
Header{
1;
0;
1;
}
Mesh {
20;
5.00000;5.00000;-5.00000;,
-5.00000;5.00000;-5.00000;,
-5.00000;-5.00000;-5.00000;,
5.00000;-5.00000;-5.00000;,
-5.00000;5.00000;-5.00000;,
-5.00000;5.00000;5.00000;,
-5.00000;-5.00000;5.00000;,
-5.00000;-5.00000;-5.00000;,
-5.00000;5.00000;5.00000;,
5.00000;5.00000;5.00000;,
5.00000;-5.00000;5.00000;,
-5.00000;-5.00000;5.00000;,
5.00000;5.00000;5.00000;,
5.00000;5.00000;-5.00000;,
5.00000;-5.00000;-5.00000;,
5.00000;-5.00000;5.00000;,
-5.00000;5.00000;-5.00000;,
5.00000;5.00000;-5.00000;,
5.00000;-5.00000;-5.00000;,
-5.00000;-5.00000;-5.00000;;
6;
4;3,2,1,0;,
4;7,6,5,4;,
4;11,10,9,8;,
4;15,14,13,12;,
4;17,16,5,12;,
4;15,6,19,18;;
MeshMaterialList {
1;
6;
0,
0,
0,
0,
0,
0;;
Material {
1.000000;1.000000;1.000000;1.000000;;
5.000000;
0.000000;0.000000;0.000000;;
0.000000;0.000000;0.000000;;
}
}
MeshNormals {
6;
0.000000;0.000000;-1.000000;,
-1.000000;0.000000;0.000000;,
0.000000;0.000000;1.000000;,
1.000000;0.000000;0.000000;,
0.000000;1.000000;0.000000;,
0.000000;-1.000000;0.000000;;
6;
4;0,0,0,0;,
4;1,1,1,1;,
4;2,2,2,2;,
4;3,3,3,3;,
4;4,4,4,4;,
4;5,5,5,5;;
}
}
"BOX.x" ここまで。
次に以下のプログラムを "BOX.x" と同じ場所に保存してから実行してください。
#include "hgimg3.as"
hgini
setcolor 255 , 255 , 255 // box モデル(左)
addbox MDL_BOX1 , 10 , 10 , 10
regobj OBJ_BOX1 , MDL_BOX1
setpos OBJ_BOX1 , -10 , 0 , 0
addxfile MDL_BOX2 , "BOX.x" // X モデル(右)
modelorder MDL_BOX2 , 0 // 回転順序モード
regobj OBJ_BOX2 , MDL_BOX2
setpos OBJ_BOX2 , 10 , 0 , 0
*MAIN
addang OBJ_BOX1 , deg2rad(5) , deg2rad(1) , 0 // 回転
addang OBJ_BOX2 , deg2rad(5) , deg2rad(1) , 0
hgdraw
hgsync 30
getkey ESC_KEY , 27
if ESC_KEY { end }
goto *MAIN