No niin mini mesh export tehty. Kirjoittaa filun johon tallentuu verteksien paikat ja index lista. Saa kommentoida koodia, jos huomaatte siinä jotain typeryyksiä. Melkoisen paljon tuli vastaan kaikkea uutta kivaa.
Koodiin jäi yksi rivi, joka ei oikein auennut mulle.
var polymsh = mesh.ActivePrimitive.Geometry;
Mesh on X3DObject olio, josta otetaan aktiivinen primitiivi (was?) ja siitä geometria data. Mikä hiton aktiivinen primitiivi?
//
// Export mesh.
//
function exportMesh(mesh)
{
Application.LogMessage("Exporting mesh " + mesh.name);
var fb = XSIUIToolkit.FileBrowser;
fb.DialogTitle = "Save mesh " + mesh.name;
fb.Filter = "GnosisMesh (*.msh)|*.msh||";
fb.ShowSave();
var polymsh = mesh.ActivePrimitive.Geometry;
var fso = XSIFactory.CreateActiveXObject("Scripting.FileSystemObject");
Application.logmessage( "Writing file: " + fb.FilePathName );
var f = fso.CreateTextFile(fb.FilePathName , true);
f.WriteLine( "GnosisMesh" );
f.WriteLine( "vertexcount: "+polymsh.points.count );
f.WriteLine( "facecount: "+polymsh.triangles.count );
for (i=0; i < polymsh.points.count; i++)
{
f.WriteLine( "Vertex " + i + ": " +
polymsh.points(i).position.x + " " +
polymsh.points(i).position.y + " " +
polymsh.points(i).position.z);
}
var iIndexArray = polymsh.triangles.indexarray.toArray();
for (i=0; i < polymsh.triangles.count; i++)
{
f.WriteLine( "Face " + i + ": " +
iIndexArray[i * 3] + " " +
iIndexArray[i * 3 + 1] + " " +
iIndexArray[i * 3 + 2]);
}
f.Close();
Application.LogMessage("Exporting done.");
return true;
}
//----------------------------------------------------------------------------------------------------
//
// Export all meshes.
//
function exportAllMeshes()
{
var root = Application.ActiveSceneRoot;
var meshes = root.FindChildren("", siPolyMeshType, null, true);
for (i=0; i < meshes.count; i++)
{
if (!exportMesh(meshes.item(i)))
Application.LogMessage("Error\n");
}
}
//----------------------------------------------------------------------------------------------------
exportAllMeshes();