浏览代码

PCD Loader Example: Clean up (#22019)

* Clean up

* Update screenshot

* Clean up

* Update screenshot
WestLangley 4 年之前
父节点
当前提交
84ce6ddb9c
共有 2 个文件被更改,包括 24 次插入44 次删除
  1. 二进制
      examples/screenshots/webgl_loader_pcd.jpg
  2. 24 44
      examples/webgl_loader_pcd.html

二进制
examples/screenshots/webgl_loader_pcd.jpg


+ 24 - 44
examples/webgl_loader_pcd.html

@@ -19,60 +19,44 @@
 
 
 			import * as THREE from '../build/three.module.js';
 			import * as THREE from '../build/three.module.js';
 
 
-			import Stats from './jsm/libs/stats.module.js';
-
-			import { TrackballControls } from './jsm/controls/TrackballControls.js';
+			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { PCDLoader } from './jsm/loaders/PCDLoader.js';
 			import { PCDLoader } from './jsm/loaders/PCDLoader.js';
 
 
-			let container, stats;
-			let camera, controls, scene, renderer;
+			let camera, scene, renderer;
 
 
 			init();
 			init();
-			animate();
-			function init() {
-
-				scene = new THREE.Scene();
-				scene.background = new THREE.Color( 0x000000 );
-
-				camera = new THREE.PerspectiveCamera( 15, window.innerWidth / window.innerHeight, 0.01, 40 );
-				camera.position.x = 0.4;
-				camera.position.z = - 2;
-				camera.up.set( 0, 0, 1 );
+			render();
 
 
-				scene.add( camera );
+			function init() {
 
 
 				renderer = new THREE.WebGLRenderer( { antialias: true } );
 				renderer = new THREE.WebGLRenderer( { antialias: true } );
 				renderer.setPixelRatio( window.devicePixelRatio );
 				renderer.setPixelRatio( window.devicePixelRatio );
 				renderer.setSize( window.innerWidth, window.innerHeight );
 				renderer.setSize( window.innerWidth, window.innerHeight );
 				document.body.appendChild( renderer.domElement );
 				document.body.appendChild( renderer.domElement );
 
 
-				const loader = new PCDLoader();
-				loader.load( './models/pcd/binary/Zaghetto.pcd', function ( points ) {
-
-					scene.add( points );
-					const center = points.geometry.boundingSphere.center;
-					controls.target.set( center.x, center.y, center.z );
-					controls.update();
+				scene = new THREE.Scene();
 
 
-				} );
+				camera = new THREE.PerspectiveCamera( 30, window.innerWidth / window.innerHeight, 0.01, 40 );
+				camera.position.set( 0, 0, 1 );
+				scene.add( camera );
 
 
-				container = document.createElement( 'div' );
-				document.body.appendChild( container );
-				container.appendChild( renderer.domElement );
+				const controls = new OrbitControls( camera, renderer.domElement );
+				controls.addEventListener( 'change', render ); // use if there is no animation loop
+				controls.minDistance = 0.5;
+				controls.maxDistance = 10;
 
 
-				controls = new TrackballControls( camera, renderer.domElement );
+				//scene.add( new THREE.AxesHelper( 1 ) );
 
 
-				controls.rotateSpeed = 2.0;
-				controls.zoomSpeed = 0.3;
-				controls.panSpeed = 0.2;
+				const loader = new PCDLoader();
+				loader.load( './models/pcd/binary/Zaghetto.pcd', function ( points ) {
 
 
-				controls.staticMoving = true;
+					points.geometry.center();
+					points.geometry.rotateX( Math.PI );
+					scene.add( points );
 
 
-				controls.minDistance = 0.3;
-				controls.maxDistance = 0.3 * 100;
+					render();
 
 
-				stats = new Stats();
-				container.appendChild( stats.dom );
+				} );
 
 
 				window.addEventListener( 'resize', onWindowResize );
 				window.addEventListener( 'resize', onWindowResize );
 
 
@@ -84,8 +68,8 @@
 
 
 				camera.aspect = window.innerWidth / window.innerHeight;
 				camera.aspect = window.innerWidth / window.innerHeight;
 				camera.updateProjectionMatrix();
 				camera.updateProjectionMatrix();
+
 				renderer.setSize( window.innerWidth, window.innerHeight );
 				renderer.setSize( window.innerWidth, window.innerHeight );
-				controls.handleResize();
 
 
 			}
 			}
 
 
@@ -97,29 +81,25 @@
 
 
 					case '+':
 					case '+':
 						points.material.size *= 1.2;
 						points.material.size *= 1.2;
-						points.material.needsUpdate = true;
 						break;
 						break;
 
 
 					case '-':
 					case '-':
 						points.material.size /= 1.2;
 						points.material.size /= 1.2;
-						points.material.needsUpdate = true;
 						break;
 						break;
 
 
 					case 'c':
 					case 'c':
 						points.material.color.setHex( Math.random() * 0xffffff );
 						points.material.color.setHex( Math.random() * 0xffffff );
-						points.material.needsUpdate = true;
 						break;
 						break;
 
 
 				}
 				}
 
 
+				render();
+
 			}
 			}
 
 
-			function animate() {
+			function render() {
 
 
-				requestAnimationFrame( animate );
-				controls.update();
 				renderer.render( scene, camera );
 				renderer.render( scene, camera );
-				stats.update();
 
 
 			}
 			}