threejs 光源和漫反射材质解析

本文介绍了如何使用Three.js中的漫反射材质和光源(如AmbientLight和DirectionalLight)来优化立方体的视觉效果,使其更接近现实世界。作者展示了如何结合场景、相机和渲染器,以及具体代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

根据上一篇文章threejs入门了解到threejs的三要素:场景、相机和渲染器,我们也通过这三要素渲染了一个简单的立方体,但是这个立方体整体没有什么质感,不接近现实中的物体,接下来我们开始优化这个三维画面

漫反射材质

为了更贴近于现实,我们需要将物体材质从基础材质切换为漫反射材质

const material = new THREE.MeshLambertMaterial({ color: 0xff0000 });

再跟我们上一篇的创建物体和创建网格结合起来

const geometry = new THREE.BoxGeometry(100, 100, 100);
const mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);

光源

切换到漫反射材质之后,发现界面上黑乎乎一片,什么都没有了,那是因为我们现实生活中需要光源,没有光源什么也看不到,在three3d的世界里同样不能缺少光源

新建一个环境光

const ambientLight = new THREE.AmbientLight(0xffffff, 0.4)

AmbientLight构造函数有两个参数,颜色和光强

  • color 颜色rgb数值,默认 0xffffff
  • intensity 光照强度,默认 1

然后将我们初始化的光源添加到场景中

scene.add(ambientLight)

新建一个平行光

有了环境光之后,发现层次还不明显,由此,我们需要添加一个平行光

const directionalLight = new THREE.DirectionalLight(0xffffff, 1.0)
scene.add(directionalLight)

在这里插入图片描述

这样我们发现,层次感就有了

当然,我们可以让他更加有层次感

directionalLight.position.set(150,300,600)

这样就比较接近于真实的物体了
在这里插入图片描述

完整代码:

const scene = new THREE.Scene();  // 场景
const camera = new THREE.PerspectiveCamera(50, 1, 0.1, 2000);// 透视相机
const renderer = new THREE.WebGLRenderer();   // 渲染器
renderer.setSize(500, 500);    // 设置渲染器的大小为窗口的内宽度,也就是内容区的宽度
// 将物体放入场景中
const geometry = new THREE.BoxGeometry(100, 100, 100);
const material = new THREE.MeshLambertMaterial({ color: 0xff0000 });
const mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
// 创建一个环境光
const ambientLight = new THREE.AmbientLight(0xffffff, 0.4)
scene.add(ambientLight)
camera.position.set(200, 200, 200)
camera.lookAt(0,0,0)

const directionalLight = new THREE.DirectionalLight(0xffffff, 1.0)
scene.add(directionalLight)
directionalLight.position.set(150,300,600)
// 执行渲染程序
renderer.render(scene, camera)
document.body.appendChild(renderer.domElement);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值