Berechnung der nahen und fernen Grenzen der Kameraebene

Ich versuche die in genannten Berechnungen durchzuführenBerechnen Sie die Eckpunkte der nahen / fernen Ebene mit THREE.Frustum. Ich habe die Frage und die Antwort benutzt,https://stackoverflow.com/a/12022005/299037, um ein vollständiges Arbeitsbeispiel zusammenzustellen,http://jsfiddle.net/cZb66/Wenn Partikel an den Grenzen der fernen Ebene platziert werden, ist die nahe Ebene in diesem Fall so nah, dass die Partikel die Sicht verdecken würden. Aus irgendeinem Grund befinden sich die entfernten Ebenenpunkte nicht in der Ausdehnung der Kamera (den Ecken des Fensters), wie ich es erwartet hätte.

hNear = 2 * Math.tan(camera.fov / 2) * camera.near; // height
wNear = hNear * camera.aspect; // width

// Far Plane dimensions
hFar = 2 * Math.tan(camera.fov / 2) * camera.far; // height
wFar = hFar * camera.aspect; // width

var farTopLeft = new THREE.Vector3( wFar / 2, hFar / 2, -camera.far );
var farBottomRight = new THREE.Vector3( -wFar / 2, -hFar / 2, -camera.far );
var farTopRight = new THREE.Vector3( -wFar / 2, hFar / 2, -camera.far );
var farBottomLeft = new THREE.Vector3( wFar / 2, -hFar / 2, -camera.far );

// adjust the vectors to the camera location and direction
camera.updateMatrixWorld();
farTopLeft.applyMatrix4( camera.matrixWorld );
farBottomRight.applyMatrix4( camera.matrixWorld );
farTopRight.applyMatrix4(camera.matrixWorld);
farBottomLeft.applyMatrix4(camera.matrixWorld);

var z = 1;
var farParticles = new THREE.Geometry();
farParticles.vertices.push(new THREE.Vector3(farTopLeft.x, farTopLeft.y, z));
farParticles.vertices.push(new THREE.Vector3(farBottomRight.x, farBottomRight.y, z));
farParticles.vertices.push(new THREE.Vector3(farTopRight.x, farTopRight.y, z));
farParticles.vertices.push(new THREE.Vector3(farBottomLeft.x, farBottomLeft.y, z));
farParticles.vertices.push(new THREE.Vector3(0, 0, 0));

Antworten auf die Frage(1)

Ihre Antwort auf die Frage