Un mesh de cuatro puntos - script python
Si Usted no conoce como hacer correr un script en python consulte esta página Primeros pasos para usar un script python en Blender, a través de textos e imágenes se explica como empezar.
A modo de ejercicio, lo más sencillo en Blender es hacer un mesh de cuatro puntos. En este caso se trata de un cuadrado.
Lo primero es importar la librería bpy (blender python)
import bpy
luego definir las listas que contengan las coordenadas de los cuatro puntos y la que contenga los puntos de la cara de cuatro lados.
coords=[]
faces=[]
Vamos a usar los puntos en X, Y, Z: (0,0,0),(1,0,0),(1,1,0) y (0,1,0)
Blender carga las coordenadas como listas de X,Y,Z.
Tenga en cuenta que coords es una lista que contiene a su vez listas de tres elementos, las coordenadas x,y,z.
coords=[[0,0,0],[1,0,0],[1,1,0],[0,1,0]]
y la unica cara se define como compuesta por los puntos 0,1,2,3
Tenga en cuenta que faces es una lista que contiene a su vez listas con los puntos que definen cada cara.
faces=[[0,1,2,3]]
Una vez que tenemos cargadas las listas coords y faces, creamos un objeto que va a contener estos datos.
me = bpy.data.meshes.new("cuadrado")
este objeto esta vacío, lo cargamos de esta manera.
me.from_pydata(coords,[],faces)
actualizamos los datos
me.update()
Creamos un objeto que llamamos cuadrado, que contiene los datos del objeto me.
ob = bpy.data.objects.new('cuadrado', me)
enlazamos los datos de me al mesh ob
ob.data = me # link the mesh data to the object
llamamos a la escena donde queremos que aparezca, en este caso la que esta activa.
scene = bpy.context.scene # get the current scene
Ponemos en esa escena al objeto ob, para hacerlo visible
scene.objects.link(ob) # link the object into the scene
Ubicamos al objeto ob con location en las coordenadas (-0.0,-0.5,0).
ob.location = [-0.5,-0.5,0] # scene.cursor_location
Este es el resultado en Blender. El script cuadrado_01.py se puede bajar más abajo.
import bpy
coords=[]
faces=[]
coords=[[0,0,0],[1,0,0],[1,1,0],[0,1,0]]
faces=[[0,1,2,3]]
me = bpy.data.meshes.new("cuadrado")
me.from_pydata(coords,[],faces)
me.update()
ob = bpy.data.objects.new('cuadrado', 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.5,-0.5,0] # scene.cursor_location