利用者:Kazanbas/Gsoc2009/End-user spec

提供: wiki
移動先: 案内検索

End-user spec

WARNING: this is a work in progress!

bpy API from user's point of view?

how to access Blender data for reading? for writing?

The 2.5 API

Overview

Why new API?

Creating objects

How to create meshes, armatures, cameras, lamps, other objects.

Manipulating object data

How to add/remove verts, faces, edges, uvs from mesh, add/remove bones from armature, etc.

The old API

Overview

Why replace it?

Creating objects

How meshes, armatures, cameras, lamps, other objects were created.

Manipulating object data

How mesh verts, faces, edges, uvs, armature bones, etc were removed/added.

TODO: restructure this section

Geometry

Export

object = bpy.data.objects["name"]
mesh = object.data # or bpy.data.meshes["name"]
mesh = bpy.data.objects["name"].data
mesh.verts
mesh.faces
mesh.uv_layers["UVTex"].data # a collection of MeshTextureFaces

Import

The way it was in 2.48
# add things
mesh = bpy.data.meshes.new(name)
object = bpy.data.objects.new(mesh)

# set geometry
me.verts.extend(verts)
me.faces.extend(faces)
In 2.5 it will be
mesh.verts.extend(verts)

or

mesh.verts.extend(verts, faces)

or

kaito (IRC): the simplest way for import now would be to code a C function for 'add primitive' with as args a list of verts & face indices, then api can say 'add empty object mesh' -> enter editmode for it -> add prim -> leave editmode

or

object = bpy.data.add_object(name)
object.data = bpy.data.add_mesh(verts, faces, ...)

add_mesh would enter editmode, create editmesh, set geometry, free editmesh, exit editmode.

Transforms

object.location
object.rotation
object.scale

more?

TODO

  • add/remove scene, camera, lamp, mesh, mesh data (verts, faces, edges, uvs), armature, armature data, other object types - these ask for generic functions - possible?
  • materials
  • understand uv_layers (see old api?)