RBD的SDF的精度自适应,适合有些场景里把collision volume的division方式设置成固定时小物体太浪费,设置成uniform时小物体太粗糙的情况下。
此表达式可以把division按大小控制在Min和Max之间。本来在注释间的语句可以自动查找OldMin和OldMax的,但是场景面数多的时候会很慢,所以改成了手动指定的。
使用方法:把以下代码放到RBD DOP的division的表达式里,并且把表达式格式改成Python。
Min = 30
Max = 80
OldMin = 10
OldMax = 100
def fitRange(value,oldmin,oldmax,min,max):
return float(hou.hscriptExpression('fit('+str(value)+','+str(oldmin)+','+str(oldmax)+','+str(min)+','+str(max)+')'))
def sizeOfGroup(grp):
bbx = hou.BoundingBox()
for prim in grp.prims():
for v in prim.vertices():
bbx.enlargeToContain(v.point().position())
sizev = bbx.sizevec()
return max(sizev[0],sizev[1],sizev[2])
sopn