流程图精灵的使用_精灵世界首发,刚体模拟的 四方连续 无穿插 无视觉异样感 程序化贴图...

b9852ca10e20d726999203597d3a39ae.png

我们最后要做出如下四个贴图

bb0894b0aaa2f4547b44d73eb3441d6e.png

f6e35aeeb5dba7aec18b5bad14ab93fc.png

昨天经过戴老师一句话,点醒了我这个效果的进化版,因此觉得这个可以写文章了

效果,工具,HDA,开源,见fee lib的examples/otlcommon/FeE Tiling RBD FeE Tiling Mesh.hip

五行精灵:开源840+HDA;FeELib for Houdini使用指北​zhuanlan.zhihu.com
eab883a991017a33221ce62311473245.png

——下文中所用节点,凡是FeE开头的节点都是出自上面的FeE Lib

思路/ 效果历史:

最早的堆砖块效果是SD做的四方连续贴图

缺点如下:

1.难以消穿插

2.对砖块的自定义程度较低——例如换成猪头,倾斜砖块的base color贴图的扭曲

为了克服以上缺点,一个方法是使用刚体模拟——即把一堆砖头从天上丢到地上来做(下图为刚体源)

bc51100b3b2122f854e614e64ffd7987.png

但是刚体模拟不易做到四方连续,要做到这点,一个死板的方法即:要让“贴图左边”的砖头影响右边的

众所周知的一个方法还是用SD,或者使用houdini的side fx labs的mesh tiler SOP,把边缘的砖头直接进行copy,得到如下效果

3fa7abe0e498971b12b59f003946e960.png

但这样的问题是:视觉上用来做四方连续部分的砖块还是会和中心内部砖块发生穿插,视觉效果还是不好和最开始用纯SD流程(非物理模拟)的效果接近

因此这个数字资产是不能trick的,我们接下来要做的就是刚体模拟,同时要让“贴图左边”的砖头影响右边的

因为精灵在做这个效果之前,曾经想过“传送门”(类似指环王,portal那类)的效果怎么做,所以一开始陷入了误区,想通过传送进入UV左侧的砖块到右侧来做,但其实根本不需要这么复杂,直接让左右两侧的砖块永久存在即可

正式效果制作:

第一步做FeE Tiling RBD SOP

如下图,我们直接把刚体复制排成九宫格,同一个复制源的刚体时刻保持状态同步下落,最后只保留中心的那一组刚体即可

bf2b1b424c5dc8adbfe42c50152b11f2.png

注:Houdini内技巧:

RBD进入bullet之前添加found_overlap的点属性,这样刚体就会散开,另一个应用见FeE Deoverlap Bullet SOP(fee lib开源里有下载)

f22fff8a26bc5f48ff8c7b2cdaaf9fb1.png

如下图,我们可以很清楚的看到,“贴图左侧”的方块A,在和右侧一复制组的左侧方块B完全同步的情况下,会影响“贴图右侧”的方块C

3ca715bfd14ce3f5089f6ff3b145a369.png

接下来问题就是,如何让方块AB的状态完全同步?

答案是:添加约束Soft约束(Bullet Soft Constraint Relationship)(虽然只有一句话,但其实是最大难点,和海棠姐姐试了好久哇1551)

约束网络应该形如下图

f73d4374a8276c4e5ae415521244bfec.png

大家做这个网络的方法有很多,不过精灵这个有一个巧计:

我们考虑到每个“九宫成组”的方块的相对位置都是完全相同的,我们只需要创建一次拓扑关系即可,如下图

46b228bd92a8674e1bb91dddf32c3000.png

然后copy N次,最后只需要基于P属性即可,全程不需要loop

——这里涉及到houdini的两大优化核心

1.使用loop block速度极慢,即使可以compile

2.修改模型拓扑数据的操作极慢,尤其是vex function的,例如convert line SOP(精灵很少用)

最后我们用FeE Attribute Changed Frame SOP结束模拟

——如节点名所述,作用是逐帧检测模型的某个属性,当所有点/prim的属性的差值均在阈值之内,停止计算

完整流程图,节点量极少

a145721308988532951ee1c22d77e3dc.png

第二步,当然是和以前的方法一样,把左侧的刚体copy到右侧,只是这一次因为左右侧的刚体相互影响了,因此不会穿插,houdini里我们可以用

sidefx labs的mesh tiler SOP或者FeE Tiling Mesh SOP

其中后者的速度极快,因为没有使用loop,思路清晰简单,大家自行查阅即可(且全程可以compile)

b989e15c7904fed8f4e3916bf0a03825.png

