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

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

К моменту написания этой статьи у меня уже есть прототип. Скриншот из тестового мира вы можете видеть в заголовке этой статьи. Прототип состоит из серверной и клиентской части. Серверная часть позволяет запускать множество миров. Каждый мир описывается как класс на языке Python. Я стараюсь сделать так, чтобы описание нового мира было настолько простым и быстрым, насколько это возможно. Находясь в клиентской части, можно выбрать мир из списка, предложенного сервером, и зайти в него. Прорисовка делается средствами OpenGL. На данный момент вся эта система работает только под Linux и она жутко неоптимальна. Есть много мест, где можно оптимизировать как прорисовку, так и канал обмена информацией с сервером.

Как-то я задумывался на тему того, какие миры можно было бы оформить, чтобы было и красиво, и интересно. Вот, что у меня получилось:

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

2. Экосистема. С помощью сервера можно эмулировать животных и растений, которые, например, обитают на острове. Растения имеют свой цикл жизни: размножение, рост, увядание; животные питаются растениями и друг другом. Всё это находится в состоянии динамического равновесия. В точки зрения такого мира можно изучать реальные экосистемы. И большим преимуществом является возможность визуализировать и посетить такой виртуальный мир, а не наблюдать разные числа и графики показателей экосистемы, как это делают учёные.

3. Мир теории относительности. Вы никогда не задумывались, как вы выглядел наш мир, если бы скорость света быть совсем небольшой, скажем, как скорость звука (330 метров в секунду)? Согласно представлениям современной физики, мир бы более не мог быть описан классическими уравнениями Ньютона, для описания необходимо использовать так называемую специальную теорию относительности Эйнштейна. В таком мире объекты изменяют свою форму при движении, время может течь по-разному. Учёные из MIT разработали игру под названием "A slower speed of light", в которой они постарались сымитировать специальную теорию относительности в игре. Такой же мир, думаю, не должно быть сложно реализовать и в рамках моей идеи, есть запрограммировать правильные уравнения. Плюсом является то, что можно весьма кастомизированно подойти к объектам. Можно, например, добавить различные планеты, огромные часы, чтобы наблюдать за парадоксом близнецов, даже бой с виртуальным противником лазерными пушками (лазеры тоже стреляют со скоростью света).

Уверен, что можно придумать множество других идей миров, которые были бы и интересны, и полезны. Спасибо за внимание!