Цитата:
Сообщение от carsmaster
2. Игра ИЛ-2 считает все в метрах с точностью до 6 знака после запятой
Соответственно учитывая наверное это вот секция сохраненная имеющимся меш конвертером
[MaterialMapping]
1 0
0.4999847 0
0.4999847 0.4999847
1 0.4999847
вот тот же самый меш сохраненный вашей программой
[MaterialMapping]
1.00002 0
0.5 0
0.5 0.5
1.00002 0.5
Может стоит последовать примеру создателей имеющегося меш конвертера в плане точности ?
|
А вот тут я должен важный комментарий сделать.
MeshConverter не правильно обрабатывает один из сохраняемых в бинарном меше тип данных. В бинарном меше несколько способов сохранения значений. В зависимости от величины значений в блоке данные могут сохраняться в виде одно, двух, трёх, или четырёх байтных значениях. Для целочисленных значений, кроме этого, дополнительно возможно сохранение значений в виде накапливающихся разниц двух соседних значений. Это сделано для уменьшения размера файлов. Так вот, один из способов сохранения, когда исходные четырёхбайтовые числа с плавающей точкой преобразуются в трёхбайтовые, все виденные мной утилиты обрабатывают неверно. За счёт этого разница и возникает.
Я специально потратил на изучение этого момента изрядное кол-во времени. Как я уже говорил, в СПШ модели сохранялись в текстовом формате. Я брал одинаковые модели из СПШ и текущей версии и конвертируя их MeshConverter-ом и своей тулзой сравнивал результат. На трёхбайтовом типе у МС и других утилит как раз погрешность и возникает. Они забывают в одном месте прибавлять/вычитать единицу.
А так, у меня выводятся значения с точностью до 6 (или 7-ми, не помню сейчас) знаков после запятой. Если значение, например, ровно 0.5, то незначащие нули просто не отображаются.