Ich versuche, ein enthäutetes Netz zu exportieren. Aus einigen Gründen bricht FbxSDK die Normalen an Kanten von Segmenten, wenn ich einem Netz einen Hautcluster hinzufüge. Ohne Haut sieht alles total gut aus.FbxSDK bricht Normalen
Code:
FbxLayerElementNormal *layerElementNormal = FbxLayerElementNormal::Create(mesh, "");
layerElementNormal->SetMappingMode(FbxLayerElement::eByControlPoint);
layerElementNormal->SetReferenceMode(FbxLayerElement::eDirect);
for (int vertIndex = 0; vertIndex < vertexCount; ++vertIndex)
{
PackedNormal normal = vertices[vertIndex].normal;
double x,y,z;
x = (((normal.data) & 0xFF)/127.5f - 1.0f);
y = ((((normal.data) >> 8) & 0xFF)/127.5f - 1.0f);
z = ((((normal.data) >> 16) & 0xFF)/127.5f - 1.0f);
layerElementNormal->GetDirectArray().Add(FbxVector4(x,-y,z));
}
layer->SetNormals(layerElementNormal);
ich verschiedenen Mapping Mods tryied (zB eByPolygonVertex
.) Und Referenz-Mods aber bisher keine Hilfe. Scheint, dass Normalen vollständig ignoriert werden, wenn ein Mesh Hautcluster hat. Ich habe den obigen Code auskommentiert und das gehäutete Modell sah aus wie auf dem linken Bild.
Ich habe auch verschiedene 3D-Software (Maya 2015, Maya 2013 und 3ds Max 2013) getestet, um das exportierte Modell zu überprüfen, aber alle von ihnen geben mir die gleichen Ergebnisse.
P.S. Dieses Problem betrifft alle gehäuteten Netze.
EDIT scheint dieses Problem um einen Fehler in FBX-Pipeline ist: Autodesk Forum. Um das Problem zu umgehen, muss ich "Attribute übertragen". Kann mir jemand helfen?
Ist das Ding auf dem Bild wirklich, was ich denke, oder muss ich einen Psychiater besuchen? – SergeyA
Genau das denkst du! – VenoMKO
Das ist gut. Tut mir leid, kann aber nicht mit der eigentlichen Frage helfen. – SergeyA