mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-05-25 05:40:21 -04:00
fix UV problems
This commit is contained in:
parent
9d34f668d5
commit
0a41615763
@ -462,7 +462,7 @@ AS_API(void) AsFbxMeshCreateElementNormal(FbxMesh* pMesh)
|
||||
pNormal->SetReferenceMode(FbxGeometryElement::eDirect);
|
||||
}
|
||||
|
||||
AS_API(void) AsFbxMeshCreateElementUV(FbxMesh* pMesh, int32_t uv)
|
||||
AS_API(void) AsFbxMeshCreateDiffuseUV(FbxMesh* pMesh, int32_t uv)
|
||||
{
|
||||
if (pMesh == nullptr)
|
||||
{
|
||||
@ -474,6 +474,18 @@ AS_API(void) AsFbxMeshCreateElementUV(FbxMesh* pMesh, int32_t uv)
|
||||
pUV->SetReferenceMode(FbxGeometryElement::eDirect);
|
||||
}
|
||||
|
||||
AS_API(void) AsFbxMeshCreateNormalMapUV(FbxMesh* pMesh, int32_t uv)
|
||||
{
|
||||
if (pMesh == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
auto pUV = pMesh->CreateElementUV(FbxString("UV") + FbxString(uv), FbxLayerElement::eTextureNormalMap);
|
||||
pUV->SetMappingMode(FbxGeometryElement::eByControlPoint);
|
||||
pUV->SetReferenceMode(FbxGeometryElement::eDirect);
|
||||
}
|
||||
|
||||
AS_API(void) AsFbxMeshCreateElementTangent(FbxMesh* pMesh)
|
||||
{
|
||||
if (pMesh == nullptr)
|
||||
@ -613,7 +625,7 @@ AS_API(void) AsFbxMeshElementUVAdd(FbxMesh* pMesh, int32_t elementIndex, float u
|
||||
return;
|
||||
}
|
||||
|
||||
auto pElem = pMesh->GetElementUV(elementIndex);
|
||||
auto pElem = pMesh->GetElementUV(FbxString("UV") + FbxString(elementIndex));
|
||||
auto& array = pElem->GetDirectArray();
|
||||
|
||||
array.Add(FbxVector2(u, v));
|
||||
|
@ -66,7 +66,9 @@ AS_API(void) AsFbxMeshInitControlPoints(fbxsdk::FbxMesh* pMesh, int32_t vertexCo
|
||||
|
||||
AS_API(void) AsFbxMeshCreateElementNormal(fbxsdk::FbxMesh* pMesh);
|
||||
|
||||
AS_API(void) AsFbxMeshCreateElementUV(fbxsdk::FbxMesh* pMesh, int32_t uv);
|
||||
AS_API(void) AsFbxMeshCreateDiffuseUV(fbxsdk::FbxMesh* pMesh, int32_t uv);
|
||||
|
||||
AS_API(void) AsFbxMeshCreateNormalMapUV(fbxsdk::FbxMesh* pMesh, int32_t uv);
|
||||
|
||||
AS_API(void) AsFbxMeshCreateElementTangent(fbxsdk::FbxMesh* pMesh);
|
||||
|
||||
|
@ -142,7 +142,10 @@ namespace AssetStudio.FbxInterop
|
||||
private static extern void AsFbxMeshCreateElementNormal(IntPtr mesh);
|
||||
|
||||
[DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
|
||||
private static extern void AsFbxMeshCreateElementUV(IntPtr mesh, int uv);
|
||||
private static extern void AsFbxMeshCreateDiffuseUV(IntPtr mesh, int uv);
|
||||
|
||||
[DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
|
||||
private static extern void AsFbxMeshCreateNormalMapUV(IntPtr mesh, int uv);
|
||||
|
||||
[DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
|
||||
private static extern void AsFbxMeshCreateElementTangent(IntPtr mesh);
|
||||
|
@ -255,12 +255,14 @@ namespace AssetStudio.FbxInterop
|
||||
AsFbxMeshCreateElementNormal(mesh);
|
||||
}
|
||||
|
||||
for (var i = 0; i < 2; i += 1)
|
||||
if (importedMesh.hasUV[0])
|
||||
{
|
||||
if (importedMesh.hasUV[i])
|
||||
{
|
||||
AsFbxMeshCreateElementUV(mesh, i);
|
||||
}
|
||||
AsFbxMeshCreateDiffuseUV(mesh, 0);
|
||||
}
|
||||
|
||||
if (importedMesh.hasUV[1])
|
||||
{
|
||||
AsFbxMeshCreateNormalMapUV(mesh, 1);
|
||||
}
|
||||
|
||||
if (importedMesh.hasTangent)
|
||||
|
Loading…
Reference in New Issue
Block a user