Попытки добавить в плагин возможность импорта и экспорта коллизий bhkCompressedMeshShape привели к тому, что пришлось пересмотреть всю логику работы с коллизиями, так как несовершенными мне показались и настройки коллизий в редакторе, и сам программный код в плагине. Таким образом были удалены все объекты и модификаторы связанные с настройкой коллизий и создан один новый объект - bhkCollisionObject, позволяющий в полной мере настроить различные варианты моделей столкновения. Обо всех нюансах его использования я и хочу рассказать.
Возможности bhkCollisionObject:
Возможности bhkCollisionObject:
- Импорт, экспорт и настройка моделей столкновения bhkBoxShape, bhkSphereShape, bhkCapsuleShape, bhkConvexVerticesShape, bhkNiTriStripsShape, bhkListShape, bhkPackedNiTriStripsShape и bhkCompressedMeshShape;
- Расчет MOPP кода для bhkPackedNiTriStripsShape и bhkCompressedMeshShape;
- Построение оболочек bhkBoxShape, bhkSphereShape, bhkCapsuleShape и bhkConvexVerticesShape вокруг геометрических объектов с возможностью копирования этих оболочек в новый геометрический объект;
- Настройка параметров bhkRigidBody;
- Визуализация и настройка центра массы для динамических объектов;
- Расчет инерции на основе объёма модели и указанной в bhkRigidBody массы;
Настройка модели столкновения:
Для примера разместим в сцене банальный чайник. И добавим вспомогательный объект bhkCollisionObject, находящийся на панели Create | Helpers | NifTools. Выделив его и перейдя на панель Modify увидим несколько свитков с параметрами.
Свиток «Parameters»
- Collision Type: выбор базового типа коллизии, «Simple Shape» для простых моделей, таких как bhkBoxShape, bhkSphereShape, bhkCapsuleShape, bhkConvexVerticesShape, bhkNiTriStripsShape либо нескольких простых моделей объединенных в bhkListShape. «Packed Strips Shape» для модели bhkPackedNiTriStripsShape, и «Compressed Mesh» для bhkCompressedMeshShape;
- Collision Meshes: лист с геометрическими объектами используемыми для построения модели столкновения. Добавлять и удалять объекты можно кнопками «Add» и «Remove» находящимися ниже листа. Если в листе несколько объектов при базовом типе «Simple Shape», то при экспорте автоматически будет создан bhkListShape. При добавлении объекта в этот лист видимой остается только его сетка, в соответствующих режимах просмотра;
- Edit Shape: переход в режим настройки объекта из листа. В этот режим так же можно перейти выбором соответствующего подуровня целевого объекта. Редактируется выделенный в данный момент в листе объект. В сцене при этом его сетка становится красной. Выделять объекты можно как выбором в листе, так и в сцене. Все ниже расположенные элементы становятся доступны только в этом режиме;
- Material: выбор материала для объекта;
- Simple Shape Type: при базовом типе «Simple Shape» из этого выпадающего списка можно выбрать тип примитива. Исключение составляют объекты типов Box, Sphere и Capsule. Для них данный пункт предопределен и несменяем. Следующие два пункта доступны только при выборе bhkConvexVerticesShape;
- Inflation:"раздувание" выпуклой оболочки. Используется для корректировки её габаритов, может иметь значение от -10 до 10.
- Vertices: количество вершин из которых будет состоять выпуклая оболочка. Чем вершин больше - тем точнее оболочка будет соответствовать исходному объекту. Чем их меньше - тем выше производительность в игре.
- Export Source Mesh: при установке этого чекбокса исходный геометрический объект будет экспортирован как геометрия. В противном случае он экспортироваться не будет.
- Clone Mesh: нажатие на эту кнопку создаёт копию геометрии созданной на основе исходной, и заменяет в листе исходную на вновь созданную. При этом в сцене она появляется как новый геометрический объект.
Полной информации по всем параметрам пока нет, возможно будет позже. Пока можно посмотреть как настроены ванильные модели подобного типа и настраивать по ним. Отмечу лишь пункт «Mass». Это масса модели в американских футах. Если создаем динамическую модель, то до экспорта надо выставить значение, поскольку оно повлияет на расчет инерции.
Свиток «Center Of Mass»
- Edit Center Of Mass: включает режим редактирования центра массы модели столкновения. В этот режим так же можно перейти выбором соответствующего подуровня целевого объекта. При включении данного режима становится виден маркер центра массы, если масса модели выше ноля. При этом в редакторе устанавливается режим передвижения. Таким образом можно двигать маркер в сцене манипулируя мышью. Так же можно менять его положение вводя значения в расположенные ниже поля с координатами;
- Calculate from Mesh: при выборе данного пункта центр массы рассчитывается исходя из объема модели и помещается в цент объема. Если в листе насколько объектов - то рассчитывается общий объём. При редактировании или смещении объектов положение маркера корректируется;
- Use Pivot: при выборе этого пункта центр массы помещается в опорную точку объекта, либо в среднее значение нескольких точек, если в листе несколько объектов. При редактировании или смещении объектов положение маркера так же корректируется;
- Local Offset: в этом положении центр массы может иметь произвольное установленное пользователем значение и не зависит от задействованных объектов.
- Display Hull: включает отображение полигонов модели столкновения;
- Z Buffer: отключает сквозную прорисовку граней;
- Hide Source Mesh: скрывает исходный объект в зависимости от настроек видовых экранов;
- Show Center of Mass: показывает маркер центра массы, при значении массы выше ноля.
Настроив необходимые параметры можно экспортировать модель и проверить результат.
Can someone translate this into English?
ОтветитьУдалитьAnd I'm not talking about Google Translate.
@perture подскажи пожалуйста как в maxscript добавить в .meshList объект из сцены.
ОтветитьУдалитьmacrorecorder не помогает.
Не могу сказать, возможно ни как. Я не заморачивался с поддержкой максскрипта.
УдалитьЯсно спасибо.
УдалитьЭтот комментарий был удален автором.
ОтветитьУдалить