PCG

请问Epic是否有计划为foliage type添加tag功能,这样可以使得PCG能获取手动刷的植被的分布来进一步为场景添加细节。让程序化工具能方便的增加人为干预的功能。

您好,

请问需要的是先在level instance里手动摆好一组不同的植被, 再随机的把这些植被组分布在场景中(像之前的electric dreams demo中的摆放assembly一样); 还是空间上划分出一些区域一部分手刷, 一部分程序生成?

前者, 可以在level instance的每个mesh上打tag, load到pcg graph后, 这些tag会变成点属性, 可以过滤出来再编辑;

后者, 目前我们可以用一些volume或者spline把手刷区域划分出来, volume/spline上可以打tag, PCG graph中可以通过tag过滤获取到这些空间数据, 和pcg生成的植被做difference.

您好,

我上面说的第二点其实并不是直接获取植被笔刷刷出来的空间数据, 而是人为的做一些划分, 比如用spline/volume标记出来哪部分区域要人工摆放, 这些场景中的spline​/volume可以用tag标记, 在pcg graph中获取到空间范围, 生成时避开这些区域生成, 并没有考虑笔刷刷上去的不同植被类型, 但这是最简单直接的人工和PCG拆分的方式.

我理解你的需求应该是要在pcg graph中获取到FoliageInstanceActor上的每个instance​的位置以及mesh类型? 目前没有原生的支持, 但也有一些项目通过Editor Utility来完成这样的工作, 和之前把level instance转成PCG Data Asset的工具类似, 可以做一个选中的FoliageInstanceActor转成PCG Data Asset的工具, 然后再在pcg中load PCG Data Asset进一步调整, 避让或者是做次级元素的分布.

另外, 如果笔刷刷上去的Foliage Instance上有碰撞数据, 在PCG中也可以通过GetActorData​想获取不同的HISM(不同类型的植被)的空间数据和PCG的数据做difference.[Image Removed]​

你好,我不确定是不是正确理解了上述的第二点,意思是PCG可以通过tag的方式来difference掉手动刷的植被吗?(意思是PCG可以拿到foliage tool刷出来来的植物的空间数据是吗?如果可行的话,能麻烦分享一下具体该如何实现吗,十分感谢!)

如果不是我理解的意思,我详细阐述一下我的想法:希望利用传统的foliage tool笔刷去手动刷一些需要特定拜访的植被,然后通过PCG能拿到手动刷出来的植物的空间散布信息。这样方便进一步在PCG中做下一步程序化散布。

我查看了一下foliage type并没有包含可以添加 tag 的功能。而且目前好像PCG也无法拿到 foliage tool 刷出来的植被的信息。想问问后期PCG更新,是否有这方面的考虑?

感谢解惑!

另外有一个疑问,就是用PCG的时候经常不能实时更新,即便force regen也不行。网上查了下,强行加一个bool变量来强制刷新能解决大多数的问题。请问还有其他办法来解决editor中不实时更新的办法吗?

可以描述一下具体如何复现么? 我自己没有遇到类似的问题, ​一般graph的input有改动时, 在editor下都会自动更新, 使用Force Regen的时候要注意在Debug Object里选中要重新生成的component, 你也可以尝试在spawner后面print一条消息, 把owner component的名称打到log里, Force regen的时候验证下有没有重新生成并打印log

[Image Removed]

感谢回复,出现这种现象的情况比较随机。不是很有规律,可能不是很好复现。不过感谢分享的debug方法。