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

three.js 灯光

环境光探针(AmbientLightProbe)

光照探针是一种在3D场景中添加光源的另一种方法。 AmbientLightProbe 是场景中单个环境光的光照估算数据。 有关光照探针的更多信息,请转到 LightProbe 。

构造函数

AmbientLightProbe( color : Color, intensity : Float )

color - (可选)一个表示颜色的 Color 的实例、字符串或数字。
intensity - (可选)光照探针强度的数值。默认值为1。

创建一个新的AmbientLightProbe。

平行光(DirectionalLight)

平行光是沿着特定方向发射的光。这种光的表现像是无限远,从它发出的光线都是平行的。常常用平行光来模拟太阳光 的效果; 太阳足够远,因此我们可以认为太阳的位置是无限远,所以我们认为从太阳发出的光线也都是平行的。

平行光可以投射阴影 - 跳转至 DirectionalLightShadow 查看更多细节。

关于位置、目标和旋转说明

Three.js 的平行光常见的困惑是设置旋转没有效果。这是因为 three.js 的平行光类似与其他引擎的"目标平行光"。

这意味着它的方向是从一个平行光的位置 position 到 target的位置。 (而不是一个只有旋转分量的'自由平行光')。

这样做的原因是为了让光线投射阴影。 - the shadow 摄像机需要一个位置来计算阴影。

// White directional light at half intensity shining from the top.
const directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 );
scene.add( directionalLight );

构造器

DirectionalLight( color : Integer, intensity : Float )

color - (可选参数) 16进制表示光的颜色。 缺省值为 0xffffff (白色)。
intensity - (可选参数) 光照的强度。缺省值为1。

创建一个新的 DirectionalLight。

属性

公共属性请查看基类 Light。

.castShadow : Boolean

如果设置为 true 该平行光会产生动态阴影。 警告: 这样做的代价比较高而且需要一直调整到阴影看起来正确. 查看 DirectionalLightShadow 了解详细信息。该属性默认为 false

.position : Vector3

假如这个值设置等于 Object3D.DefaultUp (0, 1, 0),那么光线将会从上往下照射。

.shadow : DirectionalLightShadow

这个 DirectionalLightShadow 对象用来计算该平行光产生的阴影。

.target : Object3D

平行光的方向是从它的位置到目标位置。默认的目标位置为原点 (0,0,0)
注意: 对于目标的位置,要将其更改为除缺省值之外的任何位置,它必须被添加到 scene 场景中去。

scene.add( light.target );

这使得属性target中的 matrixWorld 会每帧自动更新。

它也可以设置target为场景中的其他对象(任意拥有 position 属性的对象), 示例如下:

const targetObject = new THREE.Object3D();
scene.add(targetObject);
light.target = targetObject;

完成上述操作后,平行光现在就可以追踪到目标对像了。

方法

公共方法请查看基类 Light。

.copy ( source : DirectionalLight ) : DirectionalLight

复制 source 的值到这个平行光源对象。

半球光(HemisphereLight)

光源直接放置于场景之上,光照颜色从天空光线颜色渐变到地面光线颜色。
半球光不能投射阴影。

const light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );
scene.add( light );

构造器(Constructor)

HemisphereLight( skyColor : Integer, groundColor : Integer, intensity : Float )

skyColor - (可选参数) 天空中发出光线的颜色。 缺省值 0xffffff。
groundColor - (可选参数) 地面发出光线的颜色。 缺省值 0xffffff。
intensity - (可选参数) 光照强度。 缺省值 1。

创建一个半球光。

属性(Properties)

公共属性请查看基类Light。

.castShadow : Boolean

该参数在构造时被设置为 undefined 因为半球光不能投射阴影。

.color : Float

在构造时传递的天空发出光线的颜色。 默认会创建 Color 并设置为白色(0xffffff)。

.groundColor : Float

在构造时传递的地面发出光线的颜色。 默认会创建 Color 并设置为白色(0xffffff)。

.position : Vector3

假如这个值设置等于 Object3D.DefaultUp (0, 1, 0),那么光线将会从上往下照射。

方法(Methods)

公共方法请查看基类 Light。

.copy ( source : HemisphereLight ) : HemisphereLight

从source复制 color, intensity 和 groundColor 的值到当前半球光对象中。

点光源(PointLight)

从一个点向各个方向发射的光源。一个常见的例子是模拟一个灯泡发出的光。
 

const light = new THREE.PointLight( 0xff0000, 1, 100 );
light.position.set( 50, 50, 50 );
scene.add( light );

