返信ありがとうございます。
試行錯誤していた過程で複数の誤作動を発見したので、まとめて報告します。
PCの動作環境は以下の通りです。
OS:Windows 10 Pro 64bit版
CPU:i7 S860 2.53GHz
メモリ:8GB
グラボ:Geforce GT 740
試したHSP3のバージョンは以下の通りです。
・HSP3.51
・HSP3.6bate4
●setxinfoのバグ?
HGIMG3のsetxinfoの頂点座標のzの要素が指定できません。
例えば、以下のように
#const _XFILE_CONFIG_VERTEX_ $10000
x=1
y=1
z=1
node=0
index=0
setxinfo obj,node,_XFILE_CONFIG_VERTEX_ + index, double(x), double(y), double(z)
と指定しても、zの要素が反映されません。
getxinfoで値を取得しても反映されていないことが分かります。
このz1を実際に反映させる為には、
#const _XFILE_CONFIG_VERTEX_ $10000
x=1
y=1
z=1
node=0
index=1
setxinfo obj,node,_XFILE_CONFIG_VERTEX_ + index, double(x), double(y), double(z)
と、1つ分のindexをズラす必要があります。
この場合、xがindexの0のzと同等の動作をします。
つまり、setxinfoのindexは実際の頂点座標のindexとズレているのです。
では、このindexの1のyが次の頂点座標Xを指示しているのかというとそうではありませんでした。
この場合のyとzが何を示しているのかは分かりません。
では次の実際の頂点座標がどこにあるのかというとindexの4でした。
この場合もやはり、有効なのはxとyだけで、zの要素はindexの5のxでした。
Xファイルはblender 2.79、MetasequoiaLE R3.0、3DAce 2.72それぞれで出力したものを試しました。
テクスチャありのモデル、テクスチャなしのモデルいずれも試しましたが、結果は同じでした。
私はこの現象を最初、バグではなく、構造体状の何かなのではないかと思っていたのですが、
zの要素がきいていない(ズレている)のはやはり、バグなのではないかと思うのです。
HGIMG3のsetxinfoと、頂点座標の部分の実際の仕様についてはおにたまさんの方でも
検証して頂けると助かります。
●モデルのXファイルとGetxinfoで得られる頂点座標との比較
Xファイルの中身
xof 0303txt 0032
Frame Root {
FrameTransformMatrix {
1.000000, 0.000000, 0.000000, 0.000000,
0.000000,-0.000000,-1.000000, 0.000000,
0.000000, 1.000000,-0.000000, 0.000000,
0.000000, 0.000000, 0.000000, 1.000000;;
}
Frame Plane {
FrameTransformMatrix {
1.000000, 0.000000, 0.000000, 0.000000,
0.000000, 1.000000, 0.000000, 0.000000,
0.000000, 0.000000, 1.000000, 0.000000,
0.000000, 0.000000, 0.000000, 1.000000;;
}
Mesh { // Plane mesh
4;
-1.000000;-1.000000; 0.000000;,
1.000000;-1.000000; 0.000000;,
1.000000; 1.000000; 0.000000;,
-1.000000; 1.000000; 0.000000;;
1;
4;0,1,2,3;;
MeshNormals { // Plane normals
1;
0.000000; 0.000000; 1.000000;;
1;
4;0,0,0,0;;
} // End of Plane normals
MeshTextureCoords { // Plane UV coordinates
4;
0.000000; 0.000000;,
0.000000; 1.000000;,
1.000000; 1.000000;,
1.000000; 0.000000;;
} // End of Plane UV coordinates
MeshMaterialList { // Plane material list
1;
1;
0;
Material mat0 {
0.640000; 0.640000; 0.640000; 1.000000;;
96.078431;
0.500000; 0.500000; 0.500000;;
0.000000; 0.000000; 0.000000;;
TextureFilename {"Brick01-p.jpg";}
}
} // End of Plane material list
} // End of Plane mesh
} // End of Plane
} // End of Root
というMesh形状(頂点数は4つ、形状はplate、テクスチャあり)のXファイルをHGIMG3で読み込むと、
getxinfoの頂点座標では以下のように表示されます。
getxinfoで得られる頂点座標
No.0 : -1.000000,-1.000000,0.000000 ;meshの1行目の頂点
No.1 : 0.000000,0.000000,0.000000
No.2 : 0.000000,1.000000,0.000000
No.3 : 0.000000,0.000000,1.000000
No.4 : 1.000000,-1.000000,0.000000 ;meshの2行目の頂点
No.5 : 0.000000,0.000000,0.000000
No.6 : 0.000000,1.000000,0.000000
No.7 : 0.000000,1.000000,1.000000
No.8 : 1.000000,1.000000,0.000000 ;meshの3行目の頂点
No.9 : 0.000000,0.000000,0.000000
No.10 : 0.000000,1.000000,1.000000
No.11 : 1.000000,1.000000,-1.000000
No.12 : -1.000000,1.000000,0.000000 ;meshの4行目の頂点
No.13 : 0.000000,0.000000,0.000000
No.14 : 0.000000,1.000000,1.000000
No.15 : 1.000000,0.000000,0.000000
no.の部分がindexに該当します。
このようにno.0はXファイルのmeshの1行目に該当します。
では、Xファイルのmeshの2行目はどこにあるのかというと、No.4です。
meshの3行目はNo.8です。meshの4行目はno.12です。
というように実際の頂点座標は、頂点座標だけが並んでいるのではなく、
何か別のものが間に挟まっています。それらがどういう意味を持つのかは分かりませんでした。
ちなみにこのXファイルはblender2.79で作成したものです。
他のツールで作成すると異なるテキスト様式のXファイルになりますが、
このgetxinfoで得られる情報との関係は同じでした。
●modelorderでライトの回転順序を変更するとエラーになる
HGIMG3のmodelorderでライトの回転順序を変更するとエラーになります。
例えば、以下のように
modelorder HGOBJ_LIGHT,1
とすると「パラメータの値が異常です」のエラーが出て強制終了します。
なのでライトの回転順序を変更することができません。
HSP3.6bate3のスレでライトの回転順序を変更すれば
ライトオブジェクトのZ軸回転が有効になるとおにたまさんからアドバイスを頂きましたが、
それは上記のエラーでできませんでした。