Для того чтобы быстро “пересчитать нормали” – изменить направление нормалей так, чтобы они все были направлены в сторону внешней поверхности меша, при помощи Blender Python API можно сделать скрипт, состоящий всего из нескольких строчек кода.
Пересчитаем нормали для всех выделенных в сцене мешей.
Для начала нужно перейти в режим редактирования:
1 |
bpy.ops.object.mode_set(mode='EDIT') |
Пройдем циклом по выделенным объектам:
1 |
for obj in bpy.context.selected_objects: |
Пересчитать нормали через Blender Python API мы можем при помощи оператора normals_make_consistent(). Этот оператор работает с текущим активным объектом в сцене. Поэтому нам нужно каждый объект, проходящий через наш цикл, сначала сделать активным:
1 |
bpy.context.view_layer.objects.active = obj |
Также перед применением оператора необходимо выделить все полигоны меша, чтобы нормали были пересчитаны правильно:
1 |
bpy.ops.mesh.select_all(action='SELECT') |
И нам осталось просто вызвать сам оператор:
1 |
bpy.ops.mesh.normals_make_consistent(inside=False) |
В параметре inside мы передаем желаемое направление нормалей. False – направление “наружу” меша, True – внутрь.
Весь код:
1 2 3 4 5 6 7 8 |
import bpy bpy.ops.object.mode_set(mode='EDIT') for obj in bpy.context.selected_objects: bpy.context.view_layer.objects.active = obj bpy.ops.mesh.select_all(action='SELECT') bpy.ops.mesh.normals_make_consistent(inside=False) |
После выполнения данного кода нормали для всех выделенных мешей будут пересчитаны так, чтобы смотреть “наружу” меша.