|
[ На главную ] -- [ Список участников ] -- [ Правила форума ] -- [ Зарегистрироваться ] |
On-line: |
Форум движка Xtreme3D / Свободный треп / Phantom3D |
Страницы: 1 2 3 4 5 Next>> |
Автор | Сообщение | ||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 09-12-2009 18:34 | ||||
После долгих лет изучения готовых движков, полугода изучения C++ и OpenGL, я наконец-то нашел в себе силы и желание писать собственный 3D-движок для GM! Рабочее название - Phantom3D. В качестве примера для подражания я, естественно, взял X3D. Основная архитектура и концепция будет такая же, как там. Разработка пока находится на очень-очень ранней альфа-стадии (0.0.0.7). Пока это всего лишь скелет, основа, из которой можно лепить что угодно. Что уже готово: - Граф сцены с поддержкой иерархии - Один примитив (полигон) - Камера - Основа системы материалов - Я не удержался и уже ввел поддержку шейдеров (на ассемблере) - Несколько функций для трансформации объектов. Что планируется в ближайшем будущем: - Побольше примитивов - Текстуры В приведенном архиве находятся откомпилированная тестовая версия библиотеки, пример использования в GM6, GM7 и С++, исходники (Dev-C++) и список функций. Пример демонстрирует управление камерой от первого лица, использование материалов и шейдеров. Цель данного релиза: тестирование, отлов багов, критика, пожелания. Ссылка на скачивание: Phantom3D_alpha_SDK.zip |
|||||
Hacker Ответственный за CHM Группа: Модераторы Сообщений: 346 |
Добавлено: 09-12-2009 21:29 | ||||
К сожалению, не работает. Пишет неизвестная ошибка. А вообще давно пора было писать начать, надеюсь выйдет что-то не просто стоящее, а мега стоящее |
|||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 10-12-2009 09:32 | ||||
Да, я это уже заметил. Шейдеры не работают, если запускать без Mesa. Но я это поправлю. |
|||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 10-12-2009 10:12 | ||||
Попробуйте с этой версией библиотеки. Должно работать. | |||||
Hacker Ответственный за CHM Группа: Модераторы Сообщений: 346 |
Добавлено: 11-12-2009 10:22 | ||||
Да, работает. Багов не заметил, так как их особо замечать не из чего. А, что делает шейдер? Меняет цвет? А пишите его на связке C++ и OpenGL? |
|||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 11-12-2009 10:51 | ||||
Да, использую C++ и OpenGL. А шейдер меняет цвет на тот, который задается параметром (в данном случае сначала вершинная программа окрашивает вершины в красный, затем фрагментная - окрашивает пиксели в розовый). Это самый простейший вариант ассемблерного шейдера. На ассемблере, правда, их писать не очень-то удобно, да и не рекомендуют, так как разные видеокарты могут выполнять этот код по разному. На некоторых (на старых ATI, например) вообще ARB_Vertex_Program и ARB_Fragment_Program не поддерживаются, там свои расширения и свой ассемблер. Поэтому я планирую добавить поддержку Cg. |
|||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 11-12-2009 22:56 | ||||
Обновление до 0.0.0.10. Ссылка та же. Что нового: - Текстуры. Благодаря библиотеке DevIL, поддерживается большое количество форматов, включая JPG, TGA, BMP, PNG, TIF, DDS, PSD и PCX - Исправлен недочет: объект Triangle переименован в Quad, так как это не треугольник, а квадрат. Что дальше: - Примитивы - Новые опции для материалов - Новые функции для объектов - Модели. |
|||||
Hacker Ответственный за CHM Группа: Модераторы Сообщений: 346 |
Добавлено: 12-12-2009 10:34 | ||||
Да, классно. Посмотрел исходные коды, голова закружилась Проект однозначно перспективный, главное сделать его не хуже GMOgre иначе не выдержит конкуренции Phantom3D, хотя у него и сейчас есть огромный плюс - русскоязычный разработчик Я надеюсь потом вы интегрируете все в одну библиотеку, дабы удобнее было. Надеюсь список поддерживаемых форматов моделей будет огромным. Пока смотреть особо не чего, но вижу что это стоило приличных усилий. Удачи в разработке! Если что я буду среди первых пользователей Phantom3D, если конечно вы его закончите в ближайшем будущем. |
|||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 12-12-2009 14:01 | ||||
Ну, конкурировать с GMOgre будет тяжеловато - все-таки, известный, состоявшийся движок, над которым поработал не один человек... Но я попробую!
А это обязательно? Просто я задумал сделать движок как можно более модульным, чтобы можно было по своему усмотрению использовать/не использовать отдельные функции. Например, в X3D если не нужна физика, ODE можно не включать в проект. А тут так будет не только с физикой, но и с изображениями, моделями и т.д. Нужны текстуры - включаешь DevIL, не нужны - не включаешь. Разве это не преимущество? Сам движок - это как бы графическое ядро, содержащее только самое необходимое. А за все взаимодействия с внешними данными пускай отвечают дополнительные модули. За счет этого ядро будет очень минималистичным и быстрым. Будет быстрее загружаться и содержать меньше багов. Это очень привлекательная архитектура, ее используют такие фундаментальные системы, как UNIX, BSD и др.
Я бы сказал так: он будет неограниченным, потому что я планирую возможность писать собственные загрузчики моделей.
Это стоило нескольких месяцев предварительной работы по проектированию и подготовке всех необходимых классов. Зато теперь все должно пойти как по маслу :)
Спасибо! |
|||||
Hacker Ответственный за CHM Группа: Модераторы Сообщений: 346 |
Добавлено: 13-12-2009 11:17 | ||||
Не спорю, идея хорошая, но сколько будет этих самых библиотек? 2? 5? 10? тогда - это будет казаться уже хаосом. Просто я думаю, что, например, модели и текстуры, можно было включить в основную, так как сомневаюсь, что кто-то не будет использовать их в своей игре. А вот шейдеры, физика, звук...можно отдельно.
Это интересно, нечто подобное - это Ogre для C++. Пожалуй так оно даже лучше. И еще, пожалуйста, сделайте нормальные тени! Вот например в том же GMOgre мне понравились схемы реализации их. Есть несколько видов, соответственно качество разное, скажем так под определенные нужды сделано. В далеке похуже можно тени сделать, тут вблизи лучше, плюс тени могут ложится на сам объект, который их отбрасывает, то есть , например, возьмем модель узла... тень от него(при определенных настройках) будет ложится не только на землю, но и на те части узла, на которых она должна быть, причем это все просчитывается автоматически и не особо жрет fps. Так же присутствует отрисовка теней в рамках определенного диапазона выставленного для камеры. Так, что я надеюсь, что вы над ними поработаете
А можно по-подробнее? |
|||||
123456 Самый нубский нуб Группа: Участники Сообщений: 37 |
Добавлено: 13-12-2009 12:28 | ||||
Задумка Здоровская! Пс про движок Необходимо добавить СКЕЛЕТНУЮ АНИМАЦИЮ. А также создать типо какойнить свой собственный редактор карт.(это уже потом) А воопще нужно упростить (мое мнение) двиг, а то икстрим был какойто сложноваты(для меня) Пример. Start. Create Player in 15.80 (данные от балды) Set player model "game/player/I.smd" Set Player animations "run" "game/player/run.smd" Set Player animations "shoot" "game/player/shoot.smd" set_thirdperson 1 Set_the wolrd model "/map/hell.bsp" итд... как вам идея? |
|||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 13-12-2009 13:23 | ||||
Это все, разумеется, будет, со временем. Просто пока о анимации думать рановато, надо сначала реализовать поддержку статичных моделей.
Синтаксис какой-то не гейммейкеровский. И даже не в стиле С. Похоже больше на Basic. Зачем все опускать до такого примитивного уровня? А если программеру не нужно встроенное set_thirdperson, и он хочет написать свое? То же самое - Set_the wolrd model? Что такое в этом случае world? По каким алгоритмам рассчитывать столкновение с ним? А если, опять-таки, встроенная проверка столкновений программеру не нужна? Я не буду двигаться в сторону упрощения. Эта простота - громадный недостаток всех движков для GM. Нужно обеспечить программиста базовыми инструментами для написания сложных вещей, а не впихивать ему примитивные интерфейсы к готовым встроенным алгоритмам. |
|||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 13-12-2009 13:36 | ||||
О тенях пока рано думать... Но на будущее учту.
Будет возможность создавать массив (или буфер вершин), куда заносятся данные о вершинах модели, как в стандартном d3d GM. Например, так: model = VertexBufferBegin(); VertexBufferAddVertex(model,pos_x,pos_y,pos_z,nor_x,nor_y,nor_z,tex_u,tex_v); VertexBufferEnd(model); Или так: model = ModelCreate(); v_array = VertexArrayCreate(size); VertexArrayAddVertex(v_array,pos_x,pos_y,pos_z,nor_x,nor_y,nor_z,tex_u,tex_v); ModelSetVertexArray(model,v_array); Но это пока только планы. |
|||||
Hacker Ответственный за CHM Группа: Модераторы Сообщений: 346 |
Добавлено: 13-12-2009 18:21 | ||||
То есть, можно будет таким путем грузить любую модель? |
|||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 13-12-2009 18:41 | ||||
В принципе, да, если удастся прочитать данные из файла. Предполагается, что программист будет использовать эту возможность для загрузки моделей собственного формата. | |||||
Hacker Ответственный за CHM Группа: Модераторы Сообщений: 346 |
Добавлено: 13-12-2009 18:50 | ||||
Заманчиво, но как быть в таком случае с анимацией? Или в таком случае о ней и речи быть не может? P.S Мне вот интересно, каким образом пишут собственный формат, может у вас есть ссылка на соответствующую тему? |
|||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 13-12-2009 18:56 | ||||
Поддержка анимации в таком случае - вещь из разряда инноваций. Но кто знает, может получится что-нибудь придумать. Например, загружать подряд несколько статичных моделей и интерполировать между ними - получится вертексная анимация. Со скелетной сложнее, но тоже есть способы. А собственный формат пишут на бумаге (имею в виду спецификацию), а потом создают плагин-экспортер для 3DSMax/Maya/Blender и т.д. |
|||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 13-12-2009 19:13 | ||||
Обновление до 0.0.0.12. Ссылка та же. Что нового: - Движок теперь может работать и без DevIL.dll - Добавлена функция DevILInit() - Функция TextureCreate() переименована в DevILTextureCreate() - При загрузке текстур генерируются mip-карты - Добавлена функция ILUInit() - Добавлена функция ILUTextureCreateFilter(), которая загружает текстуру и пропускает ее через фильтр. Поддерживаются следующие фильтры: - Gaussian Blur (размытие по Гауссу) - Negative (инвертация цветов) - Emboss (рельеф) - Alien (эффект "Чужой") - Pixelize (пикселизация - "мозаика") - AvgBlur (размытие) - Edge Detect E (выделение края - Лаплас) - Edge Detect P (выделение края - Превитт) - Edge Detect S (выделение края - Собел) - Sharpen (резкость) - Mirror (зеркальное отображение по горизонтали) Функция требует ILU.dll |
|||||
Hacker Ответственный за CHM Группа: Модераторы Сообщений: 346 |
Добавлено: 13-12-2009 21:29 | ||||
А как вы считаете версии 0.0.0.7 сначала, потом 0.0.0.10 и 0.0.0.12 ? Где логика? А так , неплохо. Эффекты нужны и, что самое интересное, для отдельных текстур можно применять. Что же будет дальше? |
|||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 14-12-2009 19:02 | ||||
Согласно общепринятому стандарту нумерации версий, первая цифра означает основную версию, вторая - подверсию, третья - номер релиза, четвертая - номер сборки. Так что 0.0.0.7 означает седьмую сборку нулевого релиза нулевой версии. Были и 0.0.0.8, и 0.0.0.9, и 0.0.0.11 - соответственно, восьмая и девятая промежуточные сборки, которые я не счел нужным выкладывать. |
Страницы: 1 2 3 4 5 Next>> |
Форум движка Xtreme3D / Свободный треп / Phantom3D |