这里以导出一个 1~36 的数字序列为例,结果如下:
先建一个 Font 节点,默认 Text 是 Frame: $F
,去掉"Frame:",$F
的意思是取当前帧数。给文本建一个普通的材质。
然后将动画长度设置为 36
帧,要制作的 SubUV 是 6*6 Sub
的 Texture。这样就有一个随着帧数变化的动画。
然后在正视图添加一个相机,在视口 空格 + 3 就能进入正视图,然后点击锁,将相机锁定后就可以调整相机位置,让显示的数字居中。
相机要用 Orthographic,分辨率设为 128*128
,这个相当于单个 Sub 的大小,按需设置。
然后在 out 里添加一个 mantra ,设置渲染为 RenderFrameRange
,从 1 到 36 ,设置一下渲染路径和文件名:$HIP/render/$HIPNAME/SubUV.$F4.png
,这里的是相对路径,中建点击可以看到完整路径,它会在当前 hip 文件所在处建一个 render/
(以 hip 文件名命名的文件夹)的路径,文件名是 SubUV.$F4.png
,$F
取当前帧数,4
是数字显示的位数,然后 .png
就是输出的格式。
点击 Render to Disk,将当前的动画 Render 到磁盘上,这时就会得到 36 张序列帧(先忽略 SUBUV.tag ,这个是后面生成的):
现在已经得到了子的序列帧 Texture,然后是将他们合并成一张 SubUV ,到 img 模块下,像我这样连接:
添加一个 File
节点去读取我们的序列帧,这里依然是用 Houdini 的语法取相对路径:$HIP/render/$HIPNAME/SubUV.$F4.png
然后是用 mosaic
节点来设置每行的数量,从上到下,从左到右遍历
然后是 ropcomp 进行合成,输出路径是:$HIP/render/$HIPNAME/SUBUV.tga
,然后点击 rop_comp 的 Render 就开始合成渲染了,然后就可以了。得到的 SUBUV.tga 就可以导入 UE 中使用了。
这里再说一下 Niagara 怎么用 SubUV 的基础。在 UE 里新建一个 NiagaraSystem,一个材质球,导入生成的 SubUV 贴图。材质这么连接,虽然这里预览看起来还是将整张 Texture 输出。
把材质球给 SpriteRenderer 的 Material ,在下面还有一个 SubUV 设置,根据大小设置,这里我的是 6*6
:
然后在 ParticleUpdate 里添加 SubUVAnimation 模块,将 EndFrame
设置为 35 ,从 0 开始,所以最后是 35 ,这样就可以播放 SubUVAnimation 了。