Three.js光源

news2025/4/8 11:12:01

目录

Three.js入门

Three.js光源

本文我们将研究three.js中的灯光类型和JavaScript中的光源,探索不同的光源设置。我们的目标是全面理解光源设置和类型,比如环境光、半球光、矩形光、方向光、点光源和聚光灯。我们将逐个介绍它们的属性参数和使用方法。

环境光源

  • 环境光会均匀的照亮场景中的所有物体

环境光类似于一个颜色+强度的最简单的参数,材质的shader中会将其直接作为参数+到最终的颜色信息上,不会进行任何空间上的计算。

环境光的属性:

  • color:环境光的颜色;
  • intensity:光源照射的强度。默认值为1;
  • visible:设为 ture(默认值),光源就会打开。设为 false,光源就会关闭。

使用方法:

// 环境光
const ambientLight = new THREE.AmbientLight(0xffffff, 1);
scene.add(ambientLight);

环境光

半球光源

  • 光源直接放置于场景之上,光照颜色从天空光线颜色渐变到地面光线颜色。
  • 使用半球光源可以创建更加贴切自然的光照效果。

如果不使用这种光源,要模拟室外光照,可以添加一个方向光源来模拟太阳,或者添加一个环境光源来为场景提供基础色。但是这都不自然,因为室外不是所有的光照都来自上方,很多都是来自空气,地面的反射和其他物体的反射。

  • 半球光不能投射阴影。

半球光的属性:

  • color从天空发出的光线的颜色;
  • groundColor:从地面发出的光线的颜色
  • intensity:光源照射的强度。默认值为1;
  • position:光源在场景中的位置。默认值为:(0, 100, 0)
  • visible:设为 ture(默认值),光源就会打开。设为 false,光源就会关闭。

颜色的渐变方向和物体与半球光的位置决定的,物体面向半球光源的部分接收color,背向半球光源的部分接收groundColor

使用方法:

// 半球光
const hemisphereLight = new THREE.HemisphereLight(0xff0000, 0xff0000, 1);
hemisphereLight.position.set(0, 10, 0);
scene.add(hemisphereLight);

半球光

矩形区域光源

  • 矩形区域光光源从一个矩形平面上均匀地发射光线。这种光源可以用来模拟像明亮的窗户或者条状灯光光源;
  • 不支持阴影。

矩形区域光的属性:

  • color:环境光的颜色;
  • intensity:光源照射的强度。默认值为1;
  • width: 光源的宽度,默认值为10;
  • height: 光源的高度,默认值为10;
  • visible:设为 ture(默认值),光源就会打开。设为 false,光源就会关闭。

使用方法:

const rectLight = new THREE.RectAreaLight(0xffffff, 2, 4, 4);
rectLight.position.set(0, 2, 0);
rectLight.lookAt(0, 0, 0);
scene.add(rectLight);

矩形区域光

平行光源

  • 平行光是沿着特定方向发射的光。这种光的表现像是无限远,从它发出的光线都是平行的;

    image

  • 平行光可以投射阴影.

平行光的属性:

  • color平行光线的颜色;
  • intensity:光源照射的强度。默认值为1;
  • position:光源在场景中的位置。默认值为:(0, 100, 0)
  • visible:设为 ture(默认值),光源就会打开。设为 false,光源就会关闭。

使用方法:

const parallelLight = new THREE.DirectionalLight(0xffffff, 1);
parallelLight.position.set(10, 10, 0);
parallelLight.castShadow = true;
scene.add(parallelLight);

平行光

如何产生阴影请参考上一篇文章

点光源

  • 和平行光源类似的效果,区别是电光源是从一个点向各个方向发射的光源。

    image

一个常见的例子是模拟一个灯泡发出的光。

点光源的属性:

  • color点光源的颜色;
  • intensity:光源照射的强度。默认值为1;
  • position:光源在场景中的位置。默认值为:(0, 100, 0)
  • visible:设为 ture(默认值),光源就会打开。设为 false,光源就会关闭。

使用方法:

const pointLight = new THREE.PointLight(0xffffff, 5);
pointLight.position.set(0, 3, 0);
scene.add(pointLight);

