0
点赞
收藏
分享

微信扫一扫

虚幻 UE5.3 Windows打包像素流部署

程序员阿狸 2024-11-06 阅读 9
ue5

在这里插入图片描述
我们前几篇已经完成了渲染部分,现在终于开始做动态绘制功能了

之前使用的是这样一个体积雾的切片图,那么现在要做的就是动态编辑它
在这里插入图片描述
首先,让我们简单了解一下它是如何运作的:
开始绘制画布以渲染目标,并将材质绘制到画布上。
在这里插入图片描述
我们先不考虑其他参数,首先关注所需的资源。
左侧:纹理目标,即画板。
右侧:需要一个材质,它充当笔刷。
显而易见,这个过程就是将笔刷的内容绘制到画板上。而这个“纹理目标”最终会被用作体积纹理的切片。

关键问题在于,如何在2D纹理目标上绘制出3D切片呢?之间如何转换?

我们开始一步步制作吧。

新建纹理目标

首先,我们创建一个渲染目标

新建一个渲染目标RT_VolTexture
在这里插入图片描述

调整细节

设置尺寸和目标格式
因为是三维的信息量,所以可以比二维图相对大一些
渲染目标选了单通道16位,其实我觉得8位也够
在这里插入图片描述

顺便把材质中的图替换为它
在这里插入图片描述

制作画笔

UVtoVol

新建材质函数 UVtoVol ,用来将UV转为体积
在这里插入图片描述

新建两个变量
在这里插入图片描述

将结果相乘,可以看到框内为0-1
在这里插入图片描述

使用Frac取小数部分,就得到了12个0-1循环的小UV
在这里插入图片描述

还需要给每个小UV一个编号,放在Z通道
在这里插入图片描述

使用Floor取整
在这里插入图片描述

将他除12,可以看到是这样的
在这里插入图片描述

要用它组成ID
在这里插入图片描述

将结果除以总数,可以看到从左上角的0开始,每一格都是一个ID
在这里插入图片描述

RG就相当于体积的XY平面,而ID则相当于Z轴。因此,你只需将结果放入Z通道即可。在这里插入图片描述

别忘了,我们需要这个体积的轴心位于中心位置。
对结果-0.5 *2 。完整如下:
在这里插入图片描述

M_VolPaint

新建材质M_VolPaint
在这里插入图片描述
它负责把内容绘制到RT贴图,因此改为无关照
在这里插入图片描述

他作为一个画笔,当然也得是三维的。那么我们做一个最简单的球形画笔

放入刚制作好的函数
在这里插入图片描述

因为已经把轴居中了,因此直接使用Length(同计算distance0),就得到了一个点距离场切片
在这里插入图片描述
在这里插入图片描述

增加变量Radius,控制其半径
在这里插入图片描述

除以Radius半径,规格化到0-1,并使用Saturate(等同于Clamp0-1),丢弃小于0大于1的值
在这里插入图片描述

在增加一个Density控制笔刷浓度/密度,一个简单的球形画笔就做好了。在这里插入图片描述

制作绘制蓝图

新建蓝图

新建蓝图 BP_VolPainter
在这里插入图片描述

新建函数Paint Sphere
在这里插入图片描述
在这里插入图片描述
新建变量 VolTexture ,类型是 纹理渲染目标2D ,并把我们的RT_VolTexture设置为变量默认值
在这里插入图片描述
在这里插入图片描述

绘制功能

就像之前演示的一样,但现在我们已经准备好了这两样东西
渲染目标的Size就是画板的Size,将其连接到ScreenSize
在这里插入图片描述

别忘了还需要结束:
在这里插入图片描述

测试

开启编辑器中调用
在这里插入图片描述

BP_VolPainter放在场景里,点击PaintSphere执行函数
在这里插入图片描述
在这里插入图片描述
就绘制出来了(我把笔刷的Density调到1,这样明显点)
在这里插入图片描述

检查渲染目标,已经绘制上了
在这里插入图片描述

基本的原理就是这样,但现在我们只在最中心规规整整画了一个球。
下一篇继续,如何通过调整笔刷的空间位置和大小,自由的在体积里绘制体积图案

举报

相关推荐

0 条评论