FishMan
(Real Project Leader)
Зарегистрирован: Jul 2003
Проживает: /
Написал: 9467 сообщений
Оценка: 143 чел.
|
Ну а теперь мой взгляд на ситуацию.
Я считаю, дождь, снег и т.д. нуждается в отдельном подходе. Снег реализовать проще, потому, что эффектов меньше, с другой стороны на него влияет ветер, но это не так уж страшно, можно просто описать символические смены направления движения, напоминающие ветер. Это не так страшно как дождь.
Итак, про дождь...
Теоретическая схема.
Есть радиус, расположенный на определённой высоте (чуть выше самой высокой постройки на карте, но это не обязательно, достаточно визуально найти минимальную высоту для эмиттера, на которой не заметно, что это фейк) только когда эмиттеры попадают в этот радиус, они начинают работать.
Однако в моём представлении это должна быть сложная схема. Гляньте на картинку, там четыре радиуса, первый самый маленький, второй и третий побольше, но между собой они равны, четвёртый - равен бесконечности, иными словами его просто нет, так как там просто ничего не происходит. Размеры радиусов нужно определять эксперементально, они равны минимальным радиусам, на которых фейк ещё не раскрывается, но ещё чуть чуть и раскроется (простыми словами так, чтобы смотрелось), с учётом следующих соображений:
В первой зоне дождь обладает всеми эффектами, т.е. при столкновении с землёй летят брызги, дождь меняет своё положение, т.е. не двигается по прямой, а скорее по експоненте или же линия (назову её потоком) по которой движутся партиклы дождя перемещаются параллельно оси Z. Просчёт столкновений с поверхностью происходит в равной степени, как с дисплейсментами и ворлд полигонами, так и с моделями, статическими и динамическими (включая нпс), отдельно для каждого потока партиклов. Брызги имеют дистанцию видимости, которая выражается в прозрачности, чем дальше от игрока рендерится эффект брызг, тем меньше у него прозрачность, на границе первой и второй зон, брызги имеют прозрачность ~0%, так скроется реальное расстояние на котором эффект пропадает и не будет резкого перехода. Так же тольков этой зоне имеется объёмный белый туманчик над землёй в виде тех же партиклов.
Зона два:
Потоки не движутся и никаких брызг. Текстура (другая), используемая для партиклов из этой зоны имеет размер на 75% меньше той, что используется у первой зоны...
Расчёт столкновений происходит для каждого потока по отдельности, но только со статичными предметами (дисплейсменты, ворлд поли и физбоксы статичных моделей).
Зонта три:
Никаких движений и брызг. Просчёт столкновений производится либо для всех потоков находящихся в этой зоне за раз и у всех место отсечения (где партикла умирает) одинаковое, либо просчёт столкновений вообще не прозводится и партиклы умирают на высоте той плоскости, где стоит игрок. Единственный эффект - прозрачность, чем дальше от игрока, тем прозрачнее, на границе третьей и четвёртой зоны прозрачность партиклов ~0%.
В плане рализации нет никаких зон, просто измеряется расстояние от потока (эмиттера), до центра радиуса, в котором отображается дождь, в зависимости от этого расстояния и генерируются условия для каждого потока.
Сами потоки (эмиттеры) как бы уже заранее расставлены на уровне, карта их расположения либо генерируется перед началом игры, либо в процессе игры, либо вообще во время компиляции уровня (как у детайлов). Эмиттеры начинают работать только когда попадают в радиус над головой, т.е. радиус в котором отображается дождь...
Поправил FishMan 10-02-2009 в 07:56
|