Как сделать коллайдер для треугольника

Обновлено: 02.07.2024

Импортирование мешей в Unity может быть выполнено с помощью двух основных типов файлов:

  1. Экспортированные 3D форматы файлов , такие как .FBX или .OBJ
  2. Собственные файлы 3D приложений , например такие как .Max и .Blend файлы из 3D Studio Max и Blender.

Любой из этих типов позволит вам добавлять свои меши в Unity, но есть соображения относительно того типа, который вы выберите:

Экспортированные 3D файлы

Unity может читать .FBX, .dae (Collada), .3DS , .dxf и .obj файлы, obj или Collada экспортеры могут быть найдены для многих приложений, точно также как FBX экспортеры могут быть найдены здесь

  • Экспортируйте только необходимые данные
  • Проверяемые данные (перед импортированием в Unity, переимпортируйте в 3D пакет)
  • Как правило файлы меньшего размера
  • Поддерживает модульный подход - к примеру разными компонентами для интерактивности и типов коллизий
  • Поддерживает другие 3D пакеты, чьи форматы не поддерживаются у нас напрямую
  • Может замедлять процесс прототипирования и итераций
  • Легче потерять след между исходной (рабочий файл) и игровой версией данных (к примеру экспортированный FBX файл)

Собственные файлы 3D приложений

Unity также может импортировать, путём конвертации, файлы: Max , Maya , Blender , Cinema4D , Modo , Lightwave и Cheetah3D , например, .MAX , .MB , .MA и др.

  • Быстрый процесс итерации (для повторного импортирования в Unity сохраните исходный файл)
  • Изначально просто
  • На машинах, задействованных в работе над Unity проектом, должны быть установлены лицензионные копии данного программного обеспечения
  • Файлы, содержащие ненужные данные могут стать неоправданно большими
  • Большие файлы могут замедлить процесс автосохранения
  • Меньше проверяется, поэтому труднее устранить ошибки

Здесь находится перечень поддерживаемых пакетов трёхмерной графики, другие же чаще всего экспортируют вышеупомянутый тип файла.

Текстуры

При импорте меша, Unity попытается используя свой метод поиска, автоматически найти текстуры, используемые им. Сперва импортёр начнёт искать подпапку Textures, внутри папки с мешем или в папках уровнем выше. Если это не поможет, тогда по всей структуре проекта будет выполнен глобальный поиск всех имеющихся текстур. Конечно данный метод поиска значительно медленнее обычного и его главным недостатком является то, что в результатах поиска может появиться две и более текстур с одинаковым названием. В таком случае нет гарантий того, что нужная текстура будет найдена.

Textures в или над уровнем с компонентами (ассетами)" src="http://docs.unity3d.com/ru/current/uploads/Main/Mesh-TextureImportHierarchy.jpg" style="border:0px;display:block;max-width:100%;margin:0px 0px 10px" />
Разместите свои текстуры в папке Textures в или над уровнем с компонентами (ассетами)

Создание и присвоение материала

Для каждого импортированного материала, Unity применит следующие правила:-

Если генерация материала отменена (иначе говоря если галочка Import Materials не выставлена), тогда будет назначен материал по-умолчанию. Если же генерация была включена, тогда произойдёт следующее:

  • Unity будет использовать название для своего материала, основываясь на значении параметра Material Naming
  • Unity попытается найти существующий материал с таким именем. Область поиска для поиска материала задаётся при помощи параметра Material Search
  • Если Unity удастся найти существующий материал, тогда он будет использован в импортированной сцене, если же нет, тогда будет создан новый материал

Коллайдеры (Colliders)

В Unity используется два основных типа коллайдеров: Mesh Colliders и Primitive Colliders . Меш коллайдеры - это те компоненты, которые используют для себя данные импортированного меша и могут быть применены для создания столкновений с окружением. Когда вы в настройках импорта (Import Settings) активируете опцию Generate Colliders , меш коллайдер автоматически добавится в сцену вместе с импортированным мешем. Он будет рассматриваться как цельный до тех пор, пока он будет работать в контексте использования физической системой.

При перемещении своего объекта по сцене (к примеру машины), вы не можете использовать меш коллайдеры. Вместо этого, вам необходимо использовать примитивные коллайдеры. В этом случае вам необходимо отключить опцию Generate Colliders .

Анимации (Animations)

Анимации автоматически импортируются из сцены. Для более детального ознакомления с настройками импорта анимации посетите главу документации под названием подготовка компонентов и их импорт в системе анимации (Mecanim).

Карты нормалей и персонажи (Normal mapping and characters)

Если у вас есть модель персонажа с наложенной на него картой нормалей, взятой с высокополигональной модели, тогда вам необходимо будет импортировать в сцену версию модели для игры с Smoothing angle в 180 градусов. Таким образом можно предотвратить появление странно выглядящих швов в местах сочленения модели. Если же швы всё ещё останутся даже после применения данных настроек, тогда активируйте опцию Split tangents across UV seams .

Если вы конвертируете чёрно-белое изображение в карту нормалей, вам не следует об этом беспокоиться.

Формы смешивания (Blendshapes)

Unity поддерживает формы смешивания(Blendshapes) (которые ещё называют морфинговыми целями или вертексной анимацией). Unity может импортировать формы смешивания из таких форматов как .FBX (формы смешивания и контроль над анимацией) и .dae (только формы смешивания). Формы смешивания Unity также поддерживают вертексную анимацию на вершинах, нормалях и касательных. На меш одновременно может воздействовать как его его скин (Skin), так и формы смешивания. Все меши, которые были импортированы с формами смешивания будут использовать компонент SkinnedMeshRenderer (и не важно, был ли к нему применён до этого скин или нет). Анимация форм смешивания импортируются как часть обычной анимации - она попросту анимирует веса форм смешивания на компоненте SkinnedMeshRenderer.

