Solo nos interesan los que van a conformar el borde exterior, así evitamos crear objetos innecesarios.
import Blender, whrandom
def creaCubo(pox, poy, poz):
global cuboid
NOMBRE='Cube.%03i' % cuboid
cuboid+=1
din=(whrandom.random()-1.0)/100.0
vertices_list=[
[pox+0.0, poy+0.0, poz+0.0],
[pox+0.0, poy+1.0+din, poz+0.0],
[pox+1.0, poy+1.0+din, poz+0.0],
[pox+1.0, poy+0.0, poz+0.0],
[pox+0.0, poy+0.0, poz+1.0-din],
[pox+0.0, poy+1.0+din, poz+1.0-din],
[pox+1.0, poy+1.0+din, poz+1.0-din],
[pox+1.0, poy+0.0, poz+1.0-din] ]
faces_list=[
[0,1,2,3],
[4,5,6,7],
[0,4,7,3],
[1,2,6,5],
[0,1,5,4],
[3,7,6,2] ]
A_CUBE_MESH=Blender.NMesh.GetRaw()
for coordinate in vertices_list:
A_VERTEX=Blender.NMesh.Vert(coordinate[0], coordinate[1], coordinate[2])
A_CUBE_MESH.verts.append(A_VERTEX)
for thisface in faces_list:
A_FACE=Blender.NMesh.Face()
for vertexpos in thisface:
A_FACE.append(A_CUBE_MESH.verts[vertexpos])
A_CUBE_MESH.faces.append(A_FACE)
Blender.NMesh.PutRaw(A_CUBE_MESH, NOMBRE)
def montaPlanta(ancho, altura):
global tamano
ancho=tamano-altura
direccion=[(0,1), (1,0), (0, -1), (-1,0)]
lejos=[(0,0), (0,ancho-1), (ancho-1,ancho-1), (ancho-1,0)]
for movimiento in range(len(direccion)):
for pos in range(ancho-1):
posx = direccion[movimiento][0] * pos + lejos[movimiento][0] + altura/2.0
posy = direccion[movimiento][1] * pos + lejos[movimiento][1] + altura/2.0
creaCubo(posx,posy,altura)
cuboid=0
tamano=10
for plantas in range(tamano):
montaPlanta(tamano, plantas)
Blender.Redraw()
El resultado que se obtiene tras ejecutar el script:
Como nota, lo del ruido blanco añadido a las caras mas alejadas es para hacer los cubos ligeramente diferentes y que se vea en el renderizado que está construido a base de los mismos.
Lógicamente es mas facil hacer la piramide con tantos cubos como los niveles de la altura y te evitas echar lineas de código, esto es tan solo para probar el funcionamiento de los scripts (que hace tiempo que tenía ganas :) ).
The Blender Python API Reference
Tags: Blender python script piramide piramid
comentarios:
hola amigo bueno mi pregunta es:
usu ubuntu pero veo que tiene un error en la importacion ya tengo instalado blender pero creo que me falta el
"whrandom"
sabes como lo puedo usar o donde lo consigo.
ya fui al gestor de paquetes pero no lo encuentro con ese nombre
gracias
Publicar un comentario