[Aqsis-commits] [SCM] RIBMosaic Experimental branch master updated. ea7a3b1fe06ee274c4d0b08ab891274
Brought to you by:
ltatkinson,
pgregory
From: <gi...@aq...> - 2011-04-16 05:13:34
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "RIBMosaic Experimental". The branch, master has been updated via ea7a3b1fe06ee274c4d0b08ab89127445ffe232c (commit) from 07cbf8332680cc819bb6e58718a6bab6f0091575 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ea7a3b1fe06ee274c4d0b08ab89127445ffe232c Author: Jeff Doyle (nfz) <she...@ea...> Date: Sat Apr 16 02:17:26 2011 -0300 Mesh UI export options now working: The User can now set the mesh primitive type and what primative variables are to be exported. Currently only N(normal) and st(blender UV) vars are supported. Ribify.data_to_primvar() is now working and handles primative variable rib output. The private methods that handled N and st cases were removed since data_to_primvar() can handle those cases. diff --git a/render_ribmosaic/rm_export.py b/render_ribmosaic/rm_export.py index 943549d..e6ec48c 100644 --- a/render_ribmosaic/rm_export.py +++ b/render_ribmosaic/rm_export.py @@ -155,15 +155,16 @@ def is_subdmesh(ob): def detect_primitive(ob): -# rm = ob.renderman - -# if rm.primitive == 'AUTO': if ob.type == 'MESH': - if is_subdmesh(ob): - return 'SUBDIVISION_MESH' + # if the rm primitive is auto + if ob.data.ribmosaic_primitive == 'AUTOSELECT': + if is_subdmesh(ob): + return 'SUBDIVISIONMESH' + else: + return 'POINTSPOLYGONS' else: - return 'POLYGON_MESH' -# else: + return ob.data.ribmosaic_primitive +# else: # return rm.primitive @@ -2234,21 +2235,13 @@ class ExportObjdata(ExporterArchive): #self.open_archive(gzipped=compress) - def _export_polygon_mesh(self): - # create a mesh that has all modifiers applied to mesh data - mesh = create_mesh(self.get_scene(), self.get_object()) - # set the file pointer for ribify - rm.ribify.pointer_file = self._pointer_file - # set the indent level of the rib output - rm.ribify.indent = self.current_indent - # ribify the mesh data - rm.ribify.mesh_pointspolygons(mesh) + def _export_geometry(self): + if DEBUG_PRINT: + print("ExportObjdata._export_geometry") - # don't need the mesh data anymore so tell blender to - # get rid of it - bpy.data.meshes.remove(mesh) + # determine whate type of geometry is to be exported + prim = detect_primitive(self.get_object()) - def _export_subdiv_mesh(self): # create a mesh that has all modifiers applied to mesh data # but make sure subdiv modifier render option is false mesh = create_mesh(self.get_scene(), self.get_object()) @@ -2256,25 +2249,25 @@ class ExportObjdata(ExporterArchive): rm.ribify.pointer_file = self._pointer_file # set the indent level of the rib output rm.ribify.indent = self.current_indent - # ribify the mesh data - rm.ribify.mesh_subdivisionmesh(mesh) + if prim == 'POINTSPOLYGONS': + rm.ribify.mesh_pointspolygons(mesh) + elif prim == 'SUBDIVISIONMESH': + rm.ribify.mesh_subdivisionmesh(mesh) + + meshdata = self.get_mesh() + # check if normal primvar is to be exported + if meshdata.ribmosaic_n_export: + rm.ribify.data_to_primvar(member="N", define="N", + ptype="normal", pclass=meshdata.ribmosaic_n_class) + # check if st primvar is to be exported + if meshdata.ribmosaic_st_export: + rm.ribify.data_to_primvar(member="UV", define="st", + ptype="float[2]", pclass=meshdata.ribmosaic_st_class) # don't need the mesh data anymore so tell blender to # get rid of it bpy.data.meshes.remove(mesh) - def _export_geometry(self): - if DEBUG_PRINT: - print("ExportObjdata._export_geometry") - - # determine whate type of geometry is to be exported - prim = detect_primitive(self.get_object()) - - if prim == 'POLYGON_MESH': - self._export_polygon_mesh() - elif prim == 'SUBDIVISION_MESH': - self._export_subdiv_mesh() - # #### Public methods # TODO just a test method @@ -2319,6 +2312,9 @@ class ExportObjdata(ExporterArchive): def get_object(self): return self.pointer_datablock + def get_mesh(self): + return self.pointer_datablock.data + class ExportParticles(ExporterArchive): """Represents particle systems connected to particle data-blocks""" diff --git a/render_ribmosaic/rm_ribify.py b/render_ribmosaic/rm_ribify.py index 8afedb0..e6ab914 100644 --- a/render_ribmosaic/rm_ribify.py +++ b/render_ribmosaic/rm_ribify.py @@ -166,20 +166,6 @@ class Ribify(): self.write_text('"P"\n') self.write_rib_list(self.P, 3, 14) - def _export_normals(self): - # TODO eventually this should be done by data_to_primvar() - if self.N: - self.write_text('\n') - self.write_text('"facevarying normal N"\n') - self.write_rib_list(self.N, 3, 14) - - def _export_uvs(self): - # TODO eventually this should be done by data_to_primvar() - if self.uvs: - self.write_text('\n') - self.write_text('"facevarying float[2] st"\n') - self.write_rib_list(self.uvs, 2, 14) - # ### Public methods def write_text(self, text="", use_indent=True): @@ -237,12 +223,13 @@ class Ribify(): # end of the RIB array list block self.write_text(' ]\n', False) - def data_to_primvar(self, datablock, **primvar): + def data_to_primvar(self, **primvar): """Append to file_object specified data-block member from Blender data-block into RenderMan primitive variable as class type using specified define name. - datablock = Blender mesh data-block + The Blender mesh datablock must already be setup. + **primvar = dictionary containing following members: member = data-block member to build primvar from (such as Normal, ect) define = what will the primvar be called @@ -254,33 +241,40 @@ class Ribify(): "sorted as", primvar['pclass'], "for", primvar['member'], "in", datablock, "...") - def mesh_pointspolygons(self, datablock, smooth_normals=False): + self.write_text('\n') + + member = primvar['member'] + primvar_rib = '"%s %s %s"\n' % (primvar['pclass'], primvar['ptype'], primvar['define']) + # figure out what mesh data to output for primvar + if member == 'N': + if self.N is not None: + self.write_text(primvar_rib) + self.write_rib_list(self.N, 3, 14) + elif member == 'UV': + if self.uvs is not None: + self.write_text(primvar_rib) + self.write_rib_list(self.uvs, 2, 14) + + + def mesh_pointspolygons(self, datablock): """ """ if DEBUG_PRINT: print("Creating pointpolygons...") self._decompose_mesh(datablock) - - self.write_text('PointsPolygons \n') self.inc_indent() self._export_faces() self._export_vertices() - # FIXME should be based on user options - # for now its just for testing - self._export_uvs() - # FIXME should be based on user options - # for now its just for testing - self._export_normals() def mesh_subdivisionmesh(self, datablock): """ """ if DEBUG_PRINT: print("Creating subdivisionmesh...") - self._decompose_mesh(datablock) + self._decompose_mesh(datablock) self.write_text('SubdivisionMesh "catmull-clark"\n') self._export_faces() @@ -290,12 +284,6 @@ class Ribify(): # output vertices self._export_vertices() - # FIXME should be based on user options - # for now its just for testing - self._export_uvs() - # FIXME should be based on user options - # for now its just for testing - self._export_normals() def mesh_points(self, datablock): """ """ ----------------------------------------------------------------------- Summary of changes: render_ribmosaic/rm_export.py | 64 +++++++++++++++++++--------------------- render_ribmosaic/rm_ribify.py | 52 +++++++++++++-------------------- 2 files changed, 50 insertions(+), 66 deletions(-) hooks/post-receive -- RIBMosaic Experimental |