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