Есть два способа импорта форм смешивания с нормалями:

  1. Если установить режим импорта Normals в положение Calculate , тогда для мешей будет использоваться та же последовательность просчёта нормалей что и для форм смешивания.
  2. Экспортируйте информацию о группах сглаживания в исходный файл. Таким образом Unity просчитает нормали из групп сглаживания как для меша, так и для форм смешивания.

Если вам нужны касательные на ваших формах смешивания, тогда выставите режим импорта Tangents в положение Calculate .

Советы (Hints)

  • Слейте между собой как можно больше мешей в единое целое. И сделайте так, чтобы они использовали одни и те же материалы и текстуры. Это должно дать хороший прирост в производительности.
  • Если в процессе работы в Unity вам придётся довольно часто сталкиваться с настройкой своих объектов, (применяя к ним физику, скрипты и другие полезности) то, чтобы в дальнейшем избавить себя от лишней головной боли, вам следует заранее позаботиться о правильном именовании своих объектов в том трёхмерном приложении, в котором они изначально были созданы. Потому как работать с большим количеством объектов, имеющих названия вроде pCube17 или Box42 мягко говоря не очень удобно.
  • Работая в своём трёхмерном приложении старайтесь располагать свои модели в центре мировой системы координат. В дальнейшем это упростит их размещение в Unity.
  • Если вершины меша изначально не имеют своих цветов, то при первом рендере Unity автоматически назначит всем вершинам белый цвет.

Редактор Unity отображает гораздо больше вершин и треугольников (по сравнению с тем, что отображается в моём трёхмерном приложении).

Так и есть. На что вы действительно должны обратить внимание, так это на то, какое количество вершин/треугольников на самом деле было послано для просчёта на графический процессор (GPU). В отличие от случаев, где материал требует, чтобы эти данные посылались на GPU дважды, такие вещи как твёрдые-нормали (hard-normals) и несмежные UV развёртки(non-contiguous UVs) намеренно отображают гораздо большее количество вершин/треугольников, чем есть на самом деле. В контексте UV и 3D пространства треугольники должны располагаться смежно, чтобы сформировать собой границу, поэтому при уменьшении количества треугольников на UV-швах, которые и должны были образовать собой границу и возникает эффект мнимого увеличения их количества.

Это сгенерированный треугольник. Я хочу добавить больше вершин позже (4,5,6. ). На данный момент я хочу добавить collider2d для этих сеток. Позже у меня есть пятиугольники и шестиугольники, поэтому я думаю, что мне нужен BoxCollider2D.

Я получаю вышеуказанный результат. Когда я добавляю это:

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

matched

error

Я просто хочу сопоставить коллайдер (зеленый) с сеткой.

вы пробовали MeshCollider вместо этого?

Эти треугольники/пятиугольники и т. д. не статичны. Мне нужно Rigidbody для этого.

Импортируются модель из 3dmax. Импорт проходит успешно. В свойстве prefaba задаю generate collider. Он генерируется как mesh collider. Однако при добавлении на объект Rigitbody модель проваливается сквозь пол. Как правильно настроить collider для модели?

Non-convex MeshCollider with non-kinematic Rigidbody is no longer supported in Unity 5. If you want to use a non-convex mesh either make the Rigidbody kinematic or remove the Rigidbody component. это так для справки) Кароче, не будет он с meshcollider(non convex) физику обрабатывать)

1 ответ 1

Ну, проблем может быть несколько. Например, у объекта пола нет коллайдера. Либо пол и ваш объект имеют разные слои, а в настройках слоёв указано, что их столкновения не должны обрабатываться. Либо, один из коллайдеров может быть помечен, как IsTrigger и тогда он не будет сталкиваться, а только выдавать событие о пересечении.
Вообще этой банальной галочки должно быть достаточно для создания рабочего коллайдера. Т.е. если зелёный контур коллайдера совпадает с моделью, то проблема где-то в настройках окружающих объектов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками unity3d или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2022 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2022.1.26.41266

В панели Hierarchy щелкаем правой кнопкой мыши по названию нашей сцены и во вкладке GameObject выбираем Create Empty.

Будет создан пустой объект, без компонентов.

Давайте рассмотрим некоторые компоненты, которые можно добавить для нашего пустого объекта.

  • Sprite — спрайт, который нужно отрисовать.
  • Color — базовый цвет, который отрисовывается.
  • Flip — перевернуть спрайт по X или по Y.
  • Draw Mode — отрисовка в трех вариантах, простая, кусочками или черепицей.
  • Sorting Layer — задает приоритет во время рендеринга.
  • Order in Layer — приоритет спрайта в слое, на котором он находится.
  • Mask Interaction — TO DO.
  • Sprite Sort Point — TO DO.
  • Material — материал для отрисовки спрайта.


  • Radius — задает радиус активной зоны коллайдера.

Так же есть вариант использовать коллайдер в виде капсулы:


Такие свойства Size, выведут зону коллайдера в таком виде:

  • Paths/Size задает количество фигур, которые Вы хотите нарисовать.
  • Element/Size задает количество вершин у фигуры.

По заданным координатам вершин, коллайдер получится в таком виде:


Есть еще один компонент для отрисовки сложного коллайдера. Компонент EdgeComponent, область коллайдера задается по вершинам(Element).

  • Edge Radius — сглаживание углов коллайдера.
  • Size — количество вершин коллайдера.
  • Element — задает координаты вершины X и Y.

По текущим координатам, мы получим такой коллайдер:


Композитный коллайдер. Используется, если нужно объединить два коллайдера.

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