当前位置: 首页 > news >正文

105. 聚光源SpotLight

入门部分给大家介绍过平行光DirectionalLight、点光源PointLight、环境光AmbientLight,下面给大家介绍一个新的光源对象,也就是聚光源SpotLight

创建聚光源SpotLight

聚光源可以认为是一个沿着特定方会逐渐发散的光源,照射范围在三维空间中构成一个圆锥体。

// 聚光源
// 0xffffff:光源颜色
// 1.0:光照强度intensity
const spotLight = new THREE.SpotLight(0xffffff,1.0);
scene.add(spotLight);//光源添加到场景中

光照强度也可以不通过THREE.SpotLight参数2设置,直接通过光照强度属性.intensity设置。

spotLight.intensity = 1.0;//光照强度

聚光源发散角度.angle

通过属性.angle可以设置聚光源发散角度,和目标.target两个属性来实现。

// 设置聚光光源发散角度
spotLight.angle = Math.PI / 6;//光锥角度的二分之一

光源衰减

生活中聚光源,比如台灯、手电筒之类,随机距离的改变,光线会衰减,越来越弱,.decay默认值是2.0,如果你不希望衰减可以设置为0.0

spotLight.decay = 0.0;//设置光源不随距离衰减

如果使用默认衰减2.0,对于部分threejs新版本,有时候你可能看不到光源效果,这时候可以把光照强度加强,如果你的版本不影响,就不用加强光照强度(根据版本情况灵活对应)。

// 你可以对比不同光照强度明暗差异(传播同样距离)
spotLight.intensity = 1000.0;//光照强度
spotLight.intensity = 5000.0;//光照强度

聚光源位置.position

聚光源SpotLight的父类是LightLight的父类是Object3D,聚光源SpotLight会继承父类Object3D的位置属性.position

// 设置聚光光源位置
spotLight.position.set(0, 50, 0);

聚光源目标对象.target

聚光源目标对象.target和光源的位置.position共同确定聚光源照射方向。

浏览器控制台打印聚光源目标对象.target属性,可以看到属性值是一个模型对象Object3D

console.log('聚光源指向目标',spotLight.target);

聚光源目标对象属性的位置通过属性值Object3D.position属性设置。

// spotLight.target是一个模型对象Object3D,默认在坐标原点
spotLight.target.position.set(50,0,0);
//spotLight.target添加到场景中.target.position才会起作用
scene.add(spotLight.target);

聚光源辅助对象SpotLightHelper

// 聚光源辅助对象,可视化聚光源
const spotLightHelper = new THREE.SpotLightHelper(spotLight,0xffffff)
scene.add(spotLightHelper);
http://www.lryc.cn/news/471451.html

相关文章:

  • 系统接口权限拦截器,获取用户信息存储
  • Chromium HTML5 新的 Input 类型color 对应c++
  • 问:SQL中的通用函数及用法?
  • .NET Core WebApi第6讲:WebApi的前端怎么派人去拿数据?(区别MVC)
  • Chromium HTML5 新的 Input 类型date 对应c++
  • ZooKeeper的应用场景:深入探讨分布式系统中的多样化应用
  • 【Vue3】第四篇
  • Chromium HTML5 新的 Input 类型tel对应c++
  • JVM—类加载器、双亲委派机制
  • 笔试题 求空格分割的英文句子中,最大单词长度。
  • 【笔记】大模型长度外推技术 NTK-Aware Scaled RoPE
  • 前端 eslint 配置,以及在git提交之前自动format
  • 2024.10.9华为留学生笔试题解
  • 利用ADPF性能提示优化Android应用体验
  • 论文阅读 - Pre-trained Online Contrastive Learning for Insurance Fraud Detection
  • 【最全基础知识2】机器视觉系统硬件组成之工业相机镜头篇--51camera
  • 虚拟机WIN7安装PADS VX24 出现脚本故障 IPW213
  • Java正则表达式详解万字笔记内容丰富
  • 文件属性与目录
  • 5G 基站SCTP
  • MFC的SendMessage与PostMessage的区别
  • 学习虚幻C++开发日志——基础案例(持续更新中)
  • 【CUDA代码实践03】m维网格n维线程块对二维矩阵的索引
  • VSCode Qt6安装OpenSSL
  • JAVA学习-练习试用Java实现“定义一个用户类,包含用户名和密码”
  • 大数据之VIP(Virtual IP,虚拟IP)负载均衡
  • 鸿蒙网络编程系列38-Web组件文件下载示例
  • Cisco Packet Tracer 8.0 路由器的基本配置和Telnet设置
  • Flink系列之:学习理解通过状态快照实现容错
  • Linux 读者写者模型