Почему для файлов стереолитографии (.STL) требуется, чтобы каждый треугольник имел нормальный вектор?

Я пытаюсь написать код для манипулирования файлами.STL ASCII и пытаюсь полностью понять формат файла. Из того, что я видел, содержание "грани нормальной" линии каждого треугольника не влияет на нарисованный треугольник. Это также не оказывает никакого влияния на то, какая сторона треугольника считается "внешней", что осуществляется путем изменения порядка вершин.

Этот треугольник

facet normal 1 1 1
   outer loop
      vertex -1 1 1
      vertex 1 -1 1
      vertex 1 1 -1
   endloop
endfacet

идентичен этому треугольнику

facet normal -1 -1 -1
   outer loop
      vertex -1 1 1
      vertex 1 -1 1
      vertex 1 1 -1
   endloop
endfacet

который также идентичен этому треугольнику.

facet normal 1 0 0
   outer loop
      vertex -1 1 1
      vertex 1 -1 1
      vertex 1 1 -1
   endloop
endfacet

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

РЕДАКТИРОВАТЬ: я должен добавить, что я открываю эти файлы в Autodesk Meshmixer.

1 ответ

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

  1. плавное графическое затенение (рендеринг)

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

    изменчивая Земля

    Однако для достижения действительно плавного затенения нам нужно по нормали на вершину, а IIRC STL имеет только нормали к поверхности, поэтому сглаживание можно использовать только для треугольников поверхности артефакта.

  2. Объявите инструмент стороны доступа и угол (печать)

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

Другие вопросы по тегам