2
0
Эх сурвалжийг харах

Examples: Edge Split modifier example clean up.

Mr.doob 4 жил өмнө
parent
commit
9c691162fa

+ 1 - 0
examples/files.json

@@ -179,6 +179,7 @@
 		"webgl_math_obb",
 		"webgl_math_obb",
 		"webgl_math_orientation_transform",
 		"webgl_math_orientation_transform",
 		"webgl_mirror",
 		"webgl_mirror",
+		"webgl_modifier_edgesplit",
 		"webgl_modifier_simplifier",
 		"webgl_modifier_simplifier",
 		"webgl_modifier_subdivision",
 		"webgl_modifier_subdivision",
 		"webgl_modifier_tessellation",
 		"webgl_modifier_tessellation",

BIN
examples/screenshots/webgl_modifier_edgesplit.jpg


+ 18 - 15
examples/webgl_modifier_edge_spliter.html → examples/webgl_modifier_edgesplit.html

@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <!DOCTYPE html>
 <html lang="en">
 <html lang="en">
 	<head>
 	<head>
-		<title>three.js webgl - modifier - Edge split modifier</title>
+		<title>three.js webgl - modifier - Edge Split modifier</title>
 		<meta charset="utf-8">
 		<meta charset="utf-8">
 		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
 		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
 		<link type="text/css" rel="stylesheet" href="main.css">
 		<link type="text/css" rel="stylesheet" href="main.css">
@@ -23,8 +23,8 @@
 			let modifier, mesh, baseGeometry;
 			let modifier, mesh, baseGeometry;
 
 
 			const params = {
 			const params = {
-				smoothShading: false,
-				edgeSplit: false,
+				smoothShading: true,
+				edgeSplit: true,
 				cutOffAngle: 20,
 				cutOffAngle: 20,
 			};
 			};
 
 
@@ -37,7 +37,7 @@
 				info.style.top = '10px';
 				info.style.top = '10px';
 				info.style.width = '100%';
 				info.style.width = '100%';
 				info.style.textAlign = 'center';
 				info.style.textAlign = 'center';
-				info.innerHTML = '<a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> - Indexed geometry edge splitting';
+				info.innerHTML = '<a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> - Edge Split modifier';
 				document.body.appendChild( info );
 				document.body.appendChild( info );
 
 
 				renderer = new THREE.WebGLRenderer( { antialias: true } );
 				renderer = new THREE.WebGLRenderer( { antialias: true } );
@@ -60,7 +60,7 @@
 				scene.add( new THREE.HemisphereLight( 0xffffff, 0x444444 ) );
 				scene.add( new THREE.HemisphereLight( 0xffffff, 0x444444 ) );
 
 
 				new OBJLoader().load(
 				new OBJLoader().load(
-					'./models/obj/cerberus/cerberus.obj',
+					'./models/obj/cerberus/Cerberus.obj',
 					function ( group ) {
 					function ( group ) {
 
 
 						// Retrieve Cerberus vertex positions only
 						// Retrieve Cerberus vertex positions only
@@ -71,8 +71,6 @@
 						modifier = new EdgeSplitModifier();
 						modifier = new EdgeSplitModifier();
 						baseGeometry = modelGeometry;
 						baseGeometry = modelGeometry;
 
 
-						console.log( "Loaded" );
-
 						mesh = new THREE.Mesh( getGeometry(), new THREE.MeshStandardMaterial() );
 						mesh = new THREE.Mesh( getGeometry(), new THREE.MeshStandardMaterial() );
 						mesh.material.flatShading = ! params.smoothShading;
 						mesh.material.flatShading = ! params.smoothShading;
 						mesh.rotateY( - Math.PI / 2 );
 						mesh.rotateY( - Math.PI / 2 );
@@ -110,16 +108,21 @@
 
 
 			function getGeometry() {
 			function getGeometry() {
 
 
-				let g;
+				let geometry;
+
+				if ( params.edgeSplit ) {
+
+					geometry = modifier.modify( baseGeometry, params.cutOffAngle * Math.PI / 180 );
+
+				} else {
+
+					geometry = BufferGeometryUtils.mergeVertices( baseGeometry );
 
 
-				if ( params.edgeSplit )
-					g = modifier.modify( baseGeometry, params.cutOffAngle * Math.PI / 180 );
-				else
-					g = BufferGeometryUtils.mergeVertices( baseGeometry );
+				}
 
 
-				g.computeVertexNormals();
+				geometry.computeVertexNormals();
 
 
-				return g;
+				return geometry;
 
 
 			}
 			}
 
 
@@ -128,7 +131,7 @@
 
 
 				mesh.geometry = getGeometry();
 				mesh.geometry = getGeometry();
 
 
-				mesh.material.flatShading = ! params.smoothShading;
+				mesh.material.flatShading = params.smoothShading === false;
 				mesh.material.needsUpdate = true;
 				mesh.material.needsUpdate = true;
 
 
 				render();
 				render();