Как удалить связанную геометрию в 3ds max

Обновлено: 23.11.2024

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

В этой модели дома есть все: полы, внутренние стены, лестницы, кухня и все, что угодно, но я хочу удалить всю геометрию внутри, поэтому в основном у меня остается только «оболочка» дома. скажем, если бы вы «погрузили» дом под воду, все, к чему прикоснулась вода, я хочу сохранить, а остальное я хочу убрать (может быть, странное объяснение, но я надеюсь, что оно достаточно ясное, что я имею в виду).

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

Для моделирования я использую 3ds Max, но решения в других программах, например Meshlab, тоже подходят!

Заранее спасибо,

Майк Бентлаге, iBuild

2 ответа 2

Для решения MeshLab в этой записи блога описывается метод использования Ambient Occlusion для удаления внутренних вершин. В MeshLab 2016.12:

Фильтры > Создание и обработка цвета > Окружающая окклюзия

Фильтры > Выбор > Выбрать по качеству вершин. Поиграйте с ползунками, чтобы выбрать низкие значения качества, то есть все внутренние вершины, которые не видны (попробуйте минимум 0, максимум 0,1).

Фильтры > Выделение > Удалить выбранные вершины

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

Это действительно зависит от того, как был создан каждый дом.

Если это иерархический подход, т. е. дом является родителем, а модели внутри (кухня, полы…) — дочерними, то вы можете легко использовать простой MaxScript, такой как этот, для удаления всех дочерних элементов из вашей сцены (вдохновленный эта тема из cgsociety):

Просто убедитесь, что вы не удалите другие сетки или дома!

Если они не упорядочены иерархически, то вы можете Выбрать по имени (нажмите H ) и удалить все вручную, но быстрее, чем выделять их мышью по одному.

Если весь дом представляет собой единый меш (включая реквизит внутри), то мне неизвестно ни о каком существующем способе автоматического удаления всего внутри. Вы все еще можете выбрать по элементу (после преобразования его в Editable Poly/Mesh) и, после выбора дома (при условии, что это один меш), нажать Ctrl + I, чтобы инвертировать выделение и удалить все. Но это все равно потребует времени.
Обходной путь может состоять в том, чтобы присоединить каждый дом к одной гигантской сетке (просто откройте список прикрепления, чтобы выбрать все сразу) и использовать прямоугольное выделение, чтобы выбрать только самую высокую часть (которая должна изолировать объекты или большинство из них). всего, в окне просмотра левого или правого каркаса, а затем нажмите Ctrl + I .

Описывает особые соображения, которые применяются только при использовании Datasmith для переноса сцен из Autodesk 3ds Max в Unreal Editor.

Выберите операционную систему:

На этой странице описывается, как Datasmith импортирует сцены из Autodesk 3ds Max в Unreal Editor. Он повторяет базовый процесс, описанный в разделах Обзор Datasmith и О процессе импорта Datasmith, но добавляет некоторые особенности преобразования, характерные для 3ds Max. Если вы планируете использовать Datasmith для импорта сцен из 3ds Max в Unreal Editor, чтение этой страницы поможет вам понять, как транслируется ваша сцена и как вы можете работать с результатами в Unreal Editor.

Изображения предоставлены Litrix.

Рабочий процесс 3ds Max

Datasmith использует рабочий процесс Export Plugin для 3ds Max. Это означает, что для переноса содержимого 3ds Max в Unreal с помощью Datasmith вам необходимо:

Epic выпускает новую версию подключаемого модуля Unreal Datasmith Exporter для 3ds Max с каждым новым выпуском Unreal Engine. Если вы переключаетесь на другую версию Unreal Engine, убедитесь, что вы загрузили и установили соответствующую версию подключаемого модуля.

Экспортируйте содержимое 3ds Max в файл .udatasmith. См. раздел Экспорт содержимого Datasmith из 3ds Max.

Включите Importers > Datasmith Importer Plugin для вашего проекта, если он еще не установлен.

Используйте средство импорта Datasmith, доступное на панели инструментов Unreal Editor, чтобы импортировать файл .udatasmith. См. Импорт контента Datasmith в Unreal Engine 4.

Подробнее о других типах рабочих процессов Datasmith см. в разделе Поддерживаемое Datasmith программное обеспечение и типы файлов.

Геометрия

