美文网首页Houdini
Houdini Ramp的理解

Houdini Ramp的理解

作者: MasterZhang | 来源:发表于2021-05-14 09:49 被阅读0次

    Houdini的ramp就是一个可曲线调控的0-1值重映射分布工具。常用在值的平滑过渡和变化的生命周期上。

    使用ramp需要了解如下基本知识:
    1. ramp的原理是将某个值进行0-1的重映射。注意重映射不等同于乘以一个0-1范围的值。

    2. 一个值要能被正确ramp,前提必须是——该值自身范围是0-1。

    3. ramp处理的值是独立的,它只跟该值所在0-1初始分布有关,也就是说如果该值是点属性值,那么每个点进行ramp时它们各自的值进行重映射时都是相互独立的,相互之间是没有关系的。

    4. 默认ramp图形是一个对角线,表示的是0-1的值空间分布,其水平方向即X轴上的值表示该值的初始值大小,而其垂直方向即Y轴上的值表示其重映射后的输出值大小。

    5. 由于被ramp的值必须是0-1,所以被ramp的值在ramp坐标系初始时都会在该对角线上有一个点的位置与其大小对应,即每个值都在该对角线上都有一个初始位置分布。对角线的调整意味Y轴输出值的变换。

    6. 关于X轴的输入值与Y轴的输出值可以这么理解,假如初始化有4个值a=0.1,b=0.2,c=0.3,d=0.4,其在ramp坐标系中可以表示为以初始值为key,以输出值为value的字典映射。即{0.1:0.1,0.2:,0.2,0.3:0.3,0.4:0.4},我如果要<=0.2的值都变成0,>=0.3的值都变成1,则最终输出为{0.1:0,0.2:0,0,3:1,0.4:1},表示原值是0.1与0.2的值重映射后变成了0,原值是0.3与0.4的值重映射后变成了1.

    例:超过1的值进行ramp导致的错误结果
    float a =float(@ptnum);
    @b=a;
    f@a = chramp("ramp",a);
    

    这里变量a的值等于点序号值,属性b的值是a重映射之前的值,而属性@a是变量a经过ramp后的值。结果如下



    可以发现当被ramp的值a超过1时,永远为1。之所以为1是因为ramp的最大值是1。

    ramp坐标图解释:
    1. 红色框:水平线上,或称X轴,表示原值的大小分布。
    2. 绿色框:垂直线上,或称Y轴,表示重映射后的大小分布。
    3. 默认起始是一个对角线,原值在该对角线上有且仅有一个唯一位置。比如:点A的属性值a=0.8.即上图黄色框的点。默认X值=0.8,Y值=0.8。
    4. 最终输出值为绿色框,也就是Y轴的值。
    5. ramp所做的运算,类似clamp(原值,min,max)或者fit01(原值,min,max),只不过min与max都变成了曲线所控制的Y值范围。
      上图表示,超过0.82的值,都视作为1,即最终输出值为1.
    动图说明,为什么ramp的区间范围或者生命周期只跟自身值在0-1区间分布有关系

    下图演示,当值超过0.8的值被ramp重映射为1的过程


    关于ramp区间生命周期问题

    ramp区间常用来表示值的生命周期,比如增强与衰减。而要使得ramp区间有指定的生命周期,前提条件是对值先进行规律化的操作。
    比如按索引序号赋值。@age = float(@ptnum)/@numpt;
    当然也可以是其他规律处理,根据实际要求来。

    相关文章

      网友评论

        本文标题:Houdini Ramp的理解

        本文链接:https://www.haomeiwen.com/subject/ueafjltx.html