Как сделать коллизию в 3d max

Добавил пользователь Владимир З.
Обновлено: 04.10.2024

В этом видосе можно заценить процесс создания коллизии из простых примитивов, для дома, который мы пилили.

Вот ссыль на строительный процесс hupack.info?list.

Бла-бла-бла, модель простая, бла-бла-бла, можно было не париться. Ну как бы да. только вот - это простая учебная болванка, на которой показан принцип. Это не значит, что ваша модель тоже будет простой. В любом случае готов выслушать адекватных людей комментах, ибо дела движковые - это больная для меня тема.

P.S. сорян за минус уши)))

Megjegyzés: 131

Спасибо за урок! Больше всего тащусь от вступительной части во всех видосах, было бы шикарно увидеть полноценное видео в подобном формате о текущем состоянии геймдева в твоем исполнении.

alt

Один из минусов работы с множеством объектов – сложность расположения не по прямой. Их можно расположить упорядочено, случайно. Но как быть, если существует строго определенная кривая линия? Здесь вам поможет Spacing Tool. Инструмент находится в Tool – Align – Spacing Tool (Shift+I). Для того, чтобы им воспользоваться, необходимо сначала построить любую линию в Create – Shapes – Splines.

Tools - Align - Spacing Tool

Также в сцене должен находиться объект, который будет копироваться по готовой линии. Однако копии не станут полноценными объектами, пока не будет нажата кнопка Apply. Следовательно, из-за любого действия в рабочей области копии будут исчезать.

1. Где разместить

Данный инструмент имеет 2 типа размещения объектов: по готовой линии (Pick Path) и по линии между двумя точками (Pick Points). Перед использованием нужно выделить сам объект. Затем нужно нажать Pick Path и нажать на линию, вдоль хотите построить объекты. Если нажать Pick Point, то выбирать линию не нужно. Нужно нажать на рабочую область, благодаря чему появится синяя линия. Нажав второй раз, линия исчезнет, а вдоль нее построятся объекты. Сделать ее кривой не получится, так как объекты строятся сразу после второго нажатия. Наиболее интересен вариант Pick Path, на котором и стоит рассматривать все настройки.

Pick Path

2. Parameters

Раздел Parameters включает в себя 4 параметра:

Count – количество копий объекта. Расположение объектов будет ограничено концами линии, поэтому чем больше копий, тем плотнее они расположены.

Spacing – устанавливает интервал между копируемыми объектами. Этот параметр работает противоположно Count. Увеличивая расстояние между копиями, число копий уменьшается.

Count и Spacing

Start Offset и End Offset – создают отступы от краев линии. Чтобы использовать эти параметры, нужно поставить галочки у названий. Затем устанавливается расстояние от начала или конца, на котором всегда будет находиться копия объекта. Замки автоматически фиксируют копии на линии. Для их использования нужно снять галочки и нажать на сами значки замков. Если нажат один из них, то копия фиксируется на соответствующем конце. Если нажаты оба, то положение от конца будет такое же, как и отступ (Spacing).

Offset

Distribution drop-down list – это раскрывающийся список, внутри которого находятся различные комбинации указанных выше настроек. Он нужен более понятной и интуитивной настройки типов размещения объектов. Список довольно объемный, поэтому разбирать его лучше на практике самостоятельно.

Distribution drop-down list

3. Context и Type of Object

Раздел Context позволяет дополнительно настраивать положение и расстояние между объектами.

Edges считает отступ (Spacing) от края копий. Centers – от центров. Галочка Follow меняет ориентацию объекта, направляя его оси вдоль линии. Без нее сохраняется направление опорной точки (Pivot).

Context и Type of Object

Type of Object соответствует обычному меню копирования. Позволяет создать копи типа Copy, Instance и Reference. Первый делает все копии независимыми, остальные, наоборот.

Инструмент небольшой, прост в освоении. При этом он эффективно решает задачи параметрического распределения объектов вдоль линий. Но этот вариант подходит только для множества объектов. Если нужно растянуть один объект вдоль линии, то следует воспользоваться другими инструментами. Кроме того, этот инструмент совершенно не предназначен для случайного распределения объектов. Чтобы размножить объекты по поверхности и задать случайное положение стоит воспользоваться Corona Scatter или Object Paint.

Использование полигонального моделирования для создания трехмерных объектов

