如何在vps上建设网站,江西网站设计欣赏,建站教学视频,网站开发教程流程我们前几篇已经完成了渲染部分#xff0c;现在终于开始做动态绘制功能了
之前使用的是这样一个体积雾的切片图#xff0c;那么现在要做的就是动态编辑它 首先#xff0c;让我们简单了解一下它是如何运作的#xff1a; 开始绘制画布以渲染目标#xff0c;并将材质绘制到画… 我们前几篇已经完成了渲染部分现在终于开始做动态绘制功能了
之前使用的是这样一个体积雾的切片图那么现在要做的就是动态编辑它 首先让我们简单了解一下它是如何运作的 开始绘制画布以渲染目标并将材质绘制到画布上。 我们先不考虑其他参数首先关注所需的资源。 左侧纹理目标即画板。 右侧需要一个材质它充当笔刷。 显而易见这个过程就是将笔刷的内容绘制到画板上。而这个“纹理目标”最终会被用作体积纹理的切片。
关键问题在于如何在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)就得到了一个点距离场切片 有些跳跃不理解 以它为例其意思就是每个像素的XY距离0,0有多远 因为我们已经居中了实际就是这样 Distance就是AB两点的距离公式如果其中一点为0就可以用Length长度代替 增加变量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这样明显点)
检查渲染目标已经绘制上了
基本的原理就是这样但现在我们只在最中心规规整整画了一个球。 下一篇继续如何通过调整笔刷的空间位置和大小自由的在体积里绘制体积图案