Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'release/scripts/export-iv-0.1.py')
-rw-r--r--release/scripts/export-iv-0.1.py304
1 files changed, 0 insertions, 304 deletions
diff --git a/release/scripts/export-iv-0.1.py b/release/scripts/export-iv-0.1.py
deleted file mode 100644
index 647dd9c5518..00000000000
--- a/release/scripts/export-iv-0.1.py
+++ /dev/null
@@ -1,304 +0,0 @@
-#!BPY
-
-"""
-Name: 'OpenInventor (.iv)...'
-Blender: 236
-Group: 'Export'
-Tip: 'Export to OpenInventor file format. (.iv)'
-"""
-__author__ = ("Radek Barton")
-__url__ = ["http://blackhex.no-ip.org/"]
-__email__ = ["scripts"]
-__version__ = "0.1"
-
-
-__bpydoc__ = """\
-This script exports to the Open Inventor format.
-
-Usage:
-
-Run this script from "File->Export" menu.
-
-Note:
-"""
-# ***** BEGIN GPL LICENSE BLOCK *****
-#
-# Script copyright (C) Radek Barton
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# ***** END GPL LICENCE BLOCK *****
-#
-
-import Blender
-math_pi= 3.1415926535897931
-
-def WriteHeader(file):
- file.write("#Inventor V2.1 ascii\n\n")
- file.write("Separator\n")
- file.write("{\n")
- file.write(" ShapeHints\n")
- file.write(" {\n")
- file.write(" vertexOrdering COUNTERCLOCKWISE\n")
- file.write(" }\n")
-
-def WriteFooter(file):
- file.write("}\n")
-
-def WriteMesh(file, ob):
- file.write(" Separator\n")
- file.write(" {\n")
- file.write(" # %s\n" % ob.name)
- WriteMatrix(file, ob)
- mesh = ob.getData()
- WriteMaterials(file, mesh)
- WriteTexture(file, mesh)
- WriteNormals(file, mesh)
- WriteVertices(file, mesh)
- WriteFaces(file, mesh)
- file.write(" }\n")
-
-def WriteMatrix(file, ob):
- matrix = ob.getMatrix()
- file.write(" MatrixTransform\n")
- file.write(" {\n")
- file.write(" matrix\n")
- for line in matrix:
- file.write(" %.6f %.6f %.6f %.6f\n" % (line[0], line[1], line[2], line[3]))
- file.write(" }\n")
-
-def WriteColors(file, mesh):
- file.write(" vertexProperty VertexProperty\n")
- file.write(" {\n")
- file.write(" orderedRGBA\n")
- file.write(" [\n")
- for face in mesh.faces:
- for I in xrange(len(face)):
- file.write(" 0x%02x%02x%02x%02x,\n" % (face.col[I].r,
- face.col[I].g, face.col[I].b, face.col[I].a))
- file.write(" ]\n")
- file.write(" materialBinding PER_VERTEX\n")
- file.write(" }\n")
-
-def WriteMaterials(file, mesh):
- if mesh.materials:
- file.write(" Material\n")
- file.write(" {\n")
- file.write(" ambientColor\n")
- file.write(" [\n")
- for mat in mesh.materials:
- file.write(" %.6f %.6f %.6f,\n" % (mat.mirCol[0], mat.mirCol[1],
- mat.mirCol[2]))
- file.write(" ]\n")
- file.write(" diffuseColor\n")
- file.write(" [\n")
- for mat in mesh.materials:
- file.write(" %.6f %.6f %.6f,\n" % (mat.rgbCol[0], mat.rgbCol[1],
- mat.rgbCol[2]))
- file.write(" ]\n")
- file.write(" specularColor\n")
- file.write(" [\n")
- for mat in mesh.materials:
- file.write(" %.6f %.6f %.6f,\n" % (mat.specCol[0] * mat.spec / 2.0,
- mat.specCol[1] * mat.spec / 2.0, mat.specCol[2] * mat.spec / 2.0))
- file.write(" ]\n")
- file.write(" emissiveColor\n")
- file.write(" [\n")
- for mat in mesh.materials:
- file.write(" %.6f %.6f %.6f,\n" % (mat.rgbCol[0] * mat.emit,
- mat.rgbCol[1] * mat.emit, mat.rgbCol[0] * mat.emit))
- file.write(" ]\n")
- file.write(" shininess\n")
- file.write(" [\n")
- for mat in mesh.materials:
- file.write(" %.6f,\n" % (mat.hard / 255.0))
- file.write(" ]\n")
- file.write(" transparency\n")
- file.write(" [\n")
- for mat in mesh.materials:
- file.write(" %.6f,\n" % (1.0 - mat.alpha))
- file.write(" ]\n")
- file.write(" }\n")
- file.write(" MaterialBinding\n")
- file.write(" {\n")
- file.write(" value PER_FACE_INDEXED\n")
- file.write(" }\n")
-
-def WriteTexture(file, mesh):
- texture = mesh.faces[0].image # BAD Ju Ju
- if texture:
- file.write(" Texture2\n")
- file.write(" {\n")
- file.write(' filename "%s"\n' % texture.getName())
- file.write(" }\n")
- file.write(" TextureCoordinate2\n")
- file.write(" {\n")
- file.write(" point\n")
- file.write(" [\n")
- if mesh.hasVertexUV():
- for vert in mesh.verts:
- file.write(" %s %s,\n" % (vert.uvco[0], vert.uvco[1]))
- file.write(" ]\n")
- file.write(" }\n")
- file.write(" TextureCoordinateBinding\n")
- file.write(" {\n")
- file.write(" value PER_VERTEX_INDEXED\n")
- file.write(" }\n")
- elif mesh.hasFaceUV():
- for face in mesh.faces:
- for uv in face.uv:
- file.write(" %.6f %.6f,\n" % (uv[0], uv[1]))
- file.write(" ]\n")
- file.write(" }\n")
- file.write(" TextureCoordinateBinding\n")
- file.write(" {\n")
- file.write(" value PER_VERTEX\n")
- file.write(" }\n")
-
-def WriteVertices(file, mesh):
- file.write(" Coordinate3\n")
- file.write(" {\n")
- file.write(" point\n")
- file.write(" [\n")
- for vert in mesh.verts:
- file.write(" %.6f %.6f %.6f,\n" % (vert[0], vert[1], vert[2]))
- file.write(" ]\n")
- file.write(" }\n")
-
-def WriteNormals(file, mesh):
- file.write(" Normal\n")
- file.write(" {\n")
- file.write(" vector\n")
- file.write(" [\n")
-
- # make copy of vertex normals
- normals = []
- for face in mesh.faces:
- if len(face.v) in [3, 4]:
- if face.smooth:
- for v in face.v:
- normals.append(v.no)
- else:
- for v in face.v:
- normals.append(face.no)
-
- # write normals
- for no in normals:
- file.write(" %.6f %.6f %.6f,\n" % (no[0], no[1], no[2]))
- file.write(" ]\n")
- file.write(" }\n")
-
- # write way how normals are binded
- file.write(" NormalBinding\n")
- file.write(" {\n")
- file.write(" value PER_VERTEX\n")
- file.write(" }\n")
-
-def WriteFaces(file, mesh):
- file.write(" IndexedFaceSet\n")
- file.write(" {\n")
-
- # write vertex paint
- if mesh.hasVertexColours():
- WriteColors(file, mesh)
-
- # write material indexes
- file.write(" materialIndex\n")
- file.write(" [\n")
- for face in mesh.faces:
- file.write(" %i,\n" % face.mat);
- file.write(" ]\n")
-
- # write faces with coordinate indexes
- file.write(" coordIndex\n")
- file.write(" [\n")
- for face in mesh.faces:
- face_v= face.v
- if len(face_v) == 3:
- file.write(" %i, %i, %i, -1,\n" % (face_v[0].index,
- face_v[1].index, face_v[2].index))
- elif len(face_v) == 4:
- file.write(" %i, %i, %i, %i, -1,\n" % (face_v[0].index,
- face_v[1].index, face_v[2].index, face_v[3].index))
- file.write(" ]\n")
- file.write(" }\n")
-
-
-def WriteCamera(file, ob):
- camera = ob.getData();
- # perspective camera
- if camera.type == 0:
- file.write(" PerspectiveCamera\n")
- file.write(" {\n")
- file.write(" nearDistance %s\n" % (camera.clipStart))
- file.write(" farDistance %s\n" % (camera.clipEnd))
- file.write(" }\n")
- # ortho camera
- else:
- print camera.type
-
-def WriteLamp(file, ob):
- lamp = ob.getData();
- # spot lamp
- if lamp.type == 2:
- file.write(" SpotLight\n")
- file.write(" {\n")
- file.write(" intensity %s\n" % (lamp.energy / 10.0))
- file.write(" color %s %s %s\n" % (lamp.col[0], lamp.col[1], lamp.col[2]))
- #file.write(" location %s\n" % ())
- #file.write(" direction %s\n" % ())
- file.write(" dropOffRate %s\n" % (lamp.spotBlend))
- file.write(" cutOffAngle %s\n" % (lamp.spotSize * math_pi / 180.0))
- file.write(" }\n")
-
-# script main function
-def ExportToIv(file_name):
- scene = Blender.Scene.GetCurrent()
- file = open(file_name, "w")
-
- # make lists of individual ob types
- meshes = []
- lamps = []
- cameras = []
- for ob in scene.objects:
- obtype= ob.type
- if obtype == "Mesh":
- meshes.append(ob);
- #elif obtype == "Lamp":
- # lamps.append(ob);
- #elif obtype == "Camera":
- # cameras.append(ob);
- #else:
- # print "Exporting %s objects isn't supported!" % ob.type
-
- # write header, footer and groups of ob types
- WriteHeader(file);
- #for camera in cameras:
- # WriteCamera(file, camera);
- #for lamp in lamps:
- # WriteLamp(file, lamp)
- for mesh in meshes:
- WriteMesh(file, mesh)
- WriteFooter(file)
-
- file.close()
-
-def FileSelectorCB(file_name):
- if not file_name.lower().endswith('.iv'):
- file_name += '.iv'
- ExportToIv(file_name)
-
-if __name__ == '__main__':
- Blender.Window.FileSelector(FileSelectorCB, "Export IV", Blender.sys.makename(ext='.iv'))