Я здесь новенький. Я еще изучаю C ++, поэтому у меня нет больших знаний о вещах (ну, у меня большой опыт в программировании, но с другими языками. Я также знаю, как работать с компьютером xD). Я решил начать работу над игровым движком. Я знаю, что это нелегко, но это одна из причин, почему я хочу это сделать — пробовать / получать опыт — лучший способ для меня учиться.
Итак, я начинаю с рендера, но я понятия не имею, как я могу создать файл 3D-модели, который, как говорится в названии, будет иметь 3D-модель и может быть загружен в треугольную сетку в движке C ++, и я мог бы использовать его с Direct3D. Я не хочу, чтобы вы что-то делали, кроме как дать мне представление, как начать.
Большое спасибо, если вы решили прочитать это & Помогите.
Это отличный вопрос, и он звучит так правдоподобно, потому что вы находитесь в том же месте, где я был 3 года назад. Я посмотрел вокруг на различные приложения, которые я мог использовать для создания 3D-контента. Я не хотел тратить время на изучение различных приложений, потому что я хотел запрограммировать свой игровой движок. Я не мог найти что-нибудь достаточно быстрое, чтобы научиться делать его стоящим (это было бесплатно), поэтому в конце я соединил несколько сценариев для создания 3D-моделей (массивов вершин). Они превратились в интерфейс с графическим интерфейсом, который превратился в мой полностью функционирующий инструмент 3D моделирования. Теперь, спустя 3 года, мой Game Engine находится на заднем плане и MeshCreator (проверить http://www.MeshCreator.co.uk) сейчас мой текущий проект.
Вам нужен способ загрузки в массивы Vertex. Файлы OBJ (wavefront) являются текстовыми и довольно легко читаются. Выходные данные MeshCreator также основаны на ASCII, и на сайте есть подробные сведения о том, как интерпретировать формат файла.
Файл вывода из MeshCreator предназначен для простого импорта в любой 3D-проект. Вы также можете посмотреть файлы .OBJ, так как они поддерживаются большинством 3D-приложений (включая мои). Файлы OBJ могут немного усложниться.
Короче говоря, вам нужен простой в использовании инструмент. Мне потребовалось 3 года, чтобы написать свое, поэтому я бы не советовал. Попробуйте MeshCreator, MilkShape 3D и, возможно, Google Shetchup. Кроме того, есть много сайтов, которые имеют бесплатный 3D-контент, который вы можете использовать в своих проектах, и многие из них доступны в формате OBJ.
Форматы файлов 3D-моделей могут быть очень сложными, в основном из-за большого количества типов вещей, которые они могут содержать (сетки, примитивы, изогнутые поверхности, материалы, освещение и т. Д. И т. Д.). Это также означает, что может быть очень сложно придумать свой собственный формат. Таким образом, здесь действительно есть два варианта: найти готовые библиотеки для загрузки моделей; или выберите уже существующие форматы и напишите свой собственный код для загрузки этих файлов (и используйте стандартный редактор для их создания).
Основная проблема с использованием готовой библиотеки для загрузки моделей часто заключается в том, что эти библиотеки часто тесно связаны с конкретным средством визуализации и обычно очень сложны в (возможных) структурах данных, которые генерируются при загрузке файлов. Таким образом, зачастую это лучшее решение, только если вы готовы принять средство визуализации, частью которого является библиотека загрузки моделей или к которой она привязана. Существуют опции, такие как Irrlicht, Ogre3D, Coin3D и т. Д., Которые имеют разумные возможности при загрузке довольно стандартных форматов файлов 3D-моделей.
Если вы собираетесь выбрать уже существующий формат файла и создать код загрузки самостоятельно (и, следовательно, привязать его к своему собственному средству визуализации), то вам следует выбрать его осторожно. Формат файла 3ds очень широко используется, а его внутренняя структура приятна и довольно проста, с тем преимуществом, что вы можете легко пропустить элементы, которые вы пока не можете поддерживать (это полезно, когда вы постепенно пишете код рендеринга). Большинство других форматов имеют аналогичные функции (прямая и обратная совместимость, а также возможность пропускать «неподдерживаемые» элементы). Существуют также важные форматы открытого стандарта, vrml и x3d, на которые вы, возможно, захотите взглянуть. Кроме того, есть некоторые более простые форматы, связанные с некоторыми открытыми 3D-редакторами, такими как смеситель. Важно иметь хороший 3D-редактор, который может выводить в формате файла, который вы можете загрузить. Вот почему вы не должны создавать свой собственный формат файла, потому что у вас будет много дополнительной работы, будь то создание пользовательских сценариев (или плагинов) для какого-то 3D-редактора или создание собственного редактора (монументального). задача).
Искать вокруг. Если вы хотите, чтобы ваш движок основывался на DirectX, я полагаю, что SDK поставляется с примерами кода, объясняющими основы, такие как загрузка сеток.
Если вы только изучаете C ++, я бы порекомендовал вам начать с гораздо более простого проекта, такого как создание простой игры с таким движком, как Irrlicht или же OGRE, но это зависит от вас.
Я думаю, что вам нужно что-то вроде файлы obj. Вы можете найти онлайн бесплатные файлы для игры. Если вы хотите создать свой собственный, я думаю, вам нужно программное обеспечение для 3D-рендеринга. Вы также можете искать, как их анализировать и загружать их содержимое в свои программы.