Корректное определение transform.forward при экспорте модели в Unity 3d

{lang: 'ru'}

В прошлом посте, описывая подготовку модели к экспорту из 3Ds Max в Unity, я упомянул о проблеме, связанной с неправильным определением движком её передней части, т.е. того направления вектора, выходящего из центра модели, которое Unity считает «передним». Оно может не совпадать с вашими ожиданиями и смотреть совсем в другую сторону. Это особенно актуально, если модель была создана в редакторе из нескольких частей, если к ним применялись модификации вращения и т.п.

В чем проблема?

Применив правильные настройки при экспорте модели из 3Ds Max, вы добавили её в Unity3d. Вроде бы, все выглядит, как и должно быть: модель стоит прямо, смотрит в том же направлении, что и в редакторе… Но идиллия сохранится ровно до попытки взаимодействия с объектом. Как только вы попробуете «подтолкнуть» модель кодом вроде следующего:

Модель может начать двигаться в неожиданном направлении. В моём случае, танк поехал боком.

Как решить?

Чтобы избежать подобных оказий, в 3Ds Max, перед экспортом, во вкладке Utilities нужно кликнуть Reset XForm, выделив предварительно все полигоны, и нажать Reset Selected:

Utilities->Reset XForm->Reset Selected


Как это работает?

Говоря простым языком, команда Reset XForm приводит все произведённые модификации над разными частями модели к одной системе координат и стороннее ПО при импорте не будет путаться, какую модификацию в каком порядке нужно применить к модели, чтобы она отобразилась в своём конечном состоянии.

Опытные люди рекомендую после Reset XForm выполнить также Collapse на той же вкладке Utilities.

После всех этих нехитрых операций, Unity должен начать корректно определять направление «вперед» для вашей модели. Конечно, для «бывалых» моделлеров это не новая информация, но новичкам она может помочь быстрее влиться в ряды «гейм-девелоперов», без особых проблем экспортировать свои модели из 3Ds Max в Unity3d и получать удовольствие от разработки игр.


Полезная статья? Их будет больше, если вы поддержите меня!