Ejemplo n.º 1
0
        static FbxObject CreateFbxObject(FbxCamera mesh, Matrix4x4 transform, FbxObjectManager ObjectManager, FbxConnectionManager ConnectionManager)
        {
            var Name = "Model::" + mesh.Name;

            FbxObject Object;

            Object = ObjectManager.CreateObject("Model", Name);

            var Model = Object.Definition;

            Model.AddValue(Object.Ident);
            Model.AddValue(Name);
            Model.AddValue("Camera");

            Model.AddProperty("Version", 232);

            var Properties            = Model.AddProperty("Properties70");
            var DefaultAttributeIndex = Properties.AddProperty("P");

            DefaultAttributeIndex.AddValue("DefaultAttributeIndex");
            DefaultAttributeIndex.AddValue("int");
            DefaultAttributeIndex.AddValue("Integer");
            DefaultAttributeIndex.AddValue("");
            DefaultAttributeIndex.AddValue(0);

            var LclTranslation = Properties.AddProperty("P");

            LclTranslation.AddValue("Lcl Translation");
            LclTranslation.AddValue("");
            LclTranslation.AddValue("A+");
            LclTranslation.AddValue(Vector3.zero);

            var LclRotation = Properties.AddProperty("P");

            LclRotation.AddValue("Lcl Rotation");
            LclRotation.AddValue("");
            LclRotation.AddValue("A+");
            LclRotation.AddValue(Vector3.zero);

            var LclScaling = Properties.AddProperty("P");

            LclScaling.AddValue("Lcl Scaling");
            LclScaling.AddValue("");
            LclScaling.AddValue("A+");
            LclScaling.AddValue(Vector3.one);


            //	need a camera attrib and need it connected
            var CameraAttrib = new NodeAttribute(mesh.Name);
            var AttribObject = CreateFbxObject(CameraAttrib, ObjectManager);

            ConnectionManager.Add(new FbxConnection(AttribObject, Object, FbxRelationType.OO));

            return(Object);
        }
Ejemplo n.º 2
0
        static FbxObject CreateAnimStackObject(AnimStack Anim, FbxObjectManager ObjectManager)
        {
            var Name   = "AnimStack::" + Anim.Name;
            var Object = ObjectManager.CreateObject("AnimationStack", Name);
            var Def    = Object.Definition;

            Def.AddValue(Object.Ident);
            Def.AddValue(Name);
            Def.AddValue("");
            var Properties = Def.AddProperty("Properties70");

            var LocalStart = Properties.AddProperty("P");

            LocalStart.AddValue("LocalStart");
            LocalStart.AddValue("KTime");
            LocalStart.AddValue("Time");
            LocalStart.AddValue("");
            LocalStart.AddValue(FbxHelper.GetFbxSeconds(Anim.LocalStartTime));

            var LocalStop = Properties.AddProperty("P");

            LocalStop.AddValue("LocalStop");
            LocalStop.AddValue("KTime");
            LocalStop.AddValue("Time");
            LocalStop.AddValue("");
            LocalStop.AddValue(FbxHelper.GetFbxSeconds(Anim.LocalEndTime));

            var ReferenceStart = Properties.AddProperty("P");

            ReferenceStart.AddValue("ReferenceStart");
            ReferenceStart.AddValue("KTime");
            ReferenceStart.AddValue("Time");
            ReferenceStart.AddValue("");
            ReferenceStart.AddValue(FbxHelper.GetFbxSeconds(Anim.ReferenceStartTime));

            var ReferenceStop = Properties.AddProperty("P");

            ReferenceStop.AddValue("ReferenceStop");
            ReferenceStop.AddValue("KTime");
            ReferenceStop.AddValue("Time");
            ReferenceStop.AddValue("");
            ReferenceStop.AddValue(FbxHelper.GetFbxSeconds(Anim.ReferenceEndTime));

            /*
             * AnimationStack: 362632224, "AnimStack::Take 001", "" {
             * Properties70:
             *      {
             *      P: "LocalStart", "KTime", "Time", "",0
             *      P: "LocalStop", "KTime", "Time", "", 46186158000
             *      P: "ReferenceStart", "KTime", "Time", "",0
             *      P: "ReferenceStop", "KTime", "Time", "", 46186158000
             * }
             */
            return(Object);
        }
Ejemplo n.º 3
0
        static FbxObject CreateFbxObject_Material(string MaterialName, FbxObjectManager ObjectManager)
        {
            var Name   = "Material::" + MaterialName;
            var Object = ObjectManager.CreateObject("Material", Name);

            var Model = Object.Definition;

            Model.AddValue(Object.Ident);
            Model.AddValue(Name);
            Model.AddValue("");
            return(Object);
        }
