Hello,
Here is a new export script
Code:
#!BPY
"""
Name: 'Raydium Export (.tri format)'
Blender: 2.43"
Group: 'Export'
Tooltip: 'Export to .tri format'
"""
#import rpdb2;
#rpdb2.start_embedded_debugger("test",True)
import Blender
from Blender import NMesh
class source:
def __init__(self,filename):
self.file=open(filename,"w")
def writeFaces(self):
Blender.Window.EditMode(0)
scene=Blender.Scene.GetCurrent()
self.file.write("1\n") #tri version
objects = Blender.Object.GetSelected()
if len(objects) == 0:
print "-- Exporting all objects"
objects = scene.getChildren()
else:
print "-- Exporting only selected objects"
for object in objects:
objtype=object.getType()
if objtype == "Mesh":
print "ok, it's a mesh"
mesh=object.getData(mesh=1) # let's get a Mesh, not a NMesh (faster, thin)
mgroup = mesh.getVertGroupNames()
for mi in mgroup:
print "Group:",mi
for i in mesh.getVertsFromGroup(mi):
print "Gvert:",i
for face in mesh.faces:
if len(face)!=3:
print "ERROR: NOT A TRIANGLE ONLY MESH ! (select all vertices and use CTRL+T)"
for i in range(3): #triangles only ! (CTRL+T)
#indx=face.vlist.index(face[i])
indx=face.v[i].index
#print "Vertex:",indx
ngrp="" # default no group name
for mi in mgroup:
#print "group:",mesh.getVertsFromGroup(mi,0,[indx])
if (len(mesh.getVertsFromGroup(mi,0,[indx]))>0):
#print "group:",indx,mi
ngrp = "@@ " + mi
#print "Vert / Group:",indx,"/",ngrp
if(mesh.faceUV and face.image):
u=face.uv[i][0]
v=face.uv[i][1]
layers=mesh.getUVLayerNames()
texture=Blender.sys.basename(face.image.filename)
but=texture
cpt=0 # layers counter
if(len(layers)>1):
org=mesh.activeUVLayer
texture=texture+';'
# loop on layers and append uv and name to a string
for layer in layers:
mesh.activeUVLayer=layer
uu=face.uv[i][0]
vv=face.uv[i][1]
t=Blender.sys.basename(face.image.filename)
if(t!=but):
if(cpt>0):
texture=texture+'|'
cpt=cpt+1
texture=texture+str(uu)+'|'+str(vv)+'|'+t
mesh.activeUVLayer=org
self.file.write("%f %f %f %f %f %f %f %f %s %s\n" % (mesh.verts[indx].co[0],mesh.verts[indx].co[1],mesh.verts[indx].co[2],mesh.verts[indx].no[0],mesh.verts[indx].no[1],mesh.verts[indx].no[2],u,v,texture,ngrp))
else:
if(mesh.vertexColors and len(face.col)>0):
self.file.write("%f %f %f %f %f %f 0 0 rgb(%3.3f,%3.3f,%3.3f) %s\n" % (mesh.verts[indx].co[0],mesh.verts[indx].co[1],mesh.verts[indx].co[2],mesh.verts[indx].no[0],mesh.verts[indx].no[1],mesh.verts[indx].no[2],face.col[i].r/255.0,face.col[i].g/255.0,face.col[i].b/255.0,ngrp))
else:
self.file.write("%f %f %f %f %f %f 0 0 rgb(0.6,0.6,0.6) %s\n" % (mesh.verts[indx].co[0],mesh.verts[indx].co[1],mesh.verts[indx].co[2],mesh.verts[indx].no[0],mesh.verts[indx].no[1],mesh.verts[indx].no[2],ngrp))
def close(self):
self.file.flush()
self.file.close()
def fs_callback(filename):
if filename.find('.tri', -4) <= 0: filename += '.tri'
obj=source(filename)
obj.writeFaces()
obj.close
print "Exported to %s. Textures must be .tga, uncompressed, origin NOT at lower-left.\n" % (filename)
#fs_callback("tt.tri")
#import rpdb2;rpdb2.start_embedded_debugger("aa")
Blender.Window.FileSelector(fs_callback, "Export Raydium Tri")
#fs_callback("tmp.tri")
you'll have a tri like this
Code:
1
-0.292892 2.700000 -0.707106 0.707083 0.000000 -0.707083 0 0 rgb(0.6,0.6,0.6) @@ B3
-0.444437 2.700000 -0.831475 0.555559 0.000000 -0.831446 0 0 rgb(0.6,0.6,0.6) @@ B3
-0.292892 3.300000 -0.707106 0.707083 0.000000 -0.707083 0 0 rgb(0.6,0.6,0.6) @@ B3
-0.444437 2.700000 -0.831475 0.555559 0.000000 -0.831446 0 0 rgb(0.6,0.6,0.6) @@ B3
-0.444437 3.300000 -0.831475 0.555559 0.000000 -0.831446 0 0 rgb(0.6,0.6,0.6) @@ B3
-0.292892 3.300000 -0.707106 0.707083 0.000000 -0.707083 0 0 rgb(0.6,0.6,0.6) @@ B3
...
-1.000007 2.300000 -1.000000 0.000000 0.000000 -1.000000 0 0 rgb(0.6,0.6,0.6)
-1.195097 2.300000 -0.980784 -0.195074 0.000000 -0.980773 0 0 rgb(0.6,0.6,0.6)
-1.195097 2.700000 -0.980784 -0.195074 0.000000 -0.980773 0 0 rgb(0.6,0.6,0.6) @@ B3
-1.000007 2.300000 -1.000000 0.000000 0.000000 -1.000000 0 0 rgb(0.6,0.6,0.6)
-1.195097 2.700000 -0.980784 -0.195074 0.000000 -0.980773 0 0 rgb(0.6,0.6,0.6) @@ B3
-1.000007 2.700000 -1.000000 0.000000 0.000000 -1.000000 0 0 rgb(0.6,0.6,0.6) @@ B3
-1.195097 2.300000 -0.980784 -0.195074 0.000000 -0.980773 0 0 rgb(0.6,0.6,0.6)
-1.382689 2.300000 -0.923878 -0.382672 0.000000 -0.923856 0 0 rgb(0.6,0.6,0.6)
...
-0.168529 1.899999 -0.555569 0.831446 0.000000 -0.555559 0 0 rgb(0.6,0.6,0.6) @@ B2
-0.292892 2.299999 -0.707106 0.707083 0.000000 -0.707083 0 0 rgb(0.6,0.6,0.6)
-0.168529 2.299999 -0.555569 0.831446 0.000000 -0.555559 0 0 rgb(0.6,0.6,0.6)
-0.292892 1.399999 -0.707106 0.707083 0.000000 -0.707083 0 0 rgb(0.6,0.6,0.6) @@ B2
-0.444437 1.400000 -0.831475 0.555559 0.000000 -0.831446 0 0 rgb(0.6,0.6,0.6) @@ B2
-0.292892 1.899999 -0.707106 0.707083 0.000000 -0.707083 0 0 rgb(0.6,0.6,0.6) @@ B2
...
-0.000000 1.399999 0.000002 1.000000 0.000000 0.000000 0 0 rgb(0.6,0.6,0.6) @@ B2
-0.019214 0.899999 -0.195089 0.980773 0.000000 -0.195074 0 0 rgb(0.6,0.6,0.6) @@ B1
-0.076120 0.899999 -0.382682 0.923856 0.000000 -0.382672 0 0 rgb(0.6,0.6,0.6) @@ B1
-0.076120 1.399999 -0.382682 0.923856 0.000000 -0.382672 0 0 rgb(0.6,0.6,0.6) @@ B2
-0.019214 0.899999 -0.195089 0.980773 0.000000 -0.195074 0 0 rgb(0.6,0.6,0.6) @@ B1
-0.076120 1.399999 -0.382682 0.923856 0.000000 -0.382672 0 0 rgb(0.6,0.6,0.6) @@ B2
-0.019214 1.399999 -0.195089 0.980773 0.000000 -0.195074 0 0 rgb(0.6,0.6,0.6) @@ B2
Hope this can help.
Group name are not directly linked to vertices, so i need to look up each vertice, this is very slow and slow down all export process.
We probably need to change some things, but it's for tests purpose.
Have a nice day
Ouille