Выравниваем нормали на двух полигонах

Пусть в нашей сцене в Blender на меше есть два полигона, и мы хотим проверить в одну ли сторону смотрят их нормали, и развернуть одну из них, если они разнонаправленны. Мы можем проделать все это при помощи Blender Python API.

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

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

Приведем в соответствие индексы полигонов.

Возьмем два полигона для сверки их нормалей.

Вычислим скалярное произведение для их векторов нормалей.

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

Чтобы сонаправить обе нормали, развернем нормаль на втором полигоне на 180 градусов.

Обновим данные по нормалям в BMesh.

И теперь мы можем вернуть измененную геометрию из BMesh в объект в сцене. Заодно очистим ненужный нам больше объект BMesh.

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

5 1 голос
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Новые
Старые Популярные