[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Usata-commits] Changes to usata2/src/tools/blender_export.py
From: |
Chong Kai Xiong |
Subject: |
[Usata-commits] Changes to usata2/src/tools/blender_export.py |
Date: |
Wed, 16 Feb 2005 15:27:16 -0500 |
Index: usata2/src/tools/blender_export.py
diff -u usata2/src/tools/blender_export.py:1.3
usata2/src/tools/blender_export.py:1.4
--- usata2/src/tools/blender_export.py:1.3 Sun Feb 13 09:42:43 2005
+++ usata2/src/tools/blender_export.py Wed Feb 16 20:27:15 2005
@@ -1,11 +1,11 @@
#!BPY
-"""
-Name: 'Usata'
+'''
+Name: "Usata"
Blender: 234
-Group: 'Export'
-Tooltip: 'Export to Usata mesh format.'
-"""
+Group: "Export"
+Tooltip: "Export to Usata mesh format."
+'''
# -*- coding: 'utf-8' -*-
# Copyright (C) 2001-2005 Chong Kai Xiong (descender)
@@ -17,7 +17,7 @@
# included in the software distribution, or visit
# http://www.fsf.org/licenses/gpl.html.
#
-# $Id: blender_export.py,v 1.3 2005/02/13 09:42:43 Descender Exp $
+# $Id: blender_export.py,v 1.4 2005/02/16 20:27:15 Descender Exp $
# TODO
# * Convert writer to use xml.sax.writer.PrettyPrinter
@@ -26,10 +26,10 @@
# * Add save feedback
# * Add more GUI controls
-__author__ = "Chong Kai Xiong"
-__version__ = "0.2"
-__email__ = "address@hidden"
-__url__ = "http://www.nongnu.org/usata"
+__author__ = 'Chong Kai Xiong'
+__version__ = '0.2'
+__email__ = 'address@hidden'
+__url__ = 'http://www.nongnu.org/usata'
import Blender
import xml.sax.writer
@@ -40,7 +40,7 @@
# i18n
-I18N_DOMAIN = "blender-usata-export"
+I18N_DOMAIN = 'blender-usata-export'
# event numbers
@@ -48,6 +48,9 @@
EVENT_SAVE = 100
EVENT_QUIT = 101
EVENT_FILENAME = 102
+EVENT_SELECT_CAMERA = 103
+EVENT_SELECT_MESH = 104
+
_ = gettext.gettext
@@ -62,148 +65,173 @@
class XmlExporter(object):
- def __init__(self, filename, charset, fp_format):
+ def __init__(self, filename, charset, fp_format, export):
self.filename = filename
self.charset = charset
self.fp_format = fp_format
+ self.export = export
self.file = None
self.writer = None
def write_vertex(self, vertex):
- self.writer.startElement("vertex", {})
+ self.writer.startElement('vertex', {})
- self.writer.startElement("position",
- {"x": self.fp_format % vertex.co[0],
- "y": self.fp_format % vertex.co[1],
- "z": self.fp_format % vertex.co[2]}
+ self.writer.startElement('position',
+ {'x': self.fp_format % vertex.co[0],
+ 'y': self.fp_format % vertex.co[1],
+ 'z': self.fp_format % vertex.co[2]}
)
- self.writer.endElement("position")
+ self.writer.endElement('position')
- self.writer.startElement("texture",
- {"u": self.fp_format % vertex.uvco[0],
- "v": self.fp_format % vertex.uvco[1]}
+ self.writer.startElement('texture',
+ {'u': self.fp_format % vertex.uvco[0],
+ 'v': self.fp_format % vertex.uvco[1]}
)
- self.writer.endElement("texture")
+ self.writer.endElement('texture')
- self.writer.startElement("normal",
- {"x": self.fp_format % vertex.no[0],
- "y": self.fp_format % vertex.no[1],
- "z": self.fp_format % vertex.no[2]}
+ self.writer.startElement('normal',
+ {'x': self.fp_format % vertex.no[0],
+ 'y': self.fp_format % vertex.no[1],
+ 'z': self.fp_format % vertex.no[2]}
)
- self.writer.endElement("normal")
+ self.writer.endElement('normal')
- self.writer.endElement("vertex")
+ self.writer.endElement('vertex')
def write_vertex_list(self, vertices):
- self.writer.startElement("vertices", {})
+ self.writer.startElement('vertices', {})
for vertex in vertices:
self.write_vertex(vertex)
- self.writer.endElement("vertices")
+ self.writer.endElement('vertices')
def write_vertex_index_list(self, vertices):
- self.writer.startElement("vertex_indices", {})
+ self.writer.startElement('vertex_indices', {})
for vertex in vertices:
- self.writer.startElement("index", {})
- self.writer.characters("%d" % vertex.index)
- self.writer.endElement("index")
+ self.writer.startElement('index', {})
+ self.writer.characters('%d' % vertex.index)
+ self.writer.endElement('index')
- self.writer.endElement("vertex_indices")
+ self.writer.endElement('vertex_indices')
def write_face(self, face):
- self.writer.startElement("face", {})
+ self.writer.startElement('face', {})
self.write_vertex_index_list(face.v)
- self.writer.startElement("material", {})
- self.writer.characters("%d" % face.mat)
- self.writer.endElement("material")
+ self.writer.startElement('material', {})
+ self.writer.characters('%d' % face.mat)
+ self.writer.endElement('material')
- self.writer.endElement("face")
+ self.writer.endElement('face')
def write_face_list(self, faces):
- self.writer.startElement("faces", {})
+ self.writer.startElement('faces', {})
for face in faces:
self.write_face(face)
- self.writer.endElement("faces")
+ self.writer.endElement('faces')
def write_camera(self, camera):
camera_obj = Blender.Object.Get(camera.getName())
- self.writer.startElement("camera", {})
+ self.writer.startElement('camera', {})
- self.writer.startElement("name", {})
+ self.writer.startElement('name', {})
self.writer.characters(camera.getName());
- self.writer.endElement("name")
+ self.writer.endElement('name')
- self.writer.startElement("position",
- {"x": self.fp_format % camera_obj.loc[0],
- "y": self.fp_format % camera_obj.loc[1],
- "z": self.fp_format % camera_obj.loc[2]}
- )
- self.writer.endElement("position")
+ self.writer.startElement('position',
+ {'x': self.fp_format % camera_obj.loc[0],
+ 'y': self.fp_format % camera_obj.loc[1],
+ 'z': self.fp_format % camera_obj.loc[2]}
+ )
+ self.writer.endElement('position')
- self.writer.startElement("lens", {})
+ self.writer.startElement('lens', {})
self.writer.characters(self.fp_format % camera.getLens())
- self.writer.endElement("lens")
+ self.writer.endElement('lens')
- self.writer.startElement("near", {})
+ self.writer.startElement('near', {})
self.writer.characters(self.fp_format % camera.getClipStart())
- self.writer.endElement("near")
+ self.writer.endElement('near')
- self.writer.startElement("far", {})
+ self.writer.startElement('far', {})
self.writer.characters(self.fp_format % camera.getClipEnd())
- self.writer.endElement("far")
+ self.writer.endElement('far')
- self.writer.endElement("camera")
+ self.writer.endElement('camera')
def write_mesh(self, mesh):
+ self.writer.startElement('mesh')
self.write_vertex_list(mesh.verts)
self.write_face_list(mesh.faces)
-
+ self.writer.endElement('mesh')
def write_object(self, object):
- self.writer.startElement("object", {})
+ self.writer.startElement('object', {})
- self.writer.startElement("name", {})
+ self.writer.startElement('name', {})
self.writer.characters(object.name)
- self.writer.endElement("name")
+ self.writer.endElement('name')
- self.write_mesh(Blender.NMesh.GetRaw(object.name))
+ location = object.getLocation()
+ self.writer.startElement('position',
+ {'x': self.fp_format % location[0],
+ 'y': self.fp_format % location[1],
+ 'z': self.fp_format % location[2]}
+ )
+ self.writer.endElement('position')
+
+ orientn = object.getEuler()
+ self.writer.startElement('orientation',
+ {'x': self.fp_format % orientn[0],
+ 'y': self.fp_format % orientn[1],
+ 'z': self.fp_format % orientn[2]}
+ )
+ self.writer.endElement('orientation')
+
+ size = object.size
+ self.writer.startElement('size',
+ {'x': self.fp_format % size[0],
+ 'y': self.fp_format % size[1],
+ 'z': self.fp_format % size[2]}
+ )
+ self.writer.endElement('size')
+
+ mesh = Blender.NMesh.GetRaw(object.name)
+ if mesh and self.export['mesh']:
+ self.write_mesh(Blender.NMesh.GetRaw(object.name))
- self.writer.endElement("object")
+ self.writer.endElement('object')
def write_scene(self):
- self.writer.startElement("scene", {})
-
- # write all cameras
- for camera in Blender.Camera.Get():
- self.write_camera(camera)
-
- # write mesh objects
- for object in Blender.Object.Get():
- # check if object is a mesh
-
- mesh = Blender.NMesh.GetRaw(object.name)
- if (mesh == None):
- continue
-
- self.write_object(object)
+ self.writer.startElement('scene', {})
- self.writer.endElement("scene")
+ if self.export['camera']:
+ # write all cameras
+ for camera in Blender.Camera.Get():
+ self.write_camera(camera)
+
+ if self.export['object']:
+ # write all mesh objects
+ for object in Blender.Object.Get():
+ if Blender.NMesh.GetRaw(object.name):
+ self.write_object(object)
+
+ self.writer.endElement('scene')
def write(self):
- print "Writing to file (%s)..." % self.filename
+ print 'Writing to file (%s)...' % self.filename
- self.file = open(self.filename, "wt")
+ self.file = open(self.filename, 'wt')
self.writer = XmlWriter(self.file)
self.writer.startDocument()
@@ -224,16 +252,23 @@
self.settings.setdefault('filename', 'untitled.xml')
self.settings.setdefault('charset', 'UTF-8')
- self.settings.setdefault('float-format', "%.8f")
+ self.settings.setdefault('float-format', '%.8f')
+
+ self.settings.setdefault('export',
+ {'camera' : True,
+ 'object' : True,
+ 'mesh' : True}
+ )
def save_settings(self):
Registry.SetKey('Usata', self.settings)
def export(self):
- print "Exporting scene..."
+ print 'Exporting scene...'
exporter = XmlExporter(self.settings['filename'],
self.settings['charset'],
- self.settings['float-format'])
+ self.settings['float-format'],
+ self.settings['export'])
exporter.write()
def draw(self):
@@ -244,21 +279,29 @@
# draw title
glColor3f(0.0, 0.0, 0.0)
glRasterPos2i(50, 500)
- Blender.Draw.Text(_("Usata XML file exporter"))
+ Blender.Draw.Text(_('Usata XML file exporter'))
# filename entry button
- self.output_name = Blender.Draw.String(_("File: "), EVENT_FILENAME,
+ self.output_name = Blender.Draw.String(_('File: '), EVENT_FILENAME,
50, 400, 400, 20,
self.settings['filename'], 255,
- "Output filename")
+ _('Output filename'))
- # save button
- Blender.Draw.Button(_("Save"), EVENT_SAVE, 50, 350, 50, 20,
- "save file")
-
- # quit button
- Blender.Draw.Button(_("Quit"), EVENT_QUIT, 110, 350, 50, 20,
- "exit script")
+ # export set selection toggles
+
+ self.export_camera = Blender.Draw.Toggle(_('Camera'),
EVENT_SELECT_CAMERA,
+ 50, 450, 50, 20,
+
self.settings['export']['camera'],
+ _('Export cameras'))
+
+ self.export_mesh = Blender.Draw.Toggle(_('Mesh'), EVENT_SELECT_MESH,
+ 110, 450, 50, 20,
+ self.settings['export']['mesh'],
+ _('Export meshes'))
+
+ # save/quit buttons
+ Blender.Draw.Button(_('Save'), EVENT_SAVE, 50, 350, 50, 20, _('Save
file'))
+ Blender.Draw.Button(_('Quit'), EVENT_QUIT, 110, 350, 50, 20, _('Exit
script'))
def run(self):
Blender.Draw.Register(self.draw, None, self.handle_event)
@@ -267,6 +310,13 @@
if event == EVENT_FILENAME:
self.settings['filename'] = self.output_name.val
+ elif event == EVENT_SELECT_CAMERA:
+ self.settings['export']['camera'] = self.export_camera.val
+
+ elif event == EVENT_SELECT_MESH:
+ self.settings['export']['object'] = self.export_mesh.val
+ self.settings['export']['mesh'] = self.export_mesh.val
+
elif event == EVENT_SAVE:
self.export()
@@ -284,5 +334,5 @@
gui = GUIControl()
gui.run()
-if __name__ == "__main__":
+if __name__ == '__main__':
main()