ThreeJs-06详解灯光与阴影
一.gsap动画库
1.1 基本使用和原理
首先直接npm安装然后导入
比如让一个物体,x轴时间为5s

旋转同理

动画的速度曲线,可以在官网的文档找到

1.2 控制动画属性与方法
当然这里面也有一些方法,动画完成,动画开始等

一些属性


也可实现停止动画随时,给到一个变量

双击暂停以及恢复

二.灯光与阴影详解
添加环境光
这种光一般是用来增亮,他没有阴影效果

平行光:类似于太阳
默认在这个位置朝着原点打光




也可以改变平行光的照射点


创建阴影四部曲


谁产生阴影



注意:物体可以投射阴影,也可以接受阴影,不只是要在平面上接受

2.1 直线光与阴影详细设置
移动球体z轴前后,出了一定范围会被剪切掉

平行光是有范围的

打印这个灯光,可以看到其范围

far是后面,near是前面


现在就比刚才更远一点,到了10的边缘才被截取

此时这个阴影是有锯齿感的

默认是512


2.2 聚光灯
target就是聚光灯打向什么地方


设置好角度之后


如果想设置边缘的光慢慢衰减


衰减的快慢设置

2.3点光源
聚光灯是往一个地方发散,点光源是四面八方


点光源也可以设置距离和衰减情况


三.透明度纹理和阴影
加入给一个物体贴上一个透明度纹理,黑色就是全透明,白色就是不透明

此时透明度有了,但是阴影还是正常的


加上alphatest即可,此时表示大于0.5就是透明,小于0.5就是不透明


此时新的问题贴上贴图后会有条纹的现象
这是由于灯光和阴影形成的一个问题
解决方法
设置灯光阴影的bias

偏移量,让阴影便宜一点点

四.大场景动态级联阴影设置
添加一个相机辅助器把灯光加入进来

可以看到物体在相机范围内有阴影超过就没有阴影

那如果实在一个很大的场景,比如把相机的阴影场景改的很大

会发现阴影出现了锯齿状


那么此时的解决思路就是,分模块分远近来展示阴影
也就是级联阴影
类似于这样,近处的细节就比较细,远处稍微模糊点,因为距离远了也看不太清了

导入

需要的参数,这些都是可以直接复制threejs上面这一个图的官方例子

然后创建级联阴影实例
maxfar表示阴影最大到多远,cascades多少个等级,mode是模式,parent当前级联阴影的父级,mapsize级联阴影的大小,lightdirection灯光的位置

然后把所有需要设置阴影的材质都设置为级联阴影

然后需要一直更新渲染

此时灯管也不再需要投射阴影了交给级联来投射


如果想设置灯光方向

加上软阴影实现一个更柔滑的效果


前面对于灯光阴影的设置也可以不要了

