- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
出于对一切的热爱,我已经这样做了三个小时。
OpenAL,当我移动听者时,完全打破了衰减。我不知道为什么。
如果我不更改监听器设置,它就可以正常工作。但不幸的是,这在 3D 游戏中并不是一个可行的解决方案。
我已经尝试了一切,从标准化所有发声组件的位置和速度,到手动设置所有衰减设置。但改变监听器上的任何设置,毫无疑问,总是会破坏衰减。如果我移动听者,我会听到距离我 100 个单位的声音,就好像它的位置没有影响一样。
我什至使用 alGet 参数来检查值是否正确。他们是。
游戏中的每个单位都是 1x1,因此在许多情况下,两个实体相距大约 100 个单位。
alListener3f(AL_POSITION, pos.x, pos.y, pos.z);
alListener3f(AL_VELOCITY, vel.x, vel.y, vel.z);
alListener(AL_ORIENTATION, system.listener.getOrientationBuffer());
alListenerf(AL_GAIN, system.listener.getMasterGain());
这就是负责更改监听器的所有代码。按照说明,主增益为 0.5f,声音本身也是 0.5。距离模型为AL_LINEAR_DISTANCE_CLAMPED
,引用距离为1f,最大距离为2f。尽管如此,衰减仍然不起作用,而且放置位置也没有什么区别。在 LINEAR_DISTANCE_CLAMPED
模式下,距离无论如何都不起作用。如果我将其保留为默认模型,那么当我不移动监听器时它至少会工作。
方向已保留为默认值(0, 0, -1f, 0, 1f, 0f)
不,我的声音驱动程序很好,而且这台计算机是不到一个月前使用最新部件制造的。
是的,声音是单声道格式的。
请有人帮助我。
最佳答案
经过一番尝试,我终于解决了我的问题。
设置低于 1f 的滚降值似乎可以防止声音在设置最大距离后消失。您还需要确保正确设置方向以匹配您的坐标系;幸运的是,我的设计已经可以与默认的一起使用,但请务必这样做。这非常重要。
因此,为了确保衰减在引用角度和最大角度下正常工作,请执行以下操作:
AL_LINEAR_DISTANCE_CLAMPED
应该是这样。
此外,我在学习期间看到过一些关于必须标准化坐标的讨论。实际上这并不重要,因为 OpenAL 并不希望您这样做(您可以在第 32 页底部的 documentation 中找到此内容)
我希望通过澄清所有这些内容可以帮助其他人。祝你们工作顺利,网络陌生人。
关于audio - OpenAL 监听器打破衰减,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20913143/
liwen01 2024.08.18 前言 无论是在产品开发还是在日常生活中,在使用无线网络的时候,都会经常遇到一些信号不好的问题,也会产生不少疑问: 为什么我们在高速移动的高铁上网络会变
我正在使用 Kinect 获取每个关节的位置和方向,然后将它们发送到 Unity。我注意到值有很多“跳跃”或波动,例如,有时我不移动我的手,而在 Unity 中它会旋转 180 度。 我想要的是一个平
在下面的示例中, #include #include //okay: // template decltype(auto) runner(T&& t, F f) { return f(st
出于某种原因,即使我设置了衰减因子,我的学习率似乎也没有改变。我添加了一个回调来查看学习率,它似乎在每个纪元之后都是一样的。为什么没有变化 class LearningRatePrinter(Call
考虑下面的代码: #include #include using namespace std; template void Test2(future f, Work w) { async([
我是一名优秀的程序员,十分优秀!