forked from bartvdbraak/blender
update to m3g exporter by Gerhard Völkl
This commit is contained in:
parent
14f007adc8
commit
46f93f882d
@ -234,6 +234,19 @@ Tooltip: 'Export to M3G'
|
|||||||
#
|
#
|
||||||
# * Modul shutil is not needed any longer. Exporter has its own copy_file.
|
# * Modul shutil is not needed any longer. Exporter has its own copy_file.
|
||||||
# (realized and inspired by ideasman_42 and Martin Neumann)
|
# (realized and inspired by ideasman_42 and Martin Neumann)
|
||||||
|
#
|
||||||
|
# History 0.8
|
||||||
|
#
|
||||||
|
# * Blender works with SpotAngles 1..180 but M3G works only with 0..90
|
||||||
|
# M3G use the 'half angle' (cut off angle) (Thanks to Martin Storsjö)
|
||||||
|
#
|
||||||
|
# * Error fixed: Texture coordinates was not calculated correct.
|
||||||
|
# (Thanks to Milan Piskla, Vlad, Max Gilead, Regis Cosnier ...)
|
||||||
|
#
|
||||||
|
# * New options in GUI:
|
||||||
|
# M3G Version 2.0 : Will export M3G files Vers. 2.0 in future
|
||||||
|
# Game Physics: Adds Game Physics infos for NOPE API
|
||||||
|
#
|
||||||
# --------------------------------------------------------------------------#
|
# --------------------------------------------------------------------------#
|
||||||
# TODO: Export only selected mesh
|
# TODO: Export only selected mesh
|
||||||
# TODO: Optimize Bones <--> Vertex Group mapping
|
# TODO: Optimize Bones <--> Vertex Group mapping
|
||||||
@ -1213,7 +1226,7 @@ class M3GVertexArray(M3GObject3D):
|
|||||||
# Reverse t coordinate because M3G uses a different 2D coordinate system than Blender.
|
# Reverse t coordinate because M3G uses a different 2D coordinate system than Blender.
|
||||||
if self.uvmapping:
|
if self.uvmapping:
|
||||||
for i in range(0,len(self.components),2):
|
for i in range(0,len(self.components),2):
|
||||||
self.components[i]= int(self.components[i]*(-1))
|
self.components[i+1]= int(self.components[i+1]*(-1)) #Error in Version 0.7
|
||||||
for i in range(len(self.components)):
|
for i in range(len(self.components)):
|
||||||
if abs(self.components[i])>maxValue:raise Exception( i+". element too great/small!")
|
if abs(self.components[i])>maxValue:raise Exception( i+". element too great/small!")
|
||||||
|
|
||||||
@ -1284,7 +1297,7 @@ class M3GVertexArray(M3GObject3D):
|
|||||||
self.blenderIndexes[key]=index
|
self.blenderIndexes[key]=index
|
||||||
#print"blenderIndexes",self.blenderIndexes
|
#print"blenderIndexes",self.blenderIndexes
|
||||||
else:
|
else:
|
||||||
# print "VertexArray.append: element=",element
|
print "VertexArray.append: element=",element
|
||||||
self.components.append(element)
|
self.components.append(element)
|
||||||
|
|
||||||
class M3GVertexBuffer(M3GObject3D):
|
class M3GVertexBuffer(M3GObject3D):
|
||||||
@ -2001,7 +2014,7 @@ class M3GTranslator:
|
|||||||
self.scene = Blender.Scene.GetCurrent()
|
self.scene = Blender.Scene.GetCurrent()
|
||||||
self.world = self.translateWorld(self.scene)
|
self.world = self.translateWorld(self.scene)
|
||||||
|
|
||||||
for obj in self.scene.objects:
|
for obj in self.scene.objects :
|
||||||
if obj.getType()=='Camera': # older Version: isinstance(obj.getData(),Types.CameraType)
|
if obj.getType()=='Camera': # older Version: isinstance(obj.getData(),Types.CameraType)
|
||||||
self.translateCamera(obj)
|
self.translateCamera(obj)
|
||||||
elif obj.getType()=='Mesh':
|
elif obj.getType()=='Mesh':
|
||||||
@ -2176,7 +2189,7 @@ class M3GTranslator:
|
|||||||
if mOptions.createAmbientLight & mOptions.lightingEnabled:
|
if mOptions.createAmbientLight & mOptions.lightingEnabled:
|
||||||
lLight = M3GLight()
|
lLight = M3GLight()
|
||||||
lLight.mode = lLight.modes['AMBIENT']
|
lLight.mode = lLight.modes['AMBIENT']
|
||||||
lLight.color = self.translateRGB(AllWorlds[0].getAmb())
|
lLight.color = self.translateRGB(blWorld.getAmb())
|
||||||
self.nodes.append(lLight)
|
self.nodes.append(lLight)
|
||||||
|
|
||||||
#TODO: Set background picture from world
|
#TODO: Set background picture from world
|
||||||
@ -2550,7 +2563,7 @@ class M3GTranslator:
|
|||||||
mLight.intensity = lamp.energy
|
mLight.intensity = lamp.energy
|
||||||
#SpotAngle, SpotExponent (SPOT)
|
#SpotAngle, SpotExponent (SPOT)
|
||||||
if lampType == Lamp.Types.Spot:
|
if lampType == Lamp.Types.Spot:
|
||||||
mLight.spotAngle = lamp.spotSize
|
mLight.spotAngle = lamp.spotSize/2
|
||||||
mLight.spotExponent = lamp.spotBlend
|
mLight.spotExponent = lamp.spotBlend
|
||||||
self.translateToNode(obj,mLight)
|
self.translateToNode(obj,mLight)
|
||||||
|
|
||||||
@ -2945,6 +2958,8 @@ class OptionMgr:
|
|||||||
self.perspectiveCorrection = rdict['perspectiveCorrection']
|
self.perspectiveCorrection = rdict['perspectiveCorrection']
|
||||||
self.smoothShading = rdict['smoothShading']
|
self.smoothShading = rdict['smoothShading']
|
||||||
self.exportAsJava = rdict['exportAsJava']
|
self.exportAsJava = rdict['exportAsJava']
|
||||||
|
self.exportVersion2 = rdict['exportVersion2']
|
||||||
|
self.exportGamePhysics = rdict['exportGamePhysics']
|
||||||
|
|
||||||
except: self.save() # if data isn't valid, rewrite it
|
except: self.save() # if data isn't valid, rewrite it
|
||||||
|
|
||||||
@ -2958,6 +2973,8 @@ class OptionMgr:
|
|||||||
self.perspectiveCorrection = False
|
self.perspectiveCorrection = False
|
||||||
self.smoothShading = True
|
self.smoothShading = True
|
||||||
self.exportAsJava = False
|
self.exportAsJava = False
|
||||||
|
self.exportVersion2 = False
|
||||||
|
self.exportGamePhysics = False
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
d = {}
|
d = {}
|
||||||
@ -2970,7 +2987,9 @@ class OptionMgr:
|
|||||||
d['perspectiveCorrection'] = self.perspectiveCorrection
|
d['perspectiveCorrection'] = self.perspectiveCorrection
|
||||||
d['smoothShading'] = self.smoothShading
|
d['smoothShading'] = self.smoothShading
|
||||||
d['exportAsJava'] = self.exportAsJava
|
d['exportAsJava'] = self.exportAsJava
|
||||||
|
d['exportVersion2'] = self.exportVersion2
|
||||||
|
d['exportGamePhysics'] = self.exportGamePhysics
|
||||||
|
|
||||||
Blender.Registry.SetKey('M3GExport', d, True)
|
Blender.Registry.SetKey('M3GExport', d, True)
|
||||||
|
|
||||||
|
|
||||||
@ -2993,6 +3012,8 @@ def gui():
|
|||||||
perspectiveCorrection = Draw.Create(mOptions.perspectiveCorrection)
|
perspectiveCorrection = Draw.Create(mOptions.perspectiveCorrection)
|
||||||
smoothShading = Draw.Create(mOptions.smoothShading)
|
smoothShading = Draw.Create(mOptions.smoothShading)
|
||||||
exportAsJava = Draw.Create(mOptions.exportAsJava)
|
exportAsJava = Draw.Create(mOptions.exportAsJava)
|
||||||
|
exportVersion2 = Draw.Create(mOptions.exportVersion2)
|
||||||
|
exportGamePhysics = Draw.Create(mOptions.exportGamePhysics)
|
||||||
|
|
||||||
pupBlock = [\
|
pupBlock = [\
|
||||||
('Texturing'),\
|
('Texturing'),\
|
||||||
@ -3008,7 +3029,9 @@ def gui():
|
|||||||
('Posing'),\
|
('Posing'),\
|
||||||
('All Armature Actions', exportAllActions, 'Exports all actions for armatures'),\
|
('All Armature Actions', exportAllActions, 'Exports all actions for armatures'),\
|
||||||
('Export'),\
|
('Export'),\
|
||||||
('As Java Source', exportAsJava, 'Exports scene as Java source code')
|
('As Java Source', exportAsJava, 'Exports scene as Java source code'),\
|
||||||
|
('M3G Version 2.0', exportVersion2, 'Exports M3G Version 2.0 File'),\
|
||||||
|
('Game Physics', exportGamePhysics, 'Includes Game Physics infos for NOPE in export')
|
||||||
]
|
]
|
||||||
|
|
||||||
# Only execute if use didn't quit (ESC).
|
# Only execute if use didn't quit (ESC).
|
||||||
@ -3022,6 +3045,8 @@ def gui():
|
|||||||
mOptions.perspectiveCorrection = perspectiveCorrection.val
|
mOptions.perspectiveCorrection = perspectiveCorrection.val
|
||||||
mOptions.smoothShading = smoothShading.val
|
mOptions.smoothShading = smoothShading.val
|
||||||
mOptions.exportAsJava = exportAsJava.val
|
mOptions.exportAsJava = exportAsJava.val
|
||||||
|
mOptions.exportVersion2 = exportVersion2.val
|
||||||
|
mOptions.exportGamePhysics = exportGamePhysics.val
|
||||||
mOptions.save()
|
mOptions.save()
|
||||||
|
|
||||||
if mOptions.exportAsJava:
|
if mOptions.exportAsJava:
|
||||||
|
Loading…
Reference in New Issue
Block a user