ThreeJs-06详解灯光与阴影的更多相关文章
- 转载 CSS3 经典教程系列:CSS3 盒阴影(box-shadow)详解
目标大纲 文章转载 CSS3 经典教程系列:CSS3 盒阴影(box-shadow)详解 IE中CSS-filter滤镜小知识大全 CSS实现跨浏览器兼容性的盒阴影效果
- ThreeJS系列1_CinematicCameraJS插件详解
ThreeJS系列1_CinematicCameraJS插件详解 接着上篇 ThreeJS系列1_CinematicCameraJS插件介绍 看属性的来龙去脉 看方法作用 通过调整属性查看效果 总结 ...
- Spark详解(06) - SparkSQL
Spark详解(06) - SparkSQL Spark SQL概述 什么是Spark SQL Spark SQL是Spark用于结构化数据(Structured Data)处理的Spark模块. ( ...
- Hive详解(06) - Hive调优实战
Hive详解(06) - Hive调优实战 执行计划(Explain) 基本语法 EXPLAIN [EXTENDED | DEPENDENCY | AUTHORIZATION] query 案例实操 ...
- Hadoop详解(06) - Yarn平台架构和资源调度器
Hadoop详解(06) - Yarn平台架构和资源调度器 Yarn平台架构 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程 ...
- 小甲鱼PE详解之区块描述、对齐值以及RVA详解(PE详解06)
各种区块的描述: 很多朋友喜欢听小甲鱼的PE详解,因为他们觉得课堂上老师讲解的都是略略带过,绕得大家云里雾里~刚好小甲鱼文采也没课堂上的教授讲的那么好,只能以比较通俗的话语来给大家描述~ 通常,区块中 ...
- 常用Oracle分析函数详解 [http://www.cnblogs.com/benio/archive/2011/06/01/2066106.html]
学习步骤:1. 拥有Oracle EBS demo 环境 或者 PROD 环境2. copy以下代码进 PL/SQL3. 配合解释分析结果4. 如果网页有点乱请复制到TXT中查看 /*假设一个经理 ...
- unity灯光烘焙设置详解
游戏场景中灯光照明的构成 现实生活中的光线是有反射.折射.衍射等特性的.对这些基本特性的模拟一直以来都是计算机图形图像学的重要研究方向. 在CG中,默认的照明方式都是不考虑这些光线特性的,因此出来的效 ...
- 06 nginx Location详解之精准匹配
一:Location详解之精准匹配 location 语法 location 有”定位”的意思, 根据Uri来进行不同的定位. 在虚拟主机的配置中,是必不可少的,location可以把网站的不同部分, ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
随机推荐
- JavaScript – Function 函数
参考 阮一峰 – 函数的扩展 基本用法 function fn1(param1, param2 = 'default value') { return 'return value'; } fn1('1 ...
- ASP.NET Core – Program.cs and Startup.cs 小笔记
前言 ASP.NET Core 6.0 以后, 默认模板去掉了 Program.cs 的 namespace, class 和 Startup.cs, 一开始看会有点懵. 这篇大概记入一下, prog ...
- 全面掌握 Jest:从零开始的测试指南(上篇)
随着JavaScript在前后端开发中的广泛应用,测试已成为保证代码质量的关键环节. 为什么需要单元测试 在我们的开发过程中,经常需要定义一些算法函数,例如将接口返回的数据转换成UI组件所需的格式.为 ...
- 基于DPAPI+RDP技术实现本地打开远程程序,并映射到本地机器桌面上
本教程使用工具所使用的环境说明: 启动器开发工具:VS2022 启动器所用客户端技术:.NET 8 + WPF 启动器其他技术:DPAPI 启动器发布的可执行程序,系统要求:Windows 7以及以上 ...
- ChatGPT “眼”中的开源数据库
开源作为数据库发展的未来趋势之一,被冠以"数据库弯道超车的法宝"的称号.中国开源数据库产品正处于蓬勃发展的趋势,根据 墨天轮中国数据库流行度 ,截止2023年2月底已有46款开源数 ...
- electon的入口文件 main 指定
任何 Electron 应用程序的入口都是 main 文件. 这个文件控制了主进程,它运行在一个完整的Node.js环境中,负责控制您应用的生命周期,显示原生界面,执行特殊操作并管理渲染器进程(稍后详 ...
- Putty 远程 连接kali Linux拒绝访问 refused connection
1. 设置 ssh 文件 crtl + alt + t 代开终端 输入命令: vim /etc/ssh/sshd_config 说明 : 使用 vim 编辑器编辑 ssh 文件 : 说明: 修改第3 ...
- 基于Jenkins + Argo 实现多集群的持续交付
作者:周靖峰,青云科技容器顾问,云原生爱好者,目前专注于 DevOps,云原生领域技术涉及 Kubernetes.KubeSphere.Argo. 前文概述 前面我们已经掌握了如何通过 Jenkins ...
- md转换成_post下直接使用的文件
md转换成_post下直接使用的文件 package org.example; import java.io.File; import java.io.IOException; import java ...
- WEB渗透01_渗透测试方法论
前言 这个系列是根据一个网络安全教程学习的笔记. 1 渗透测试 渗透测试,是为了证明网络防御按照预期计划正常运行而提供的一种机制.不妨假设,你的公司定期更新安全策略和程序,时时给系统打补丁,并采用了漏 ...