Использование модификатора «Зеркало» (Mirror) очень упрощает процесс моделирования на симметричных объектах. Для того чтобы правильно оптимизировать меш под использование с этим модификатором, всегда нужно удалить ту часть меша, на которую будет производиться отзеркаливание, иначе мы сразу же получим задвоенную геометрию и как следствие — проблемы в ее дальнейшем редактировании и шейдинге. Процесс такой чистки геометрии можно оптимизировать простеньким скриптом, который сам удалит лишние точки и добавит модификатор на меш.
Для примера сделаем скрипт для назначения модификатора Mirror по оси Х для текущего активного объекта.
Пусть сейчас мы находимся в режиме редактирования объекта.
Определим объект BMesh и перебросим в него всю геометрию с активного объекта.
|
1 2 3 |
import bmesh bm = bmesh.from_edit_mesh(bpy.context.object.data) |
Если мы просто хотим выделить все вертексы, которые лежат справа от центра объекта (его ориджина) по оси X, чтобы дальше действовать самостоятельно, мы можем просто пройти по вертексам в цикле и выделить те из них, у которых координата по оси Х больше нуля.
Условие берем именно «больше», чтобы не выделялись точки на оси, вокруг которой в дальнейшем будет производиться отзеркаливание.
|
1 2 |
for vertex in bm.verts: vertex.select = True if vertex.co.x > 0.0 else False |
Если же мы хотим сразу удалить эти точки, получим их в виде списка и вызовем оператор delete() из пакета bmesh.ops.
|
1 2 |
selected_verts = [_vertex for _vertex in bm.verts if _vertex.select] bmesh.ops.delete(bm, geom=selected_verts, context='VERTS') |
Теперь мы можем вернуть отредактированную геометрию из BMesh в исходный объект.
Так же очистим ненужный нам больше объект BMesh.
|
1 2 |
bmesh.update_edit_mesh(bpy.context.object.data) bm.free() |
Половина геометрии меша теперь удалена.
Назначим модификатор Mirror чтобы «вернуть» ее назад уже в виде отзеркаливания.
|
1 2 |
mirror = bpy.context.object.modifiers.new(name='Mirror', type='MIRROR') mirror.use_axis[0] = True |
Теперь объект снова выглядит целым, так как назначенный модификатор отзеркаливает оставшуюся геометрию вокруг оси Х.
Таким образом мы быстро назначили модификатор и скорректировали геометрию под него, устранив ее задвоение.

.blend file on Patreon