АртФорумМоделирование

Blender 3.3 script как двигать вершины ?

Страницы: 1 2 Следующая »
#0
8:45, 8 окт 2023

Нашел такой скрипт, он выполняется но вершины сетки никак не изменились.

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
#1
9:14, 8 окт 2023

Нашел такой вариант, он двигает вверх всю сетку

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
#2
10:06, 8 окт 2023

А вот в 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
  
 
#3
10:28, 8 окт 2023

Вот так двигает выделенные вершины

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 вершин и сдвинул их вверх.

#4
17:49, 8 окт 2023

Я бы гуглил примеры bpy.ops.transform.shrink_fatten, он должен по сути по нормали двигать вершины и у него есть proportional editing (это когда в центре вершина по полной перемещается, а к краям эта величина угасает). А то там ещё наверняка надо что-нибудь пересчитывать, после ручных правок. Но с API Блендера всегда секс экспериментальный. Я в основном только экспортеры пишу.

#5
21:52, 8 окт 2023

после модификации вершин нужно вызвать функцию 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) # <- обновить данные меша
#6
11:54, 9 окт 2023

Хороший туториал для новичка.

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Создать кнопку и класс в tool

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

#7
15:08, 9 окт 2023

шевелить вершинами это конечно прикольно, только я не догоняю зачем делать это в блендере скриптом
роннико изобретает скульптинг ?

#8
15:09, 9 окт 2023

беглый гуглинг показывает что можно сделать ещё и так https://blender.stackexchange.com/questions/266047/how-do-i-move-… eometry-nodes
Изображение

#9
18:25, 10 окт 2023

Я ваши вершины мышкой вертел

#10
15:22, 11 окт 2023

Ivashka
я не врубаюсь какой смысл вертеть их скриптом, если это какой то вариант скульптинга или автоскульптинга то такое вроде бы делают кистями
В блендере есть дисплейсмент

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры


Это делается через ноды

Хотя мб можно и через питон что то подобное https://docs.blender.org/api/current/bpy.types.DisplaceModifier.html
, но это надо изучать по докам и методом тыков если доки старые и не гуглятся ... а то и в сырцы заглядывать.
А к нодовой подсистеме есть видео документация

#11
18:23, 11 окт 2023

endeavour_pr
> не врубаюсь какой смысл вертеть их скриптом,
Это же ронико

#12
19:23, 11 окт 2023

Надо скриптом.
Потому и создал тему.
Скрипт даёт точность.
Например сделать 15 раз такое(руками задолбаешся, а скриптом в один клик и одну секунду):

For 15 raz:
   extrude selected polygons and scale(0.5,1,0.5)

И это самое простое.
А можно еще что-то посложнее и навороченнее сделать скриптом.

#13
0:41, 12 окт 2023

ronniko
> Например сделать 15 раз такое(руками задолбаешся, а скриптом в один клик и одну
> секунду):
Это называется макрос. Но кажется в блендере их нет по дефолту, только через платное расширение или гитхаб(заброшено) https://github.com/Muthird/CommandRecorder2.8.

Либо через geometry nodes.
https://docs.blender.org/manual/en/latest/modeling/geometry_nodes… ude_mesh.html

#14
1:05, 12 окт 2023

ronniko
> Скрипт даёт точность.
Ты походу в кадах не работал, так вот блендер поддерживает такую же фигню как и кады, а именно задания трансформации кнопочками клавиатуры. например выбрал полигоны, затем G и после этого X,Y, или Z, соответственно оси и набираешь циферками на сколько хочешь сдвинуть и Enter вот и всё. аналогично вращение, только не G сначала жмёшь а R, если хочешь скалировать то S.

> А можно еще что-то посложнее и навороченнее сделать скриптом.
А можно просто изучить горячие клавиши, и всякие функции типа автоматического выбора по различным параметрам, например капланарность и тому подобное.

Страницы: 1 2 Следующая »
АртФорумМоделирование

Тема в архиве.