Цель работы: В данном уроке по работе c 3D Studio Max вы получите более глубокие знания в полигональном моделировании, на основе изучения возможностей моделирования с использованием NURBS-лофтинга в 3D Max.

Деформации объектов, созданных методом лофтинга

Трехмерный объект, сформированный методом лофтинга в его стандартном варианте, имеет одинаковое поперечное сечение во всех точках линии пути. Однако преимущество данного метода заключается в возможности деформации оболочки за счет изменения сечений, располагающихся в различных точках линии пути, в любой момент после того, как оболочка объекта полностью сформирована. Деформация может заключаться в изменении масштаба сечений, в их повороте вокруг линии пути или наклоне по отношению к этой линии.

Для деформации объекта, созданного методом лофтинга, выполняют следующие действия:
Выделите объект, созданный методом лофтинга, и перейдите на командную панель Modify (Изменить). Разверните свиток Deformations (Деформации), расположенный в самом низу командной панели. В свитке имеются кнопки выбора пяти инструментов деформации: Scale (Масштаб), Twist (Скрутка), Teeter (Качка), Bevel (Скос) и Fit (Подгонка).

Шаг 1. Щелкните на одной из кнопок инструментов деформаций и настройте форму оболочки с помощью кривых деформации в окне диалога Deformation (Деформация), описываемом ниже.

Шаг 2. Для включения или выключения воздействия примененной к объекту деформации на его конечный вид щелкните на дополнительной кнопке справа от кнопки с наименованием деформации (эти кнопки снабжены значками в виде лампочки на рисунке 1).
Рисунок 1. Включение или выключение воздействия примененной к объекту деформации на его конечный вид.
Шаг 3. После выделения объекта, созданного методом лофтинга, и щелчка на любой из кнопок инструментов деформации появляется окно диалога, показанное на рисунке 2 применительно к деформации масштаба.
Рисунок 2. Окно диаграммы деформации масштаба.
На сетке диаграммы деформации имеется линия красного цвета. Эта линия, называемая кривой деформации, является графиком величины деформации в зависимости от координаты пути, вдоль которого строится оболочка объекта.

Если речь идет о деформации масштаба, то график изображает зависимость масштаба сечений от координаты пути. Если диаграмма относится к деформации скрутки или скоса, то она показывает зависимость от координаты пути углов поворота сечения вокруг линии пути, наклона сечения к линии пути и т. п.

Кривая имеет на концах два маркера, называемых управляющими точками. Можно создать на кривой деформации любое количество управляющих точек или удалить лишние точки при необходимости. Фактически, управляющие точки – это те же вершины, а сами кривые деформации – те же сплайны.

Используя инструменты окна диаграммы деформации, можно перемещать управляющие точки, изменять их тип, настраивать касательные векторы, чтобы придать кривой деформации точно ту форму, какая необходима.
Сверху над сеткой диаграммы находится относительная шкала расстояния. Координаты положения управляющих точек вдоль линии пути, на котором размещаются сечения, указываются на диаграмме в процентах расстояния от начала этого пути. Обратите внимание на то, что путь совершенно не обязательно должен являться прямой линией. Кривая пути может иметь произвольную форму, при этом расстояние будет отсчитываться вдоль кривой.

Слева от сетки диаграммы деформации имеется шкала значений. Градуировка этой шкалы зависит от типа деформации. Например, в случае деформации масштаба, вертикальная шкала проградуирована в процентах. Если используется деформация скрутки, шкала значений будет иметь градуировку от –180 до 180 градусов.

Шаг 1. Перезагрузите 3D Studio Max, выберите в качестве единиц измерения сантиметры и установите шаг сетки равным 1 см. Установите в окне проекции Тор (Вид сверху) масштаб, при котором вертикальный размер видимой части сетки в окне проекции составляет примерно 5 см.
Шаг 2. Нарисуйте стандартный сплайн Rectangle (Прямоугольник) с размерами: Length (Длина) = 4 см, Width (Ширина) = 0,5 см, скруглив углы радиусом 0,3 см. Это будет сечение тела лофтинга. Затем разверните окно проекции во весь экран, установите такой масштаб, чтобы размер горизонтальной части сетки составлял примерно 40 см, и нарисуйте кривую-путь, как показано на рисунке 3.

