Exemple #1
0
        public override LoadedInfo Parse(Renderer renderer, JObject json, String texturePath)
        {
            var geometry = new Geometry();

            var scaleData = json["scale"];
            var scale     = scaleData != null ? 1 / scaleData.Value <float>() : 1;

            ParseModel(json, geometry, scale);
            ParseSkin(json, geometry);
            ParseMorphing(json, geometry, scale);

            geometry.ComputeNormals();
            geometry.ComputeBoundingSphere();

            var info = new LoadedInfo()
            {
                Geometry = geometry
            };

            var materialsJson = json["materials"];

            if (materialsJson != null)
            {
                var materialsData = materialsJson.ToArray();

                if (materialsData.Length != 0)
                {
                    var materials = InitMaterials(renderer, materialsData, texturePath);

                    if (NeedsTangents(materials))
                    {
                        geometry.ComputeTangents();
                    }

                    info.Materials.AddRange(materials);
                }
            }

            return(info);
        }
Exemple #2
0
        public override LoadedInfo Parse(Renderer renderer, JObject json, String texturePath)
        {
            var geometry = new Geometry();

            var scaleData = json["scale"];
            var scale = scaleData != null ? 1 / scaleData.Value<float>() : 1;

            ParseModel(json, geometry, scale);
            ParseSkin(json, geometry);
            ParseMorphing(json, geometry, scale);

            geometry.ComputeNormals();
            geometry.ComputeBoundingSphere();

            var info = new LoadedInfo()
            {
                Geometry = geometry
            };

            var materialsJson = json["materials"];
            if (materialsJson != null)
            {
                var materialsData = materialsJson.ToArray();

                if (materialsData.Length != 0)
                {
                    var materials = InitMaterials(renderer, materialsData, texturePath);

                    if (NeedsTangents(materials)) geometry.ComputeTangents();

                    info.Materials.AddRange(materials);
                }
            }

            return info;
        }