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