2011-08-10 7 views
0

これで、LWOをJavascriptオブジェクトに変換するCSHARP Lightwave 3Dモデルコンバータを作成しようとしています。これまでのところ、私はプログラムの勇気が働いていて、私は喜んでいます。しかし、バイナリファイルからUVをエクスポートすることに問題が発生しました。Lightwave LWOバイナリを読む、UV問題

これはLWOバイナリのための私の参考資料です:私は6点で、二つの三角形を持つ単一の正方形のモデルを使用しているテストの目的のために http://www.gpwiki.org/index.php/LWO

。あなたは既に精通してありますように、私はHEXでこのように見えるテクスチャUVチャンクを取得(注釈付きカンマで、そしてアスキーは翻訳):

[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シングルフロートに変換するための便利なツールです。

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の位置を比較するまで、これは十分に健康になります。

あなたが見ることができます
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

答えて

1

http://www.newtek.com/lightwave/developers.phpからLightwave SDKを入手できます。 .lwo形式の完全なドキュメントが含まれています。

EDIT:

光波店ビッグエンディアンのすべてのそれのデータ。したがって、バイトをfloatとして解釈する前にスワップする必要があります。

+0

すぐにお返事いただきありがとうございます。私は別のフォーマットを使用しています。しかし、私はある時点でこれに戻ります! –