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);
|
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)
|
if (pMesh == nullptr)
|
||||||
{
|
{
|
||||||
@ -474,6 +474,18 @@ AS_API(void) AsFbxMeshCreateElementUV(FbxMesh* pMesh, int32_t uv)
|
|||||||
pUV->SetReferenceMode(FbxGeometryElement::eDirect);
|
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)
|
AS_API(void) AsFbxMeshCreateElementTangent(FbxMesh* pMesh)
|
||||||
{
|
{
|
||||||
if (pMesh == nullptr)
|
if (pMesh == nullptr)
|
||||||
@ -613,7 +625,7 @@ AS_API(void) AsFbxMeshElementUVAdd(FbxMesh* pMesh, int32_t elementIndex, float u
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto pElem = pMesh->GetElementUV(elementIndex);
|
auto pElem = pMesh->GetElementUV(FbxString("UV") + FbxString(elementIndex));
|
||||||
auto& array = pElem->GetDirectArray();
|
auto& array = pElem->GetDirectArray();
|
||||||
|
|
||||||
array.Add(FbxVector2(u, v));
|
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) 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);
|
AS_API(void) AsFbxMeshCreateElementTangent(fbxsdk::FbxMesh* pMesh);
|
||||||
|
|
||||||
|
@ -142,7 +142,10 @@ namespace AssetStudio.FbxInterop
|
|||||||
private static extern void AsFbxMeshCreateElementNormal(IntPtr mesh);
|
private static extern void AsFbxMeshCreateElementNormal(IntPtr mesh);
|
||||||
|
|
||||||
[DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
|
[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)]
|
[DllImport(FbxDll.DllName, CallingConvention = CallingConvention.Winapi)]
|
||||||
private static extern void AsFbxMeshCreateElementTangent(IntPtr mesh);
|
private static extern void AsFbxMeshCreateElementTangent(IntPtr mesh);
|
||||||
|
@ -255,12 +255,14 @@ namespace AssetStudio.FbxInterop
|
|||||||
AsFbxMeshCreateElementNormal(mesh);
|
AsFbxMeshCreateElementNormal(mesh);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < 2; i += 1)
|
if (importedMesh.hasUV[0])
|
||||||
{
|
{
|
||||||
if (importedMesh.hasUV[i])
|
AsFbxMeshCreateDiffuseUV(mesh, 0);
|
||||||
{
|
|
||||||
AsFbxMeshCreateElementUV(mesh, i);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (importedMesh.hasUV[1])
|
||||||
|
{
|
||||||
|
AsFbxMeshCreateNormalMapUV(mesh, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (importedMesh.hasTangent)
|
if (importedMesh.hasTangent)
|
||||||
|
Loading…
Reference in New Issue
Block a user