Threejs制作窗户透亮效果

news2024/9/20 8:05:12

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2085797.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

私域电商平台如何去选择适合自己的商业模式!

大家好 我是一家软件开发公司的产品经理 吴军 今天我给大家讲一下如何选择合适自己平台的商业模式 以及怎么样去进行商业模式的组合 做生意,找到合适的商业模式就像找到一把打开成功大门的钥匙。下面是一些简单易懂的建议,帮助您找到最适合您平台的商…

msvcp110.dll 文件丢失怎么处理?msvcp110.dll 科学分析与解决方法

曾遇到因 "msvcp110.dll 文件丢失" 错误而无法启动应用程序的情况吗?这类问题通常出现在尝试打开使用 Microsoft Visual C 2012 开发的软件时。msvcp110.dll是一个属于 Microsoft Visual C Redistributable for Visual Studio 2012 的重要组件&#xff0c…

清爽舒服的蓝牙耳机有哪些?四款佩戴舒适的开放式耳机推荐

作为耳机重度患者来说,如果是夏天出行想要不黏腻又舒服干爽的耳机,那我会很推荐蓝牙耳机中的开放式耳机。 因为开放式耳机使用起来特别干爽舒服,‌这主要是因为它的开放式设计,无需入耳,能够让空气在耳道中自由流通&a…

超详细超实用!!!java开发之从零开始搭建项目(四)

云风网 云风笔记 云风知识库 这里采用IntelliJ IDEA编辑器以及Java平台上的Spring Boot开源框架作为接触java的基础 一、创建项目 添加Spring web依赖 项目创建成功 二、将项目添加为maven项目 Maven是一个用于构建和管理Java项目的工具,它提供了依赖管理、构建管…

在线考试系统应用场景分析

在线考试系统作为一种现代教育技术,正逐渐成为教育和培训领域的重要工具。其应用场景广泛,包括但不限于学校教育、企业培训、职业资格认证、在线竞赛和个人自学等。 学校教育:在线考试系统可以为学校提供全面的在线教育解决方案,…

综合在线监测装置:输电线路检测的科技魅力

传统的单一型的监控装置虽然在一定程度上能够提供实时监控功能,但它们往往存在一些局限性,特别是在电网架空输电线路的监控方面。以下是传统在线监测装置的一些不足之处,以及鼎信智慧科技综合型在线监测系统的优势: 传统视频监控…

基于ZYNQ SOC的软件无线电处理平台

板载SOC实时处理器:XC7Z020-2CLG484I板载2片AD9361射频收发芯片,兼容AD80305具有1路千兆以太网口具有1个USB串口、1个USB OTG、1个SD卡ADC/DAC采集位宽:12位2路TX、2路RX,可实现全双工或者半双工 基于Xilinx ZYNQ SOC的软件无线电…

如何处理段错误

在调试代码时,我们会遇到一些状况百出的问题,尤其是段错误,让人头大: 造成段错误的原因主要是内存泄漏,操作空指针; 在很长的代码中,去查找问题是很困难的,这里可以在Linux的ubunt…

第4章 二叉树和BST

树与二叉树 1. 基本概念 树是一种非线性结构,其严格的数学定义是:如果一组数据中除了第一个节点(第一个节点称为根节 点,没有直接前驱节点)之外,其余任意节点有且仅有一个直接前驱,有零个或多…

[报错] nvcc -V 找不到

报错: nvcc : 无法将“nvcc”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,ObjectNotFound: (nvcc:String) [], CommandNotFoundExceptionFullyQualifiedErrorId : CommandNotFoundException 找不到 nvcc -V,试过…

C语言基础(二十四)

堆栈(Stack)是一种遵循后进先出(LIFO, Last In First Out)原则的数据结构。堆栈的主要操作包括压栈(Push)、弹栈(Pop)、查看栈顶元素(Peek/Top)等。C语言标准…

Qt折线图,x轴是时间,y轴是int

头文件 #include <QWidget> #include <QTimer> #include <QtCharts/QChartView>//显示图表 #include <QtCharts/QLineSeries>//线系列 #include <QtCharts/QSplineSeries> #include <QtCharts/QValueAxis> #include <QDateTime> #i…

[RIS]GRES: Generalized Referring Expression Segmentation

1. BaseInfo TitleGRES: Generalized Referring Expression SegmentationAdresshttps://arxiv.org/pdf/2306.00968Journal/TimeCVPR2023Author南洋理工Codehttps://github.com/henghuiding/ReLARead20240829TableVisonLanguage 2. Creative Q&A 考虑结果多目标和无目标&…

skywalking接入nginx

下载Nginx的插件 GitHub - apache/skywalking-nginx-lua: The Nginx Lua agent for Apache SkyWalking ~]# cd skywalking-nginx-lua-master/ skywalking-nginx-lua-master]# ls CHANGES.md examples lib LICENSE licenses Makefile mvnw NOTICE README.md RELEASING…

苹果手机系统修复如何操作,几种iOS系统修复办法分享

苹果手机作为市场上的热门产品&#xff0c;其系统稳定性和用户体验一直备受赞誉。然而&#xff0c;即使是如此优秀的系统&#xff0c;也难免会遇到一些问题&#xff0c;如系统崩溃、应用闪退、无限重启等。当这些问题出现时&#xff0c;如何进行系统修复成为了许多用户关心的问…

@antv/x6 自定义节点Safari兼容问题处理

背景 为什么选择antv/x6&#xff1f; 由于x6提供了一套强大友好的流程图API&#xff0c;并且支持使用 React、Vue 组件来渲染节点。这样可以使用组件开发的方式去快速完成卡片开发&#xff0c;并实现更加复杂的业务逻辑。遇到了Safari的兼容问题 由于x6自定义节点基于SVG fore…

Milvus向量数据库-数据备份与恢复

前言 随着Milvus版本的持续迭代&#xff0c;越来越多的用户将其作为构建生产环境的向量数据服务使用。作为数据服务使用&#xff0c;其中的运维、数据安全、容灾备份自然是用户最关心且不容有失的需求。为解决这一需求&#xff0c;Milvus-backup项目工具应运而生。 Milvus-ba…

docker实战演练

一.docker简介 二.docker部署 1.解压并安装所需要的软件 [rootdocker-node1 ~]# ls anaconda-ks.cfg docker.tar.gz mario.tar.gz busybox-latest.tar.gz game2048.tar.gz nginx-latest.tar.gz [rootdocker-node1 ~]# tar zxf docker.tar.gz [rootdocker-node1 …

cad转换dxf怎么转换?学会这5种方法轻松解决cad难题

在CAD领域中&#xff0c;DXF格式因其良好的兼容性和广泛的应用&#xff0c;成为了许多设计师和工程师的首选交换格式。然而&#xff0c;CAD文件很多默认的都是dwg格式&#xff0c;那么如何将CAD文件转换为DXF格式&#xff0c;很多小伙伴不是很清楚&#xff0c;下面给大家分享5种…

想学gis开发,java和c++哪个比较好?

java与C的应用场景不同&#xff0c;究竟选择谁&#xff0c;应该由开发者的兴趣方向来决定。 你选择Java&#xff0c;意味着以后的业务方向就是偏后台服务开发&#xff0c;如果你非得说我用java也可以写界面&#xff0c;对不起&#xff0c;别人不会。不管是从项目还是产品的角度…