Загрузить данные материала FBX

У меня есть следующий фрагмент кода C ++, который я использую для загрузки вершин треугольника из файла FBX:

FbxNode *node = scene->GetRootNode()->GetChild(0);
FbxGeometryConverter fbx_converter(node->GetFbxManager());
fbx_converter.Triangulate(node->GetNodeAttribute(), true);
mesh = node->GetMesh();
int num_vertices = mesh->GetPolygonVertexCount();
FbxVector4 *fbx_vertices = mesh->GetControlPoints();
int *fbx_triangle_vertices = mesh->GetPolygonVertices();
double x, y, z;
vector<vertex> vertices;
for (int vertex_index = 0; vertex_index < num_vertices; ++vertex_index)
{
    int index = fbx_triangle_vertices[vertex_index];
    x = (double)fbx_vertices[index][0];
    y = (double)fbx_vertices[index][1];
    z = (double)fbx_vertices[index][2];
    vertices.push_back(vertex(vector3(x, y, z), material(color(1, 0.5, 0.5), 0, 0, 0, 0, 1, 0)));
}

В настоящее время я загружаю только координаты вершин из файла. Теперь я хочу загрузить данные материала вершины (вместо того, чтобы назначать их вручную, как я делал во фрагменте кода, используя material(color(1, 0.5, 0.5)...). >

Я вижу, что объект FbxNode имеет GetMaterial(), но я не знаю, как получить эти данные, так как работаю с вершинами fbx, которые являются FbxVector4 не узлы.

1 голос | спросил Eutherpy 23 PMpSun, 23 Apr 2017 18:54:32 +030054Sunday 2017, 18:54:32

1 ответ


0

Похоже, что материалы могут быть получены из узла с помощью FbxNode::GetMaterial(int pIndex) и FbxNode::GetMaterialIndex(const char *pName).

Эти данные должны храниться в node, который вы читаете, вместе с векторной информацией, т.е. они хранятся в узле, а не привязаны к самим векторам.

ответил Pharap 23 PMpSun, 23 Apr 2017 20:14:45 +030014Sunday 2017, 20:14:45

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132