Difference between revisions of "HowTo:Radiosity baking in Blender/vccopy.py"

From VsWiki
Jump to: navigation, search
(testing single file)
 
(Fixes pontiacs problems)
 
(One intermediate revision by one other user not shown)
Line 46: Line 46:
 
 
 
else:
 
else:
# make two lists sorted on coordinates,
+
# make two lists sorted on world-space coordinates,
 
# containing a face and vertex index i and j respectively
 
# 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_to = []
Line 74: Line 78:
 
 
 
me_to.faces[to_f].col[to_v] = me_from.faces[from_f].col[from_v]
 
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()
 
me_to.update()
Line 104: Line 112:
 
Text("Vertex Color Copy")
 
Text("Vertex Color Copy")
 
# String(name, event, x, y, width, height, initial, length, tooltip=None)
 
# String(name, event, x, y, width, height, initial, length, tooltip=None)
toObj = String('To Object  :', 4, 20, ligne*3-10, 250, 18, toObjx.val, 120, "The object to which the vertex colors should be copied." )
+
glRasterPos2f(20, ligne*3-5)
fromObj = String('From Object:', 4, 20, ligne*4-10, 250, 18, fromObjx.val, 120, "The object from which the vertex colors should be copied." )
+
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
 
toObjx=toObj
 
fromObjx=fromObj
 
fromObjx=fromObj

Latest revision as of 15:12, 26 September 2005

  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, http://vegastrike.sourceforge.net/wiki/HowTo:Radiosity_baking_in_Blender") __version__ = "233"

__bpydoc__ = """\ """

  1. WHAT DOES IT DO?
  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):

  pass

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)

ligne=20

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


Register(DRAW,EVENT,BUTTON)