Перейти к содержимому


Фотография

3D-движок и "Minecraft в OpenComputers" (аналог OpenGL, динамическое освещение, рейкастинг и т.д.)

игра движок освещение графен

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7

#1 Оффлайн   ECS

ECS
  • Гуру
  • Сообщений: 204
  • Уровень сигнала: 0,55%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 18 Март 2017 - 19:55

*
Популярное сообщение!

1eb5f4b92eb79890fbdaa62d1c34dbac.png

 

Команда для установки:

pastebin run LcurLpLE

Инсталлер загрузит массу необходимых библиотек, а само приложение имеет название "3DTest.lua", загружаясь в текущую директорию.

 

Немного истории:

 

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

 

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

 

Далее мы написали сам игровой движок с громким названием PolyCatEngine, позволяющий создавать произвольные меши любых форм с индивидуальными координатыми системами и свойствами материалов, реализующий виртуальную камеру и триангулярный рейкастинг. Под самый конец мы реализовали воксельную структуру а-ля Minecraft, симулирующую кубический мир с возможностью установки и удаления "блоков". В качестве финального штриха мы добавили приятный пользовательский интерфейс для взаимодействия с возможностями движка, работающий на ООП-стилизованной библиотеке GUI. Сама отрисовка графики реализована на нашей уже выложенной на форуме библиотеке тройной буферизации.

 

Вот несколько примеров визуальных возможностей движка:

 

a13b64c4a6f00e3e880fd662e385fd0b.jpege7a7202eca7e6a1bc4ace74395596b37.jpeg0bf140e9b60415511e22a93702456413.jpeg68842ab993f213e198250f08423a2aa6.jpeg97e095b1327c09eef678d5da288d978b.jpeg

 

Как результат мы имеем довольно приятную картинку и сносную производительность на мощных серверах (около 7 реальных FPS в зависимости от конкретной машины). Программа требует всего лишь 1.5 МБ оперативной памяти, однако рекомендуется запускать ее на серверных стойках с 4 планками памяти уровня 3.5 для получения максимального комфорта и увеличения максимального количества объектов сцены.

 

Все сырцы доступны на GitHub, прикладываю основные ссылки для интересующихся:

 

Возможности программы:

 

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

 

c9258bd321fc16d27e23cb95e5c0604a.png

 

Также вы можете выбрать цвет текущего устанавливаемого блока:

 

efa6d5ba0b5b58c07b45f56e031d2e5f.png

 

4ff1aa3ac991238354544d2d099ebe50.png

 

Имеется возможность добавления неограниченного количества источников освещения, каждый из которых имеет индивидуальные параметры дистанции шейдинга и яркости:

 

b5ae0b4356fb985e1f2fe7e1b8383f37.png

 

В качестве приятного бонуса имеется возможность мониторинга расхода оперативной памяти и изменения цвета фона сцены. В левой части экрана отображается отладочная информация и описание горячих клавиш программы:

 

482b3e90b0330f6715c876cc5f7e4ee3.png

 

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


Сообщение отредактировал ECS: 18 Март 2017 - 20:07


#2 Оффлайн   Laine_prikol

Laine_prikol
  • Пользователи
  • Сообщений: 133
  • Уровень сигнала: 0,54%
  • В игре: 4 час. 6 мин.

Награды

           

Отправлено 18 Март 2017 - 20:25

Эпично, конечно опенкомутерс не предназначен для таких вещей

#3 Оффлайн   ECS

ECS
  • Автор темы
  • Гуру
  • Сообщений: 204
  • Уровень сигнала: 0,55%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 18 Март 2017 - 20:43

Эпично, конечно опенкомутерс не предназначен для таких вещей

 

Сложно сказать наверняка, для чего он предназначен. Имхо, если софтина пашет с достаточной производительностью, не вызывая нервного тика - то она вполне пригодна для мода. Хотя тут, конечно, можно довольно долго философствовать.



#4 Оффлайн   Quant

Quant
  • Пользователи
  • Сообщений: 537
  • Уровень сигнала: 0,01%
  • В игре: 0 час. 4 мин.
  • Городinterface IQuant

Награды

     

Отправлено 18 Март 2017 - 22:00

3D на "микроконтроллерах" - это круто.  Можно отказаться от проектора и использовать обычный монитор.


  • Kartze и Laine_prikol это нравится

#5 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 882
  • Уровень сигнала: 6,35%
  • В игре: 48 час. 1 мин.

Награды

                          

Отправлено 18 Март 2017 - 22:08

3D на "микроконтроллерах" - это круто.  Можно отказаться от проектора и использовать обычный монитор.

Разве микроконтроллеры умеют работать с периферией?

#6 Оффлайн   1Ridav

1Ridav

    Орден К.А.

  • Администраторы
  • Сообщений: 279
  • Уровень сигнала: 4,36%
  • В игре: 32 час. 57 мин.

Награды

            2      

Отправлено 18 Март 2017 - 22:25

Реализация порадовала, мне нравится!

Шейдерные скрипты поддерживаются? Имею в виду векторные и пиксельные шейдеры



#7 Оффлайн   Doob

Doob
  • Пользователи
  • Сообщений: 814
  • Уровень сигнала: 19,33%
  • В игре: 146 час. 10 мин.

Награды

                                   

Отправлено 19 Март 2017 - 06:57

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

 

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


Сообщение отредактировал Doob: 19 Март 2017 - 06:59


#8 Оффлайн   ECS

ECS
  • Автор темы
  • Гуру
  • Сообщений: 204
  • Уровень сигнала: 0,55%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 19 Март 2017 - 11:00

Реализация порадовала, мне нравится!

Шейдерные скрипты поддерживаются? Имею в виду векторные и пиксельные шейдеры

 

Не-а, увы. Вершинные шейдеры можно без проблем запилить, на производительности не сильно скажется. С пиксельными уже беда, даже не смотря на то, что в плане оптимизаций тут вылизано все, вплоть до каждой мат. операции.

 

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

 

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

 

Пробовал, и не я один. Объединение компов в расчетный кластер невозможно по той лишь причине, что низкая скорость обмена данными между компами не компенсируется увеличенной производительностью. Как вариант - можно использовать постоянное TCP-соединение для пересылки информации на внешний сервер и наоборот, это будет значительно быстрее. Аналогичная ситуация с низкой скоростью передачи возникает через обработку информации на внешнем сервере.

 

Кроме того, не забываем, что основная нагрузка не в скорости расчета местных ЦП, а в сильно ограниченных ресурсах GPU. Частично их компенсирует тройная буферизация, но все же магии тут ждать не стоит.







Темы с аналогичным тегами игра, движок, освещение, графен

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных