Вопрос

Я экспортировал модель в блендере в файл .obj.Ив'е удалось создать очень простой класс, который загружает вершины и индексы в массивы.Моя проблема в том, что мне нужны координаты текстуры (vt) и нормали (vn).Так, например, мне нужно 4 вершины * 6 граней для простого куба, чтобы иметь возможность использовать текстуру, но я получаю только 8 в моем файле .obj, а также я не знаю, как обрабатывать индексы дляvt, поскольку у меня может быть только один массив / буфер для индексов, но я получаю два разных v / vt в файле .obj.

Есть ли какой-нибудь загрузчик, который возвращает только массивы или аналогичные элементы для вершин, текстуры, нормалей и одного массива индексов?Или примеры того, как написать?Iv'e пока нашел загрузчики только в полных 3д движках, и это не то, что мне нужно.

Это было полезно?

Решение

4 вершины * 6 граней - это больше, чем нужно.На самом деле это будет неэффективно.Полученные вами экспортированные вершины оптимизируются с помощью индексов.Используя Opengl-es, вы можете указать, откуда брать вершины (массив), а затем нарисовать вершины, используя их индексы в другом массиве.В результате вы получаете 8 вершин против 24 возможных, вам нужно меньше памяти для хранения.Таким образом, эффективность составляет 16/24 * 100%.Представьте, что у вас есть модель с 1000 вершинами.

Индекс вершины означает, что в другом массиве с правильным смещением GPU получит вершину (size_of_vertex (3 float) * index) и правильное смещение для UV-координат (size_of_UVcoord (2 float) * index)

этот код для opengl ES 2.0, но вы можете получить представление:

родовое слово

а sqTEx - это экземпляр TexturedSquare:

родовое слово

Другие советы

Посмотрите PCT (или jPCT-AE), это отличная 3D-библиотека для Java (и / или Android).Он поддерживает загрузку 3ds / obj из коробки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top