Threejs制作窗户透亮效果

        应该经常看到这样的图片,昏暗的屋里,阳光通过窗户照射进来,将照射到的地方照亮,没有照到的地方依然昏暗,

Threejs提供了一种特殊的灯光用来实现上图中的效果叫RectAreaLight,他是一种平面光源,平面光光源从一个矩形平面上均匀地发射光线。这种光源可以用来模拟像明亮的窗户或者条状灯光光源。下面一起实践一下:

首先需要创建基础的场景,包括:场景,相机,渲染器等。这部分之前已经有很多,不再赘述了,然后我们需要在场景中放置一个box,用来测试灯光的效果,

    initBox(){
      let geometry = new THREE.BoxGeometry(10,10,10);//创建一个几何体
      let material = new THREE.MeshStandardMaterial ({color:'#FF0000'});//创建材质
      this.box = new THREE.Mesh(geometry, material);//创建网格模型
      this.box.position.set(0,0,0)
      this.scene.add(this.box);//添加到场景中
    },

然后创建RectAreaLight,为了更直观的查看灯光的位置,在添加上RectAreaLightHelper,这是一个专门描绘大小和形状的辅助工具。

    initRectAreaLight(){
      const rectLight = new THREE.RectAreaLight( 0xffffff, 1,  10, 10 );
      rectLight.position.set( 50, 50, 0 );
      rectLight.lookAt( 0, 0, 0 );
      this.scene.add( rectLight )
      const rectLightHelper = new RectAreaLightHelper( rectLight );
      this.scene.add( rectLightHelper );
    },

最终效果如下,上方的白色是窗户,下面的盒子是被照射到的,可以看到盒子面对窗户的方向是亮的,背对着的是黑色,和上面图效果有差距,但是原理是这样子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

baker_zhuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值