在这里插入图片描述

聚光灯

  • 光线从一个点沿一个方向射出,随着光线照射的变远,光线圆锥体的尺寸也逐渐增大。

    在这里插入图片描述

聚光灯光源的属性:

  • color点光源的颜色;
  • intensity:光源照射的强度。默认值为1;
  • distance:光源照射的最大距离。默认值为 0(无限远);
  • angle:光线照射范围的角度。默认值为 Math.PI/3;
  • penumbra:聚光锥的半影衰减百分比。默认值为 0;
  • decay:沿着光照距离的衰减量。默认值为 2。

使用方法:

const spotLight = new THREE.SpotLight(0xffffff, 1);
spotLight.position.set(3, 3, 0);
scene.add(spotLight);

聚光灯

光源辅助器

各个光源基本上都有光源辅助器,这些辅助器可以方便的调试和查看效果。

  • 平行光辅助器(DirectionalLightHelper)
  • 半球形光源辅助器(HemisphereLightHelper)
  • 点光源辅助器(PointLightHelper)
  • 聚光灯辅助器(SpotLightHelper)

这些辅助器的使用方法也很简单,一般都构造器函数中传入光源就可以了。例如:

//  聚光灯
const spotLight = new THREE.SpotLight( 0xffffff );
spotLight.position.set( 10, 10, 10 );
scene.add( spotLight );

// 聚光灯辅助器
const spotLightHelper = new THREE.SpotLightHelper( spotLight );
scene.add( spotLightHelper );

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

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

相关文章

深度相机常见技术:深度相机的相位求解

1.1 深度相机概述 深度相机是近几年兴起的新技术,相比较传统的相机,深度相机在功能上添加了一个深度测量,从而更方便准确的感知周围的环境及变化。深度相机有很多的应用场景,在我们日常生活中有很多深度相机的影子。那它可以用来…

在线对对联

对对联的起源可以追溯到中国古代,它与中国文化有着密切的关系。 1. 最早的对对联出现在汉朝,当时称为“对句”。它起源于民间,后来逐渐成为文人雅士的精神寄托。 2. 唐代时,对对联的格式更加规范,并被称为“春联”。它成为春节张贴的主要内容,寓意吉祥。 3. 宋代以后,对对联…

小程序商品如何开启返佣

​越来越多的商家开始意识到小程序平台的潜力和价值。开启分销返佣机制是一种有效的方式,可以吸引更多的用户和合作伙伴,提高销售额和品牌知名度。下面将介绍商城小程序商品如何开启返佣。 1. 开启系统分销设置。在管理员后台->营销设置 点击分销功能…

MYSQL --Austindatabases 历年文章合集

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

高速过孔同进同出后续来了!影响大不大由你们自己说

高速先生成员---黄刚 话说Chris在上篇文章的结尾留下的悬念,其实在上周的答题里,也有不少粉丝猜到了接下来要验证的内容。我们知道,任何两个结构如果距离变近了,容性就会增加,无论是孔和孔,线和线&#xf…

JMeter命令行执行+生成HTML报告

1、为什么用命令行模式 使用GUI方式启动jmeter,运行线程较多的测试时,会造成内存和CPU的大量消耗,导致客户机卡死; 所以一般采用的方式是在GUI模式下调整测试脚本,再用命令行模式执行; 命令行方式支持在…

MySQL(1)

MySQL创建数据库和创建数据表 创建数据库 1. 连接 MySQL mysql -u root -p 2. 查看当前的数据库 show databases; 3. 创建数据库 create database 数据库名; 创建数据库 4. 创建数据库时设置字符编码 create database 数据库名 character set utf8; 5. 查看和显示…

redis入门2-命令

Redis的基本数据类型 redis的基本数据类型(value): string,普通字符串 hash(哈希),适合存储对象 list(列表),按照插入顺序排序,可以由重复的元素 set(无序集合),没有重复的元素 sorted set(有序集合)&…

Spring Boot + Vue3前后端分离实战wiki知识库系统十一--文档管理功能开发三

文档内容的显示: 在上一次https://www.cnblogs.com/webor2006/p/17510360.html文档管理模块还差文档的显示木有完成,所以接下来先将这块模块给收尾了。 增加单独获取内容的接口: 概述: 在前端页面文档查询时,只查询了文…

