FbxVector3 Convert(Vector3 v) { return(new FbxVector3(v.x, v.y, v.z)); }
private void BuildCustomFbx() { scene = new Scene(null); Node rootnode = scene.RootNode; Node meshnode = new Node(AttributeType.Mesh, ""); rootnode.AddChild(meshnode); Mesh mesh = meshnode.Mesh; //mesh.SetMappingMode(LayerElementType.Normal, MappingMode.ByControlPoint); mesh.ControlPointsCount = 4; FbxVector3[] vertices = new FbxVector3[] { new FbxVector3(0, 0, 0), new FbxVector3(1, 0, 0), new FbxVector3(0, 1, 0), new FbxVector3(1, 1, 0) }; mesh.ControlPoints = vertices; // one square //mesh.AddPolygon(new int[] { 0, 1, 3, 2 }); // triangulated mesh.AddPolygon(new int[] { 0, 1, 2 }); mesh.AddPolygon(new int[] { 2, 1, 3 }); // i'm using my library Vector3 n1 = new Vector3(-1, -1, 0); Vector3 n2 = new Vector3(1, -1, 0); Vector3 n3 = new Vector3(-1, 1, 0); Vector3 n4 = new Vector3(1, 1, 0); n1.Normalize(); n2.Normalize(); n3.Normalize(); n4.Normalize(); Vector4 t1 = new Vector4(1, 0, 0, 1); // byControlPoint //FbxVector3[] normals = new FbxVector3[] { Convert(n1), Convert(n2), Convert(n3), Convert(n4) }; // byPolygon FbxVector3[] normals = new FbxVector3[] { Convert(n1), Convert(n4) }; mesh.SetNormals(normals, MappingMode.ByPolygon, ReferenceMode.Direct); FbxVector4[] tangents = new FbxVector4[] { Convert(t1), Convert(t1), Convert(t1), Convert(t1) }; mesh.SetTangents(tangents, MappingMode.ByControlPoint, ReferenceMode.Direct); Manager.SetIOProperty(IOProperty.Exp_FBX_ANIMATION, false); Manager.SetIOProperty(IOProperty.Exp_FBX_EMBEDDED, false); Manager.SetIOProperty(IOProperty.Exp_FBX_MATERIAL, false); }