/Materials Пн, 29.04.2024, 01:43

Сайт методики довузовского обучения программированию
и проектной деятельности в информатике


Главная страница, Контакты, RSS
 
> Меню сайта

> Разделы новостей
Семинар [36]
Семинар по системному и прикладному программированию
Etc [15]
Разное
Конференция [16]
Открытая конференция исследовательских и проектных работ

> Архив новостей

> Партнеры

> Поиск

> Статистика

Главная » 2013 » Июнь » 6 » Воксельный трехмерный симулятор мира на OpenGL
Воксельный трехмерный симулятор мира на OpenGL
Евгений Никитенко, Алексей Иванов
11 класс

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

Отличительной особенностью является высокое быстродействие, а также большая дальность прорисовки.

Приложение написано на C++ и не использует высокоуровневых библиотек, что обеспечивает лёгкое портирование. Используются лишь следующие библиотеки: OpenGL, libpng, zlib, freetype. Платформно-зависимый код используется лишь для поддержки оконной системы, сокетов, многопоточности, файловой системы и отладки. На данный момент поддерживаются операционные системы Windows и Linux, а также ведётся тестирование версий под Android и OS X.

Клиент состоит из нескольких компонентов:

- Загрузчик и генератор карты
- Движок освещения
- Генератор мешей
- Пользовательский интерфейс
- Физический движок
- Графический движок

 

Сервер отвечает за синхронизацию физики, времени, изменения ландшафта, а также за обмен сообщениями между клиентами.

За координацию работы других компонентов клиента отвечает загрузчик карты. Он работает в три потока, образующих конвейер. Первый поток получает у сервера нужные сжатые подмиры (части карты фиксированного размера), загружает с диска или вызывает генератор. Затем данные передаются передаются во второй поток для освещения, после чего третий поток строит меши с учётом освещения и передаёт их в поток визуализатора для отправки на видеокарту.

Движок освещения просчитывает свет от солнца (или луны) и других источников освещения (от лампы). Движок позволяет в реальном времени пересчитывать освещение в случае изменения ландшафта.

Мир хранится в отдельных файлах, называемых чанками, содержащих сжатые данные подмиров. Данные хранятся и у клиента, и у сервера. Благодаря этому клиент не получает подмир, если он не изменился с момента последнего посещения.

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

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

Также имеется возможность импорта карты из Minecraft. Для этого используется специальный конвертор.

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

Материалы проекта
Исходный код
Репозиторий проекта
 

Категория: Конференция | Просмотров: 8023 | Добавил: ded32
> Инструменты

Orphus


О рекламе на сайте ↑

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


> Загрузить

> Основные материалы

> Примеры проектов



Copyright (c) И.Р. Дединский, 2006-2024
Никакая часть материалов данного сайта или его подразделов не может быть прямо или косвенно процитирована или упомянута без действующей активной ссылки на данный сайт
...

Хостинг от uCoz

MasterHost Orphus