WebGL中,什么情况下不设置Lights也能看到物体?

刚接触 WebGL 不久,昨天学习了 Lights 方面的知识。

在练习中,不设置 Lights 的话整个场景都是黑的,不可见。

但再次看入门的示例代码(一个围绕 x , y 轴 旋转的绿色正方体)时,发现其中并未设置 Lights ,但仍然可以看到渲染的结果,请问这是什么原因?


<html>
	<head>
		<title>My first Three.js app</title>
		<style>
			body { margin: 0; }
			canvas { width: 100%; height: 100% }
		</style>
	</head>
	<body>
		<script src="//wow.techbrood.com/libs/three.r73.js"></script>
		<script>
			var scene = new THREE.Scene();
			var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );

			var renderer = new THREE.WebGLRenderer();
			renderer.setSize( window.innerWidth, window.innerHeight );
			document.body.appendChild( renderer.domElement );

			var geometry = new THREE.BoxGeometry( 1, 1, 1 );
			var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
			var cube = new THREE.Mesh( geometry, material );
			scene.add( cube );

			camera.position.z = 5;

			var render = function () {
				requestAnimationFrame( render );

				cube.rotation.x += 0.1;
				cube.rotation.y += 0.1;

				renderer.render(scene, camera);
			};

			render();
		</script>
	</body>
</html>


qq_OkamiShiranu_0
浏览 1254回答 1
1回答

qq_OkamiShiranu_0

好吧...已经查到了,是和 Material 有关系。MeshBasicMaterial 无需光照就能显示,其余类型的材质都需要借助光照来显色。
打开App,查看更多内容
随时随地看视频慕课网APP