【问题标题】:Reading Lightwave LWO binaries, UV problem读取 Lightwave LWO 二进制文件,UV 问题
【发布时间】:2011-10-24 10:50:18
【问题描述】:

好的,所以我正在尝试制作 CSHARP Lightwave 3D 模型转换器来将我的 LWO 转换为 Javascript 对象。到目前为止,我有足够的胆量来运行这个程序,我很高兴。但是我在从二进制文件中导出 UV 时遇到了麻烦。

这是我的 LWO 二进制参考资料: http://www.gpwiki.org/index.php/LWO

出于测试目的,我使用带有两个三角形的单方形模型,有六个点。所以你可能已经熟悉了,我来看看纹理 UV 块,它在 HEX 中看起来像这样(带有注释的逗号,并且是 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 单浮点数。

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

【问题讨论】:

    标签: binary-data ieee-754 chunks uv-mapping


    【解决方案1】:

    您可以从 http://www.newtek.com/lightwave/developers.php 获取 Lightwave sdk。 它包括 .lwo 格式的完整文档。

    编辑:

    Lightwave 将所有数据存储在 Big Endian 中。所以你必须在将它们解释为浮点数之前交换字节。

    【讨论】:

      猜你喜欢
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多