Przeglądaj źródła

Added a frustum to detect wether or not a CSS2DObject is visible

Chabam 6 lat temu
rodzic
commit
3c4e6217fb
1 zmienionych plików z 3 dodań i 0 usunięć
  1. 3 0
      examples/js/renderers/CSS2DRenderer.js

+ 3 - 0
examples/js/renderers/CSS2DRenderer.js

@@ -36,6 +36,7 @@ THREE.CSS2DRenderer = function () {
 	var vector = new THREE.Vector3();
 	var vector = new THREE.Vector3();
 	var viewMatrix = new THREE.Matrix4();
 	var viewMatrix = new THREE.Matrix4();
 	var viewProjectionMatrix = new THREE.Matrix4();
 	var viewProjectionMatrix = new THREE.Matrix4();
+	var frustum = new THREE.Frustum();
 
 
 	var cache = {
 	var cache = {
 		objects: new WeakMap()
 		objects: new WeakMap()
@@ -82,6 +83,7 @@ THREE.CSS2DRenderer = function () {
 			element.style.MozTransform = style;
 			element.style.MozTransform = style;
 			element.style.oTransform = style;
 			element.style.oTransform = style;
 			element.style.transform = style;
 			element.style.transform = style;
+			element.style.display = frustum.containsPoint( object.position ) ? '' : 'none';
 
 
 			var objectData = {
 			var objectData = {
 				distanceToCameraSquared: getDistanceToSquared( camera, object )
 				distanceToCameraSquared: getDistanceToSquared( camera, object )
@@ -164,6 +166,7 @@ THREE.CSS2DRenderer = function () {
 
 
 		viewMatrix.copy( camera.matrixWorldInverse );
 		viewMatrix.copy( camera.matrixWorldInverse );
 		viewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, viewMatrix );
 		viewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, viewMatrix );
+		frustum.setFromMatrix( viewProjectionMatrix );
 
 
 		renderObject( scene, camera );
 		renderObject( scene, camera );
 		zOrder( scene );
 		zOrder( scene );