В этом разделе описывается, что особенного в том, как Datasmith преобразует геометрические объекты из вашей сцены 3ds Max в Static Mesh Assets и Actors в вашем проекте Unreal Engine.

Сети и тесселяция

В большинстве случаев Datasmith использует сетку рендеринга каждого объекта 3ds Max для создания геометрии для соответствующего ресурса статической сетки в Unreal. Это означает, что ваши активы в Unreal обычно будут иметь точно такие же треугольники, как и в визуализации 3ds Max.

Исключением из этого правила являются 3ds Max Body Objects, где Datasmith основывает геометрию Static Mesh Asset на сетке окна просмотра 3ds Max, а не на сетке рендеринга. Для таких объектов 3ds Max позволяет настраивать степень детализации тесселяции, используемой при рендеринге в видовом экране, в параметрах «Параметры отображения видового экрана» > «Предустановки качества сетки»: «Грубый», «Средний» или «Точный»:

Datasmith учитывает установленный здесь уровень тесселяции для каждого объекта тела в сцене. Дополнительные сведения об этом параметре см. в справке по 3ds Max.

Экземпляры

Когда Datasmith обнаруживает несколько экземпляров одного и того же основного объекта в вашей сцене 3ds Max, он создает только один объект Static Mesh Asset для этого объекта. Затем он помещает несколько экземпляров этого Static Mesh на уровень в Unreal. Обычно это лучше для требований к оперативной памяти и производительности вашего проекта, а также помогает вам управлять своим контентом, уменьшая количество статических сеток.

Везде, где это возможно, мы рекомендуем использовать это преимущество, используя экземпляры в 3ds Max для всех повторяющихся элементов сцены (например, окон, дверей или стульев).

Опорные точки

В 3ds Max можно задать пользовательскую точку поворота для каждого объекта сцены, даже если эти объекты являются экземплярами одного и того же главного объекта. Однако в Unreal Engine все экземпляры одной и той же геометрии должны использовать одну и ту же точку поворота. Когда Datasmith переводит ваши объекты в Unreal, эти опорные точки обрабатываются следующим образом.

Если все экземпляры в 3ds Max имеют одну и ту же пользовательскую точку поворота, Datasmith просто устанавливает ее в качестве точки поворота для создаваемого ресурса Static Mesh. Когда вы вращаете любой из актеров статической сетки, которые Datasmith создает для этого объекта на уровне Unreal Engine, он будет вращаться вокруг местоположения этого пользовательского поворота, как вы ожидаете.

Если один или несколько экземпляров используют местоположение поворота, отличное от других, Datasmith устанавливает для объекта Static Mesh Asset, который он создает в Unreal, использование местоположения поворота по умолчанию для объекта 3ds Max. Каждый раз, когда ему нужно поместить этот актив на уровень, вместо создания актера статической сетки он создает новый пустой родительский актер в месте пользовательского поворота для этого экземпляра. Затем он дает этому родительскому Актеру компонент Static Mesh, который ссылается на актив Static Mesh и имеет смещение перевода от родительского Актера, которое размещает его там, где он должен быть в 3D-сцене. Datasmith добавляет суффикс _pivot к имени этого дочернего компонента.

Например, у чайника слева есть специальная ось, расположенная в верхней части крышки:

Когда Datasmith переносит сцену в Unreal, он создает нового актера с именем Teapot002 в месте этой опорной точки в трехмерном мире. Этому актеру дается компонент Static Mesh с именем Teapot002_Pivot, который ссылается на актив Static Mesh для чайника и смещен от родительского Актера точно на нужную величину, чтобы он отображался в нужном месте относительно другой геометрии в сцене. :

Вы можете перемещать, вращать и масштабировать родительского Актера на уровне Unreal Engine, и ваша модель будет вести себя так, как вы ожидаете. Все, что вам нужно отметить, это то, что в этом случае ваша модель является компонентом родительского актера, а не самим актером статической сетки. Например, в приведенном выше случае чайник справа создан на уровне как актор статической сетки, а не как актор с компонентом статической сетки.

Datasmith не поддерживает импорт экземпляров с разными точками поворота и неравномерным масштабом в 3ds Max.Если у вас есть подобные экземпляры, перед экспортом используйте для них утилиту сброса XForm.

УФ-каналы

