Продолжаю пилить экспорт/импорт, сегодня сделал загрузку модели с иерархиею. На гифке настольная лампа (да, с текстурой лука, но не в том дело), на ней я кручу один из шарниров, чтобы убедиться, что все объекты правильно припаренчены, отскейлены и т.д..
Каждый "сустав" перескейлен и перекручен в Максе, чтобы протестировать иерархию в любых условиях и словить как можно больше багов с целью их исправления. И баги нашлись, а нашлись они в экспортёре, видимо, я когда-то давно их не заметил.
Если у объекта, скейл которого не единица, есть чайлд, то его скейл будет экспортиться неправильно. Причём в Максе по F12 выдаётся правильное значение, а если его же получать в in coordsys parent этого объекта, то там какие-то вообще непонятно откуда взявшиеся числа. В результате пришлось вручную перемножать матрицу объекта на обратную матрицу парента (которого может ещё и не быть), по идее это эквивалентно, но не нихрена! Максскрипт такой максскрипт. Но теперь хотя бы работает как надо.
-- Scale
if(obj.parent != undefined) then
(
vec3Scale = (obj.transform * (inverse obj.parent.transform)).scale
)
else
(
vec3Scale = obj.transform.scale
)
Теперь на повестке дня у меня:
1. Простейшие материалы (Чтобы при загрузке модели автоматом накидывались текстуры, 1 меш = 1 текстура)
2. Риггинг
Первое довольно просто, но второе — ради этого я всё и затеял! А текстурки можно пока и самому накинуть.
В-общем очередной говноскрин.