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 – 类型转换
介绍 JS 是弱类型语言, 在编程时, 有许多自动类型转换的技巧, 虽然大家都不太鼓励, 尤其是用了 TypeScript 之后, 但无可否认自动转换很方便, 看上去也很干净. 所以这篇还是要介绍一些 ...
- Rounding
前言 以前写过一篇关于 Rouding 的 decimal, double, float, 但有点杂乱, 这篇做一个整理. Why need rouding? 除法会诞生小数. 甚至会诞生无限小数 ( ...
- Python:条件分支 if 语句全讲解
Python:条件分支 if 语句全讲解 如果我拿出下面的代码,阁下该做何应对? if not reset_excuted and (terminated or truncated): ... els ...
- MySQL故障诊断常用方法手册(含脚本、案例)
当你在使用MySQL数据库时,突然遇到故障,你是否会感到迷茫? ● 数据库响应变慢.SQL慢.数据库插入出现延时-- ● 表不见了.日志出现多个断连记录-- ● 非法断电造成MySQL启动报错.同步复 ...
- 66.有没有碰到过数组响应丢失(问的是ref和reactive的用法,什么情况下用)
由于vue3使用proxy,对于对象和数组都不能直接整个赋值. 直接赋值丢失了响应性 只有push或者根据索引遍历赋值才可以保留reactive数组的响应性 : 可以使用 toRefs 解决这个问 ...
- FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频
<FFmpeg开发实战:从零基础到短视频上线>一书的"5.1.2 把音频流保存为PCM文件"介绍了如何把媒体文件中的音频流转存为原始的PCM音频,在样例代码的转存过 ...
- PHP中$GLOBALS和global的区别,简单了解符号表、zval
前言 单位里有一套老代码,写了这么一个换库逻辑. function conn() { global $conn; if ($conn) { unset($conn); } $conn = mysqli ...
- HDFS 重要机制之 checkpoint
核心概念 hdfs checkpoint 机制对于 namenode 元数据的保护至关重要, 是否正常完成检查点是评估 hdfs 集群健康度和风险的重要指标 editslog : 对 hdfs 操作的 ...
- ROS入门21讲(3)
七.话题消息的定义和使用 目的:实现Publisher 与 Subscriber 之间的传输 1.自定义话题消息 如何自定义话题消息? ①完成数据接口的定义---定义msg文件 Person.msg ...
- TPS和QPS区别与计算
1.定义 TPS(Transactions Per Second):每秒事务数.事务是指一个完整的业务处理过程,例如用户完成一次购物支付的过程,从挑选商品.下单.支付到生成订单,这一系列操作可以看作是 ...