Добавлены различные примитивы звукового окружения( RSSEnvironmentSphere, RSSEnvironmentCylinder ). Вскоре добавлю еще и выпуклые тела ( RSSEnvironmentHull ).
|
Я думаю нужен бокс тоже.
Из-за этого получается что при загораживании слушателя небольшим объектом( к примеру, ящиком ) звук как-то не естественно себя ведет.
|
А ты только один луч трассируешь? Я думаю этого мало...
ИМХО:
1. Можно сделать медленную но точную трассировку, когда от слушателя во все стороны трассируются лучи до каждой стены, затем из точек пересечения со стенами трассируется до каждого источника звука и микшируется. Ну вобщем принцип тот же как при трассировке света. А прохождение звука сквозь стены можно сравнить с рефракцией лучей проходящих через прозрачные объекты. Возможно звук даже можно на шейдерах посчитать.
2. Упрощенный вариант - можно трассировать только один раз от слушателя и до источника как ты делаешь, но у тебя не учитывается дифракция - когда большие волны огибают мелкие препятствия. Я думаю тебе нужно просто считать размер объекта или его бокса и если он маленький то и коэффициент затухания будет меньше. Только еще нужно учесть когда много маленьких объектов стоят вплотную это будет один большой.
3. Еще проще - вот у тебя же есть боксы с характеристиками сцены (там где эхо и т п). Так вот туда нужно добавить коэффициент затухания. Дизайнер или мэппер сам установит нужный коэффициент затухания. Тут нужно еще одну вещь добавить - надо сделать возможность взаимосвязи двух боксов. Например есть две комнаты, каждая комната это бокс со своими настройками звучания. Между комнатами есть дверь - она представляется как связь между боксами. Если дверь закрыта, то слушатель в одном боксе, будет слышать источники из второго бокса с большим коэффициентом затенения звука, чем когда дверь открыта.
Вот ну еще стоит добавить что трассировку лучей в любом случае надо делать с помощью октри - сцены то могут быть большие.
И еще вот если возвратиться к варианту 1, ведь в случае с освещением делают лайт мэп. Может что то похожее можно сделать со звуком? Например есть сцена где очень много статических источников звука, это все можно с помощью трассировок рассчитать и сгенерировать объемную карту звука, где будут описаны результирующие характеристики звука в каждой точке пространства.
а) Добавлять поддержку еще кучи разных форматов
|
Я думаю можно обойтись wav и ogg, но использовать их на 100%. Лучше напиши рекомендации как и с помощью каких утилит конвертировать из других форматов в эти два.
Обязательно!
Еще встает вопрос о лицензировании.
|
Главное чтобы пользователям разрешался профит от коммерческого использования движка.
Думаю вкрутить в двиг таймер как в Хорсе
|
Бред.