查看: 91|回复: 0

Unreal | Pivot Painter in Blender

[复制链接]
发表于 2021-6-9 16:41 | 显示全部楼层 |阅读模式
用unreal官方的话来说,pivot painter tool就是在3d软件里面存储模型支点和旋转信息,然后可以在unreal的着色器系统内部引用该信息以创建交互效果。具体参考链接:






但是unreal官方只有关于支持max的工具和教程,所以这里我们一起研究一下在blender里面导出数据并在unreal里面加载生成和角色的互动效果。
1安装
首先获取插件,有VPN可以直接访问github获取:
下载并解压到本地,打开blender,Edit>Preferences








Add-ons,然后点Install…,加载解压后里面的文件PivotPainterTool280.py,是最新的1.1.2版本。加载进去以后勾选插件并退出references窗口。












在3d窗口中按快捷键N可以弹出安装好的pivot painter工具。






2Blender设置
这次我们主要使用pivot painter来制作草在场景中和角色的交互。所以首先创建草的模型,注意每一片草都是单独的模型并且坐标点在底部,方便添加旋转等效果。






点开pivot painter tool,设置Alpha为HDR-Parent Index(如果是树木的话,我们就会选择HDR-Normalized 0-1 Hierarchy Position,因为树木还有树干叶子,分枝等很多层次结构)。勾选Save Texture to folder,并且在下面选择需要输出textures的本地路径。最后点Save Textures








由于我们默认使用第二套uv来创建pivot painter的texture,所以save出去以后会发现物件多了一套uv1.并且会导出两张图片,一张记录模型各个面片的pivot point,另外一张为displacement map。








最后反手导出一个fbx到unreal。
3Unreal4设置
注意导入到unreal里面的fbx需要勾选combine meshes,取消勾选import materials 和import textures












然后在引擎里面将模型的collision设置成NoCollision。












再把之前在blender里面导出的两张贴图导进引擎,并设置其中一张贴图Pivot Point Index的压缩设置为HDR,取消勾选sRGB,并且Filter为Nearest;另外一张贴图Xaxis Xextent的压缩设置为VectorDisplacementmap(RGBA8),同样取消勾选sRGB,Filter为Nearest。












创建一个新的材质球,勾选双面,作为草的材质球。
新建一个MPC(material parameter collection),添加一个vector parameter为PlayerLocation,并且在角色蓝图里面给PlayerLocation赋值。












这样获取到角色位置,就可以在草shader里面根绝角色位置来让草产生弯曲旋转等交互。
将pivot painter生成的两张图拉到材质里面,用角色的坐标减去草的坐标得到一个从角色方向 到草的向量,然后和草的displacement map做cross就得草受影响的旋转轴NormalizedRotationAxis。








而旋转角度RotationAngle,用sphere mask来求得角色对草的影响范围。角色越靠近,草的旋转角度越大,所以我们可以把受影响的半径值暴露出去。








Pivot Paint为草的坐标,Position使用Absolute World Position。
所以整个草旋转部分节点如下








最后再和motion mask相乘,然后输出到WPO中。








最后得到的效果如下;




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则