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); }
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); }
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); }
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); }
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); }
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); }