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


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
1022
youdaihgimg3のgetxinfoとsetxinfoで扱う頂点座標の構造体の仕様について教えて下さい2未解決


youdai

リンク

2020/10/22(Thu) 16:17:16|NO.91672

hgimg3のgetxinfoとsetxinfoで扱う頂点座標の構造体に関して質問します。

hgimg3のgetxinfoとsetxinfoで扱う頂点座標の情報は、その並び方から推測して、
何らかの構造体なのだと思いました。
しかし、詳細がマニュアルに記載されていないため、行がどんな意味を持つのかその仕様が不明です。

もしご存知の方がいましたら、
どの行がどんな意味を持つのか、教えてください。

私の推測は以下の通りです。

色々と試行錯誤して以下の推測をしました。

0.0,0.0,0.0
0.0,0.0,0.0
0.0,0.0,0.0
0.0,0.0,0.0

・以上のような、3*4の構造体である。
・1行目は頂点のローカル座標?
・2行目は頂点の原点に対する相対座標?
・3行目は不明
・4行目は不明



この記事に返信する


おにたま(管理人)

リンク

2020/10/26(Mon) 23:15:03|NO.91695

HGIMG3について色々調べて頂きありがとうございます。
getxinfoとsetxinfoは、xファイルを読み込んだ際に内部に読み込まれた座標や値をスクリプトで動的に操作したいという時のために用意されています。
基本的な機能は、getxinfoとsetxinfo命令のヘルプに記載されています。
頂点座標は、単純にポリゴンを構成する頂点のX,Y,Z値を順番に取得しているだけだったと思います。実際に取得される値と、xファイル(テキスト形式)を見比べてみるといいかもしれません。



youdai

リンク

2020/10/28(Wed) 10:19:08|NO.91700

返信ありがとうございます。
試行錯誤していた過程で複数の誤作動を発見したので、まとめて報告します。

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軸回転が有効になるとおにたまさんからアドバイスを頂きましたが、
それは上記のエラーでできませんでした。



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