Datasmith всегда следит за тем, чтобы каждый Static Mesh, который он добавляет в Unreal, имел набор UV-разверток, доступных для использования Lightmass при встраивании статического освещения в текстуры карты освещения. Когда вы импортируете файл Datasmith, Unreal Engine автоматически создает этот UV-канал и настраивает каждый Static Mesh Asset на использование этого нового канала для запекания карт освещения.

Однако в некоторых случаях может потребоваться вручную создать собственные карты освещения UV в 3ds Max. Это дает вам полный художественный контроль над размещением швов и относительным пространством, назначенным треугольникам в вашей геометрии. Если это так, вам нужно знать, как ваши UV-развертки переносятся в Unreal из 3ds Max и как вы можете переопределить это поведение.

Unreal Engine поддерживает до восьми каналов UV на статическую сетку. И каждый раз, когда Datasmith импортирует объект геометрии из 3ds Max в Static Mesh Asset в Unreal Engine, он использует два UV-канала для создания UV-карт освещения для этой Static Mesh. Таким образом, Datasmith может сохранить до шести ранее существовавших UV-каналов для каждого объекта, который он импортирует в Unreal из 3ds Max.

Однако 3ds Max может иметь до 99 каналов UV для каждого объекта. Таким образом, Datasmith экспортирует только шесть каналов с наименьшими индексами в 3ds Max.

Например, объект 3ds Max ниже имеет пять каналов UV в списке модификаторов. Каждый из этих каналов имеет связанный с ним номер от 0 до 99. Datasmith импортирует эти пять UV-каналов, сбрасывая их номера, чтобы они начинались с 0. Это приводит к набору UV-каналов, пронумерованных 0-4 в Unreal. Наконец, процесс импорта создает два дополнительных UV-канала, в данном случае 5 и 6, для автоматически сгенерированных карт освещения.

В этой таблице показано, как номера каналов UV связаны между 3ds Max и Unreal:

Подскажите, как удалить Link Geometry. Белые белки. Фаил макс прикрепил. В X-ref не отображаются, весят много, выделяются, но не удаляются. Бесят. Сценарий архивируется с 110Мб до 200Кб
Спасибо!

Блин, слишком просто показано. Неделю об них спотыкался и не разу так не пробовал сделать.
И про эти скрипты давно знаю.

Думал там такая же фишка как с x-ref где то менюшка для них запрятана.

Аккаунт заблокирован

Пожизненный бан

Чтоб удалить связанную геометрию:

Применить модификатор Edit Poly или Edit Mesh

Выберите все вершины, удалите.

Удалить связанную геометрию полностью из сцены:

Основное меню -> Ссылки -> Управление ссылками -> вкладка Файлы -> выбираем нужную ссылку -> Отсоединить

а эти строчки полностью уничтожают от linkcomposite

для o в объектах сделать (o.controller=prs()if classof o.parent == LinkComposite сделать o.parent = undefined)для o в объектах, где classof o == LinkComposite удалить o

Работает, но не всегда. То есть в списке вкладки Файлы просто могут не появиться. Но если выделить все объекты, то увидит. Но есть глюк, не все объекты могут отобразиться. При таких вариантах все равно жмем удалить. После этого Link Geometry объекты, которые остались(те, что иногда не отображаются во вкладке Files ), можем конвертировать в что угодно, в поли или меш и после удаления.

Проверено на 1,2 и 3 сервиспаке. На трех компах. Сцены разные. Именно после мержа такая фигня.

Ну тогда попробуйте скрипт Cleaner

там есть кнопка соединение составное . может и поможет )

Попробуйте обрезать сцену

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

Возможно с нормалями что-то. Или еще вариант - это создать ящик, к которому не присваивается импортированный объект, и затем этот ящик, как элемент удалить. Может помочь с этим

Возможно с нормалями что-то. Или еще вариант - это создать ящик, к которому не присваивается импортированный объект, и затем этот ящик, как элемент удалить. Может помочь с этим

С боксом испытана,ноль эффекта. А что такое с нормами?

Скачал модель по вашей ссылке. К объекту применения материала какой-то Autodesk Generic (возможно от экземпляра какого-то материала). Он во вьюпорте проявляется черным. Применить другой материал ко всему

Nightt:
недобросовестный исполнитель. требуется с заказчиком

Пожизненный бан

Блин, пока писал, быстрее собрал бы эту модель)))

Скачал модель по вашей ссылке. К объекту применения материала какой-то Autodesk Generic (возможно от экземпляра какого-то материала). Он во вьюпорте проявляется черным. Применить другой материал ко всему

