Vulkan API — урок 58. Загрузка моделей

Вот мы и переходим к завершающему этапу основных уроков по Vulkan’у.

На дынный момент программа уже готова к рендеру 3D текстур, но имеющаяся геометрия в массивах вершин и индексов достаточно скучна, потому загрузим вершины и индексы из готовой модели, что бы видяшка начала делать настоящую работу.

Библиотека

В качестве примера для загрузки вершин и граней будет использоваться библиотека tinyobjloader. Её легко и быстро интегрировать, потому что это один единственный файл, как и stb_image. Так что идем в репозиторий, скачиваем tiny_obj_loader.h файл в директорию, где уже находятся остальные библиотеки.

В Студии как обычно добавляет путь до очередной библиотеки:

lb

Пример модели

Мы не будем использовать освещения, потому нам нужна модель со «встроенным» освещением. 3D модели подобного рода достаточно просто найти на Sketchfab. Много моделей с открытой лицензией.

В данном уроке будет использоваться модель Chalet Hippolyte Chassande Baroz. Для использования модели в текущей программе, её размеры и ориентацию нужно немного подкорректировать:

Это пол миллиона треугольников, так что сможет проверить на вшивость написанное приложение. Можете использовать и собственную модель, только убедитесь, что она состоит только из одного материала и имеет размеры примерно 1.5 x 1.5 x 1.5 единицы. Если размер поболя, то матрицу вида придется редактировать. Положите модель в новую папку рядом с шейдерами и текстурами, а изображение в папку с текстурами.

Добавьте две новые переменные в программу для определения пути к модели и текстуре:

const int WIDTH = 800;
const int HEIGHT = 600;

const std::string MODEL_PATH = "models/chalet.obj";
const std::string TEXTURE_PATH = "textures/chalet.jpg";

И обновите createTextureImage для использования нового пути:

stbi_uc* pixels = stbi_load(TEXTURE_PATH.c_str(), &texWidth, &texHeight, &texChannels, STBI_rgb_alpha);

Main Admin

2 Comments

  1. «Это пол миллиона треугольников, так что сможет проверить на вшивость написанное приложение. Можете использовать и собственную модель, только убедитесь, что она она состоит только из одного материала и имеет размеры примерно 1.5 x 1.5 x 1.5 единицы. Если размер поболя, то матрицу вида придется редактировать. Положите модель в новую папку рядом с шейдерами и текстурами, а изображение в папку с текстурами.»

    что она она состоит <—— Косяк
    Если размер поболя <—— Косяк

    • Спасибо. Дублирующее «она» удаляю, а «поболя» оставил, задумывалось как такое простое, несколько устаревшее слово в тексте.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *