Как я могу загрузить и отображать файл OBJ, который может включать треугольники, квадроциклы или N-Gons в OpenGL?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу загрузить и отображать файл OBJ, который может включать треугольники, квадроциклы или N-Gons в OpenGL?

Сообщение Anonymous »

У меня есть следующий код C ++ для загрузки файла объекта, по крайней мере, вершины и индексы вершины. < /p>

bool ObjMeshImporter::from_file(const std::string& filepath, nelems::Mesh* pMesh)
{
std::ifstream in(filepath, std::ios::in);
if (!in)
{
return false;
}

std::vector t_vert;

std::string line;
while (std::getline(in, line))
{
if (line.substr(0, 2) == "v ")
{
// read vertices
std::istringstream s(line.substr(2));
glm::vec3 v; s >> v.x; s >> v.y; s >> v.z;

// Add to temporary vertices before indexing
t_vert.push_back(v);
}
else if (line.substr(0, 2) == "f ")
{
// TODO: Store UVs and Normals
unsigned int vertexIndex[3], uvIndex[3], normalIndex[3];
int count_found = sscanf_s(line.substr(2).c_str(),
"%d/%d/%d %d/%d/%d %d/%d/%d\n",
&vertexIndex[0], &uvIndex[0], &normalIndex[0],
&vertexIndex[1], &uvIndex[1], &normalIndex[1],
&vertexIndex[2], &uvIndex[2], &normalIndex[2]);

if (count_found != 9) {
return false;
}

pMesh->add_vertex_index(vertexIndex[0]-1);
pMesh->add_vertex_index(vertexIndex[1]-1);
pMesh->add_vertex_index(vertexIndex[2]-1);

}
}

// Now use the indices to create the concrete vertices for the mesh
for (auto v_idx : pMesh->GetVertexIndices())
{
glm::vec3 vertex = t_vert[v_idx];
pMesh->add_vertex(vertex);
}
return true;
}
< /code>

он работает довольно хорошо для такого объекта (Icosphere blender): < /p>



Подробнее здесь: https://stackoverflow.com/questions/606 ... ds-or-n-go
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • OpenGL: треугольники не отображаются с добавленным цветовым массивом
    Anonymous » » в форуме C++
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Необъявленный идентификатор «nullptr» и ошибка Obj-C при использовании библиотеки Obj-C в Swift
    Anonymous » » в форуме C++
    0 Ответы
    43 Просмотры
    Последнее сообщение Anonymous
  • «equals(Object obj)» следует переопределить вместе с методом «compareTo(T obj)».
    Anonymous » » в форуме JAVA
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous
  • C++ QT Копирование объектов QList в другой QList
    Anonymous » » в форуме C++
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • C++ QT Копирование объектов QList в другой QList
    Anonymous » » в форуме C++
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»