2013-02-12 43 views
3

我目前的工作對涉及使用three.js所three.js所場景劇烈晃動

我有在現場的小面的問題有非常大和非常小的距離開工的項目,其中「場景「將開始劇烈搖晃。

起初我認爲這是Z緩衝區的問題,所以我寫了一個小片段,每次輸入新區域時都會改變攝像機的近距離和遠距離特性。這有助於我之前遇到的「閃閃發光」問題,但現場仍然在小距離上大幅移動。

一個在何種情況下發生這種情況的條件如下:

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

這應該意味着Z分辨率大約是:.0001我覺得喜歡就足夠好了,但發生的晃動是更多的是這個。

對象本身的範圍從無處不-200000 - 200000的「全球性」的位置,但在幕後本身並沒有改變位置

,我想,這可能是另一件事是相機控制我在使用它們(abbrviated)如下

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位小數位)場景仍然劇烈搖晃

是否有任何理由,我想不出會讓場景做到這一點?

請讓我知道,如果有任何更多的信息,我可以/應該提供,並提前感謝您的時間。

+1

尋求幫助時在線的例子是一件好事我的猜測是,它是舍入誤差,因爲使用的是這麼幾個顯著位數「關閉」現場.. – 2013-02-12 19:57:13

+0

對於攝像頭來說,連10^-8都不夠準確? – Cabbibo 2013-02-12 21:10:38

+0

另外,有什麼辦法可以添加更多有效數字嗎? – Cabbibo 2013-02-12 23:50:57

回答

1

我可以建議您使用附近的值遠的哪個不是那麼小? (具體地,對於近)

被用作分頻器內部,因此,如果您使用少量的(< 1)可能會丟失精度以及與這些暴力運動結束,因爲你的值的範圍」重新移動的方式比如果使用更大的近值和遠值要小得多。

這就是爲什麼你會發現附近的默認值是0.1: https://github.com/mrdoob/three.js/blob/r55/src/cameras/PerspectiveCamera.js#L13

...雖然我個人一直使用1附近。

此外,在視覺事項:-)

+0

嗨,唯一,謝謝你的建議,我已經開始採取措施。它看起來很酷,覺得我已經達到了webGL世界的'終點'。就視覺例子而言,我沒有發佈任何內容,因爲這個例子:http://cabbibo.com/uOS/更像是一個'迷宮',那麼其他任何東西都很難'找到'最震撼的區域。 (如果你好奇的宇宙聲音 - >歐洲 - >英國 - > hyperdub - >無論什麼)是最震撼的,但是找到那一個的好運氣:) – Cabbibo 2013-02-16 01:33:43

+1

哈哈!你是uOS背後的人! :-D滑稽!我發現你的宇宙很神祕。這個「達到WebGL詩歌的結尾」聽起來同樣神祕,但我認爲如果你保持在浮點數的範圍內,你應該能夠在不晃動的情況下導航它。也許。 – sole 2013-02-16 10:55:15

+0

總是可能的答案!感謝關於宇宙的善意話語,但它一直是WAYYY太多的工作,所以聽到好的東西使它覺得它是值得的! – Cabbibo 2013-02-16 21:03:17