Войти
IrrlichtФорум

Добваить тени у ISceneNode

#0
11:57, 17 сен. 2008

Добрый день!
Нарисовал сцену в irrEdit. В этой сцене разместил несколько Mesh и Animated Mesh.
Теперь, в моей игре можно загрузить эту сцену и для Animated Mesh можно вызвать функцию addShadowVolumeSceneNode. При этом этот анимированный меш начинает отбрасывать тень от источников света.
А вот для простого Mesh такой функции создания тени нет.
Вопрос такой - как сделать, чтобы обычные Mesh отбрасывали тени от источников света?
Или их надо сразу создавать как анимированные ради этой функции создания тени (хотя фактически они будут не анимированными).
Всем спасибо!


#1
22:56, 17 сен. 2008

В редакторе надо тени создавать, если они статические как я понял. В irredit есть урок как это делать - пара кликов мыши.

#2
17:50, 21 сен. 2008

В том-то и дело, что тени должны быть диначические, от перемещающихся источников света

#3
0:28, 22 сен. 2008

Урок 08.SpecialFx смотрел? Там не такие тени как тебе надо?

#4
1:00, 22 сен. 2008

Да, конечно смотрел. Я собственно и сделал как в этом уроке.
Наверное, я непонятно объясняю. Попробую еще раз:
1. У нас есть анимированные меши и просто меши.
2. У нас есть несколько динамических, перемещающихся источников света.
3. Для анимированных мешей вызываем addShadowVolumeSceneNode, и они начинают отбрасывать тень - все здорово.
4. Для простых мешей такой функции нет.
Внимание, вопрос ;-)
Как сделать, чтобы простые, неанимированные меши тоже отбрасывали тени?

Неужели никто не сталкивался с такой задачей?

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

#5
22:24, 23 сен. 2008

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

#6
8:46, 26 сен. 2008

смотрим синтаксис функции...

virtual IAnimatedMesh* irr::scene::ISceneManager::getMesh  (  const c8 *  filename  )

Еще комментарии нужны?

Прошло более 11 месяцев
#7
13:44, 19 сен. 2009

Не понимаю, можно подробнее?Если делаю ISceneNode, работает параллакс, если IAnimatedMeshSceneNode, работают тени. Как и то и то сделать для одного нода?

#8
2:44, 21 сен. 2009

Evgolas
Petrel
Я сталкивался с обоими вашими проблемами.
На счёт теней так ничего и не нашёл, гружу все модели, для которых нужна тень, как анимированные. Но для них невозможно использовать октри, что удручает. То есть для статики или тени, или оптимизация. Получается так.
Для параллакса нужна пробинормаленная модель, в Иррлихте она хранится только в неанимированном меше. То есть опять или параллакс, или тени.
Я нашёл ещё одну проблему с тенями - я использую свои шейдеры, при их подключении нужно отключить освещение модели. А для того, чтобы тени работали, нужно, чтобы освещение было включенно, во-первых, для модели, которая будет отбрасывать тень, а во-вторых, для моделей, на которые эта тень может упасть. Получается и тут или свои шейдеры, или тень?

#9
21:05, 21 сен. 2009

Wolshebnik
Спасибо за ответ!
Так получается, что если параллакс внешним шейдером сделан, то тоже стенсильную тень не сделать, что ли? Только лайтмэпы?

#10
0:55, 22 сен. 2009

Petrel
Да, к сожалению. Но точно можно самому в Irrlicht сделать shadow mapping. Это реализовано в данной библиотеке эффектов: http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=23638 (как именно там это реализованно, я не знаю :), но код её открыт ). Жаль только, что там нет самозатенения...

#11
19:26, 22 сен. 2009

Спасибо за ссылку, Wolshebnik. Весьма симпатичные скрины, посмотрю библиотеку:)

IrrlichtФорум

Тема в архиве.