Металл2024 Реклама
Метобр2024 Реклама

«Ненормальные» нормали

Kosta3D
Идет загрузка
Загрузка
27.09.2015
23465
24
3D-моделирование

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

26
Типовой диалог с заказчиком, который принес «готовую к печати» модель.

- Вы говорите, что подготовили 3D модель для печати? Но у Вас тут нормали перевернутые…

- Нормали? Какие «нормали»? Вы о чем?

Если Вы знаете, что такое «нормали», то можете дальше не читать – эта статья не для Вас.

Итак, вспоминаем.

Плоскость однозначно определяется тремя точками. Нормаль – это вектор, перпендикулярный плоскости. Направление вектора определяется по «правилу буравчика» (оно же «правило винта», «правило штопора», «правило правой руки» и т.д. – кому что ближе и понятнее).
«Ненормальные» нормали

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

Файлы формата stl описывают твердые тела, поверхность которых является набором треугольников, у которых нормали должны быть направлены наружу - из тела модели
«Ненормальные» нормали

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

Далеко не все пакеты 3D моделирования имеют удобные средства отслеживания правильности расположения нормалей и перевернутые грани довольно трудно разглядеть. Вот, например, картинка из SketchUp. Перевернутая грань чуть темнее, чем лицевая (рис. слева).

«Ненормальные» нормали

Вам плохо видно? Мне тоже. Ситуацию можно улучшить, изменив цвет отображения перевернутых граней в настройках SketchUp. Теперь лучше? (рис. справа)

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

«Ненормальные» нормали
Давайте попробуем его напечатать на принтере. Как видим, объект «развалился» на две части именно из-за перевернутых граней.
«Ненормальные» нормали



Предусмотреть все случаи, когда могут возникать перевернутые нормали (перевернутые грани) невозможно. Но наиболее часто источниками появления перевернутых граней являются:

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

Рассмотрим эти случаи подробнее.

Повороты фигур и выдавливание

Создадим модель «условной» арки. Поскольку арка должна получиться симметричной относительно вертикальной оси, то логично нарисовать одну половину, а вторую получить зеркальным отражением первой. Затем соединить обе части.
«Ненормальные» нормали
На рис. A нарисована двумерная фигура для левой части арки. Далее копируем фигуру, зеркально отображаем ее и присоединяем к первой с небольшим перекрытием (рис. B). Обратите внимание: после зеркального поворота у желтой фигуры нормали повернуты в другую сторону! (рис. C). Если теперь выдавить объединенную фигуру на нужную толщину, то левая и правая части будут иметь нормали, направленные в разные стороны - у левой части внутрь тела, а у правой наружу (рис. D).
«Ненормальные» нормали
Внешне модель будет выглядеть абсолютно корректно (рис. E), а принтер напечатает ее вот так (рис. F).
«Ненормальные» нормали
Эту ошибку можно было бы избежать следующими способами:
  • После зеркального отображения сначала перевернуть нормали у одной из фигур, а потом выдавить
  • Выдавить до объединения отдельно левую и правую (зеркальную) фигуры и получить два объекта. Затем выделить левый объект и перевернуть нормали наружу, после чего соединить два объекта
  • Не создавать зеркальную фигуру, а выдавить левую фигуру и получить объект. Потом сделать копирование и зеркальный поворот объекта, а затем соединить оба объекта

Разные методы создания объектов

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

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

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

Ручное «заращивание» дырок поверхности

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

Существует много программ, которые позволяют находить и исправлять перевернутые грани. Например, netfabb, meshlab, meshmixer и другие. Некоторые программы моделирования имеют встроенные средства проверки поверхности перед экспортом в stl файл. Но для сложных поверхностей алгоритмы этих программ не всегда могут найти и исправить все перевернутые нормали. Поэтому лучше следить за правильным расположением нормалей с самого начала при создании объектов. Ведь все знают, что запутать веревку можно за несколько секунд, а распутывать её потом можно часами.

Если Вы хотите сами подготовить модель для печати на 3D принтере, то рекомендуем установить у себя на компьютере любую программу для 3D-печати, например, Cura (последняя стабильная версия на момент написания статьи v.15.04). Загрузите в нее Вашу модель и посмотрите послойно, как будет печататься Ваша «полностью подготовленная к печати» модель.



И если Ваш принтер вместо прямоугольной рамки (рис. слева) собирается печатать вот такую ерунду (рис. справа),
«Ненормальные» нормали



не спешите кричать, что компьютер «глючит» или что принтер «сошёл с ума». Посмотрите внимательно – может у Вашей модели «ненормальные» нормали?



Желаем успехов!

А.М.

Коста 3D

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

26
Комментарии к статье
Кремень КБ Реклама
Кремень КМ Реклама