[cgkit-commits] cgkit2/cgkit ribexport.py,1.9,1.10
Brought to you by:
mbaas
From: Matthias B. <mb...@us...> - 2005-06-16 17:27:23
|
Update of /cvsroot/cgkit/cgkit2/cgkit In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13164/cgkit Modified Files: ribexport.py Log Message: Added the BAKE_... macros to the final shaders / Added an option to specify the name of the bake texture coordinate. Index: ribexport.py =================================================================== RCS file: /cvsroot/cgkit/cgkit2/cgkit/ribexport.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** ribexport.py 12 Jun 2005 21:07:50 -0000 1.9 --- ribexport.py 16 Jun 2005 17:27:14 -0000 1.10 *************** *** 81,85 **** output_framebuffer = True, bake = False, ! bakemodel = None): """Export a RIB file. --- 81,86 ---- output_framebuffer = True, bake = False, ! bakemodel = None, ! bakestvar = "st"): """Export a RIB file. *************** *** 93,96 **** --- 94,98 ---- scene = getScene() self.timestep = scene.timer().timestep + self.bake = bake # A list with all light sources in the scene *************** *** 221,225 **** if bake: bakemodel = cmds.worldObject(bakemodel) ! bakepass = BakePass(output=out, bakemodel=bakemodel) passes.append(bakepass) else: --- 223,227 ---- if bake: bakemodel = cmds.worldObject(bakemodel) ! bakepass = BakePass(output=out, bakemodel=bakemodel, bakestvar=bakestvar) passes.append(bakepass) else: *************** *** 489,492 **** --- 491,508 ---- filename = os.path.join(self.shader_path, shadername+".sl") f = file(filename, "wt") + # Add the macros that are used for baking... + if self.bake: + f.write("#define BAKE_PASS\n") + begin = 'varying point _P_bake = transform("world", "current", transform("camera", "object", Pref));\\\n varying point _P_orig = P;\\\n P = _P_bake;' + end = 'P = _P_orig;' + normal = 'normalize(n);' + else: + begin = "" + end = "" + normal = 'faceforward(normalize(n),I);' + f.write("#define BAKE_BEGIN %s\n"%begin) + f.write("#define BAKE_END %s\n"%end) + f.write("#define BAKE_NORMAL(n) %s\n\n"%normal) + f.write(source.replace("$SHADERNAME", shadername)) f.close() *************** *** 907,916 **** # BakePass class BakePass(RenderPass): ! def __init__(self, output, bakemodel): """ bakemodel is the WorldObject whose texture should be baked. """ RenderPass.__init__(self, output, None) self.bakemodel = bakemodel # doPass --- 923,935 ---- # BakePass class BakePass(RenderPass): ! def __init__(self, output, bakemodel, bakestvar="st"): """ bakemodel is the WorldObject whose texture should be baked. + bakestvar is the name of the variable that holds the texture + coordinates for baking. """ RenderPass.__init__(self, output, None) self.bakemodel = bakemodel + self.bakestvar = bakestvar # doPass *************** *** 970,974 **** # RiTranslate(-0.5,-0.5,1) RiTranslate(0,0, bmax.z+1.5) ! self.bakeModel(obj) RiAttributeEnd() --- 989,993 ---- # RiTranslate(-0.5,-0.5,1) RiTranslate(0,0, bmax.z+1.5) ! self.bakeModel(obj, self.bakestvar) RiAttributeEnd() *************** *** 983,993 **** RiFrameEnd() ! def bakeModel(self, obj): # Check texture coordinates... ! name, storage, type, mult = obj.geom.findVariable("st") if type!=FLOAT or mult!=2: ! raise TypeError, "variable 'st' is of wrong type" if storage==FACEVARYING: --- 1002,1020 ---- RiFrameEnd() ! def bakeModel(self, obj, stvarname="st"): ! """ ! obj is the model that should be baked. stvarname is the name ! of the variable that holds the texture coordinates for baking. ! """ # Check texture coordinates... ! info = obj.geom.findVariable(stvarname) ! if info==None: ! raise RuntimeError, "No variable '%s' found"%stvarname ! ! name, storage, type, mult = info if type!=FLOAT or mult!=2: ! raise TypeError, "variable '%s' is of wrong type"%stvarname if storage==FACEVARYING: *************** *** 996,1000 **** geom = obj.geom else: ! raise TypeError, "'st' storage class %s not supported for baking"%storage # Convert the model into a trimesh... --- 1023,1027 ---- geom = obj.geom else: ! raise TypeError, "'%s' storage class %s not supported for baking"%(stvarname,storage) # Convert the model into a trimesh... *************** *** 1005,1009 **** # Convert the tex coords into vec3s... ! st = geom.slot("st") # print "sizes:",geom.verts.size(), st.size() stcoords = map(lambda x: vec3(x), st) --- 1032,1036 ---- # Convert the tex coords into vec3s... ! st = geom.slot(stvarname) # print "sizes:",geom.verts.size(), st.size() stcoords = map(lambda x: vec3(x), st) |