Bevel a cubo creado cara a cara en python
Buenas. Estoy intentando darle un poco de biselado a un especie de cubo que he creado vértice a vértice y añadiendo las caras con addface y tal.
El caso es que el script bevel_center no funciona con este cubo que he hecho. Sin embargo, si que me funciona con otros objetos creados con primitivas como Cube, cone.
Si entro en edición y pulso w->bevel pues si me lo hace, pero claro quiero hacerlo por código.
¿Alguna idea de cómo hacerlo o de por que me puede estar fallando?
Si no me he explicado bien os pego el código para que veáis a que me refiero. Gracias.
Bevel a cubo creado cara a cara en python
Ya he conseguido hacerlo. No sé por qué creando el cubo de una manera no le afecta, pero creándolo de otra si. Bueno, os pego el código por si a alguien le interesa.
Código:
# librerías necesarias.
Import Blender.
From Blender import scene, object, Mesh, material, nmesh.
Import random.
Import math.
From random import *.
From Blender. Bgl import *.
From Blender. Draw import *.
From bevel_center import *.
Import Bpy.
# obtener la escena actual.
Escena = scene. Getcurrent().
Def crear_cubo2(vértices=none):
T# Vector con las 6 caras indicando con que vértices se creara cada una, tcaras= [ [2,0,1,3], [6,4,5,7], [5,1,3,7], [6,2,0,4], [4,0,1,5], [6,2,3,7] ] t#creamos una mlla vacía, tme = Bpy, data, meshes, new(mymesh) t#le añadimos los vértices que nos llegan por parámetro, tme, vértices, extend(vértices) t#y creamos las caras, tme, Faces, extend(caras) t# devolvemos la malla creada treturn me.
Def crear_cubo (vértices=none):
T# creamos una malla vacía, tmesh = nmesh. Getraw() t# creamos los 8 verétices que formaran el cubo con el Vector de entrada, TV1=nmesh. Vert(vértices[0][0], vértices[0][1], vértices[0][2]) tv2=nmesh. Vert(vértices[1][0], vértices[1][1], vértices[1][2]) TV3=nmesh. Vert(vértices[2][0], vértices[2][1], vértices[2][2]) tv4=nmesh. Vert(vértices[3][0], vértices[3][1], vértices[3][2]) tv5=nmesh. Vert(vértices[4][0], vértices[4][1], vértices[4][2]) tv6=nmesh. Vert(vértices[5][0], vértices[5][1], vértices[5][2]) tv7=nmesh. Vert(vértices[6][0], vértices[6][1], vértices[6][2]) tv8=nmesh. Vert(vértices[7][0], vértices[7][1], vértices[7][2]) t# y los añadimos a la malla creada tmesh, vértices, append(v1) tmesh, vértices, append(v2) tmesh, vértices, append(v3) tmesh, vértices, append(v4) tmesh, vértices, append(v5) tmesh, vértices, append(v6) tmesh, vértices, append(v7) tmesh, vértices, append(v t# vamos creando las caras que formaran el cubo t# a la hora de añadir los vértices de cada cara es importante el orden t# hay que ir añadiéndolos en sentido contrario a las agujas del reloj t# para que se vayan creando las aristas adecuadamente, t# cara inferior tfacevertlist = [] tfacevertlist, append(v3) tfacevertlist, append(v1) tfacevertlist, append(v2) tfacevertlist, append(v4) tnewface = Blender. Nmesh. Face (facevertlist) tmesh, addface (newface) t# cara superior tfacevertlist = [] #en cada nueva cara inicializamos el Vector de vértices tfacevertlist, append(v7) tfacevertlist, append(v5) tfacevertlist, append(v6) tfacevertlist, append(v tnewface = Blender. Nmesh. Face (facevertlist) tmesh, addface (newface) t# cara lateral derecha, tfacevertlist = [] tfacevertlist, append(v6) tfacevertlist, append(v2) tfacevertlist, append(v4) tfacevertlist, append(v tnewface = Blender. Nmesh. Face (facevertlist) tmesh, addface (newface) t# cara lateral izquierda, tfacevertlist = [] tfacevertlist, append(v7) tfacevertlist, append(v3) tfacevertlist, append(v1) tfacevertlist, append(v5) tnewface = Blender. Nmesh. Face (facevertlist) tmesh, addface (newface) t# cara delantera, tfacevertlist = [] tfacevertlist, append(v5) tfacevertlist, append(v1) tfacevertlist, append(v2) tfacevertlist, append(v6) tnewface = Blender. Nmesh. Face (facevertlist) tmesh, addface (newface) t# cara trasera, tfacevertlist = [] tfacevertlist, append(v7) tfacevertlist, append(v3) tfacevertlist, append(v4) tfacevertlist, append(v tnewface = Blender. Nmesh. Face (facevertlist) tmesh, addface (newface) t# devolvemos la malla creada treturn Mesh.
Def cubos():
Vértices = [0,0,0],[1,0,0],[0,1,0],[1,1,0],[0,0,1],[1,0,1],[0,1,1],[1,1,1] t# este bevel no funciona, tcajamesh = crear_cubo (vértices) tcaja = escena, objects, new(cajamesh, cubo) tcaja, select(1) tbevel() t# con la primitiva Cube siempre funciona tcajamesh2 = Mesh. Primitives. Cube (1) tcaja2 = escena, objects, new(cajamesh2, cubo3) tcaja2.setlocation(3, 1,1) tcaja2.select(1) tbevel() t# de esta otra forma sí que funciona, tcajamesh3 = crear_cubo2(vértices) tcaja3 = escena, objects, new(cajamesh3, myobj) tcaja3.setlocation(-3, 1,1) tcaja3.select(1) tbevel().
Def pantalla_sel():
Button(cubos,1,30,220,150,30).
# eventos del sistema.
Def event(evt, ala):
If (evt==esckey):
Exit().
# eventos definidos por nosotros.
Def bevent(evt):
If (evt==1):
Cubos() Blender. Redraw() t.
# subrutinas que se ejectuaran al inicio.
Register(pantalla_sel, event, bevent).
Blender. Redraw()