UE4材质中的点乘DotProduct

向量点乘的定义

如果a和b是两个向量,那么

a·b = |a|·|b|·cos(θ)

其中θ是两个向量的夹角,cos是余弦。(数学公式输入好麻烦。。)

下图说明了关系。

单位向量的点乘

在游戏中,表示方向的向量往往是单位向量。

为了简化起见,假设a和b都是单位向量,也就是长度为1,那么:

a·b = cos(θ)

那么这个公式就简单了。

用点乘判断向量朝向关系

考虑到,cos(0)=1,cos(π)=-1,cos(π/2)=0,那么我们就可以用点乘来判断两个向量的朝向关系了。

友情提示,有些同学可能不太记得了,π就是180度的实数表示。

如果两个向量方向完全相同,那么夹角为0,则cos(θ)为1;

如果两个向量方向垂直,那么夹角为90度即π/2,则cos(θ)为0;

如果两个向量方向完全相反,那么夹角为180度即π,则cos(θ)为-1;

其他情况,点乘的值介于-1~1之间。

用点乘判断角色是否正对物体

这是给物体一个材质。

这个是材质的节点网络。

简单解释一下。

CameraVector是相机的朝向。

CameraPosition是相机位置,ActorPosition是物体的位置,这两个相减是以相机为起点、物体为终点的向量。

Normalize是归一化,把向量变成单位向量。

Power是为了让变化更明显。



原文地址:原文地址

本文首发于翰者学堂

原文地址:https://www.cnblogs.com/henzhe/p/9586141.html

时间: 2024-08-29 09:56:18

UE4材质中的点乘DotProduct的相关文章

UE4材质中的SphereMask

SphereMask的含义 SphereMask是个神奇的东东.看名字就知道大概什么意思,球形遮罩.. SphereMask效果演示 SphereMask 效果演示小视频 从演示中可以看出,当镜头距离越来越近时,材质开始发光.镜头边远时,材质发光变弱,直到完全不发光. SphereMask示例材质 SphereMask的参数 SphereMask有四个输入参数. A:待检查的位置. B:圆心的位置. Radius:半径. Hardness:硬度,0是完整过渡,100是没有过渡. 输出的是一个0~

UE4材质初探

UE4的材质表面上看起来很简单,可是到了用的时候却总是没有办法实现好的效果.所以特意对文档进行阅读,初步了解了一下主要知识点. 当前使用的UE4版本:4.8.0. UE4中的材质有很多用途,可以用于光照.延迟渲染.粒子系统等等.由于暂时不会用到,目前只做了最基础的材质使用的研究,也就是说是Materia Type为Surface的情况.材质的最终输出节点上的可用项会随着功能选择的不同而有所不同.即便使用Materia Function使所有的引脚都是可用的也会在实际使用时根据选择而被禁用. 材质

UE4材质系统研究

本文将研究UE4材质系统的各个节点,看看UE4的黑科技 1. 平移(UV坐标动画) UV 坐标动画或 UV 平移的含义是,水平 (U) 和/或垂直 (V) 移动纹理的 UV 坐标,以产生复杂动画的错觉. 在以下示例中,火焰纹理沿着 U(水平)方向平移,使火焰看起来像是在移动一样. 参考文章:http://api.unrealengine.com/CHN/Engine/Rendering/Materials/HowTo/AnimatingUVCoords/ 关键节点: 快捷键:p+左键 上图节点可

Depth Bias 以及 Ogre材质中的depth_bias

深度偏移用来解决共面情况下出现闪烁的问题 通过给多边形增加一个z方向深度偏移(depth bias,z_bias),使3D空间的共面多边形看起来好像并不共面,以便它们能够被正确渲染.这种技术是很有用的,例如,我们要渲染投射在墙上的阴影,这时候墙和阴影共面,如果没有深度偏移,先渲染墙,再渲染阴影,由于depth test,阴影可能不能正确显示.我们给墙设置一个深度偏移,使它增大,例如z增加0.01,先渲染墙,再渲染阴影,则墙和阴影可以正确的显示. Depth-bias操作在clipping之后进行

UE4 材质Lerp节点解疑

转自:http://www.manew.com/thread-46268-1-1.html 1.A是一个灰色,B是一个红色,Alpha是一个颜色图 A到B是0到1,也就是黑到白,所以,alpha图,黑色的部分就会显示A部分,而白色的部分就会显示B部分, 得到最后的图是黑色部分透过A的灰色,白的部分就会透过B的红色,得到最后一张Lerp图. 2.官方解释 A–>B相当于0到1的变化,也就是黑到白的变化. 当Apha接入的UV像素,相当一张0到1的灰度值,根据这张图每个UV像素的0到的1数值,去混合

ue4 material custom node - global function and method

在ue4 material中定义全局函数 1. 背景 原文unreal-engine-4-custom-shaders-tutorial 中,提出了一种在material生成的hlsl文件中定义全局函数的方法,记录到这里以备复习. ue4 材质中的custom节点是用来使用hlsl代码的地方.一般来说都是直接编辑逻辑,最后添加return返回.类似这样: 1 float4 color = {1,0,0,1}; 2 return color; 使用ue4材质 menu window->hlsl s

UE4在PSVR中的抗锯齿和优化相关知识

UE4目前版本(4.15)在PS平台上并不支持MSAA,在未来的版本会加入.也就是说目前没有办法在PS平台上使用Forward Rendering + MSAA的组合 FXAA效率最高,但效果最差,只做了最后的图像边缘锐化 MSAA的优点是物体边缘和贴图分开处理,边缘会比较清晰.缺点是开销会比TAA稍大(即使有硬件支持),另外会有Specular aliasing.在使用MSAA时,可以在材质中打开normal to roughness,这样会使normal上突出的部分更加粗糙,减少高光闪烁.

UE4 分层材质 Layerd Materials

在UE4中最正规的材质制作流程就像: 建立新材质,并将其调整为达至完美. 在内容浏览器中,建立新材质函数,并将所有材质函数节点复制/粘贴到其中. 将网络连接到新的 Make Material Attributes(建立材质属性)节点,并将其连接到"函数"(Function)输出. 保存该函数. 将该函数从内容浏览器拖放到材质编辑器中.现在,它变为材质层. 使用材质层混合函数将多个材质层混合到一起. 该流程的具体步骤: 1,新建材质,将材质调好 2,新建材质函数,复制该材质,将材质函数暴

UE4笔记:利用Widget设计一个切换材质功能

UE4引擎中的Widget蓝图是一个重要的工具,可用于场景中的页面叠加,镜头绑定,场景切换等多处地方,在这里笔者介绍一种利用控件蓝图和场景中物体进行信息交互的方法,直观的体现就是进行物体的材质切换. 1.创建控件蓝图 控件蓝图不同于一般的逻辑蓝图,主要表现在其需要进行画面的设计和平铺.在内容浏览器中创建一个控件蓝图,命名为SwitchMat_UI 双击打开控件蓝图编辑器,进行页面的设计布局. 拖放一个水平盒子到页面中,位置和大小如下图所示(可根据个人喜好进行布局),命名为SwitchMat,同时