构造器(Constructor)

PointLight( color : Integer, intensity : Float, distance : Number, decay : Float )

color - (可选参数)) 十六进制光照颜色。 缺省值 0xffffff (白色)。
intensity - (可选参数) 光照强度。 缺省值 1。

distance - 这个距离表示从光源到光照强度为0的位置。 当设置为0时,光永远不会消失(距离无穷大)。缺省值 0.
decay - 沿着光照距离的衰退量。缺省值 1。 在 physically correct 模式中,decay = 2。

创建一个新的点光源(PointLight)。

属性(Properties)

公共属性请查看基类Light。

.decay : Float

沿着光照距离的衰减量
在 physically correct 模式下,decay 设置为等于2将实现现实世界的光衰减。
缺省值为 1

.distance : Float

如果非零,那么光强度将会从最大值当前灯光位置处按照距离线性衰减到0。 缺省值为 0.0

.power : Float

光功率
在 physically correct 模式中, 表示以"流明(光通量单位)"为单位的光功率。 缺省值 - 4Math.PI

该值与 intensity 直接关联

power = intensity * 4π

修改该值也会导致光强度的改变。

.shadow : PointLightShadow

PointLightShadow用与计算此光照的阴影。

此对象的摄像机被设置为 fov 为90度,aspect为1, 近裁剪面 near 为0,远裁剪面far 为500的透视摄像机 PerspectiveCamera。

方法(Methods)

公共方法请查看基类 Light。

.copy ( source : PointLight ) : PointLight

将所有属性的值从源 source 复制到此点光源对象。

平面光光源(RectAreaLight)

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

const width = 10;
const height = 10;
const intensity = 1;
const rectLight = new THREE.RectAreaLight( 0xffffff, intensity,  width, height );
rectLight.position.set( 5, 5, 0 );
rectLight.lookAt( 0, 0, 0 );
scene.add( rectLight )
rectLightHelper = new THREE.RectAreaLightHelper( rectLight );
scene.add( rectLightHelper );

构造器(Constructor)

RectAreaLight( color : Integer, intensity : Float, width : Float, height : Float )

color - (可选参数) 十六进制数字表示的光照颜色。缺省值为 0xffffff (白色)
intensity - (可选参数) 光源强度/亮度 。缺省值为 1。
width - (可选参数) 光源宽度。缺省值为 10。
height - (可选参数) 光源高度。缺省值为 10。

创建一个新的平面光。

属性(Properties)

公共属性请查看基类Light。

方法(Methods)

公共方法请查看基类 Light。

.copy ( source : RectAreaLight ) : RectAreaLight

将所有属性的值从源 source 复制到此平面光光源对象。

聚光灯(SpotLight)

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

// white spotlight shining from the side, casting a shadow
const spotLight = new THREE.SpotLight( 0xffffff );
spotLight.position.set( 100, 1000, 100 );
spotLight.castShadow = true;
spotLight.shadow.mapSize.width = 1024;
spotLight.shadow.mapSize.height = 1024;
spotLight.shadow.camera.near = 500;
spotLight.shadow.camera.far = 4000;
spotLight.shadow.camera.fov = 30;
scene.add( spotLight );

构造器(Constructor)

SpotLight( color : Integer, intensity : Float, distance : Float, angle : Radians, penumbra : Float, decay : Float )

color - (可选参数) 十六进制光照颜色。 缺省值 0xffffff (白色)。
intensity - (可选参数) 光照强度。 缺省值 1。

distance - 从光源发出光的最大距离,其强度根据光源的距离线性衰减。
angle - 光线散射角度,最大为Math.PI/2。
penumbra - 聚光锥的半影衰减百分比。在0和1之间的值。默认为0。
decay - 沿着光照距离的衰减量。

创建一个新的聚光灯。

属性(Properties)

公共属性请查看基类Light。

.angle : Float

从聚光灯的位置以弧度表示聚光灯的最大范围。应该不超过 Math.PI/2。默认值为 Math.PI/3

.castShadow : Boolean

此属性设置为 true 聚光灯将投射阴影。警告: 这样做的代价比较高而且需要一直调整到阴影看起来正确。 查看 SpotLightShadow 了解详细信息。 默认值为 false

.decay : Float

沿着光照距离的衰减量
在 physically correct 模式下,decay 设置为等于2将实现现实世界的光衰减。
缺省值为 1

.distance : Float

如果非零,那么光强度将会从最大值当前灯光位置处按照距离线性衰减到0。 缺省值为 0.0

.penumbra : Float

聚光锥的半影衰减百分比。在0和1之间的值。 默认值 — 0.0。

.position : Vector3

假如这个值设置等于 Object3D.DefaultUp (0, 1, 0),那么光线将会从上往下照射。

.power : Float

光功率
在 physically correct 模式中, 表示以"流明(光通量单位)"为单位的光功率。 缺省值 - 4Math.PI

该值与 intensity 直接关联

power = intensity * 4π

修改该值也会导致光强度的改变。

.shadow : SpotLightShadow

SpotLightShadow用与计算此光照的阴影。

.target : Object3D

平行光的方向是从它的位置到目标位置.默认的目标位置为原点 (0,0,0)
注意: 对于目标的位置,要将其更改为除缺省值之外的任何位置,它必须被添加到 scene 场景中去。

scene.add( light.target );

这使得属性target中的 matrixWorld 会每帧自动更新。

它也可以设置target为场景中的其他对象(任意拥有 position 属性的对象), 示例如下:

const targetObject = new THREE.Object3D();
scene.add(targetObject);
light.target = targetObject;

完成上述操作后,聚光灯现在就可以追踪到目标对像了。

方法(Methods)

公共方法请查看基类 Light。

.copy ( source : SpotLight ) : SpotLight

将所有属性的值从源 source 复制到此聚光灯光源对象。

相关文章:

three.js 灯光

环境光探针(AmbientLightProbe) 光照探针是一种在3D场景中添加光源的另一种方法。 AmbientLightProbe 是场景中单个环境光的光照估算数据。 有关光照探针的更多信息,请转到 LightProbe 。 构造函数 AmbientLightProbe( color : Color, int…...

ELK日志收集

目前,各个微服务系统的日志都保存在各自指定的目录中,如果这些微服务部署在不同的服务器上,那么日志文件也是分散在各自的服务器上。分散的日志不利于我们快速通过日志定位问题,我们可以借助ELK来收集各个微服务系统的日志并集中展…...

常见docker命令

1、查询已安装docker中某个image依赖包 docker run -it --rm --name my-python-container 【python37:v001】 /bin/bash 【】改成自己环境名字 docker run -it --name lane python37_test:v006 /bin/bash lane是容器名字,python37_test:v006 是镜像名 开启容器 do…...

测试新人刚入行,该如何规划以后的发展路径?

作为一个刚入行的测试新人,应该如何规划自己的职业发展路径?如何规划自己的技术路线?软件测试的段位都有哪些?他们之间的薪资差异如何? 听说这些问题,是目前想要入行软件测试的同学们最关心的。那么我们今…...

Boosting Object Detection with Zero-Shot Day-Night Domain Adaptation

摘要:低亮度场景检测是一个小众且重要的方向,首先在于数据集和过往的研究都集中在光照充足的环境下,其次如果使用传统的训练方法的话由于训练难度大,模型效果也不会很好,有幸的是,现在关于低亮度的研究已经…...

Chromium html<lable>c++接口定义

HTML <label> 元素&#xff08;标签&#xff09;表示用户界面中某个元素的说明。 1、<label> 在html_tag_names.json5中接口定义&#xff1a; &#xff08;third_party\blink\renderer\core\html\html_tag_names.json5&#xff09; {name: "label",inte…...

QT中中文显示乱码问题

在VS2013中用QT开发GUI应用程序&#xff0c;Qt中显示中文乱码 一&#xff1a; //解决QT中中文显示乱码问题 #pragma execution_character_set("utf-8") 二&#xff1a;在main函数中添加以下代码&#xff1a; #include <QTextCodec>void main() {QTextCod…...

[面试常见]Javascript基础知识

#1024程序员节|征文# Object.assign 和对象扩展运算符有什么区别?是深拷贝还是浅拷贝? 都进行浅拷贝&#xff0c;只赋值对象的第一层属性&#xff0c;而不会递归复制整个对象结构 **const mergedObj Object.assign({},obj1,obj2) JavaScript 中 Map 和 Object 的区别是什么?…...

使用注解@ExcelIgnoreUnannotated实现了在导出 Excel 时忽略没有被标注的字段

ExcelIgnoreUnannotated 注解用于在使用 Apache POI 或其他 Excel 处理库时&#xff0c;指示在导出 Excel 时忽略没有被标注的字段。这意味着只有被特定注解&#xff08;如 ExcelProperty&#xff09;标注的字段会被处理和导出。 作用 简化导出过程&#xff1a;只导出需要的字…...

线程的同步

目录 引入 认识条件变量 快速认识接口​编辑 认识条件变量​编辑 测试代码​编辑 生产消费模型 为何要使用生产者消费者模型 理解 编写生产消费模型 BlockingQueue 单生产单消费 多生产多消费 引入 同步&#xff1a;在保证数据安全的前提下&#xff0c;让线程…...

【启明智显分享】ZX7981PG/ZX7981PM融入官方OpenWrt,启明智显SDK/官方OpenWrt任由选择!

好消息&#xff01;好消息&#xff01;启明智显ZX7981PG和ZX7981PM正式融入官方 OpenWrt 的大家庭啦&#xff01;现在开发者不仅可以基于启明智显的SDK进行二次开发&#xff0c;还可以直接应用官方OpenWrt以及我们的开源资料进行开发&#xff01; 借助OpenWrt的强大生态&…...

如何用java发送包含表格形式的邮件

问题&#xff1a; 如何用java发送包含表格形式的邮件&#xff1f; 方法&#xff1a; 发用freemaker工具来替换html的表格变量&#xff0c;从而动态生成了html。然后再发送这个html格式&#xff08;不能用纯文本&#xff09;文本即可。 优化流程&#xff1a; 1、准备模板&#x…...

讲个故事:关于一次接口性能优化的心里路程

这是一个程序猿写的第一个故事&#xff0c;请各位懂行的客官静下心来&#xff0c;慢慢品读。就知道我为什么要单独写一个文章来记录这次过程了&#xff0c;因为实在是太坎坷了...... 背景介绍 近期项目投产时遇到一个问题&#xff0c;投产后在验证时发现大部分用户系统登…...

Centos7升级到openssh9.9

openssh9.9 是2024.9.20出的最新版ssh。因为客户扫描出一大堆centos7的漏洞&#xff0c;全是这个openssh的&#xff0c;好多补丁&#xff0c;所以索性升级到最新版。 需要自己制作rpm包&#xff0c;这个我是不懂&#xff0c;照这个来&#xff1a; Linux服务器升级openssh9.9最…...

使用 STM32F407 串口实现 485 通信

准备工作 了解485通信基本概念与原理&#xff1a;RS485通信详解_485通讯de接什么口-CSDN博客 安装编译软件&#xff1a;keil uVision 5.6 软件资料&#xff1a;STM32CubeF4 固件包&#xff0c;正点原子RS485通信例程 ​​​​​​​参考视频&#xff1a;第26讲 基础篇-新建H…...

基于NERF技术重建学习笔记

NeRF&#xff08;Neural Radiance Fields&#xff09;是一种用于3D场景重建的神经网络模型&#xff0c;能够从2D图像生成逼真的3D渲染效果。它将场景表征为一个连续的5D函数&#xff0c;利用了体积渲染和神经网络的结合&#xff0c;通过学习光线穿过空间时的颜色和密度来重建场…...

webView 支持全屏播放

webView 支持全屏播放 直接上代码 public class CustomFullScreenWebViewClient extends WebChromeClient {WebView webView;Context context;/*** 视频全屏参数*/protected static final FrameLayout.LayoutParams COVER_SCREEN_PARAMS new FrameLayout.LayoutParams(ViewG…...

QGIS之三十二DEM地形导出三维模型gltf

效果 1、准备数据 (1)dem.tif (2)dom.tif 2、qgis加载dem和dom数据 3、安装插件 插件步骤可以参考这篇文章 QGIS之二十四安装插件 安装了Qgis2threejs插件,结果...

【python爬虫】携程旅行景点游客数据分析与可视化

一.选题背景 随着旅游业的快速发展&#xff0c;越来越多的人选择通过互联网平台预订旅行产品&#xff0c;其中携程网作为国内领先的在线旅行服务提供商&#xff0c;拥有大量的旅游产品和用户数据。利用爬虫技术可以获取携程网上各个景点的游客数据&#xff0c;包括游客数量、游…...

python实现onvif协议下控制摄像头变焦,以及融合人形识别与跟踪控制

#1024程序员节 | 征文# 这两天才因为项目需要&#xff0c;对网络摄像头的视频采集以及实现人形识别与跟踪技术。对于onvif协议自然起先也没有任何的了解。但是购买的摄像头是SONY网络头是用在其他地方的。因为前期支持探究项目解决方案&#xff0c;就直接拿来做demo测试使用。 …...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...