Я пытаюсь экспортировать скелетную сетку. По некоторым причинам FbxSDK разбивает нормали на ребрах сегментов, если я добавляю скин-кластер в сетку. Без кожи все выглядит совершенно нормально.FbxSDK нарушает нормальные
Код:
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);
I tryied различных модов отображения (например, eByPolygonVertex
.) И эталонные модов, но до сих пор нет помощи. Похоже, что нормали полностью игнорируются, если сетка имеет кластеры кожи. Я прокомментировал код выше, и скин-модель была похожа на изображение слева.
Я также попробовал различные 3d-программы (Maya 2015, Maya 2013 и 3ds Max 2013), чтобы просмотреть экспортированную модель, но все они дают мне те же результаты.
P.S. эта проблема затрагивает любую скелетную сетку.
EDIT Кажется эта проблема является ошибка в трубопроводе FBX: Autodesk Forum. Чтобы обойти проблему, мне нужно «Перенести атрибуты». Может кто-нибудь помочь с этим?
Действительно ли это на картинке, что я думаю, или мне нужно посетить термоусадочную пленку? – SergeyA
Это именно то, что вы думаете! – VenoMKO
Это хорошо. Извините, но не могу помочь с реальным вопросом. – SergeyA