Войти
ПрограммированиеФорумЗвук

Проблема с XACT3D

#0
21:52, 3 янв. 2013

Использую для 3D звука XACT3D. Он правильно рассчитывает положение звука (какая колонка громче), но вне зависимости от удаления от источника звука, его громкость почему-то остаётся неизменной. В чём может быть ошибка?

P.S. Язык: С++


#1
22:32, 3 янв. 2013

Возможно я неправильно рассчитываю позицию Listener-а? Как правильно получить позицию камеры из матрицы вида?...

#2
23:08, 3 янв. 2013

Настройки Emitter-а:

Emitter.pCone = NULL;
Emitter.OrientFront.x = 0;
Emitter.OrientFront.y = 0;
Emitter.OrientFront.z = 1;
Emitter.OrientTop.x = 0;
Emitter.OrientTop.y = 1;
Emitter.OrientTop.z = 0;
Emitter.Position.x = -50;
Emitter.Position.y = 0;
Emitter.Position.z = 0;
Emitter.Velocity.x = 0;
Emitter.Velocity.y = 0;
Emitter.Velocity.z = 0;
Emitter.ChannelCount = 2;
Emitter.ChannelRadius = 1.0f;
Emitter.pChannelAzimuths = NULL;
Emitter.pVolumeCurve = NULL;
Emitter.pLFECurve = NULL;
Emitter.pLPFDirectCurve = NULL;
Emitter.pLPFReverbCurve = NULL;
Emitter.pReverbCurve = NULL;
Emitter.CurveDistanceScaler = 1.0f;
Emitter.DopplerScaler = NULL;

Звук слышно в левом динамике сильнее, как и должно быть, но вот расстояние игнорируется и звук идёт на полной громкости.

#3
1:31, 4 янв. 2013

Думал на emitter.pVolumeCurve, но нашёл в DX SDK: "pVolumeCurve. Volume-level distance curve, which is used only for matrix calculations. NULL specifies a specialized default curve that conforms to the inverse square law, such that when distance is between 0.0f and CurveDistanceScaler × 1.0f, no attenuation is applied.
When distance is greater than CurveDistanceScaler × 1.0f, the amplification factor is (CurveDistanceScaler × 1.0f)/distance. At a distance of CurveDistanceScaler × 2.0f, the sound will be at half volume or -6 dB, at a distance of CurveDistanceScaler × 4.0f, the sound will be at one quarter volume or -12 dB, and so on."

Значит всё вроде бы должно само рассчитываться и работать... Но не работает...

ПрограммированиеФорумЗвук

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