【开源项目--稻草】Day05

【开源项目--稻草】Day05 1. 显示问题列表1.1 显示问题持续时间 2. 显示问题的标签列表2.1 实现过程 3.显示问题的图片4. 实现分页功能4.1 为什么需要分页(翻页)4.2 实现分页的sql语句4.3 PageHelper的使用控制器的调用和VUE代码的重构分页导航条的配置 1. 显示问题列表 上次课…

LISA:通过大语言模型进行推理分割

论文:https://arxiv.org/pdf/2308.00692 代码:GitHub - dvlab-research/LISA 摘要 尽管感知系统近年来取得了显著的进步,但在执行视觉识别任务之前,它们仍然依赖于明确的人类指令来识别目标物体或类别。这样的系统缺乏主动推理…

csdn崩溃了?每次都卡

反馈给了官方客服也没有响应,最近几周都是这样的高频率的转圈圈!这个入口不受重视?这个对于csdn用户来说,是最最基本的入口 如果CSDN(CSDN.net)崩溃了,可能会对以下方面产生影响: 开…

【perl】报错合集

perl报错合集 (注:可能会不定时更新) 1.Name “main::x” used only once: possible typo at … 1.Name "main::x" used only once: possible typo at ...给某个变量赋值但是从来没有用它,或者变量之只用一次但没有…

前沿分享-100 μAh 微型电池

这是SMD 组件形状的固态锂离子微型电池,容量高达 100Ah,在22年的慕尼黑电子展上出现过。 因为是可重复使用的,未来该产品甚至有机会取代容量更高(例如100 Ah 时)的不可充电硬币电池。 一般应用于超低功率的传感器&…

8.7 作业

1.思维导图 2.写一个函数&#xff0c;获取用户的uid和gid并使用变量接收 #!/bin/bash fun() {uid$(id -u)gid$(id -g) }fun echo $uid $gid 3.整理冒泡排序、选择排序和快速排序的代码 冒泡 #include <myhead.h> void fun(int l,int *arr) {for(int i0;i<l-1;i){f…

【面试题】 本地运行的前端代码,如何让他人访问?

前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 有时候&#xff0c;我前端写好了项目&#xff0c;想要给其他人看一下效果&#xff0c;可以选择将代码部署到test环境&#xff0c;也可以选择让外部通过i…

Linux/centos上如何配置管理samba服务器?

Linux/centos上如何配置管理samba服务器&#xff1f; 1 samba服务相关知识1.1 SMB协议1.2 samba工作原理1.2.1 相关进程1.2.2 samba工作流程1.2.3 samba功能 2 samba服务器安装2.1 利用光驱安装2.2 利用光盘映射文件 3 启动与停止samba服务4 配置samba服务器4.1 samba主配置文件…

睡眠助手/白噪音/助眠夜曲微信小程序源码下载 附教程

睡眠助手/白噪音/助眠夜曲微信小程序源码 附教程 支持分享海报 支持暗黑模式 包含了音频数据 最近很火的助眠小程序&#xff0c;前端vue&#xff0c;可以打包H5&#xff0c;APP&#xff0c;小程序 后台可以设置流量主广告&#xff0c;非常不错的源码 代码完整 完美运营 搭配无…

用神经网络玩转数据聚类:自编码器的原理与实践

一、什么是自编码器 自编码器是一种神经网络模型&#xff0c;它可以学习输入数据的低维表示&#xff0c;也称为隐层特征或编码。自编码器由两部分组成&#xff1a;编码器和解码器。编码器将输入数据映射到隐层特征&#xff0c;解码器将隐层特征重构为输入数据&#xff0c;使其…

自动方向识别式 LSF型电平转换芯片

大家好&#xff0c;这里是大话硬件。 今天这篇文章想分享一下电平转换芯片相关的内容。 其实在之前的文章分享过一篇关于电平转换芯片的相关内容&#xff0c;具体可以看链接《高速电路逻辑电平转换设计》。当时这篇文章也是分析的电平转换芯片&#xff0c;不过那时候更多的是…