Exemplo n.º 1
0
        static void ReadMeshElements(MeshData data, ImportOptions importOptions, ref Matrix4 transform)
        {
            ReadUvSets(data);

            //flip with disabled FlipUVs, no flip when enabled
            if (!importOptions.ImportPostProcessFlags.HasFlag(ImportPostProcessFlags.FlipUVs))
            {
                CalcMiscProcess.FlipUVs(data.Vertices, data.VertexComponents);

                //ToDo : !!! Доделать FlipUV для Materials - там тоже Flip для Transform текстуры  .... tex->UVScaling(); tex->UVTranslation();
            }
            ReadColor(data);
            TransformVertices(data, transform);

            int uvSetIndexForNormalsAndTangents = 0;             //ToDo : пока 0, может не всегда?

            if (3 <= data.PolygonSize)
            {
                ReadNormals(data, importOptions, uvSetIndexForNormalsAndTangents, data.CalcCache, ref transform);
                if (importOptions.ImportPostProcessFlags.HasFlag(ImportPostProcessFlags.FixInfacingNormals) && data.NormalsSource != TangentsAndNormalsSource.None)
                {
                    if (CalcNormalsProcess.FixInfacingNormals(data.Vertices))
                    {
                        FbxImportLog.LogMessage(data.Node, "Infacing Normals Fixed");
                    }
                }

                ReadTangents(data, importOptions, uvSetIndexForNormalsAndTangents, data.CalcCache, ref transform);
            }
        }