[Blender] Python Blender alguien lo sabe hacer

Hola Klópes, gracias por contestar.

De hecho, tengo un Plano con 4 vértices, les aplico fuerzas a cada uno de ellos para qué se muevan de una forma qué me interesa. A lo mejor lo encuentras raro porque mi objetivo no es una animación sino una comprobación matematica.

He pegado solo un cacho del programa para intentar simplificar, pero a lo mejor no os he dado la información suficiente. Os paso el resto del script por si con esto lo conseguís, para qué el programa funcione tiene que haber en escena 1 solo plano de nombre Plane modificando sus vértices para qué no sea plano. El objetivo del script es que lo planificarlo poco a poco.

From Blender import *.

Import math.

Import pickle.

From numpy import *.

Import time.

Print (“\n\n\n——-start——-“).

Kpla = 1 #constant de la molla daplanar.

Inctemps = 0.1.

Me = NMesh. GetRaw(“Plane”).

Cara = Object. Get(“Plane”).

Suport = NMesh. GetRaw().

NMesh. PutRaw(suport,”suport, 1).

Obsuport = Object. Get(“Mesh”).

Forces = [].

Acc = [].

Vel = [].

For i in range (0, len(me, verts)):
forces, append(array([0,0,0])) tacc, append(array([0,0,0])) tvel, append(array([0,0,0])) t.

Def centre(cara):
result = [] tnumverts = len(cara) t ti=0 tx=0 ty=0 tz=0 twhile i < numverts:
x = x + cara[i][0] t y = y + cara[i][1] t z = z + cara[i][2] t i = i+1 tresult = array([x/numverts, y/numverts, z/numverts]) treturn result.

Def vectornormal2(cara):
result = [] tv1 = array(array(cara[2])-array(cara[0])) tv2 = array(array(cara[3])-array(cara[1])) tresult = array(cross(v1, 2)) tresult = result / sqrt(result[0]**2+result[2]**2+result[2]**2) treturn result.

Def projectapuntapla(centrepla, vectornormal, punt):
k=(vectornormal[0]*(centrepla[0]-punt[0])+vectornormal[1]*(centrepla[1]-punt[1])+vectornormal[2]*(centrepla[2]-punt[2]))/(vectornormal[0]**2+vectornormal[1]**2+vectornormal[2]**2) tresult = punt + que * vectornormal treturn result.

Conta = 10.
while conta>0:
conta = conta-1 tprint conta t tcentrecara = centre(me, faces[0]) tposcara = array([cara, getLocation()[0], cara, getLocation()[1], cara, getLocation()[2]) tcentreabsolut = poscara + centrecara t t#dibuixar centre t tobsuport, setLocation(poscara) tobsuport. RotX = cara. RotX tobsuport. RotY = cara. RotY tobsuport. RotZ = cara. RotZ tv=NMesh. Vert(centrecara[0], centrecara[1], centrecara[2]) tsuport, verts, append(v) t t tvectornormal = vectornormal2(me, faces[0]) tsegonpunt = centrecara + vectornormal t tv=NMesh. Vert(segonpunt[0], segonpunt[1], segonpunt[2]) tsuport, verts, append(v) tf=NMesh. Face() tf, v, append(suport, verts[0]) tf, v, append(suport, verts[1]) tf, v, append(suport, verts[1]) tsuport, faces, append(f) tme, faces, append(f) tNMesh. PutRaw(suport,”suport, 1) tRedraw() t t tfor i in range (0,4):
puntprojectat=projectapuntapla(centrecara, ectornormal, me, faces[0][i]) t forsa = kpla*(puntprojectat – me, faces[0][i]) t index = me, verts, index(me, faces[0][i]) t forces[index]=forces[index]+forsa t v=NMesh. Vert(puntprojectat[0], puntprojectat[1], puntprojectat[2]) t suport, verts, append(v) t NMesh. PutRaw(suport,”suport, 1) t time, slep(inctemps) t t Redraw() t tfor e in range (0,4):
print e t print he llegado t index = me, verts, index(me, faces[0][e]) t print paso por aquí t me, verts[index] = me, verts[index] + vel[index]*inctemps t print y por aquí también t t.
#NMesh. PutRaw(me,Plane).

Print ——-end——-“.

Si alguien ha llegado hasta aquí. Muchas gracias.

Ver más sobre el tema y los comentarios en el foro