Talk:HowTo:Radiosity baking in Blender
Script talk
- I moved the (GUI) script to an extra page so it is possible to download it here AND edit it with the wiki interface. See HowTo:Radiosity baking in Blender#Script and HowTo:Radiosity baking in Blender/vccopy.py--Pontiac 16:47, 23 Sep 2005 (PDT)
Possible improvments
- Somehow change the script so that it sets the object centers correctly. Then we can remove the object->world transformation, sort on object space coords and and the vertex color copy would work even if one or both of the meshes are moved around. Not very urgent, just don't move the meshes around!
Original script
This is the original Script by tiny paintings. See the main page for the most recent version.
- Warning: This script contains a serious bug and will only work if your objects origin (the little purple dot) is in the origin.
You have to pardon my python n00bness, this is all I could come up with. Feel free to improve it!
import Blender # WHAT DOES IT DO? # This script copies the vertex color information from one mesh # to another, and does so correctly assuming the meshes have the # same geometry, vertex-wise. # IMPORTANT: Assumes meshes with exactly equal geometry, vertex-wise. fromObj = "Mesh" # Set this to the resulting mesh from radio calcuation toObj = "Fuselage_default" # Set this to the name of your original, UV-mapped mesh. 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" elif len(me_to.verts) != len(me_from.verts): print "ERROR: Source and destination objects must have the same number of vertices" else: # make two lists sorted on coordinates, # containing a face and vertex index i and j respectively 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] me_to.update() print "Copied vertex color information from object "+fromObj+" to object "+toObj+"."