Нашел такой скрипт, он выполняется но вершины сетки никак не изменились.
import bpy ob = bpy.data.objects['Grid'] vert = ob.data.vertices for v in vert: print(v.co.z) v.co.z = v.co.z+1.0
Нашел такой вариант, он двигает вверх всю сетку
import bpy from random import random frame_num = 0 for f in range(0,100): for v in bpy.context.active_object.data.vertices: #m = random( ) * 0.02 m = 0.002*frame_num #When the number of frames is even if f%2: #Randomly move in the z-axis direction v.co.z += m #other than that( Odd number of frames)in the case of else: #Randomly move in the z-axis direction v.co.z -= m v.keyframe_insert( 'co',index = 2,frame = frame_num) frame_num += 1
А вот в EDIT mode не смещаются выбранные вершины.
import bpy, bmesh #select vertex obj = bpy.context.active_object bpy.ops.object.mode_set(mode = 'EDIT') bpy.ops.mesh.select_mode( type="VERT") bm = bmesh.from_edit_mesh( obj.data) #bpy.ops.mesh.select_all( action = 'SELECT') #bpy.ops.object.mode_set( mode = 'OBJECT') obj.data.vertices[0].select = True for v in bpy.context.active_object.data.vertices: if v.select: v.co.z = v.co.z+5.2 #obj.data.vertices[v] = v.co.z //obj.data.vertices[v] блендер дает ошибку. value: invalid, expected a StructRNA type or None, not a float
Вот так двигает выделенные вершины
import bpy, bmesh #clear scene, make mesh #select vertex obj = bpy.context.active_object bpy.ops.object.mode_set(mode = 'EDIT') bpy.ops.mesh.select_mode( type="VERT") bm = bmesh.from_edit_mesh( obj.data) obj.data.vertices[0].select = True for e in bm.verts: if e.select: e.co.z += 0.2
Как бы теперь радиус(числа выбранных вершин) уменьшать , что бы бугорок\холм получился ?
Тоесть я выбрал 10 вершин.
Запускаю скрипт. Он сдвинул вверх 10 вершин
Скрипт на следующий шаг for выделит 8 вершин и сдвинул их вверх.
Скрипт на следующий шаг for выделит 6 вершин и сдвинул их вверх.
Скрипт на следующий шаг for выделит 4 вершин и сдвинул их вверх.
Скрипт на следующий шаг for выделит 2 вершин и сдвинул их вверх.
Я бы гуглил примеры bpy.ops.transform.shrink_fatten, он должен по сути по нормали двигать вершины и у него есть proportional editing (это когда в центре вершина по полной перемещается, а к краям эта величина угасает). А то там ещё наверняка надо что-нибудь пересчитывать, после ручных правок. Но с API Блендера всегда секс экспериментальный. Я в основном только экспортеры пишу.
после модификации вершин нужно вызвать функцию update_edit_mesh чтобы изменения сразу отобразились в 3D модели.
import bpy, bmesh obj = bpy.context.active_object bm = bmesh.from_edit_mesh(obj.data) for v in bm.verts: if v.select: v.co.z += 0.2 bmesh.update_edit_mesh( obj.data) # <- обновить данные меша
Хороший туториал для новичка.
Создать кнопку и класс в tool
шевелить вершинами это конечно прикольно, только я не догоняю зачем делать это в блендере скриптом
роннико изобретает скульптинг ?
беглый гуглинг показывает что можно сделать ещё и так https://blender.stackexchange.com/questions/266047/how-do-i-move-… eometry-nodes
Я ваши вершины мышкой вертел
Ivashka
я не врубаюсь какой смысл вертеть их скриптом, если это какой то вариант скульптинга или автоскульптинга то такое вроде бы делают кистями
В блендере есть дисплейсмент
Это делается через ноды
Хотя мб можно и через питон что то подобное https://docs.blender.org/api/current/bpy.types.DisplaceModifier.html
, но это надо изучать по докам и методом тыков если доки старые и не гуглятся ... а то и в сырцы заглядывать.
А к нодовой подсистеме есть видео документация
endeavour_pr
> не врубаюсь какой смысл вертеть их скриптом,
Это же ронико
Надо скриптом.
Потому и создал тему.
Скрипт даёт точность.
Например сделать 15 раз такое(руками задолбаешся, а скриптом в один клик и одну секунду):
For 15 raz: extrude selected polygons and scale(0.5,1,0.5)
И это самое простое.
А можно еще что-то посложнее и навороченнее сделать скриптом.
ronniko
> Например сделать 15 раз такое(руками задолбаешся, а скриптом в один клик и одну
> секунду):
Это называется макрос. Но кажется в блендере их нет по дефолту, только через платное расширение или гитхаб(заброшено) https://github.com/Muthird/CommandRecorder2.8.
Либо через geometry nodes.
https://docs.blender.org/manual/en/latest/modeling/geometry_nodes… ude_mesh.html
ronniko
> Скрипт даёт точность.
Ты походу в кадах не работал, так вот блендер поддерживает такую же фигню как и кады, а именно задания трансформации кнопочками клавиатуры. например выбрал полигоны, затем G и после этого X,Y, или Z, соответственно оси и набираешь циферками на сколько хочешь сдвинуть и Enter вот и всё. аналогично вращение, только не G сначала жмёшь а R, если хочешь скалировать то S.
> А можно еще что-то посложнее и навороченнее сделать скриптом.
А можно просто изучить горячие клавиши, и всякие функции типа автоматического выбора по различным параметрам, например капланарность и тому подобное.
Тема в архиве.