HowTo:Radiosity baking in Blender/

From VsWiki
Jump to: navigation, search
  1. !BPY

""" Registration info for Blender menus: <- these words are ignored Name: 'Vertex Color Copy' Blender: 232 Group: 'Object' Tip: 'Copies the vertex color information from one object to another.' """

__author__ = "" __url__ = ("blender", "Script's homepage,") __version__ = "233"

__bpydoc__ = """\ """

  2. This script copies the vertex color information from one mesh
  3. to another, and does so correctly assuming the meshes have the
  4. same geometry, vertex-wise.

import Blender from Blender import * from Blender.Draw import * from Blender.BGL import *

fromObj = "Mesh.rad" # Set this to the resulting mesh from radio calcuation toObj = "Mesh.orig" # Set this to the name of your original, UV-mapped mesh. fromObjx=Create(fromObj) toObjx=Create(toObj)

def copy_data(): global fromObj, toObj me_from = Blender.Object.Get(fromObj).getData() me_to = Blender.Object.Get(toObj).getData()

if not me_to and not me_from: print "ERROR: Source/destination object does not exist" Blender.Draw.PupMenu("ERROR%t|Source/destination object does not exist")

elif len(me_to.verts) != len(me_from.verts): print "ERROR: Source and destination objects must have the same number of vertices" Blender.Draw.PupMenu("ERROR%t|Source and destination objects must have the same number of vertices")

else: # make two lists sorted on world-space coordinates, # containing a face and vertex index i and j respectively

# Transform objects to world space coordinates: me_to.transform(Blender.Object.Get(toObj).getMatrix()) me_from.transform(Blender.Object.Get(fromObj).getMatrix())

l_to = [] l_from = []

# format: [ (x,y,z, face index, vertex index), ... ]

for i in range(len(me_to.faces)): for j in range(len(me_to.faces[i].v)): vert = me_to.faces[i].v[j].co l_to.append((vert[0], vert[1], vert[2], i, j))

for j in range(len(me_from.faces[i].v)): vert = me_from.faces[i].v[j].co l_from.append((vert[0], vert[1], vert[2], i, j))

# Sort the lists after vertex coordinates l_to.sort() l_from.sort()

for i in range(len(l_to)): to_f = l_to[i][3] from_f = l_from[i][3] to_v = l_to[i][4] from_v = l_from[i][4]

me_to.faces[to_f].col[to_v] = me_from.faces[from_f].col[from_v]

# Transform objects back to object space coordinates: me_to.transform(Blender.Object.Get(toObj).getInverseMatrix()) me_from.transform(Blender.Object.Get(fromObj).getInverseMatrix())

me_to.update() print "Copied vertex color information from object "+fromObj+" to object "+toObj+"." Blender.Draw.PupMenu("SUCESS%t|Copied vertex color information from object "+fromObj+" to object "+toObj+".")

def EVENT(evt,val):


def BUTTON(evt): if (evt==1): Exit() elif (evt==2): copy_data() Blender.Redraw()

def DRAW(): global fromObj, toObj, fromObjx, toObjx

glClear(GL_COLOR_BUFFER_BIT) glColor3f(0.1, 0.1, 0.15)


Button ("Exit",1,20,1,80,ligne) Button ("Copy Data",2,102,1,80,ligne)

glRasterPos2f(20, ligne*2-10) Text("Vertex Color Copy") # String(name, event, x, y, width, height, initial, length, tooltip=None) glRasterPos2f(20, ligne*3-5) Text("To") toObj = String('OB:', 4, 50, ligne*3-10, 200, 18, toObjx.val, 120, "The object to which the vertex colors should be copied." ) glRasterPos2f(20, ligne*4-5) Text("From") fromObj = String('OB:', 4, 50, ligne*4-10, 200, 18, fromObjx.val, 120, "The object from which the vertex colors should be copied." ) toObjx=toObj fromObjx=fromObj toObj=toObjx.val fromObj=fromObjx.val