| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> UE4材质08_顶点偏移动画 -> 正文阅读 |
|
[游戏开发]UE4材质08_顶点偏移动画 |
8.01_顶点着色器
顶点着色器它本质上,也就是一段Shader语言,它可以接受输入,然后输出它的运算结果,那么它主要负责接下来的一些事儿,首先它会把本地坐标中的顶点位置转换为世界坐标位置
只需考虑这个顶点它在世界上的位置,我们就不需要考虑这个物体它在哪儿,我们只需计算这个顶点的世界位置就可以了,简化一些运算的过程
我们需要使用这个顶点偏移来制作各种各样的动态效果,好在接下来它可以处理软硬边的平滑,软边的话,软边它的 会产生一个平滑的效果,应边,它的发现就会产生一个应变的效果。
这个顶点色,它也是使用顶点着色器来计算的。
WPO:如果你是在材质系统看到这三个字母,那么它一般指的就是这个World Position Offset,也就是世界位置偏移。那么这个世界位置偏移也是材质里面的一个输入,它是由顶点着色器来实现的,并且不需要
CPU来参与。
XYZ在这里使用的是RGB来代表的,也就是说我们比如说调BA,可以看到它就像上产生的一个偏移效果,注意它不是真实的移动,它只是一个向上的偏移。
它这个过程它无需CPU参与,它不是真实的移动模型。这个怎么说?在
GPU
绘制模型之前,首先是由C
PU
来计算这个模型它的真实位置,假设这一个
CPU
,它告诉
GPU
,这个模型它在000这个位置,但是,
CPU
可以通过一个顶点着色器,让它产生一个世界位置的偏移,比如说我让它向上偏移100, 其实它的位置还是在原地,只是相当于把它画偏了,给
它画
到上面去了,其实
它
还是在原地,
CPU不知道它
移动的,因为是由CPU先计算它的位置,然后再由显卡来计算,也就是说显卡就算给它画到上面的CPU也不知道,而且就算。GPU绘制完以后,你反馈给
CPU
,比如说我给它画到上面的,那也没有用了,因为这一帧它已经绘制完了,是CPU先运算再交给
GPU
来画的,所以说C
PU
他根本就不知道它移动的,就算它知道了也没有用。跟CPU相关的一些东西会依然的认为这个模型它在原地,就比如说碰撞体检测,碰撞体检测它是由
CPU
来计算的,
这个模型向上偏移了很多,但是对于我们的碰撞体来说,它还是在原地;切换到
玩家碰撞,
现在我们继续向上偏移,可以看到它的碰撞体位置是不会产生变化的,现在,我们给他继续往上偏移,然后,我们点击播放,这边可以看到这个模型它比较高,但是,我们还是没有办法穿过去,可以看到这个地方我是穿不过去的,而且我们可以从上面穿过去,也就是说他对于
CPU
来说,他还是在原地.
也就是说一个顶点着色器,它的位移只能用于视觉效,
但是它的消耗是比较低的,首先它不需要
CPU
来计算,它是一个纯GPU的运算,而且它不需要骨骼,不需要给它绑定动画。我们在游戏里面看到的绝大多数的草地,绝大多数的内一个树叶的风吹效果,它都是使用这个世界位置偏移,让它的顶点产生偏移效果。
8.02_物体位移_缩放动画
这个物体它其实会在这个地方出现,但是可以看到它消失了,就是因为我们之前说
,这个物体它的位置是在这个地方,那么在0801里面我们讲到了这个顶点位移cpu是不知道的,也就是说假设,
我们的屏幕是非这个位置,也就是说我们它超出我们的屏幕外的,cpu就会认为这个物体它不用被绘制,它就会告诉我们的显卡,它从屏幕上消失了,那么就不要绘制它,但是我们使用顶点位移给它放大,让他变成了这么大,那么它就出现在我们的屏幕里面了。但是这个时候cpu还是认为它在屏幕的外面,那么我们使用顶点位移的缩放,一旦我们超出了这个物体它原本大小的这个区域,那么它就会被这一个cpu剔除,
那么cpu剔除以后,显卡就不会绘制它了。
那么如何解决它?在引擎里面它有专门的一个选项,可以扩大它的这个渲染边界,找到渲染Rendering选项,在细节面板里面找到渲染,选择这个物体,然后,我们在Bounds Scales可以调整它的一个边界
比如说给它放大十倍,原本的这个边界,
就是这个物体这么大,一旦我们视野看不到这个边界,那么就不会绘制它,那么放大十倍,它可能就是这样的边界,也就是说我们的屏幕只要出现在这个边界里面,这个物体就会被渲染,我们现在,就可以把这一个放大给他勾上了
8.03_物体旋转_跳跃动画
引擎自带旋转节点 RotateAboutAxis
NormalizedRotattionAxis?旋转轴
RotateAngle?旋转角度(0代表0度,1代表360度)
PivotPoint?枢轴点的偏移?也是旋转中心的偏移
Position?旋转位置
8.05_综合案例_炫光球
Unlit 无光模式
1-X反向不能放在Saturate钳制的前面使用,效果是错误的
物理模拟
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/16 20:04:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |