www.G-2B.com www.G-2B.com
форум сайта проекта "ЮКисП"
 Помощь      Поиск      Участники


 Страниц (12): В начало « ... 4 5 6 7 8 9 [10] 11 12 »   

> Описание: Игра про строительство
krre
Отправлено: 04 Сентября, 2016 - 13:37:23
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Поскольку выяснилось, что у тестеров далеко не всё гладко с OpenGL, то пришлось отказаться от более новых способов обмена данным с GPU в пользу более старых, которые гарантированно должны работать у всех. Старый способ - это представить данные в виде одномерной текстуры, а по-научному - загнать в текстурный буфер. Долго пришлось разбираться с этим буфером и бороться с чёрным экраном, но в результате оно заработало.

Если вы никогда не видели, как выглядят данные в виде текстуры, то сейчас у вас появится счастливая возможность. Текстура в привычном нам понимании - это двухмерная картинка, в которой закодирован цвет пачками по четыре байта для каждого из RGBA каналов. Если мы оставим только первую строчку этой картинки и вместо цвета закодируем туда какие-то свои данные, то получится одномерный текстурный буфер. Вот так, например, выглядит в цвете массив матриц трансформации разрежённых воксельных октодеревьев.
   Top
krre
Отправлено: 04 Сентября, 2016 - 17:03:22
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Ну, вот, у меня наконец-то отобразились несколько кубов. Улыбка И при этом fps стабильно держится на 60. Но так этот fps всех уже реально достал, то я его на скриншоте не показываю.

Пока что эти три куба рисуются не слишком правильно. Шейдер никак не сортирует их по глубине, в результате чего получается интересный такой сюрр при движении камеры. В текущем её положении красный куб по координатам дальше всех, синий посередине, и он наполовину внутри коричневого куба, который, в свою очередь ближе всех к камере. Но получается так, что когда я обхожу вокруг кубов, красный всегда вылезает на передний план. Смотрится очень смешно, поскольку мозг ожидает, что кубы будут перекрывать друг друга по глубине, а они перекрываются в том порядке, в каком были добавлены в сцену. гы-гы!

Отремонтировать глубину с ходу не получится, это крайне сложная штука в виду особенностей воксельных октодеревьев. Придётся поломать голову.
   Top
krre
Отправлено: 05 Сентября, 2016 - 12:27:49
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Глубина пофиксена, и теперь кубы друг относительно друга рисуются правильно.

Следующий этап - сделать из кубов разрежённые воксельные октодеревья. То, ради чего всё и затевалось. Чтобы можно было превращать кубы в любые модели. Это самое страшное, там такая адская кухня, что ковыряния мне грозит не менее, чем на месяц. Но когда закончу, можно будет считать, что основная работа по графическому движку сделана, и тогда можно смело браться за саму игру.

Короче, ушёл, вернусь не скоро. гы-гы!
   Top
krre
Отправлено: 08 Сентября, 2016 - 08:47:23
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Gagarin Daily News

Пока холодными осенними днями я вгрызаюсь в тёмную антиматерию октодеревьев, параллельно тем временем добавил в сцену свободную камеру. Теперь в сцене две камеры: одна жёстко сидит на Гагарине, а другая - свободная, нужна, чтобы рассматривать сцену со стороны. Доступна эта камера, конечно, только в девелоперском режиме. Клавиша 0 на цифровой панели циклически переключает обе камеры.
   Top
Коля Логан
Отправлено: 08 Сентября, 2016 - 19:45:40
ID


почетный участник


Сообщений всего: 4476
Дата рег-ции: Июль 2008  
Откуда: Донецк, Украина
Репутация: 30




krre:
Пока холодными осенними днями я вгрызаюсь в тёмную антиматерию октодеревьев, параллельно тем временем добавил в сцену свободную камеру. Теперь в сцене две камеры: одна жёстко сидит на Гагарине, а другая - свободная, нужна, чтобы рассматривать сцену со стороны. Доступна эта камера, конечно, только в девелоперском режиме. Клавиша 0 на цифровой панели циклически переключает обе камеры.

Если вторая камера не будет использована в игре напрямую, можно сделать дополнительной фичей, как в "Spider-Man: The Movie", где можно включить режим от первого лица. Отлично! Ещё оно явно пригодится для катсцен и трейлеров.
   Top
krre
Отправлено: 08 Сентября, 2016 - 19:48:15
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Ещё можно сделать муху, прицепить к ней камеру и натравить муху на Гагарина. Да много чего можно придумать с дополнительными камерами. Улыбка
   Top
Коля Логан
Отправлено: 08 Сентября, 2016 - 19:50:57
ID


почетный участник


Сообщений всего: 4476
Дата рег-ции: Июль 2008  
Откуда: Донецк, Украина
Репутация: 30




krre:
Ещё можно сделать муху, прицепить к ней камеру и натравить муху на Гагарина. Да много чего можно придумать с дополнительными камерами.

Напомнило великолепную сентенцию из аннотации игры "Worms 3D" на русском языке: "Вид от лица снаряда". Обхохочешься!
   Top
krre
Отправлено: 12 Сентября, 2016 - 15:10:52
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Gagarin Daily News

Мало-мальски разобрался в теории рейкастового рендеринга разрежённого воксельного октодерева. Начал робко и нерешительно писать шейдер.
   Top
2B администратор
Отправлено: 14 Сентября, 2016 - 09:23:05
ID


администратор


Сообщений всего: 18244
Дата рег-ции: Июль 2004  
Откуда: Ирпень, Украина
Репутация: 56




О, я слышал такое слово - шейдер! Ура! Улыбка
   Top
krre
Отправлено: 18 Сентября, 2016 - 11:22:15
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Новый рейкастовый алгоритм начинает мало-помалу работать, но в режиме сюрреализма. Куб снова изувечен. Очертания у него кубические, а внутренности сферические. Сферический куб в вакууме. В общем, страх и ужас. Всё это делается для того, чтобы из куба можно было слепить любой формы объект. Отрендерить куб легко, а вот превратить его в дерево или гору потруднее будет.

Продолжаю вгрызаться в тёмную антиматерию октодеревьев. Скоро уже академиком из-за них стану.
   Top
2B администратор
Отправлено: 20 Сентября, 2016 - 08:29:55
ID


администратор


Сообщений всего: 18244
Дата рег-ции: Июль 2004  
Откуда: Ирпень, Украина
Репутация: 56




Может, тебе и сделать сюрреалистическую вселенную? Подмигну-ка
   Top
krre
Отправлено: 20 Сентября, 2016 - 08:38:52
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Можно, но вот где взять ЛСД, чтобы войти в нужное "состояние" во время программирования? Улыбка
   Top
krre
Отправлено: 20 Сентября, 2016 - 10:26:57
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Gagarin Daily News

Сделал специальный настроечный файл main.debug и положил его в корневую папку вместе с gagarin.exe. Этот файл загружается в девелоперском режиме и автоматически настраивает игру при её старте на нужное для отладки состояние. Например, загрузить такой-то сейв, поставить Гагарина в такую-то позицию, включить свободную камеру и где-то её разместить. Это позволит при запуске игры сразу же оказаться в проблемном для отладки месте. Сейчас в main.debug только одна настройка, enable=true, и она ничего не делает.

Между тем, битва с октодеревьями продолжается. Врагу не сдаётся наш гордый варяг. По-прежнему не удаётся заставить октодерево правильно нарисоваться. Придётся, как говорил один известный классик, "мочить их в сортире".
   Top
krre
Отправлено: 20 Сентября, 2016 - 14:12:09
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Свершилось чудо! Друг спас жизнь друга!

Угроза замочить октодеревья в сортире подействовала. Оно заработало. Октодерево состоит из восьми листьев (поэтому и называется окто), я из него один лист откусил, и оно показало его откусанным. Всё, как и должно быть.

Но это, конечно, только начало. Ещё пахать и пахать. Теперь надо продолжить подразбиение, взять какой-нибудь из оставшихся семи листов и раздробить ещё мельче. Когда октодерево можно будет нормально и безболезненно дробить до любого уровня, тогда полдела будет сделано. После этого нужно ещё добиться, чтоб у каждого листа был свой индивидуальный цвет, по типу кубика рубика.
   Top
krre
Отправлено: 21 Сентября, 2016 - 08:21:57
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Вожусь с рекурсивым подразбиением октодерева, и вот какой смешной баг получился. Октодерево должно было подразбиться два раза, а оно сделало это хреналлион раз. Удивительно, но комп не взорвался, программа не вылетела, и даже 60 fps остались на месте. Слава инженерам! гы-гы!
   Top
krre
Отправлено: 21 Сентября, 2016 - 09:25:52
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Пофиксил багу, как-то даже неожиданно быстро получилось. Есть ещё не до конца законченные дела с подразбиением, но в целом уже близок следующий этап - добавление цвета.

На скриншоте один лист из восьми верхнего уровня убран, а на втором уровне из соседнего листа убран такой же подразбитый лист. Ну, вы всё поняли, короче. гы-гы!
   Top
2B администратор
Отправлено: 22 Сентября, 2016 - 09:24:36
ID


администратор


Сообщений всего: 18244
Дата рег-ции: Июль 2004  
Откуда: Ирпень, Украина
Репутация: 56




Недурно, коллега, очень недурно! Улыбка
   Top
krre
Отправлено: 22 Сентября, 2016 - 13:41:48
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Ну, так, это ж бубль гум! гы-гы!
   Top
krre
Отправлено: 23 Сентября, 2016 - 16:03:13
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Вот и цвета подоспели. Причём, они так хитро сделаны, что не обязательно указывать цвет для всех без исключения нод. Можно не указать, и тогда цвет возьмётся из родительской ноды более верхнего уровня.

Собственно, на этом базовая часть по графике сделана. Это был тяжёлый и трудный этап, но, конечно, таких впереди будет ещё много, так что мозгам моим покоя не предвидится. На очереди следующий сложный этап - придумать, как визуально эти октодеревья создавать и редактировать. Сейчас они выглядят следующим образом:

CODE:
auto data = std::make_shared<std::vector<uint32_t>>();
// Header
data->push_back(0x00000003); // => Block info
// Nodes
data->push_back(0x00027F08); // 0000 0000 0000 0010 | 0111 1111 | 0000 1000
data->push_back(0x0000BF00); // 0000 0000 0000 0000 | 1101 1111 | 0000 0000
// Block info
data->push_back(0x00000000);
// Attach data
data->push_back(0x0000027F); // 0000 0000 0000 0000 0000 0002 | 0111 1111
data->push_back(0x00000999); // 0000 0000 0000 0000 0000 1001 | 1001 1001
// Colors
data->push_back(0x044A00FF);
data->push_back(0xA30000FF);
data->push_back(0x13DAFFFF);
data->push_back(0x7E4681FF);
data->push_back(0xFF0011FF);
data->push_back(0x903472FF);
data->push_back(0xAD7D4DFF);

data->push_back(0x5A1681FF);
data->push_back(0x6B38ACFF);
data->push_back(0x5DD772FF);
data->push_back(0xC5651FFF);


Все эти цифры приходится в голове конвертировать в желаемый цвет и форму, а это очень медленно и трудоёмко. Надо придумать какой-то визуальный редактор. Согласитесь, проще выбрать цвет из палитры на глаз, чем представлять мысленно, какой у него код. Наверное, придётся для этого создавать целую отдельную программу.
   Top
krre
Отправлено: 24 Сентября, 2016 - 10:06:33
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Начал делать редактор воксельных октодеревьев. Причём, это будет не только редактор, а ещё и генератор ландшафтов. Они же тоже из октодеревьев состоят. Если тестировать ландшафты сразу в игре, то после каждого изменения какого-то параметра придётся перезапускать игру, а в редакторе можно добавить какой-нибудь ползунок или кнопку, при нажатии на которую меняется какой-то параметр ландшафта, и пейзаж будет сразу перерисовываться тут же в окне. В общем, практически все большие трёхмерные игры имеют свой редактор (или даже несколько) для редактирования игрового контента. У меня, получается, тоже будет.

Называется программа OctreeFarm. Окно в ней разделено на две части. В левой части - панелька управления, в правой - трёхмерное отображение октодерева. Или наоборот, ещё не решил.
   Top
Страниц (12): В начало « ... 4 5 6 7 8 9 [10] 11 12 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« флуд »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




www.g-2b.com


Powered by ExBB. ExBB FM 1.0 RC1 by TvoyWeb.ru. InvisionExBB Style converted by Markus®, edited by 2B. Smiles by Aiwan, Connie and others. Hosted by Peleng.

[Script Execution time: 0.0472]     [ Gzip Disabled ]