一. “画笔”与“画板”
1.1 RT的使用
- Render Target 可以当Texture使用,相当于一张画布,通过蓝图节点或函数在上面绘制图案
- Render Target 的两种使用方式:
- 直接使用 Draw Material to Render Target,直接绘制材质
- Begin Draw Canvas to Render Target 与 End Draw Canvas to Render Target 的配合使用,适用于需要在RT上绘制多个元素的情况
- 常用的绘制节点
- Draw Material
- 需要特别注意的是:从世界坐标变换到画布的位置Screen Position,还需要减去尺寸Screen Size的一半
- Rotation 是绕 Pivot Point 旋转
- Draw Material
-
- UV
- Render Target 的一些细节
- 通过 RT,将虚幻场景类比为一块画板
- 1. 创建BP(Actor)画板蓝图、Material 材质、Render Target渲染目标(蓝图也可以动态创建RT,但通过蓝图动态创建过多RT,则容易出问题)
-
- 2. 框定画板范围大小(2000*2000),材质为我们刚刚创建的RT
-
- 优化一下
1.2 映射范围位置
- 将世界位置映射成 RT 的 UV
- 1. 使用两个 Vector2D 定义画板的位置和尺寸
-
2. 通过变量Position、Size,同步设置材质的两种方法
-
动态材质实例:在蓝图中创建动态材质实例 Create Dynamic Material Instance,拿到地面引用,并设置材质中的参数 Set Vector Parameter Value;但通过蓝图动态的设置地形比较复杂,不建议使用
-
材质参数集:相当于一个全局变量,更适合做全局的统一控制(如四季变换)
-
-
-
3. 创建材质函数、材质参数集
-
-
- 4. 材质参数集:将2个二维向量合并
-
-
5. 材质函数中写位置映射的逻辑
-
-
-
6. 在材质中调用材质函数,位置映射
-
7. 在蓝图中计算绘制的位置
- 效果如下:
-
1.3 走向无限
- 1. 让画板始终跟随人物移动:
- 创建更新位置的函数(更新材质参数集中的参数,设置 debug 的 plane 位置)
- 将 Position 设置为玩家位置,每帧更新
- 将画板之前的图案随人物移动更新:
- 创建材质函数
- 使用材质平移 Render Target
二. 多种绘制方式
技术参考:
[1] [UOD2022]大地画板:大世界的可交互雪地 | 孙博恒(聆枫LingFeng)_哔哩哔哩_bilibili
[2]
未完待续...