Перевел и адаптировал вот этого материал: http://bfeditor.org/forums/index.php?showtopic=11709 Итак, у нас есть 3Dmax модель машины которую хотим затащить в BF2.
Для этого придется несколько изменить структуру модели, а так же добавить
объекты-помошники(helpers) и объекты-пустышки(dummy), чтобы движок знал
что в ней, где и зачем.
На скрине - структура модели машины dodge, перед экспортом ее на движок.
Сперва она может показаться сложной, но это лишь на первый взгляд.
Давайте разберем что здесь к чему.
root_bundledMesh_dodge - это объект-пустышка, обязательная основа всей модели.
Объекты содержащие __xxx - говорит движку, какую роль выполняет этот и его дочерние обьекты для всей модели.
__PlayerControlObject - меш, кузов машины. Обязателен в кажом lod и geom,
__RotationalBundle - говорит движку, что этот элемент будет вращаться(колесо или руль например) вокруг
центра (pivot), поэтому убедитесь, что он установлен в нужном месте(в цетре колеса)
Сами параметры вращения можно будет установить позже, в BF Editor'e.
__Engine - двигатель. По идее задумывался как обьект-пустышка, но должен быть
геометрией(буквально один треугольник), который нужно спрятать внутрь кузова машины,
лучше в том самом месте, где у нее должен располагаться мотор, так как с этого объекта
позже будет воспроизводиться звук двигателя в игре.
__spring - дословно - пружина. На деле это будут колеса, но вести они себя будут
как на рессорах)
Итак, у нас три основных части - geom0, geom1 и geom2.
geom0 и его дочернии объекты используются когда игрок внутри машины. Состоит из двух частей:
каркаса кабины (dodge__PlayerControlObject), и руля - он будет вращаться (dodgesteering__RotationalBundle).
Все это находится в lod0 (level of detalization - уровень детализации. 0 - самый высокая детализация),
поскольку игрок в этом случае всегда будет вблизи, другие lod'ы не нужны.
geom1 - отвечает за вид машины снаружи. Состоит из трех мешей:
lod0 - будет отображаться когда игрок близко, lod1 - если далеко и lod2 - если очень далеко.
прим: Для начала, на стадии разработки и отладки машины, можно обойтись и без lod1 и 2
(их легко создать позже, из исходного каркаса lod0). Модель будет работоспособна даже с одним lod0.
Первые два обьекта такие же как и в geom0 (только dodge__PlayerControlObject тут уже не кабина, а весь кузов машины).
Далее идет объект-пустышка nonvis_, дочерние объекты которого - меши, которые послужат для
проверки машины на столкновения (коллизий), col0 - со снарядами, col1- техникой, col2 - пехотой. Поскольку в geom0 руль (dodgesteering__RotationalBundle) - первый дочерний обьект от (dodge__PlayerControlObject),
в geom1 он также должен быть первым. (а так, как распредиляется все по алфавиту, другим обьектам, добавляют z в начале имени)
После руля и коллизий идет мотор - zdodge_motor_Engine, к которому крепятся четыре колеса (dodge_whl_FL.., ..whl_FR, ..whl_RL и ..whl_RR)
мотор будет вращать только два передних колеса (..whl_FL.. и ..whl_FR..), вот почему у задних колес нету __RotationalBundle,
а только __Spring. Каждое колесо имеет пустышку nonvis_ с содержащимися там мешами для коллизий.
Их должно быть два: col1 - форма колеса, col2 - должен содержать всего один треугольник лицевой стороной к земле.
Находиться он должен в самой нижней части колеса, в месте его соприкосновения с землей(как на скрине ниже)
(более подробно о создании колес можно прочитать вот в этом туторе)
Вот и все с содержание geom1 - кузов, руль и четыре колеса.
geom2 - отвечает за вид машины когда она будет уничтожена.
lod'ы должны содержать только видимый меш dodge__PlayerControlObject, ну и lod0 еще содержит коллизии.
Вот и все Возможно все это выглядит немного сложным, но на деле быстро осваеваешься. Пробуйте, удачи!)