소스 검색

Mirror: Added custom isVisible() to avoid rendering backfacing mirrors. See #12098

Mr.doob 8 년 전
부모
커밋
efc8e1fe31
1개의 변경된 파일17개의 추가작업 그리고 1개의 파일을 삭제
  1. 17 1
      examples/js/Mirror.js

+ 17 - 1
examples/js/Mirror.js

@@ -109,7 +109,23 @@ THREE.Mirror = function ( width, height, options ) {
 
 	scope.material = material;
 
-	scope.onBeforeRender = function ( renderer, scene, camera ) {
+	scope.isVisible = function ( camera ) {
+
+		mirrorWorldPosition.setFromMatrixPosition( scope.matrixWorld );
+		cameraWorldPosition.setFromMatrixPosition( camera.matrixWorld );
+
+		rotationMatrix.extractRotation( scope.matrixWorld );
+
+		normal.set( 0, 0, 1 );
+		normal.applyMatrix4( rotationMatrix );
+
+		view.subVectors( mirrorWorldPosition, cameraWorldPosition );
+
+		return view.dot( normal ) < 0;
+
+	};
+
+	scope.onBeforeRender = function ( renderer, scene, camera ) {
 
 		mirrorWorldPosition.setFromMatrixPosition( scope.matrixWorld );
 		cameraWorldPosition.setFromMatrixPosition( camera.matrixWorld );