Пример #1
0
        public COLLADA GetColladaModel(Model model, string modelName)
        {
            var animations       = _animationsFactory.GetAnimations(model.Parts, modelName);
            var images           = _materialFactory.GetImages(model.Parts, modelName);
            var materials        = _materialFactory.GetMaterials(model.Parts, modelName);
            var geometries       = _geometriesFactory.GetGeometries(model.Parts, modelName);
            var geometryRootNode = _geometriesFactory.GetGeometryRootNode(geometries.Select(g => g.GeometryNode), model.PartsTree, modelName);
            var lights           = _lightingFactory.GetLights(model);
            var scenes           = GetScenes(geometryRootNode, lights.Select(l => l.LightNode), modelName);
            var scene            = GetScene(scenes);

            var collada = new COLLADA
            {
                Asset = new Asset
                {
                    Created = DateTime.Now,
                    Up_Axis = UpAxisType.Z_UP
                }
            };

            var lightsLibrary = new Library_Lights();

            lights.Select(l => l.Light).ToList().ForEach(l => lightsLibrary.Light.Add(l));
            collada.Library_Lights.Add(lightsLibrary);

            var geometriesLibrary = new Library_Geometries();

            geometries.Select(g => g.Geometry).ToList().ForEach(g => geometriesLibrary.Geometry.Add(g));

            var effectsLibrary   = new Library_Effects();
            var materialsLibrary = new Library_Materials();

            materials.ToList().ForEach(m =>
            {
                effectsLibrary.Effect.Add(m.Effect);
                materialsLibrary.Material.Add(m.Material);
            });

            var imagesLibrary = new Library_Images();

            images.ToList().ForEach(i => imagesLibrary.Image.Add(i));

            var animationsLibrary = new Library_Animations();

            animations.ToList().ForEach(a => animationsLibrary.Animation.Add(a));

            collada.Library_Geometries.Add(geometriesLibrary);
            collada.Library_Visual_Scenes.Add(scenes);
            collada.Library_Images.Add(imagesLibrary);
            collada.Library_Effects.Add(effectsLibrary);
            collada.Library_Materials.Add(materialsLibrary);
            collada.Library_Animations.Add(animationsLibrary);
            collada.Scene = scene;

            return(collada);
        }
Пример #2
0
        public XmlColladaSchema(XmlDocument doc)
        {
            XPathNavigator navigator = doc.CreateNavigator();

            // Move to the first child element of the document. This will be the root element.
            //navigator.MoveToChild(XPathNodeType.Element);
            navigator.MoveToFirstChild();
            string uri = string.Empty;
            if (navigator.HasAttributes == true)
            {
                uri = navigator.NamespaceURI;
            }

            // Handle asset data
            XPathNodeIterator nodesIterator;
            nodesIterator = navigator.SelectChildren(XmlCollada.Library_Geometries.root, uri);
            if (nodesIterator.MoveNext())
            {
                _asset = new XmlCollada.Asset(nodesIterator, uri);
            }

            // Handle geometry library data
            nodesIterator = navigator.SelectChildren(XmlCollada.Library_Geometries.root, uri);
            if (nodesIterator.MoveNext())
            {
                _geometries = new XmlCollada.Library_Geometries(nodesIterator, uri);
            }

            // Handle effects data
            nodesIterator = navigator.SelectChildren(XmlCollada.Library_Effects.root, uri);
            if (nodesIterator.MoveNext())
            {
                _effects = new XmlCollada.Library_Effects(nodesIterator, uri);
            }

            // Handle material data
            nodesIterator = navigator.SelectChildren(XmlCollada.Library_Materials.root, uri);
            if (nodesIterator.MoveNext())
            {
                _materials = new XmlCollada.Library_Materials(nodesIterator, uri);
            }

            // Handle visual scene data
            nodesIterator = navigator.SelectChildren(XmlCollada.Library_Visual_Scenes.root, uri);
            if (nodesIterator.MoveNext())
            {
                _visualScenes = new XmlCollada.Library_Visual_Scenes(nodesIterator, uri);
            }

            // Handle image data
            nodesIterator = navigator.SelectChildren(XmlCollada.Library_Images.root, uri);
            if (nodesIterator.MoveNext())
            {
                _images = new XmlCollada.Library_Images(nodesIterator, uri);
            }

            // Handle the scene
            nodesIterator = navigator.SelectChildren(XmlCollada.Scene.root, uri);
            if (nodesIterator.MoveNext())
            {
                _scene = new XmlCollada.Scene(nodesIterator, uri);
            }
        }
Пример #3
0
 public XmlColladaSchema(Asset asset, Library_Geometries geometries, Library_Effects effects,
     Library_Materials materials, Library_Visual_Scenes visualScenes,
     Library_Images images, Scene scene)
 {
     _asset = asset;
     _geometries = geometries;
     _effects = effects;
     _materials = materials;
     _visualScenes = visualScenes;
     _images = images;
     _scene = scene;
 }