From 0d8f85eda875e40410f032ca7abd5fd2d7605e04 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 16 May 2006 22:57:24 +0000 Subject: made some changes to vrml97_export, this script needs to be re-written, until then fixed some incorrect assumtions it made- was using the first world in the list for AMB color no matter what world was being used, was also using the image name rather then the file name for its image URL references. --- release/scripts/vrml97_export.py | 122 +++++++++++++++++---------------------- 1 file changed, 54 insertions(+), 68 deletions(-) diff --git a/release/scripts/vrml97_export.py b/release/scripts/vrml97_export.py index f81e1286420..7887ad5b99b 100644 --- a/release/scripts/vrml97_export.py +++ b/release/scripts/vrml97_export.py @@ -62,12 +62,7 @@ for each texture);
import Blender from Blender import Object, Mesh, Lamp, Draw, BGL, Image, Text, sys, Mathutils from Blender.Scene import Render -try: - from os.path import exists, join - pytinst = 1 -except: - print "No Python installed, for full features install Python (http://www.python.org/)." - pytinst = 0 + import math #################################### @@ -75,7 +70,7 @@ import math #################################### scene = Blender.Scene.getCurrent() -world = Blender.World.Get() +world = Blender.World.GetCurrent() worldmat = Blender.Texture.Get() filename = Blender.Get('filename') _safeOverwrite = True @@ -211,7 +206,7 @@ class VRML2Export: Qf = self.multiplyQuaternions(Q1, Q[2]) angleAxis = self.quaternionToAngleAxis(Qf) self.writeIndented("DEF %s Viewpoint {\n" % (self.cleanStr(thisObj.name)), 1) - self.writeIndented("description \"%s\" \n" % (thisObj.name)) + self.writeIndented('description "%s" \n' % thisObj.name) self.writeIndented("position %3.2f %3.2f %3.2f\n" % (loc[0], loc[1], loc[2])) self.writeIndented("orientation %3.2f %3.2f %3.2f %3.2f\n" % (angleAxis[0], angleAxis[1], -angleAxis[2], angleAxis[3])) self.writeIndented("fieldOfView %.3f\n" % (lens)) @@ -219,17 +214,17 @@ class VRML2Export: self.writeIndented("\n") def writeFog(self): - if len(world) > 0: - mtype = world[0].getMistype() - mparam = world[0].getMist() - grd = world[0].getHor() + if world: + mtype = world.getMistype() + mparam = world.getMist() + grd = world.getHor() grd0, grd1, grd2 = grd[0], grd[1], grd[2] else: return if (mtype == 1 or mtype == 2): self.writeIndented("Fog {\n",1) - self.writeIndented("fogType \"%s\"\n" % self.namesFog[mtype]) - self.writeIndented("color %s %s %s" % (round(grd0,self.cp), round(grd1,self.cp), round(grd2,self.cp)) + "\n") + self.writeIndented('fogType "%s"\n' % self.namesFog[mtype]) + self.writeIndented("color %s %s %s\n" % (round(grd0,self.cp), round(grd1,self.cp), round(grd2,self.cp))) self.writeIndented("visibilityRange %s\n" % round(mparam[2],self.cp)) self.writeIndented("}\n",-1) self.writeIndented("\n") @@ -248,7 +243,7 @@ class VRML2Export: elif objType == "Lamp": headlight = "FALSE" self.writeIndented("NavigationInfo {\n",1) - self.writeIndented("headlight %s" % headlight + "\n") + self.writeIndented("headlight %s\n" % headlight) self.writeIndented("visibilityLimit %s\n" % (round(vislimit,self.cp))) self.writeIndented("type [\"EXAMINE\", \"ANY\"]\n") self.writeIndented("avatarSize [0.25, 1.75, 0.75]\n") @@ -256,8 +251,8 @@ class VRML2Export: self.writeIndented(" \n") def writeSpotLight(self, object, lamp): - if len(world) > 0: - ambi = world[0].getAmb() + if world: + ambi = world.getAmb() ambientIntensity = ((float(ambi[0] + ambi[1] + ambi[2]))/3)/2.5 else: ambi = 0 @@ -289,8 +284,8 @@ class VRML2Export: self.writeIndented("\n") def writeDirectionalLight(self, object, lamp): - if len(world) > 0: - ambi = world[0].getAmb() + if world: + ambi = world.getAmb() ambientIntensity = ((float(ambi[0] + ambi[1] + ambi[2]))/3)/2.5 else: ambi = 0 @@ -307,8 +302,8 @@ class VRML2Export: self.writeIndented("\n") def writePointLight(self, object, lamp): - if len(world) > 0: - ambi = world[0].getAmb() + if world: + ambi = world.getAmb() ambientIntensity = ((float(ambi[0] + ambi[1] + ambi[2]))/3)/2.5 else: ambi = 0 @@ -619,8 +614,8 @@ class VRML2Export: ambient = mat.amb/3 diffuseR, diffuseG, diffuseB = mat.rgbCol[0], mat.rgbCol[1],mat.rgbCol[2] - if len(world) > 0: - ambi = world[0].getAmb() + if world: + ambi = world.getAmb() ambi0, ambi1, ambi2 = (ambi[0]*mat.amb)*2, (ambi[1]*mat.amb)*2, (ambi[2]*mat.amb)*2 else: ambi0, ambi1, ambi2 = 0, 0, 0 @@ -654,19 +649,19 @@ class VRML2Export: return else: self.writeIndented("texture DEF %s ImageTexture {\n" % self.cleanStr(name), 1) - self.writeIndented("url \"%s\"\n" % name.split("\\")[-1].split("/")[-1]) + self.writeIndented('url "%s"\n' % name.split("\\")[-1].split("/")[-1]) self.writeIndented("}\n",-1) self.texNames[name] = 1 def writeBackground(self): - if len(world) > 0: - worldname = world[0].getName() + if world: + worldname = world.getName() else: return - blending = world[0].getSkytype() - grd = world[0].getHor() + blending = world.getSkytype() + grd = world.getHor() grd0, grd1, grd2 = grd[0], grd[1], grd[2] - sky = world[0].getZen() + sky = world.getZen() sky0, sky1, sky2 = sky[0], sky[1], sky[2] mix0, mix1, mix2 = grd[0]+sky[0], grd[1]+sky[1], grd[2]+sky[2] mix0, mix1, mix2 = mix0/2, mix1/2, mix2/2 @@ -713,19 +708,22 @@ class VRML2Export: alltexture = len(worldmat) for i in range(alltexture): namemat = worldmat[i].getName() - pic = worldmat[i].getImage() - if (namemat == "back") and (pic != None): - self.writeIndented("backUrl \"%s\"\n" % str(pic.getName())) - elif (namemat == "bottom") and (pic != None): - self.writeIndented("bottomUrl \"%s\"\n" % str(pic.getName())) - elif (namemat == "front") and (pic != None): - self.writeIndented("frontUrl \"%s\"\n" % str(pic.getName())) - elif (namemat == "left") and (pic != None): - self.writeIndented("leftUrl \"%s\"\n" % str(pic.getName())) - elif (namemat == "right") and (pic != None): - self.writeIndented("rightUrl \"%s\"\n" % str(pic.getName())) - elif (namemat == "top") and (pic != None): - self.writeIndented("topUrl \"%s\"\n" % str(pic.getName())) + pic = worldmat[i].getImage() + if pic: + # Stripped path. + pic_path= pic.filename.split('\\')[-1].split('/')[-1] + if namemat == "back": + self.writeIndented('backUrl "%s"\n' % pic_path) + elif namemat == "bottom": + self.writeIndented('bottomUrl "%s"\n' % pic_path) + elif namemat == "front": + self.writeIndented('frontUrl "%s"\n' % pic_path) + elif namemat == "left": + self.writeIndented('leftUrl "%s"\n' % pic_path) + elif namemat == "right": + self.writeIndented('rightUrl "%s"\n' % pic_path) + elif namemat == "top": + self.writeIndented('topUrl "%s"\n' % pic_path) self.writeIndented("}",-1) self.writeIndented("\n\n") @@ -803,7 +801,7 @@ class VRML2Export: if newName[0].isdigit(): newName='%s%s' % ('_',newName) - for bad in [' ','"','#',"'",',','.','[','\\',']','{','}']: + for bad in (' ','"','#',"'",',','.','[','\\',']','{','}'): newName=newName.replace(bad,'_') return newName @@ -837,26 +835,25 @@ class VRML2Export: if c.r != 255 and c.g != 255 and c.b !=255: vColors['multi']=1 - if sided.has_key(sidename): + try: sided[sidename]+=1 - else: + except: sided[sidename]=1 if face.image: faceName="%s_%s" % (face.image.name, sidename); - if imageMap.has_key(faceName): + try: imageMap[faceName].append(face) - else: - imageMap[faceName]=[face.image.name,sidename,face] + except: + imageMap[faceName]= [face.image.name,sidename,face] if self.verbose > 2: - for faceName in imageMap.keys(): - ifs=imageMap[faceName] + for faceName, ifs in imageMap.iteritems(): print "Debug: faceName=%s image=%s, solid=%s facecnt=%d" % \ (faceName, ifs[0], ifs[1], len(ifs)-2) - return len(imageMap.keys()) + return len(imageMap) def faceToString(self,face): @@ -984,12 +981,11 @@ class VRML2Export: ########################################################## def select_file(filename): - if pytinst == 1: - if exists(filename) and _safeOverwrite: - result = \ - Draw.PupMenu("File Already Exists, Overwrite?%t|Yes%x1|No%x0") - if(result != 1): - return + if sys.exists(filename) and _safeOverwrite: + result = \ + Draw.PupMenu("File Already Exists, Overwrite?%t|Yes%x1|No%x0") + if(result != 1): + return if not filename.endswith(extension): filename += extension @@ -997,16 +993,6 @@ def select_file(filename): wrlexport=VRML2Export(filename) wrlexport.export(scene, world, worldmat) -def createWRLPath(): - filename = Blender.Get('filename') - print filename - - if filename.find('.') != -1: - filename = filename.split('.')[0] - filename += extension - print filename - - return filename ######################################################### # main routine @@ -1027,5 +1013,5 @@ else: from gzip import * else: extension=".wrl" - Blender.Window.FileSelector(select_file,"Export VRML97",createWRLPath()) + Blender.Window.FileSelector(select_file, "Export VRML97", sys.makename(ext=extension)) -- cgit v1.2.3