|
плюс кажется будто звук идёт к слушателю по прямой линии, т.е. ты делаешь один рейкаст об обстакл
|
Потому что это обстакл. Здесь и должен быть один проброс луча - от источника к слушателю. Если он проходит через препятствие, то в зависимости от материала, он либо проходит частично и звук заглушается ( обычно высокие частоты ), либо вообще не проходит. То что идет не по прямой от источкника к слушателю это уже эхо.
Возможно имеет место дифракция... Может быть ее можно реализовать таким способом: сделать 2 бокса, один внутри другого, если луч будет идти через угол и проходить только через внешний бокс значит имеет место дифракция.
Возможно автор уже читал, но вот пользователям движка может пригодиться
http://www.ixbt.com/multimedia/sound...mes-2003.shtml. Несмотря на 2003 год видимо это до сих пор актуально ( может быть это из-за консолей ? ).
Другое дело что в демке действительно странный звук: такое ощущение что сначала срабатывает обстакл, громкость и ВЧ звука снижаются, и только затем к ним применяется эхо или реверберация. Вобщем почему-то эхо заметно приглушается вместе с обстаклом, а не должно. Ведь я так понял движок не настолько сложный, что может к сначала отраженному звуку еще и обстакл применять, для этого слишком много трассировок нужно.
По поводу зон: я правильно из контекста понимаю что тут именно AABB а не просто BB? Если это так, то данная реализация бесполезна. На открытых пространствах зоны применять негде, а вот для комнат они бы подошли - комнаты обычно действительно с прямыми углами, но далеко не всегда выровнены по мировым осям, так что однозначно нужны просто BB. Тоже самое относится к обстаклам, там даже можно сделать поддержку мешей. Разработчики игр могут использовать для обстакла теже упрощенные меши что делают для физики.
|
Софтварную реверберацию запилить не сложно. Но нужно ли? Creative же сделала эмуляцию EAX'a.
|
С точки зрения пользователя неважно реализована ли она на уровне движка или EAX, главное чтобы пользователь мог, подключив только ProjectF, использовать его на звуковых картах с аппаратной и без поддержки EAX. Лучше если будет единый код, который абстрагирован от технологий реализации. Например пользователь задает параметры эха и реверберации для зоны, материалов для обстакла и т п, а движок уже сам решает как и с помощью чего это воспроизвести, да возможо на софтваре будет хуже качество или не будет каких то эффектов, но пользовательский код от этого не изменится.
mr.DIMAS, по хедеру могу заметить что у тебя весьма хороший стиль форматирования кода, читается легко, чем то напоминает мне конвенцию кодирования idSoftware. Я тоже эту конвенцию ( немного модифицированную ) использую.