Ejemplo n.º 4
0
        static FbxObject CreateAnimLayerObject(FbxObjectManager ObjectManager)
        {
            var Name   = "AnimLayer::BaseLayer";
            var Object = ObjectManager.CreateObject("AnimationLayer", Name);

            Object.Definition.AddValue(Object.Ident);
            Object.Definition.AddValue(Name);
            Object.Definition.AddValue("");
            //AnimationLayer: 3445458688, , "AnimLayer::BaseLayer" {
            Object.Definition.AddProperty("Dummy");
            return(Object);
        }
Ejemplo n.º 5
0
        static FbxObject CreateFbxObject(NodeAttribute Attrib, FbxObjectManager ObjectManager)
        {
            var Name = "NodeAttribute::" + Attrib.Name;

            FbxObject Object;

            Object = ObjectManager.CreateObject("NodeAttribute", Name);

            var Model = Object.Definition;

            Model.AddValue(Object.Ident);
            Model.AddValue(Name);
            Model.AddValue("Camera");

            Model.AddProperty("TypeFlags", "Camera");
            Model.AddProperty("GeometryVersion", 124);
            Model.AddProperty("Position", Vector3.zero);
            Model.AddProperty("Up", Vector3.up);
            Model.AddProperty("LookAt", Vector3.forward);

            return(Object);
        }
Ejemplo n.º 6
0
        static FbxObject CreateFbxObject(Mesh mesh, Matrix4x4 transform, FbxObjectManager ObjectManager, int?ExplicitIdent = null)
        {
            //var Object = ObjectManager.CreateObject(mesh.name);
            //Object.Definition = new FbxProperty("Model");

            var Name = "Model::" + mesh.name;

            FbxObject Object;

            if (ExplicitIdent.HasValue)
            {
                Object = ObjectManager.CreateObject(ExplicitIdent.Value, "Model", Name);
            }
            else
            {
                Object = ObjectManager.CreateObject("Model", Name);
            }

            var Model = Object.Definition;

            Model.AddValue(Object.Ident);
            Model.AddValue(Name);
            Model.AddValue("Mesh");

            Model.AddProperty("Version", 232);
            Model.AddProperty("Vertices", new FbxValue_Floats(mesh.vertices, (n) => { return(transform.MultiplyPoint(n)); }));
            //	indexes start at 1, and last in poly is negative
            var FbxIndexes = GetMeshIndexes(mesh.GetIndices(0), mesh.GetTopology(0));

            Model.AddProperty("PolygonVertexIndex", new FbxValue_Ints(FbxIndexes));
            Model.AddProperty("GeometryVersion", 124);

            int LayerNumber = 0;
            var NormalLayer = Model.AddProperty("LayerElementNormal", LayerNumber);

            NormalLayer.AddProperty("Version", 101);
            NormalLayer.AddProperty("Name", "");
            //	ByPolygon	It means that there is a normal for every polygon of the model.
            //	ByPolygonVertex	It means that there is a normal for every vertex of every polygon of the model.
            //	ByVertex	It means that there is a normal for every vertex of the model.
            //	gr: ByVertex "Unsupported wedge mapping mode type.Please report this bug."
            //		even though I think that's the right one to use.. as ByPolygonVertex looks wrong
            NormalLayer.AddProperty("MappingInformationType", "ByPolygonVertex");
            NormalLayer.AddProperty("ReferenceInformationType", "Direct");
            NormalLayer.AddProperty("Normals", new FbxValue_Floats(mesh.normals, (n) => { return(transform.MultiplyVector(n)); }));

            var Layer = Model.AddProperty("Layer", LayerNumber);

            Layer.AddProperty("Version", 100);
            var len = Layer.AddProperty("LayerElement");

            len.AddProperty("Type", "LayerElementNormal");
            len.AddProperty("TypedIndex", 0);
            var les = Layer.AddProperty("LayerElement");

            les.AddProperty("Type", "LayerElementSmoothing");
            les.AddProperty("TypedIndex", 0);
            var leuv = Layer.AddProperty("LayerElement");

            leuv.AddProperty("Type", "LayerElementUV");
            leuv.AddProperty("TypedIndex", 0);
            var let = Layer.AddProperty("LayerElement");

            let.AddProperty("Type", "LayerElementTexture");
            let.AddProperty("TypedIndex", 0);
            var lem = Layer.AddProperty("LayerElement");

            lem.AddProperty("Type", "LayerElementMaterial");
            lem.AddProperty("TypedIndex", 0);

            return(Object);
        }