瀏覽代碼

Added DRACOLoader example.

Mr.doob 8 年之前
父節點
當前提交
fca1f39bec
共有 3 個文件被更改,包括 136 次插入0 次删除
  1. 1 0
      examples/files.js
  2. 二進制
      examples/models/draco/bunny.drc
  3. 135 0
      examples/webgl_loader_draco.html

+ 1 - 0
examples/files.js

@@ -87,6 +87,7 @@ var files = {
 		"webgl_loader_collada_skinning",
 		"webgl_loader_ctm",
 		"webgl_loader_ctm_materials",
+		"webgl_loader_draco",
 		"webgl_loader_fbx",
 		"webgl_loader_gltf",
 		"webgl_loader_gltf2",

二進制
examples/models/draco/bunny.drc


+ 135 - 0
examples/webgl_loader_draco.html

@@ -0,0 +1,135 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<title>three.js webgl - loaders - Draco loader</title>
+	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
+	<style>
+		body {
+			font-family: Monospace;
+			background-color: #000;
+			color: #fff;
+			margin: 0px;
+			overflow: hidden;
+		}
+		#info {
+			color: #fff;
+			position: absolute;
+			top: 10px;
+			width: 100%;
+			text-align: center;
+			z-index: 100;
+			display: block;
+		}
+		#info a,
+		.button {
+			color: #f00;
+			font-weight: bold;
+			text-decoration: underline;
+			cursor: pointer
+		}
+	</style>
+</head>
+
+<body>
+	<div id="container"></div>
+	<div id="info">
+		<a href="http://threejs.org" target="_blank">three.js</a> -
+		<a href="https://github.com/google/draco" target="_blank">DRACO</a> loader
+	</div>
+	<script src="../build/three.js"></script>
+	<script src="js/loaders/draco_decoder.js"></script>
+	<script src="js/loaders/DRACOLoader.js"></script>
+	<script>
+
+		var camera, scene, renderer;
+
+		init();
+		animate();
+
+		function init() {
+
+			camera = new THREE.PerspectiveCamera( 35, window.innerWidth / window.innerHeight, 0.1, 15 );
+			camera.position.set( 3, 0.25, 3 );
+
+			scene = new THREE.Scene();
+			scene.background = new THREE.Color( 0x443333 );
+			scene.fog = new THREE.Fog( 0x443333, 1, 4 );
+
+			// Ground
+			var plane = new THREE.Mesh(
+				new THREE.PlaneBufferGeometry( 8, 8 ),
+				new THREE.MeshPhongMaterial( { color: 0x999999, specular: 0x101010 } )
+			);
+			plane.rotation.x = - Math.PI / 2;
+			plane.position.y = 0.03;
+			plane.receiveShadow = true;
+			scene.add(plane);
+
+			// Lights
+			var light = new THREE.HemisphereLight( 0x443333, 0x111122 );
+			scene.add( light );
+
+			var light = new THREE.SpotLight();
+			light.angle = Math.PI / 16;
+			light.penumbra = 0.5;
+			light.castShadow = true;
+			light.position.set( - 1, 1, 1 );
+			scene.add( light );
+
+			var loader = new THREE.DRACOLoader();
+			loader.load( 'models/draco/bunny.drc', function ( geometry ) {
+
+				geometry.computeVertexNormals();
+
+				var material = new THREE.MeshStandardMaterial( { vertexColors: THREE.VertexColors } );
+				var mesh = new THREE.Mesh( geometry, material );
+				mesh.castShadow = true;
+				mesh.receiveShadow = true;
+				scene.add( mesh );
+
+			} );
+
+			// renderer
+			renderer = new THREE.WebGLRenderer( { antialias: true } );
+			renderer.setPixelRatio( window.devicePixelRatio );
+			renderer.setSize( window.innerWidth, window.innerHeight );
+			renderer.gammaInput = true;
+			renderer.gammaOutput = true;
+			renderer.shadowMap.enabled = true;
+			container.appendChild( renderer.domElement );
+
+			window.addEventListener( 'resize', onWindowResize, false );
+
+		}
+
+		function onWindowResize() {
+
+			camera.aspect = window.innerWidth / window.innerHeight;
+			camera.updateProjectionMatrix();
+
+			renderer.setSize( window.innerWidth, window.innerHeight );
+
+		}
+
+		function animate() {
+
+			render();
+			requestAnimationFrame( animate );
+
+		}
+
+		function render() {
+
+			var timer = Date.now() * 0.0003;
+
+			camera.position.x = Math.sin( timer ) * 0.5;
+			camera.position.z = Math.cos( timer ) * 0.5;
+			camera.lookAt( new THREE.Vector3( 0, 0.1, 0 ) );
+
+			renderer.render( scene, camera );
+
+		}
+	</script>
+</body>
+</html>