深度 世界中有许多物体,我们应该根据远近来确定那些部分应该被画到屏幕上。 画家算法 画家算法先绘制远处的模型的三角形面,再绘制近处的三角形面,近处的会覆盖掉远处的。三角形的深度为三个顶点的平均深度(视图空间的Z值)。然后从远到近进行排序,依次着色。 但是画家算法在处理循环遮挡情况下存在问题,而且排序开销较大,不主要使用。 深度缓冲 Z-Buffer…
视角场与宽高比 tanfovY2=t|n|aspect=rt\begin{align} \tan \frac{fovY}{2} = \frac{t}{\lvert n \rvert} \\ aspect = \frac{r}{t} \end{align} 完成MVP变换后,就需要将模型画到屏幕上了。 屏幕 一个二维的像素数组 数组的大小:分辨率 …
2D变换 缩放 可知,变换后边长原来的s倍 x′=sxxy′=syy\begin{align} x'=s_{x}x \\ y'=s_{y}y \end{align} 化为矩阵形式 (x′y′)=(sx00sy)(xy)\begin{pmatrix} x' \\ y' \end{pmatrix} = \begin{pmatrix} s_{x} &am…
GA里需要延迟触发需要使用task,虚幻自带了一些task函数,如果我们想自己实现某些功能需要自定义task。创建一个c++类,继承自UAbilityTask。 task类里需要有3个关键函数:一个静态函数,一个激活任务执行的函数,一个结束任务执行的函数。 UFUNCTION(BlueprintCallable, Category = "Abili…
输入映射上下文与输入操作 首先创建输入映射上下文与输入操作。输入映射上下文把按键转换为对应的数据传给输入操作,输入操作可绑定触发事件。 移动由四个方向键驱动前后左右所以值类型应该为Axis2D,跳跃仅捕获是否按下按键,值类型应为数字(布尔),旋转视角是鼠标在2D平面内旋转,旋转的输入操作值类型为Axis2D。其他设置不需要更改。 在输入映射上下文映…
FTimerHandle TimeHandle; void Timerfunction(); void Mytimer::Timerfunction() { } void Mytimer::Timerfunction2(Ftext Text,int32 int) { } //在eventbeginplay里 GetWorld()->GetTi…
单播代理 声明单播代理 DECLARE_DELEGATE(Delegateone); DECLARE_DELEGATE_OneParam(Delegatetwo, float); DECLARE_DELEGATE_TwoParams(Delegatethree, FString, float); DECLARE_DELEGATE_RetVal(fl…
使用GAS 启用插件Gameplay Ability。 在*.Build.cs中的PublicDependencyModuleNames.AddRange(new string[]后面的大括号里添加"GameplayAbilities" , "GameplayTags" , "GameplayTasks"。 AbilitySystem组件 要使用g…
本文简单介绍溶解材质。 stepStep材质表达式会为每个X值返回一个0或1,依据是其究竟大于还是小于Y的参考值。一个线性梯度值(0到1)连接到 X 输入。Y(0.25)值相当于引用值。梯度中所有低于0.25的值返回0(黑色);所有等于大于0.25的值返回1(白色)。 首先创建一个材质,混合模式改为已遮罩,光照模式改为无光照。找一张噪声图连接到st…