public void ExportCollada(string filename) {
using (var xml = XmlWriter.Create(filename, new XmlWriterSettings {
Indent = true,
Encoding = Encoding.UTF8
})) {
xml.WriteStartDocument();
xml.WriteStartElement("COLLADA", "http://www.collada.org/2005/11/COLLADASchema");
xml.WriteAttributeString("version", "1.4.1");
xml.WriteStartElement("asset");
xml.WriteStartElement("contributor");
xml.WriteElementStringSafe("author", Environment.UserName);
xml.WriteElementStringSafe("authoring_tool", AcToolsInformation.Name);
xml.WriteEndElement();
xml.WriteElementStringSafe("created", new FileInfo(OriginalFilename).CreationTime.ToString(CultureInfo.InvariantCulture));
xml.WriteElementStringSafe("modified", new FileInfo(OriginalFilename).LastWriteTime.ToString(CultureInfo.InvariantCulture));
xml.WriteElement("unit",
"name", "meter",
"meter", 1);
xml.WriteElementString("up_axis", "Y_UP");
xml.WriteEndElement();
xml.WriteElement("library_cameras");
xml.WriteElement("library_lights");
xml.WriteStartElement("library_images");
foreach (var texture in Textures.Values) {
ExportCollada_Texture(xml, texture);
}
xml.WriteEndElement();
xml.WriteStartElement("library_effects");
foreach (var material in Materials.Values) {
ExportCollada_MaterialEffect(xml, material);
}
xml.WriteEndElement();
xml.WriteStartElement("library_materials");
foreach (var material in Materials.Values) {
ExportCollada_Material(xml, material);
}
xml.WriteEndElement();
xml.WriteStartElement("library_geometries");
ExportCollada_MeshWrapper(xml, RootNode);
xml.WriteEndElement();
xml.WriteStartElement("library_controllers");
ExportCollada_Skinned(xml, RootNode);
xml.WriteEndElement();
xml.WriteStartElement("library_visual_scenes");
ExportCollada_Scene(xml);
xml.WriteEndElement();
xml.WriteStartElement("scene");
xml.WriteElement("instance_visual_scene",
"url", "#Scene");
xml.WriteEndElement();
xml.WriteEndElement();
xml.WriteEndDocument();
}
}