Three.js中的光照

这一节主要讲光照。有四种光,第一种背景光,也叫环境光,这个开启后能看出一个物体昏暗表面是没有立体感的。第二种是平行光源,类似于现实中的太阳光照,如下图所示,太阳光从无限远的地方打过来,照射到物体时已经变成平行光了,这个就很明显有明暗面,朝向光源的方向就是明的,背向就是暗的。
.在这里插入图片描述

第三种是点光源,点光源类似于在一个位置加了一个光源,它可以向它的四面八方发射光照,一般的位置设置成相机的位置一致,同样物体有明暗面,跟光源的位置有关系。如下图所示。
在这里插入图片描述
第四种是聚光灯,跟点光源不同的是,光线被聚在一起,向一个方向照射物体。有点类似夜晚开一个灯。
在这里插入图片描述

然后我们画了一个白色的球体,开启了背景光,平行光源,还有点光源的情况下的样子,如下图所示。这个就一个很明显的立体感了。一般你做项目的时候这三种光源足够了。
在这里插入图片描述
我们看下代码部分。画了一个地面网格的部分。

	let helper = new THREE.GridHelper( 1000, 40, 0x303030, 0x303030 );	
				helper.position.y = - 75;	
	scene.add( helper );

然后是绘制了一个白色的球体,0xdddddd&#x

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Three.js添加光照效果,需要使用光源对象和材质属性。下面是一个简单的示例代码,演示如何在场景添加点光源和平行光源的光照效果: ```javascript // 创建场景 var scene = new THREE.Scene(); // 创建相机 var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); camera.position.z = 5; // 创建渲染器 var renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); // 创建几何体 var geometry = new THREE.BoxGeometry(); var material = new THREE.MeshPhongMaterial({ color: 0x00ff00 }); // 使用Phong材质 var cube = new THREE.Mesh(geometry, material); scene.add(cube); // 创建点光源 var pointLight = new THREE.PointLight(0xffffff, 1); pointLight.position.set(2, 2, 2); scene.add(pointLight); // 创建平行光源 var directionalLight = new THREE.DirectionalLight(0xffffff, 1); directionalLight.position.set(0, 1, 0); scene.add(directionalLight); // 渲染场景 function animate() { requestAnimationFrame(animate); // 物体旋转 cube.rotation.x += 0.01; cube.rotation.y += 0.01; renderer.render(scene, camera); } animate(); ``` 在上述代码,我们使用了`MeshPhongMaterial`作为几何体的材质,这是一种能够产生光照效果的材质。然后,我们创建了一个点光源和一个平行光源,分别使用`PointLight`和`DirectionalLight`。最后,通过调用`render`方法渲染场景。 这只是一个简单的例子,Three.js还支持其他类型的光源和更多高级的光照特性。你可以根据自己的需求进一步探索和调整光照效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值