Хорошо, я пытаюсь создать конвертер 3D-модели CSHARP Lightwave, чтобы конвертировать мои LWO в объект Javascript. Пока у меня есть смелости программы, и я, пожалуйста. Но у меня возникли проблемы с экспортом UV из двоичного файла.
Это мой справочный материал для двоичного файла LWO:
http://www.gpwiki.org/index.php/LWO
Для тестирования я использую модель с одним квадратом с двумя треугольниками с шестью точками. Итак, как вы, возможно, уже знакомы, я перехожу к фрагменту Texture 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 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
Видите, это выглядит достаточно здорово, пока вы не сравните ультрафиолетовые позиции с фактическими позициями в 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