Houdini Ramp的理解

Houdini的ramp就是一個(gè)可曲線調(diào)控的0-1值重映射分布工具。常用在值的平滑過渡和變化的生命周期上。

使用ramp需要了解如下基本知識:
  1. ramp的原理是將某個(gè)值進(jìn)行0-1的重映射。注意重映射不等同于乘以一個(gè)0-1范圍的值。

  2. 一個(gè)值要能被正確ramp,前提必須是——該值自身范圍是0-1。

  3. ramp處理的值是獨(dú)立的,它只跟該值所在0-1初始分布有關(guān),也就是說如果該值是點(diǎn)屬性值,那么每個(gè)點(diǎn)進(jìn)行ramp時(shí)它們各自的值進(jìn)行重映射時(shí)都是相互獨(dú)立的,相互之間是沒有關(guān)系的。

  4. 默認(rèn)ramp圖形是一個(gè)對角線,表示的是0-1的值空間分布,其水平方向即X軸上的值表示該值的初始值大小,而其垂直方向即Y軸上的值表示其重映射后的輸出值大小。

  5. 由于被ramp的值必須是0-1,所以被ramp的值在ramp坐標(biāo)系初始時(shí)都會在該對角線上有一個(gè)點(diǎn)的位置與其大小對應(yīng),即每個(gè)值都在該對角線上都有一個(gè)初始位置分布。對角線的調(diào)整意味Y軸輸出值的變換。

  6. 關(guān)于X軸的輸入值與Y軸的輸出值可以這么理解,假如初始化有4個(gè)值a=0.1,b=0.2,c=0.3,d=0.4,其在ramp坐標(biāo)系中可以表示為以初始值為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的值進(jìn)行ramp導(dǎo)致的錯(cuò)誤結(jié)果
float a =float(@ptnum);
@b=a;
f@a = chramp("ramp",a);

這里變量a的值等于點(diǎn)序號值,屬性b的值是a重映射之前的值,而屬性@a是變量a經(jīng)過ramp后的值。結(jié)果如下



可以發(fā)現(xiàn)當(dāng)被ramp的值a超過1時(shí),永遠(yuǎn)為1。之所以為1是因?yàn)閞amp的最大值是1。

ramp坐標(biāo)圖解釋:
  1. 紅色框:水平線上,或稱X軸,表示原值的大小分布。
  2. 綠色框:垂直線上,或稱Y軸,表示重映射后的大小分布。
  3. 默認(rèn)起始是一個(gè)對角線,原值在該對角線上有且僅有一個(gè)唯一位置。比如:點(diǎn)A的屬性值a=0.8.即上圖黃色框的點(diǎn)。默認(rèn)X值=0.8,Y值=0.8。
  4. 最終輸出值為綠色框,也就是Y軸的值。
  5. ramp所做的運(yùn)算,類似clamp(原值,min,max)或者fit01(原值,min,max),只不過min與max都變成了曲線所控制的Y值范圍。
    上圖表示,超過0.82的值,都視作為1,即最終輸出值為1.
動(dòng)圖說明,為什么ramp的區(qū)間范圍或者生命周期只跟自身值在0-1區(qū)間分布有關(guān)系

下圖演示,當(dāng)值超過0.8的值被ramp重映射為1的過程


關(guān)于ramp區(qū)間生命周期問題

ramp區(qū)間常用來表示值的生命周期,比如增強(qiáng)與衰減。而要使得ramp區(qū)間有指定的生命周期,前提條件是對值先進(jìn)行規(guī)律化的操作。
比如按索引序號賦值。@age = float(@ptnum)/@numpt;
當(dāng)然也可以是其他規(guī)律處理,根據(jù)實(shí)際要求來。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容