Resultados 1 al 4 de 4

Tema: Python Blender alguien lo sabe hacer

  1. #1
    Fecha de ingreso
    Sep 2005
    Mensajes
    2

    Python Blender alguien lo sabe hacer?

    Hola, me han recomendado este foro, a ver qué tal. En uno de mis scripts tengo lo siguiente, lo que hace es pillar unos vértices del Blender y les aplica la típica formula de la velocidad a cada uno de los 4 vértices: x = x0 + v0 * tfor e in range (0,4):
    Print e print he llegado index = me, vértices, index(me, Faces[0][e]) <<< peta aquí print paso por aquí me, vértices[index] = me, vértices[index] + vel[index]*inctemps print y por aquí también.

    La cuestión es que, a la segunda vez que pasa por el loop peta, la respuesta en el monitor es esta:
    0.

    He llegado.

    Paso por aquí.

    Y por aquí también.
    1.

    He llegado.

    Tracebak (most recent call last):
    File aplanar_una_cara_test, line 123, in <module>.

    Valueerror: the truth value of an array with more than one element is ambiguous.

    Use a, any() or a, all().

    He importado el numpy.

    No veo muy claro lo de utilizar el any y el all, si alguien me puede echar un cable, gracias.

    Adriá.

  2. #2
    Fecha de ingreso
    Jul 2005
    Mensajes
    7,953

    Python Blender alguien lo sabe hacer?

    Hola, adria. ¿Puede ser que tengas sólo un vértice? Es la única razón que se me ocurre para que de un error ahí. (un error que, por cierto, no conocía) y otra cosa, si sólo quieres mover los vértices no necesitas pasar por las caras. De hecho, así pasas por cada vértice tantas veces como caras lo contienen, así que, se desplazara más si pertenece a más caras (.
    ...y estaba superbueno.
    Y miré su perfil. Y vi que era amigo de Daniela. Puaf.


    Dos niñas en el parque

    no se elevará, nunca más

  3. #3
    Fecha de ingreso
    Sep 2005
    Mensajes
    2

    Thumbs up 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.

  4. #4
    Fecha de ingreso
    Jun 2003
    Mensajes
    12,618

    Python Blender alguien lo sabe hacer?

    No me he pegado mucho con este tipo de cosas, pero me da la sensación de que ese elemento no fuera un punto sino otro array. Puedes probar a ver de que tipo es haciendo un print dir(me, Faces[0][e]) justo antes del punto en el que casca y viendo que modificadores tienes para ese tipo. O quizá es me, vértices, index el que te devuelve un array y por eso index no sabe que hacer con él.

    No sé, yo diría que alguno de los tipos no es el que crees que es.

Temas similares

  1. Alguien sabe hacer esto
    Por EdiaN en el foro Programas de Diseño 3D y CAD
    Respuestas: 4
    : 13-12-2010, 13:00
  2. Alguien sabe hacer este efecto
    Por ofuscado en el foro Programas de Diseño 3D y CAD
    Respuestas: 3
    : 23-08-2010, 21:23
  3. Alguien sabe hacer esto
    Por alf en el foro Render, Iluminación y Cámaras
    Respuestas: 8
    : 19-11-2009, 18:53
  4. Blender Alguien sabe como hacer una casa en Blender
    Por leoni en el foro Modelado
    Respuestas: 2
    : 30-10-2009, 13:43
  5. 3dsMax Alguien sabe como hacer esto
    Por juan26 en el foro Animación y Rigging
    Respuestas: 12
    : 18-04-2008, 19:02