Сайт посвящен игре Stranded
Пятница, 26.04.2024
Меню сайта
Категории раздела
Stranded 3 [22]
Stranded 2 [7]
Stranded 2 S2Ext [10]
Stranded 2 Lost in Space [6]
Stranded 2 DevMod [8]
Stranded 2 Massive Mod [6]
Stranded 2 The Survivalist [8]
Stranded 2.5 Desert Island [8]
Скрипты [6]
FEOLPA [1]
Модинг [7]
Команды [1]
Архив [6]
Форма входа
Быстрая навигация
Мини-чат
Главная » Статьи » Stranded 3

27 августа 2012 года. Lua и тени

  
Многопользовательская онлайн игра 'Герои битвы'
Перевод:


Добавил Lua.

К счастью добавление библиотеки Lua в проект C++ было вполне простым собственно как и сама Lua написанная на языке C! Мне удалось это сделать в течении нескольких минут и я готов к работе в написании скриптов в Lua для Stranded 3.

Проблема с тенью.

Тени добавили мне головной боли. Пока я играл с тенями, появилось несколько проблем:


проблема с тенями


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


2. листья пальм вообще не отображаются в теневой карте. Один ствол. По умолчанию Ogre3D материалы, если у них есть прозрачность, не отбрасывают тени. Эта опция может быть отключена при написании скрипта, но при этому все прозрачные формы выглядят очень не красиво.

На следующей картинке вы можете увидеть, что листья отбрасывают тень, но если посмотреть на сами листья, то можно увидеть, что они обрезают стволы причудливым образом своей прозрачностью. Это происходит из за того, что я включил параметр depth_write в скрипте для отбрасывания тени прозрачными объектами.


наложение прозрачности.


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


Кстати: я узнал, что экспортер Ogre3D Milkshape может автоматически создавать LOD (уровень детализации) загружаемых моделей с уменьшенным количеством полигонов. Ogre3D автоматически использует эти версии объектов, которые находятся далеко от камеры, чтобы уменьшить количество полигонов, которые должны быть отображены на экране.


Оригинал: http://stranded3.com/?p=29


Комментарий Devi409:


Работа с тенями это отдельная проблема в 3D графике. И как правило эта проблема полностью зависит от выбранного 3D движка. Как правило каждый их движков использует свой стандарт для создания 3D сцен и Ogre3D не исключение.


Например есть специальный параметр для создания теней - отбрасывать тень на гранях т.е. параметр может иметь 4 состояния. 0 - не отбрасывать тень 1- отбрасывать тень со всех сторон 2- отбрасывать тень с фронтальной стороны 3- отбрасывать тень с фоновой стороны. Собственно играясь с этими параметрами можно достичь необходимого результата. Хуже то, что этот параметр в некоторых 3D движках приходится устанавливать каждому объекту или группы объектов.

Работа с прозрачностью тоже создает ряд проблем. Многое зависит от формата текстуры которую используют. Например текстуры с прозрачностью png или gif файла иногда различаются. Но как правило png стал чаще употребляем и поэтому текстуры с такой прозрачностью лучше внедряются в 3D сцены.


Ну а по поводу количества полигонов в объектах и текстурах земли это уже старая технология которая до банальности проста. Например актеры снимаясь в кино придерживаются той же самой технологии. Суть такова что, если актер снимается с близкого расстояния, то он старается выразить свою мимику крайне отчетливо. Естественно если актер снимается в далеке то актеру смысла нет корчить рожи если их никто не разглядит. Вот и разработчики 3D движков также поступили. Когда мы находимся рядом с объектом, то мы видим все полигоны которые есть у объекта. А если отойдем подальше то количество полигонов уменьшается.
Приведу некоторые расчеты для 1000 объектов и карты местности.


Возьмем объект дерева и предположим что у него 100 полигонов. для отображения 1000 деревьев 3D сцена будет отрисовывать 100000 полигонов. но если распределить объекты на расстоянии и допустим на 200 метров в место 1000 полигонов будет 500, на 300 метров 400 полигонов, на 500 метров будет 100 полигонов. То в действительности при равномерном распределении деревьев на площади 500 квадратных метров, сцена прорисует не 100000 полигонов а порядка 20000-40000. Производительность возрастает в 3-5 раз!


Если рассмотреть карту местности то тут тоже огромный выигрыш в производительности. допустим что 1 квадратный метр это 8 треугольных полигона. для того чтобы отобразить местность 500 квадратных метров, потребуется 4000 полигонов. Ну а если с расстоянием допустим в 100 метров количество полигонов на квадратный метр сокращать в двое т.е. 100 метров 4 треугольных полигона, 200 метров 2 треугольных полигона. То вместо 4000 мы получим порядка 1800 полигонов. Это гораздо меньше и производительнее.


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



Источник: http://stranded3.com/?p=29
Категория: Stranded 3 | Добавил: devi409 (04.02.2014)
Просмотров: 1212 | Теги: Stranded 3, разработка stranded 3, Stranded III | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Наш опрос
Нужна ли информация о читах в игре?
Всего ответов: 2008
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright MyCorp © 2024