Шаг 5. Щелкните на кнопке Make Symmetrical (Симметрично по X и Y), чтобы выключить ее и сделать возможным использование различных кривых деформации в продольных сечениях объекта но осям X и Y локальных координат сечений, ориентированным перпендикулярно линии пути.

Если оставить кнопку нажатой, то в направлении обеих осей будет использована одна и та же деформация, что вызовет симметричное изменение формы объекта. По умолчанию в окне демонстрируется кривая деформации по оси X, которая в данном случае представляет собой ось толщины тела лофтинга (в этом легко убедиться, если посмотреть, куда ориентирована локальная ось координат сечения-прямоугольника).

Для наглядности лучше начать деформацию с изменения ширины тела лофтинга, поэтому щелкните в окне диаграммы деформации на кнопке Display Y Axis (Показать деформацию по Y). Появится линия диаграммы зеленого цвета. Так как кнопка Move Control Point (Переместить управляющую точку) выбрана по умолчанию, просто щелкните на левом маркере диаграммы деформации и переместите , следя за координатами маркера в полях отсчета в середине нижней части окна диалога. Переместить маркер можно и проще: щелкните на маркере, введите новые значения его координат непосредственно в поля отсчета и нажмите клавишу Enter или Tab.

Шаг 6. Щелкните на кнопке Insert Corner Point (Вставить угловую точку) и выберите на панели инструмента кнопку Insert Bezier Point (Вставить точку Безье). Щелкните на кривой деформации, поместив на ней новую вершину, и введите в поля отсчета координаты этой вершины . Продолжайте щелкать на кривой и установите следующие координаты новых управляющих точек, как показано на рисунке. Настройте положения маркеров касательных векторов управляющих точек, чтобы придать кривой деформации вид, показанный на рисунке 5. При этом вид сверху на тело лофтинга изменится, повторяя контуры кривой деформации по оси Y, то есть по ширине объекта.
Рисунок 5. Вид кривой деформации по оси Y.
Шаг 7. Теперь настройте деформацию по оси X, или по толщине тела (рис. 6). Щелкните в окне диаграммы деформации на кнопке Display X Axis (Показать деформацию по Х). Появится линия диаграммы красного цвета. Переместите маркер первой управляющей точки в положение (0; 25). Далее выберите кнопку Insert Bezier Point (Вставить точку Безье) и добавьте на линию диаграммы четыре новые вершины Безье, задав для них координаты, следя за изменением формы вилки.
Рисунок 6. Вид кривой деформации по оси X.
Шаг 8. Закончив настройку деформации, закройте окно диалога Scale Deformation (Деформация масштаба). Окончательный вид деформированной вилки, пока еще не имеющей зубьев, показан на рисунке 7.
Рисунок 7. Окончательный вид тела лофтинга после деформации по осям ширины и толщины.

При таком расположении центра заострение на виде сверху не будет симметричным. Чтобы переместить центр модификатора, щелкните на кнопке Sub-Object (Подобъект) в свитке Modifier Stack (Стек модификаторов) и выберите в раскрывающемся списке Selection Level (Уровень выделения) подобъект Center (Центр). Крест, обозначающий центральную точку, окрасится в желтый цвет. Щелкните на нем в окне проекции Тор (Вид сверху), выбрав инструмент Select and Move (Выделить и переместить), и перетащите в середину параллелепипеда, как показано на рисунке 9.
Выше, на рисунке 8 видно, что основание вилки очень широкое - немного сузьте ширину основания вилки.
Рисунок 9. Центр модификатора перемещен в геометрический центр параллелепипеда.
Шаг 3. Настройте параметры заострения в свитке Parameters (Параметры). Установите в счетчике Amount (Величина) значение 0,55. Переключатель Primary (Первичная ось) раздела Taper Axis (Ось заострения) установите в положение X, а переключатель Effect (Ось эффекта) – в положение Z. Создайте два образца заостренного параллелепипеда и разместите их на конце заготовки вилки, как показано на рисунке 10.
Рисунок 10. Все готово к применению булевой операции вычитания.
Шаг 4. Перейдем к булевому вычитанию. Пока к объекту не применили булевы операции и он еще находиться в состоянии лофтинга подкорректируйте изгибы и формы вилки до полного соответствия. Выделите объект Вилка и выберите на командной панели кнопку Boolean (Булевы операции).
Щелкните на кнопке Pick Operand В (Указать операнд В) в свитке Pick Boolean (Задать операнд) и выделите первый из трех параллелепипедов, предназначенных для формирования промежутков между зубьями вилки. Проследите, чтобы переключатель Operation (Операция) был установлен в положение Subtraction (А-В) (Исключение (А-В)). Параллелепипед исчезнет, оставив после себя щель между двумя зубьями вилки, как показано на рисунке 11. Щелкните правой кнопкой мыши, завершая операцию булевого вычитания.
Рисунок 11. Первая пара зубьев сформирована.
Шаг 5. Снова щелкните на кнопке Pick Operand В (Указать операнд В) и выделите следующий параллелепипед. Он также исчезнет, сформировав щель между следующей парой зубьев. Повторите описанные действия применительно к третьему параллелепипеду. Окончательный вид вилки приведен на рисунке 12.
Рисунок 12. Визуализация полученной вилки.

В MAX Script Help предлагаю ознакомиться со следующими материалами:

Сам скрипт начнём писать с создания пользовательского интерфейса, где будет простое меню.

— используется, чтобы называть автоматически построенную локальную переменную, которая будет содержать значение, представляющее элемент управления, и используется для связывания функций обработчика событий с элементом управления.

— используется в качестве заголовка, метки элемента или текстового содержимого, в зависимости от типа элемента управления, как описано в разделах для каждого типа.

— последовательность аргументов ключевого слова, используемых для установки параметров или влияния макета для элемента управления. Точные параметры, поддерживаемые каждым типом элемента управления, также определяются в разделах для каждого типа.

где:
— указывает имя элемента, к которому будет подключен наш обработчик “btn1”.

— определяет тип события, которое необходимо обработать “pressed”, аргументов в данном случаи не будет.

— тело функции заключённое в скобки ().

Всё вместе на данный момент:

Теперь нам предстоит создать функционал, который будет производить запись геометрии в файл формата XML. Дальше я не буду описывать всё в деталях и мелочах, так как это уже синтаксис cамого скриптового языка, буду добавлять некие замечания, объяснения, где это необходимо.

Для начала создадим новый метод “fn exportCollision =”. Его задачей будет получить имя файла, в который мы будем производить запись, получить 3д объект коллизии, который мы будем записывать, выставить трансформацию для объекта и, конечно, вызвать метод, который и произведёт запись.

Пояснения:
local collObj = selection[1] — тут происходит захват первого объекта который выделен во воюпорте и запись его в локальную переменную.
local colTransform = collObj.transform — записываем трансформацию объекта во временную переменную

collObj.transform = Matrix3 1 — назначаем нашему объекту единичную матрицу для того что бы он встал по центру вюпорта x = y = z = 0, убераем также любой поворот, а также маштаб.

createXMLFile fileName collObj — вызываем наш метод для записи меша колизии во файл.

collObj.transform = colTransform — возвращаем объект в изначальное положение.

Примечание: Не всегда статическую коллизию надо выставлять по центру. Перед экспортом в не которых физических движках более эффективно оставлять статику на своём оригинальном положении, как, например, с Bullet Physics.

Примечание: Если строка скрипта слишком длинна и вылезает за экран, это создаёт некие неудобства, поэтому её можно разделить на две или даже больше строк с помощью оператора "\".

Вспомогательные методы и структуры

глобальный массив который будет хранить ColMatID структуры.

Один мультиматериал может быть наложен на несколько разных объектов в 3д максе. Этот же мультиматериал может содержать множество разных под-материалов, а это значит, что их индекс не всегда будет начинаться с нуля (единицы), и по порядку, как это будет записано в файле, поэтому нам нужно сделать некую переиндексацию, сохраняя старые ID материалов.

В первом цикле мы собираем информацию и пополняем массив с уникальными индефикаторами материалов. Во втором цикле мы делаем переиндексацию и пополняем глобальный массив reindexedMaterialIDS структурами ColMatID.

Данный метод принимает изначальный объект, а также начальный ID (поскольку списки материала не изменились). Дальше идёт switch case с тремя возможностями. Если материал является мультиматериалом, то следовательно будут и под-материалы (должны быть). Если материал является TUT_COL_MAT, то мы его просто возвращаем, если нет — создаём такой и назначаем некие начальные значения.

Читайте также: