Мое приложение C ++ может экспортировать объект FbxMesh очень хорошо.Сетки отображаются в нескольких разных средствах просмотра (MS 3D Viewer, FDX Review AutoDesk, SAP 3D Viewer).Я экспортирую объект FbxLine, в котором нет ошибок в коде, но они не отображаются ни в одном из этих средств просмотра.
Я могу видеть узлы Линии в списке объектов средства просмотра, но не фактическую строку.Я дал цвет линии (красный), думая, что он настроен на цвет фона, но безрезультатно.
Если я экспортирую в текстовый файл FBX, я могу увидеть определение для строки.
На форуме справки AutoDesk есть одно сообщение (http://help.autodesk.com/view/FBX/2019/ENU/?caas=caas/discussion/t5/FBX-Forum/How-to-Export-FbxLine-structure-/td-p/7749696.html),, но мой код выполняет все эти шаги.
//This is the important calls I make to try and export a FbxLine object
m_fbxSdkManager = FbxManager::Create();
FbxIOSettings *theIOSettings = FbxIOSettings::Create( m_fbxSdkManager, IOSROOT );
m_fbxSdkManager->SetIOSettings(theIOSettings);
m_fbxScene = FbxScene::Create( m_fbxSdkManager, "ExportScene" );
FbxNode* theRootNode = m_fbxScene->GetRootNode();
FbxNode* fbxNode = FbxNode::Create( m_fbxSdkManager, "LineNode");
if(fbxNode)
{
for ( const auto& theLine : aLineList )
{
FbxLine* fbxLine = FbxLine::Create( m_fbxScene, "Line" );
if(fbxLine)
{
//which call to use???
//FbxNodeAttribute* OldNode = fbxNode->SetNodeAttribute(fbxLine);
//or this one, as shown in the sdk documentation
FbxStatus pStatus;
bool OK = fbxNode->AddNodeAttribute( fbxLine, &pStatus );
//Always returns ok == true
uint32 NumPoints = theLine.size();
fbxLine->InitControlPoints(NumPoints);
fbxLine->SetIndexArraySize(NumPoints);
fbxLine->Color = FbxDouble3(1.0, 0.0, 0.0);
for ( uint32 kk = 0; kk < NumPoints; ++kk )
{
FbxVector4 pCtrlPoint =
ToFbxPoint(theLine.getVertex(kk));
//ToFbxPointadds vetrices base on Z-UP or Y-UP orientation
fbxLine->SetControlPointAt(pCtrlPoint , kk);
fbxLine->SetPointIndexAt(kk, kk, kk == (NumPoints-1) );
//last point is marked as an end point by sending TRUE
}
}
}
}
theRootNode->AddChild(fbxNode);
///....snip
// Create an exporter.
theExporter = FbxExporter::Create( m_fbxSdkManager, "" );
// Set any IO settings that may need to be adjusted.
FbxIOSettings* ios = m_fbxSdkManager->GetIOSettings();
if (nullptr != ios)
{
ios->SetBoolProp( EXP_FBX_EMBEDDED, aOpts.m_embedTexture );
}
// Initialize the exporter by providing a filename.
if ( theExporter->Initialize( mFilename, aOpts.m_exportFormat, ios ) )
{
isOK = theExporter->Export( m_fbxScene );
}
Я ожидаю увидеть строку в FBXОднако в средстве просмотра они не отображаются. Сетки, которые я экспортирую, отображаются нормально. В качестве обходного пути я могу экспортировать линии в виде сетки, но я не должен был этого делать!