如下图单张“贴图”的效果就这样做好了 接下来直接用mantra烘焙也可以,可以使用HeightField Project SOP,或者FeE Polygon Rasterize SOP等

5c30135bb4008c5fb7b6b87163f54e35.png

不过这样还是有问题——重复感极强,如下图

a26cb440882f93cb810c7e253091bc83.png

昨天戴老师提出一个方案,只需要让贴图周围的砖块不变,如下

9913f14dddd592f2e74b65607ec5f562.png

然后改变各个贴图中心的砖块,就让人不会产生视觉的重复感

精灵醍醐灌顶,关于这个的原理,精灵认为是一个经典的人脑短视记忆的问题:(我已经忘了相关的资料来源了,如果有人知道可以发一下鸭~~)

找茬问题:

如果将两个图片对齐,这两个图片只有一出不同,然后瞬间切换两张图片,我们可以很快发现两张图的不同

但是,我们如果在这两组图片切换的中间时段,插入一小段黑屏,我们就会瞬间无法找到相同点,我们要做的就是这个“黑屏”

于是接下来进入第二步:

生产更多的贴图,且各个贴图之间,都是四方连续的

——也即FeE Tiling RBD by Reference SOP的制作

因此我们首先,肯定需要保留所有的边缘方块,也即:

(FeE Tiling Mesh SOP的第二个输出口会输出这个)

2232e487608b660ab97eb5b209a50449.png

然后我们要让第二贴图的中心部分和边缘刚体不穿插

因此我们需要的数据是:

1.种子不同的一组刚体(用来丢进去)

eeaa556454a537e2bc82da1972780e96.png

2.防止刚体溢出四周的碰撞平面

0bff4077835dc799606a58bf648c9be4.png

3.四周的刚体:用于防止中心刚体和四周刚体穿插(记得加found_overlap属性哦)

7959f4bf0c51f66b3c00f6b409d2ab0c.png

实现细节

1.四周的刚体(被动刚体)在第50帧再加入结算,用这个参数

13583cc1d244a3eefd86ba3f439683f9.png

因为如果一开始就加入结算,中心刚体会被直接卡在上半部分掉不下去

2.在解算de overlap的时候,我们添加更多的substep

a477dcffb096fd287c91d5276c9bf984.png

3.在部分帧数我们删除过高的刚体,节省性能

a2db6b40316c242323bc257b74ba5a05.png

4.在解算de overlap的时候,我们要注意限制速度v与角速度w,防止瞬间速度过快而爆炸

3e417384c93301a9fe29c95eee2747c6.png

FeE Tiling RBD by Reference SOP制作完毕

第三步:用PDG做更多的图图

之后我们只有两个图还不够,我们肯定要用FeE Tiling RBD by Reference SOP生产更多图

但是因为FeE Tiling RBD by Reference SOP内部有DOP,不能用for loop block来做批量生产

因此我们要用PDG,这部分不赘述,实现见工程文件

06a82e5a0927c434514150b098253178.png

PDG输出后,我们用FeE Multiple File SOP导入,好处是一次到位,并且可以添加各种ID NAME属性

da00a3071bc3fb53fa61b98ec19575bb.png

然后通过variant copy,这个FeE Multiple File SOP到ctp variant copy流程的优势就是尽可能减少loop block内的计算量,唯一的loop在FeE Multiple File SOP内,且可以compile,最大优化

64e3ff43df5e63b1efc5e652b15fe6e0.png

最后当我们要把不同的贴图放在一起,也是有考究的

如果我们完全随机得放置贴图,不可避免会出现完全相同的两个贴图被放在了一起

回顾之前说到的找茬问题,因此这个也是非常不可容许的,容易被看出问题

我们考察每个贴图的放置点位,我们要做到的是让所有相连接的点的贴图都不相同(varient属性都不相同)

f9d9fc7f7063e13ac3a7b40e8e3126a4.png

我们只需要使用FeE Complete Graph SOP生成K4再用Graph Color SOP进行染色即可

而在这个图中,我们只需要只用四张贴图,就能够做到题图效果

效果完成——见题图

流程图:(看起来真简单呢,大家快来一起做一个吧~~)

1329c353c4a60a7632c13bac87fdc641.png

请问精灵对文章标题有什么感想吗?

——确实是精灵世界里首发的教程鸭

欢迎大佬来加QQ 超干货程序化设计群642672039(QQ最温柔的程序化讨论群)

加群仅限程序化设计/流程向大佬(新手来了也看不懂鸭)

原则上禁水,且禁新手问题,可以讨论行业等各种设计学习内容,但是讨论有趣的事情也可以(只要是大家爱看的内容就能发,所以还是不能太水哦);

6f464492e2bcad129a9ef138eff04b5d.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值