私は、x軸を中心に連続的に回転する三角形の平面を含む非常に単純なシーンを作成しようとしています。このprevious SO questionに示すように、ここで回転すると3つのjs平面の形状が消えます
は、ジオメトリオブジェクトを作成するコードです:
// create triangular plane geometry
var geometry_1 = new THREE.Geometry();
var v1 = new THREE.Vector3(0,0,0);
var v2 = new THREE.Vector3(3,0,0);
var v3 = new THREE.Vector3(0,3,0);
geometry_1.vertices.push(v1);
geometry_1.vertices.push(v2);
geometry_1.vertices.push(v3);
geometry_1.faces.push(new THREE.Face3(0, 1, 2));
アニメーション機能は、シーンをレンダリングし、メッシュに小さな回転を追加します。
function animate() {
requestAnimationFrame(animate);
mesh_1.rotation.x += 0.005;
renderer.render(scene, camera);
}
すべてが正常に動作しますmesh.rotation.x
の値が[Math.PI, 2*Math.PI]
のインターバルに入るまで、そのサイクルのちょうど半分が消えます。このJSFiddleは、私が観察している振る舞いを再現します。
- 周囲光と回転の全ての点においてメッシュを照明するようになって指向性光があり、これは、
light
問題ではありません。私はすでに両方の面を観察[0, Math.PI]
に間隔mesh.rotation.x
にTHREE.DoubleSide
に、実際にそのside
プロパティを設定しなかったよう - これは、
material
問題になることはありません。 - 別の顔を
geometry_1.faces.push(new THREE.Face3(0, 2, 1));
と同じジオメトリに追加しようとしましたが、それでも問題は解決しませんでした。 - 逆の面を持つ第2のジオメトリを追加すると、のメッシュが負に回転すると、
[0, 2*Math.PI]
間隔の反対側の半分で2つのジオメトリが消えているため、希望の結果が観測されます。しかしこれはハッキリで理想的な解決策ではありません。
何が起こっているのですか?どうすれば解決できますか?ありがとう!
あなたの答えをありがとうが、私は1つのことについて混乱しています。カメラをz = + 10に置きました。+10から-10までは見えませんか?なぜ私は効果的に+10から0まで見ているのですか?私の理解は、カメラが近所と遠い間のすべてを見ているということです、それは間違っていますか? – Matteo
あなたは、カメラがその位置と遠方の間にすべてを見ていることを示唆しているようです(そして、作業例ではありません)。何故ですか?この[ビデオ](https://www.youtube.com/watch?v=k3adBAnDpos)のコメントと矛盾していませんか? – Matteo
ドキュメンテーションは、次のように述べています。デフォルトは0.1です。有効な範囲は、0と遠い面の現在の値の間です。 PerspectiveCameraとは異なり、0はOrthographicCameraの近くの平面の有効な値です。 _したがって、カメラの錐台を0の平面に、遠方の平面を 'FRUSTRUM_SIDE'に設定します: 'camera = new THREE.OrthographicCamera(-FRUSTUM_SIDE/2、FRUSTUM_SIDE/2、-FRUSTUM_SIDE/2、0、FRUSTUM_SIDE); '。あなたの問題を解決したら、答えを受け入れるようにマークしてください) – prisoner849