3

私は現在、three.jsを使用して非常に長い距離と非常に短い距離で作業するプロジェクトに取り組んでいます

シーンの小さい側で問題が発生しています。「シーン」が激しく揺れ始めます。

最初はZバッファに問題があると思っていたので、新しい領域に入るたびにカメラの近距離と遠距離のプロパティを変更する小さなスニペットを作成しました。これは私が以前持っていた「きらめき」の問題を助けました、しかしシーンはまだ小さな距離で劇的に動きます。

これが発生する条件の1つは次のとおりです

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位まで)でも、シーンは激しく揺れています

それがシーンにこれをさせるとは思えない理由はありますか?

他にご提供できる情報がありましたらお知らせください。よろしくお願いいたします。

4

1 に答える 1

1

それほど小さくない近距離遠距離の値を使用することをお勧めしますか?(特に近くの場合)

Nearは内部で仕切りとして使用されるため、少数(<1)を使用すると、精度が低下し、移動する値の範囲が大きい場合よりもはるかに小さいため、これらの激しい動きで終了する可能性があります。近い値と遠い値。

そのため、nearのデフォルト値は0.1です: https ://github.com/mrdoob/three.js/blob/r55/src/cameras/PerspectiveCamera.js#L13

...私は個人的には常に1を近くに使用しますが。

また、視覚的な問題で助けを求めるときは、オンラインの例が常に良いです:-)

于 2013-02-15T11:36:51.653 に答える