Construir un cubo a partir de una tortuga Logo 3D

Si Usted ya hizo el ejercicio Construir un cuadrado a partir de una tortuga Logo 3D , este ejercicio le resultara muy fácil de entender.

Tome en cuenta esto: En este directorio he puesto el archivo tortuga.py, es el único modo en que funciona (para los que usan Linux).

/home/mherrero/.blender/blender-2.65-linux-glibc211-i686/2.65/scripts/startup

El archivo tortuga.py lo puede bajar de esta página Archivos

Este es el resultado para que se vaya entusiasmando.

Este es el script que se usa, si Usted no sabe como usar el script en Blender le aconsejo leer Primeros pasos para usar un script python en Blender .

import bpy

import random

from tortuga import Tortuga

coords=[] # lista donde se acumulan las coordenadas

faces=[] # lista donde se acumulan los puntos de las caras

t=Tortuga() # crea una nueva tortuga

t.Rolar(90)

def carga_coords():

coordenada=[]

coordenada.append(t.X)

coordenada.append(t.Y)

coordenada.append(t.Z)

coords.append(coordenada)

def andar(paso):

t.Andar(paso)

carga_coords()

def carga_cara(v1,v2,v3,v4,lista):

cara=[]

cara.append(v1)

cara.append(v2)

cara.append(v3)

cara.append(v4)

lista.append(cara)

#############

# Principal #

#############

# Se obtienen y cargan los 8 puntos del cubo

j=0

while j < 2:

i=0

while i < 4:

andar(1)

t.Virar(90)

i = i + 1

t.Cabecear(90)

t.Andar(1)

t.Cabecear(-90)

j = j+1

t.Cabecear(90)

t.Andar(-2)

t.Cabecear(-90)

# se cargan las 6 caras del cubo

carga_cara(0,1,2,3,faces)

carga_cara(4,5,6,7,faces)

carga_cara(0,1,5,4,faces)

carga_cara(1,2,6,5,faces)

carga_cara(2,3,7,6,faces)

carga_cara(3,0,4,7,faces)

me = bpy.data.meshes.new("cubo")

me.from_pydata(coords,[],faces)

me.update()

ob = bpy.data.objects.new('cubo', me)

ob.data = me # link the mesh data to the object

scene = bpy.context.scene # get the current scene

scene.objects.link(ob) # link the object into the scene

ob.location = [0,0,0] # scene.cursor_location

Una explicación de la primera parte de este script la encontrará en Primeros pasos para usar un script python en Blender

# Se obtienen y cargan los 8 puntos del cubo

j=0

while j < 2:

i=0

while i < 4:

andar(1)

t.Virar(90)

i = i + 1

t.Cabecear(90)

t.Andar(1)

t.Cabecear(-90)

j = j+1

t.Cabecear(90)

t.Andar(-2)

t.Cabecear(-90)

Este trozo del script sirve para obtener y cargar los 8 vertices del cubo, se repite dos veces el mismo algoritmo,

i=0

while i < 4:

andar(1)

t.Virar(90)

i = i + 1

t.Cabecear(90)

t.Andar(1)

t.Cabecear(-90)

Las tres últimas líneas sirven para elevar la tortuga una unidad en Z, de modo que al terminar estamos en Z=2 , por eso se usan estas tres líneas para volver al punto inicial.

t.Cabecear(90)

t.Andar(-2)

t.Cabecear(-90)

Es importante cuando usemos una tortuga que al terminar un procedimiento o definición la tortuga quede en la misma orientación espacial y en el mismo punto de inicio, en nuestro caso las coordenadas (0,0,0) y apuntando en la dirección positiva del eje X.

En este ejercicio definimos una nueva función llamada carga_cara

def carga_cara(v1,v2,v3,v4,lista):

cara=[]

cara.append(v1)

cara.append(v2)

cara.append(v3)

cara.append(v4)

lista.append(cara)

Luego la usamos para cargar las caras en la lista faces.

La lista faces estaba vacía, habíamos hecho lo siguiente faces=[], es decir esta vacía y nos queda así después de usar

carga_cara(0,1,2,3,faces) el valor de faces es [[0,1,2,3]]

Luego de usar seis veces carga_cara tenemos el valor de faces así

[[0,1,2,3],[4,5,6,7],[0,1,5,4],[1,2,6,5],[2,3,7,6],[3,0,4,7]]

Nota de ampliación:

A esta altura de los ejercicios puede ser interesante consultar esta página Wiki de Blender: Scripts, libro de cocina, Meshes (superficies)

Cualquier duda o dificultad que Usted tenga al realizar este ejercicio, la escribe en forma de carta a marioantonio.herreromachado at gmail.com, . Si tiene alguna inquietud o duda no cubierta por este ejercicio también lo comenta y lo incluiremos en esta página u otra si fuera necesario. Gracia por su visita.

Mario Antonio Herrero Machado