【问题标题】:Three.js Scene Violently ShakingThree.js 场景剧烈晃动
【发布时间】:2013-01-28 04:34:49
【问题描述】:

我目前正在从事一个项目,该项目涉及使用 three.js 处理非常大和非常小的距离

我在场景较小的一侧遇到了问题,“场景”将开始剧烈晃动。

一开始我以为是Z-Buffer的问题,所以我写了一个小sn-p,每次进入一个新区域时都会改变相机的near和far属性。这有助于解决我之前遇到的“闪烁”问题,但是场景仍然在很短的距离内剧烈移动。

发生这种情况的条件之一如下

camera.near = .0133333
camera.far = 12
positionToObjects = 6

这应该意味着 z 分辨率约为:.0001,我觉得应该足够好,但发生的抖动远不止于此。

对象本身在“全局”位置的范围从 -200000 到 200000,但是场景本身不会改变位置

我认为可能的另一件事是我一直使用的相机控件(缩写)如下

if(mouseIsDown == true){
    if(this.movementSpeed < this.maxSpeed){
        this.movementSpeed += this.acceleration
    }else{
        this.movementSpeed = this.maxSpeed
    }

}else{
    if(this.movementSpeed > this.minSpeed){
        this.movementSpeed = this.movementSpeed/this.deceleration
    }else{
        this.movementSpeed = this.minSpeed  
    }

}

其中 this.minSpeed = 0,this.movementSpeed 用于像这样移动相机:

var actualSpeed = delta * this.movementSpeed;
this.object.translateZ( -actualSpeed * forwardOrAuto );
this.object.translateX( actualSpeed * sideSpeed );
this.object.translateY( actualSpeed * upSpeed );

但是,即使相机没有移动(最多 8 位小数),场景仍然剧烈晃动

有什么我想不出的理由会让一个场景这样做吗?

如果我可以/应该提供更多信息,请告诉我,并提前感谢您的时间。

【问题讨论】:

  • 我的猜测是舍入错误,因为您在“关闭”场景中使用的有效数字太少了......
  • 对于相机,即使是10^-8也不够准确?
  • 另外,有没有办法添加更多的有效数字?
  • 我试过设置 this.movementSpeed = 0.000000000000000000000000 ,即使这样也不行。

标签: javascript graphics three.js webgl


【解决方案1】:

我可以建议您使用不那么小的 nearfar 值吗? (专为近处)

Near 在内部用作分隔符,因此如果您使用较小的数字(

这就是为什么您会发现 near 的默认值为 0.1: https://github.com/mrdoob/three.js/blob/r55/src/cameras/PerspectiveCamera.js#L13

...虽然我个人总是用 1 表示近。

此外,在寻求视觉方面的帮助时,在线示例总是很好的 :-)

【讨论】:

  • 嘿鞋底,谢谢你的建议,我已经开始采取措施了。感觉我已经到达了 webGL 世界的“尽头”,这有点酷。至于视觉示例,我没有发布任何示例,因为示例:cabbibo.com/uOS 更像是一个“迷宫”,而不是其他任何东西,而且很难“找到”最震动的区域。 (如果你对声音宇宙感到好奇 --> 欧洲 --> 英国 --> hyperdub --> 不管)是最不稳定的之一,但祝你好运:)
  • 哈哈!你是 uOS 背后的人! :-D 有趣!我发现你的宇宙非常神秘。这种“到达 WebGL 诗句的结尾”听起来同样神秘,但我认为如果你保持在浮点数的限制内,你应该能够在不晃动的情况下导航它。也许吧。
  • 答案总是可能!谢谢你对宇宙的好话,它的工作量太大了,所以听到一些关于它的好消息会让它觉得值得!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-09
相关资源
最近更新 更多