さて、CSHARP Lightwave 3D モデル コンバーターを作成して、LWO を Javascript オブジェクトに変換しようとしています。これまでのところ、私はプログラムが機能する根性を持っています。しかし、バイナリ ファイルから UV をエクスポートする際に問題が発生しました。
これは、LWO バイナリーに関する私の参考資料です: http://www.gpwiki.org/index.php/LWO
テスト目的で、2 つの三角形と 6 つの点を持つ単一の正方形モデルを使用しています。すでにおなじみかもしれませんが、16 進数で次のようなテクスチャ UV チャンクを取得します (注釈付きのカンマと、ASCII 変換されたものを使用)。
[V] [M] [A] [P]
00 00 00 4C
[T] [X] [U] [V]
00 02
[t] [e] [s] [t] [.] [p] [n] [g]
00 00
00 00, 3E FD FD FD, 3E FD FD FD,
00 01, 3F 2A FD FD, 3E FD FD FD,
00 02, 3E FD FD FD, 3F 2A FD FD,
00 03, 3F 2A FD FD, 3E FD FD FD,
00 04, 3F 2A FD FD, 3F 2A FD FD,
00 05, 3E FD FD FD, 3F 2A FD FD
さて、私がリンクしたドキュメントによると、それは以下に翻訳されます。これを自分で翻訳したい場合、これは 32 ビット HEX を IEEE 754 Single float に変換するための便利なツールだと思います。
http://www.h-schmidt.net/FloatApplet/IEEE754.html
変換された LWO UV バイナリ:
VMAP
76
TXUV
2
test.png
0
0, 0.4960784, 0.4960784
1, 0.6679380, 0.4960784
2, 0.4960784, 0.6679380
3, 0.6679380, 0.4960784
4, 0.6679380, 0.6679380
5, 0.4960784, 0.6679380
UV 位置を Lightwave の実際の位置と比較するまでは、これは十分に健全に見えます。
0, 0.3333333, 0.3333333 or (33.33333%)
1, 0.6666667, 0.3333333
2, 0.3333333, 0.6666667
3, 0.6666667, 0.3333333
4, 0.6666667, 0.6666667
5, 0.3333333, 0.6666667
おわかりのように、バイナリ ファイルはそれほど遠くないものですが、何千ものこれらのバグをエクスポートすることが意図されている場合は特に、すべての違いを生むのに十分です。現在、この不一致にパターンは見られません。
現時点での私の現在の理論は、数値が IEEE754 形式ではないというものです。しかし、他のすべての値は同じなので、なぜこれらが異なるのでしょうか。足りないものはありますか?もう少し役立つように、他のテスト値をいくつか示します。
Lightwave => Binary
0.00000000 => 0.00000000
0.25000000 => 0.49414062
0.40000000 => 0.49607840
0.50000000 => 0.50000000
0.70000000 => 0.70000000
1.00000000 => 1.97656250
いくつかは正しいように見えますが、他のものはただ... 非常に間違っているようです. この質問を読んでくれてありがとう。非常に長く、数字が密集していることに感謝します。どんな助けでも素晴らしいでしょう!enter code here