А отдельно для звуков учёт геометрии, бросание луча - блитз потянет?
|
Потянет. LinePick достаточно быстро работает. Но нужно еще и для общего случая написать учет геометрии. Думаю нужно в двиг передавать массив вершин и массив индексов этих вершин. Строить для них Octree затем найти тот узел где находится слушатель и проверить пересечение луча с треугольниками в этом узле. В принципе не сложно. Благо с Octree уже работал. И математику неплохо знаю.
UPD
узел где находится слушатель и проверить пересечение луча с треугольниками в этом узле
|
Не, не так. Выделить все узлы лежащие на пути от слушателя до звука. И проверить пересечение луча от звука до слушателя с геометрией этих узлов. Самый лучший случай это, когда препятствие вообще существует.
Можно обойтись и без Octree, но думаю, при большом количестве звуков и сложной геометрии, производительность будет страдать.