Спасибо еще раз попробовала,получилось! Огромное спасибо! 1 сек и все готово!

Блин, пока писал, быстрее собрал бы эту модель)))

Спасибо за отклик и совет, но реально нет его времени моделить, есть готовое, зачем что-то выдумывать)

Конечно, не отображается материал во вьюпорте, это минус( логотип откорректировать будет проблематично.

Конечно я не сижу и не ломаю голову, моделю интерьер, это так на будущее,и что бы больше было знаний) Обещаю на досуге помоделировать как-то)

Если вы получаете сообщение об ошибке «Следующий материал не установлен для шейдера Crytek: Лицо, это означает, что некоторым лицам или объектам в вашей сцене не назначен шейдер Crytek. Чтобы исправить это, выберите объект или лица и в материале Редактор изменяет тип шейдера на "Crytek Shader".

Несколько ассетов экспортируются как одна большая единая сетка, а не по отдельности

В вашей сцене есть несколько ресурсов, после экспорта из 3DS Max и импорта в Cryengine3 вы видите все ресурсы с одним узлом и только в виде одного файла.

Чтобы решить эту проблему, вам необходимо убедиться, что установлен флажок «Экспорт файла для каждого узла», поскольку в противном случае несколько фиктивных узлов будут экспортированы в один файл (например, если у вас есть разные части здания, которые вы экспортировали, вошли в Cryengine3). как единое целое).

3DS Max мгновенно аварийно завершает работу во время экспорта

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

Чтобы это исправить, свяжите уровни детализации под основным узлом сетки.

Более двух треугольников имеют общее ребро

Когда вы получаете сообщение об ошибке во время экспорта в окне CRYENGINE Exporter с сообщением: «Не удалось скомпилировать геометрию в узле. Более двух треугольников имеют общее ребро», это означает, что у вас могут быть двойные грани, прикрепленные друг к другу, или две грани. которые присоединены к одному и тому же ребру, но вершины не спаяны.

Чтобы исправить это, перейдите на вкладку модификатора, нажмите на нее, прокрутите вниз и выберите "Проверка STL".

После активации модификатора STL те грани будут выделены красным цветом, где это можно исправить.

Раздутый размер файла .cgf

Если вы экспортируете свой ассет из 3DS Max и размер файла .cgf очень большой, в первую очередь следует проверить, включена ли в сцене анимация вершин. Если это так, снимите флажок и снова экспортируйте объект.

Очень важно! При этом вы не получите ошибки экспорта, поэтому проверьте размер файла!

Вырожденные грани и недопустимая ошибка касательной матрицы

Когда журнал экспортера и/или редактора сообщает об ошибках, подобных этим:

Скорее всего, это связано с так называемыми "дегенеративными лицами".

Вырожденные грани — это треугольники, все ребра которых лежат друг на друге, так что треугольник не имеет площади грани:

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

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

Как исправить ошибку «Вырожденные грани и неверная касательная матрица»

Чтобы решить эту проблему, вам нужно удалить такие треугольники из вашей сетки.Сложность заключается в том, что они не всегда очевидны, потому что выглядят как обычный край.

В Max есть инструмент cryMaxTools, который находится на верхней полке и может находить такие треугольники и помечать их.

Выберите меши, которые вы хотите проверить, и перейдите на верхнюю полку, нажмите cryMaxTools и прокрутите вниз до ToolBox

Появится новое окно с выбранными сетками, нажмите там на вкладку «CryModeling», а затем «Отметить треугольники с занижением».

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

Также точечный помощник будет связан с соответствующим объектом и добавлен в новый слой, содержащий только такие вырожденные треугольные маркеры:

Теперь вы можете последовательно пройтись по точечным помощникам и решить вырожденные треугольники — несколько примеров:

Еще несколько полезных советов

  • Ограничивающий прямоугольник вспомогательного узла всегда такой же длины, как сломанная грань, так что вы получите представление о том, что ищете.
  • Всегда будет столько помощников, сколько вырожденных треугольников. Наличие 3 помощников в одном месте означает, что есть 3 вырожденных треугольника!
  • Вырожденные грани могут быть частью многоугольника. В частности, многоугольники с более чем 4 вершинами являются проблематичными, поскольку 3dsmax выполняет их автоматическую триангуляцию, поэтому обратите внимание на триангуляцию:

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

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