[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14779] trunk/blender/release/scripts/ vrml97_export.py: Reverting vrml97_export.py to it' s state at revision 14751 because:
Campbell Barton
ideasman42 at gmail.com
Sat May 10 17:45:53 CEST 2008
if you cant find tine to maintain a script you should at least varify
that another persons changes broke somthing that previously worked
before reverting the changes.
Before commiting the changes I tried testing with compinations of
materials and images to make sure they would load in a VRML viewer.
currently material export is very broken, and not exporting faces that
have no materials seems ridiciolous.
A good compromise would be to only apply fixes from the previous commits.
On Sat, May 10, 2008 at 4:05 PM, Chris Want <cwant at ualberta.ca> wrote:
> Revision: 14779
> http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14779
> Author: hos
> Date: 2008-05-10 16:05:35 +0200 (Sat, 10 May 2008)
>
> Log Message:
> -----------
> Reverting vrml97_export.py to it's state at revision 14751 because:
>
> 1) Bug #6692 is actually a feature request. While I do think that
> Michalis' patch is a worthy change, we don't have time to test
> this at this stage in the release cycle (and svn is supposedly
> closed to new features anyways). I'm sorry Michalis, this will
> have to wait until after release.
>
> 2) I have looked at bug #8814 a while ago, but I have not yet found
> a good solution (and perhaps the solution is to *not* export faces
> without materials assigned). I don't have time to assess whether
> revision 14774 presents a worthwhile change or not, and I have no
> time to test before release. Also I don't like that the 'fix' for
> #8814 is mixed with a fix for a previous faulty commit.
>
> 3) Again, another commit to a script I maintain without consulting
> me first. Not cool!
>
> Chris
>
> Revision Links:
> --------------
> http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14751
> http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14774
>
> Modified Paths:
> --------------
> trunk/blender/release/scripts/vrml97_export.py
>
> Modified: trunk/blender/release/scripts/vrml97_export.py
> ===================================================================
> --- trunk/blender/release/scripts/vrml97_export.py 2008-05-10 13:09:34 UTC (rev 14778)
> +++ trunk/blender/release/scripts/vrml97_export.py 2008-05-10 14:05:35 UTC (rev 14779)
> @@ -3,6 +3,9 @@
> Name: 'VRML97 (.wrl)...'
> Blender: 241
> Group: 'Export'
> +Submenu: 'All Objects...' all
> +Submenu: 'All Objects compressed...' comp
> +Submenu: 'Selected Objects...' selected
> Tooltip: 'Export to VRML97 file (.wrl)'
> """
>
> @@ -52,7 +55,7 @@
>
> import Blender
> from Blender import Object, Mesh, Lamp, Draw, BGL, \
> - Image, Text, sys, Mathutils, Registry
> + Image, Text, sys, Mathutils
> from Blender.Scene import Render
>
> import math
> @@ -67,9 +70,8 @@
> filename = Blender.Get('filename')
> _safeOverwrite = True
> extension = ''
> +ARG=''
>
> -# Matrices below are used only when export_rotate_z_to_y.val:
> -#
> # Blender is Z up, VRML is Y up, both are right hand coordinate
> # systems, so to go from Blender coords to VRML coords we rotate
> # by 90 degrees around the X axis. In matrix notation, we have a
> @@ -206,7 +208,7 @@
> if scene != inlines[0]:
> return
> else:
> - for i in xrange(allinlines):
> + for i in range(allinlines):
> nameinline=inlines[i].getName()
> if (nameinline not in self.namesStandard) and (i > 0):
> self.writeIndented("DEF %s Inline {\n" % \
> @@ -219,7 +221,7 @@
> def writeScript(self):
> textEditor = Blender.Text.Get()
> alltext = len(textEditor)
> - for i in xrange(alltext):
> + for i in range(alltext):
> nametext = textEditor[i].getName()
> nlines = textEditor[i].getNLines()
> if (self.proto == 1):
> @@ -227,14 +229,14 @@
> nametext == "proto.txt") and (nlines != None):
> nalllines = len(textEditor[i].asLines())
> alllines = textEditor[i].asLines()
> - for j in xrange(nalllines):
> + for j in range(nalllines):
> self.writeIndented(alllines[j] + "\n")
> elif (self.proto == 0):
> if (nametext == "route" or nametext == "route.js" or \
> nametext == "route.txt") and (nlines != None):
> nalllines = len(textEditor[i].asLines())
> alllines = textEditor[i].asLines()
> - for j in xrange(nalllines):
> + for j in range(nalllines):
> self.writeIndented(alllines[j] + "\n")
> self.writeIndented("\n")
>
> @@ -449,9 +451,8 @@
> # (as a non-face property) and if first material has
> # vcol paint set, we export the vertex colors
> if (me.vertexColors):
> - materials = [m for m in me.materials if m]
> - if len(materials) > 0:
> - mat = materials[0]
> + if len(me.materials) > 0:
> + mat = me.materials[0]
> if mat:
> if (mat.mode & Blender.Material.Modes['VCOL_PAINT']):
> self.vcolors = 1
> @@ -555,7 +556,7 @@
> issmooth = 0
>
> maters = me.materials
> - nummats = len([m for m in maters if m])
> + nummats = self.getNumMaterials(me)
>
> # Vertex and Face colors trump materials and image textures
> if (self.facecolors or self.vcolors):
> @@ -568,18 +569,18 @@
> self.writeShape(ob, me, -1, None)
> # Do meshes with materials, possible with image textures
> elif nummats > 0:
> - for matnum in xrange(len(maters)):
> - images = []
> - if me.faceUV:
> - images = self.getImages(me, matnum)
> - if len(images) > 0:
> - for image in images:
> - self.writeShape(ob, me, matnum, image)
> + for matnum in range(len(maters)):
> + if maters[matnum]:
> + images = []
> + if me.faceUV:
> + images = self.getImages(me, matnum)
> + if len(images) > 0:
> + for image in images:
> + self.writeShape(ob, me, matnum, image)
> + else:
> + self.writeShape(ob, me, matnum, None)
> else:
> self.writeShape(ob, me, matnum, None)
> - else:
> - self.writeShape(ob, me, matnum, None)
> -
> else:
> if me.faceUV:
> images = self.getImages(me, -1)
> @@ -597,29 +598,25 @@
>
> def getImages(self, me, matnum):
> imageNames = {}
> - images = {} # make a dict to avoid dealing with images too often.
> - if matnum == -1:
> - for face in me.faces:
> - img = face.image
> - if img:
> - images[img] = img # key is a dummy
> - else:
> - for face in me.faces:
> - if face.mat == matnum:
> - img = face.image
> - if img:
> - images[img] = img # key is a dummy
> -
> - images = images.values()
> -
> - for image in images:
> - imName = self.cleanStr(image.name)
> - if not imageNames.has_key(imName):
> - images.append(image)
> - imageNames[imName]=1
> -
> + images = []
> + for face in me.faces:
> + if (matnum == -1) or (face.mat == matnum):
> + if (face.image):
> + imName = self.cleanStr(face.image.name)
> + if not imageNames.has_key(imName):
> + images.append(face.image)
> + imageNames[imName]=1
> return images
>
> + def getNumMaterials(self, me):
> + # Oh silly Blender, why do you sometimes have 'None' as
> + # a member of the me.materials array?
> + num = 0
> + for mat in me.materials:
> + if mat:
> + num = num + 1
> + return num
> +
> def writeCoordinates(self, me, meshName):
> coordName = "coord_%s" % (meshName)
> # look up coord name, use it if available
> @@ -636,10 +633,12 @@
> meshVertexList = me.verts
>
> for vertex in meshVertexList:
> - vrmlvert = vertex.co
> - if export_rotate_z_to_y.val:
> - vrmlvert = M_blen2vrml * vrmlvert
> - self.writeUnindented("%s %s %s\n " % (vrmlvert[0], vrmlvert[1], vrmlvert[2]))
> + blenvert = Mathutils.Vector(vertex.co)
> + vrmlvert = M_blen2vrml * blenvert
> + self.writeUnindented("%s %s %s\n " % \
> + (vrmlvert[0], \
> + vrmlvert[1], \
> + vrmlvert[2]))
> self.writeIndented("]\n", -1)
> self.writeIndented("}\n", -1)
> self.writeIndented("\n")
> @@ -654,11 +653,10 @@
> self.writeIndented("appearance Appearance {\n", 1)
> if (matnum != -1):
> mater = me.materials[matnum]
> - if mater:
> - self.writeMaterial(mater, self.cleanStr(mater.name,''))
> - if (mater.mode & Blender.Material.Modes['TEXFACE']):
> - if image != None:
> - self.writeImageTexture(image.name, image.filename)
> + self.writeMaterial(mater, self.cleanStr(mater.name,''))
> + if (mater.mode & Blender.Material.Modes['TEXFACE']):
> + if image != None:
> + self.writeImageTexture(image.name, image.filename)
> else:
> if image != None:
> self.writeImageTexture(image.name, image.filename)
> @@ -704,17 +702,11 @@
> for face in me.faces:
> if (matnum == -1) or (face.mat == matnum):
> if (image == None) or (face.image == image):
> - fv = face.v
> -
> - if len(face)==3:
> - self.file.write("%i %i %i -1, " % (fv[0].index, fv[1].index, fv[2].index))
> - else:
> - #if EXPORT_TRI:
> - # self.file.write("%i %i %i -1, " % (fv[0].index, fv[1].index, fv[2].index))
> - # self.file.write("%i %i %i -1, " % (fv[0].index, fv[2].index, fv[3].index))
> - #else:
> - self.file.write("%i %i %i %i -1, " % (fv[0].index, fv[1].index, fv[2].index, fv[3].index))
> -
> + cordStr=""
> + for v in face.verts:
> + indx=v.index
> + cordStr = cordStr + "%s " % indx
> + self.writeUnindented(cordStr + "-1, \n")
> self.writeIndented("]\n", -1)
>
> def writeTextureCoordinates(self, me, meshName, matnum, image):
> @@ -730,7 +722,7 @@
> indexStr = ""
> if (matnum == -1) or (face.mat == matnum):
> if (face.image == image):
> - for i in xrange(len(face.verts)):
> + for i in range(len(face.verts)):
> uv = face.uv[i]
> indexStr += "%s " % (j)
> coordStr += "%s %s, " % \
> @@ -1024,10 +1016,7 @@
> return
>
> ob_matrix = Mathutils.Matrix(ob.getMatrix('worldspace'))
> - if export_rotate_z_to_y.val:
> - matrix = M_blen2vrml * ob_matrix * M_vrml2blen
> - else:
> - matrix = ob_matrix
> + matrix = M_blen2vrml * ob_matrix * M_vrml2blen
> e = matrix.rotationPart().toEuler()
>
> v = matrix.translationPart()
> @@ -1100,7 +1089,7 @@
> self.writeFog()
> self.proto = 0
> allObj = []
> - if export_selection_only.val:
> + if ARG == 'selected':
> allObj = list(scene.objects.context)
> else:
> allObj = list(scene.objects)
> @@ -1109,7 +1098,7 @@
> for thisObj in allObj:
> self.writeObject(thisObj)
>
> - if not export_selection_only.val:
> + if ARG != 'selected':
> self.writeScript()
> self.cleanup()
>
> @@ -1224,58 +1213,26 @@
> wrlexport=VRML2Export(filename)
> wrlexport.export(scene, world, worldmat)
>
> -#########################################################
> -# UI and Registry utilities
> -#########################################################
>
> -export_selection_only = Draw.Create(0)
> -export_rotate_z_to_y = Draw.Create(1)
> -export_compressed = Draw.Create(0)
> -
> -def save_to_registry():
> - d = {}
> - d['selection_only'] = export_selection_only.val
> - d['rotate_z_to_y'] = export_rotate_z_to_y.val
> - d['compressed'] = export_compressed.val
> - Registry.SetKey('vrml97_export', d, True)
> -
> -def load_from_registry():
> - d = Registry.GetKey('vrml97_export', True)
> - if d:
> - try:
> - export_selection_only.val = d['selection_only']
> - export_rotate_z_to_y.val = d['rotate_z_to_y']
> - export_compressed.val = d['compressed']
> - except: save_to_registry() # If data is not valid, rewrite it.
> -
> -def show_popup():
> - pup_block = [
> - ('Selection Only', export_selection_only, 'Only export objects in visible selection. Else export whole scene.'),
> - ('Rotate +Z to +Y', export_rotate_z_to_y, 'Rotate such that +Z axis (Blender up) becomes +Y (VRML up).'),
> - ('Compress', export_compressed, 'Generate a .wrz file (normal VRML compressed by gzip).')
> - ]
> - return Draw.PupBlock('Export VRML 97...', pup_block)
> -
> #########################################################
> # main routine
> #########################################################
>
> -load_from_registry()
> +try:
> + ARG = __script__['arg'] # user selected argument
> +except:
> + print "older version"
>
> -# Note that show_popup must be done before Blender.Window.FileSelector,
> -# because export_compressed affects the suggested extension of resulting
> -# file.
> -
> -if show_popup():
> - save_to_registry()
> - if export_compressed.val:
> - try:
> - extension=".wrz"
> - from gzip import *
> - except:
> - print "could not import gzip, file will be exported uncompressed"
> - pass
> +if Blender.Get('version') < 235:
> + print "Warning: VRML97 export failed, wrong blender version!"
> + print " You aren't running blender version 2.35 or greater"
> + print " download a newer version from http://blender3d.org/"
> +else:
> + if ARG == 'comp':
> + extension=".wrz"
> + from gzip import *
> else:
> extension=".wrl"
> Blender.Window.FileSelector(select_file, "Export VRML97", \
> sys.makename(ext=extension))
> +
>
>
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>
More information about the Bf-committers
mailing list