Threejs制作窗户透亮效果

简介: 这篇文章讲解了如何在Three.js中制作窗户的透亮效果,包括设置透明材质和光照以实现逼真的窗户渲染效果的技术细节。

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

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 );
    },

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

相关文章
Threejs实现模拟河流,水面水流,水管水流,海面
Threejs实现模拟河流,水面水流,水管水流,海面
3409 0
Threejs实现模拟河流,水面水流,水管水流,海面
Threejs实现下雨,下雪,阴天,晴天,火焰
Threejs实现下雨,下雪,阴天,晴天,火焰
2539 0
Threejs实现下雨,下雪,阴天,晴天,火焰
|
数据可视化 定位技术
three.js实现烟雾缭绕效果
前言 大家好!我是Fly哥,最近接广告的接的有点多, 感谢大家还是一如既往的支持我!respect, 前几天我在朋友圈分享了一个烟雾缭绕的效果。很多小伙伴都表示非常感兴趣,有的同学说用到了噪声, 有的同学说用到了着色器,还有更过分说用到了ps, 胖虎竟然无语凝噎。其实都是就是简单的贴图。配合一点想象力。我们先看下效果: 然后我就发了一条朋友圈,问这个像什么?? 有的说 云层, 有的说云墨,有的说雾霭, 其实都不是, 我想做的是烟雾。好的话不不多说!, 本篇文章阅读大概5分钟。不耽误大家太多时间,主要是介绍思路, 说太多也没啥意义。如果你对three.js 还没有一点了解都没有,
three.js实现烟雾缭绕效果
Threejs实现天空盒,全景场景,地面草地
Threejs实现天空盒,全景场景,地面草地
1817 0
Threejs实现天空盒,全景场景,地面草地
Threejs实现模拟管道液体流动
Threejs实现模拟管道液体流动
3320 0
Threejs实现模拟管道液体流动
|
开发框架
threejs做特效:实现物体的发光效果-EffectComposer详解!
【8月更文挑战第7天】实现物体的发光效果-EffectComposer详解!
2285 6
threejs做特效:实现物体的发光效果-EffectComposer详解!
|
容器
ThreeJs同一个场景多个相机的显示
这篇文章讲解了如何在Three.js中实现多相机功能,通过创建和布置多个相机及渲染器,从而能够在同一场景中从不同角度观察3D模型。
337 1
Threejs创建天空和太阳
这篇文章讲解了如何使用Three.js中的Sky组件来创建真实的天空与太阳效果,包括调整天空的颜色、太阳的位置以及实现大气散射等技巧。
519 3
Threejs使用CubeCamera实现环境映射
这篇文章详细介绍了如何在Three.js中使用CubeCamera来实现环境映射,包括创建CubeCamera、设置反射材质以及实时更新渲染结果的具体步骤。
337 3
Threejs用切线实现模型沿着轨道行驶
这篇文章详细介绍了如何使用Three.js让一个模型沿着预定的曲线路径移动,并保持模型的方向始终沿着路径的切线方向,提供了实现这一效果的具体代码和步骤。
719 1
Threejs用切线实现模型沿着轨道行驶