国产日韩av无码免费一区二区,成·人免费午夜视频香蕉,国内精品久久久久国产盗摄,大学生粉嫩无套流白浆,国产成人亚洲欧美日韩,爽爽午夜影视窝窝看片,高中生自慰www网站,久久久久国产精品熟女影院

RealFlow 翻譯教程之——破裂的肥皂泡(-)

肥皂泡每個人都吹過,甚至成人也會很有興趣的玩,還嘗試玩出不同花樣。除了好玩,肥皂泡還有一些非常有趣的科學背景。

RealFlow 翻譯教程之——破裂的肥皂泡(-) - 豆芽兵 - 豆芽兵的天地
圖1.一個真實的肥皂泡(圖片出自 Mila Zinkova,發布在GUN,我是在維基百科找到的)

 

表面張力或許是肥皂泡最重要的一個特性了。因為表面張力的存在,這也是肥皂泡會在空氣中搖擺不定的原因。另一個由表面張力產生的效果是,肥皂泡是球形的。假如沒有外部環境(重力,空氣阻力等等),肥皂泡將是一個完美的球形。因為它們總有形成,稱為極小曲面(minimal surface)的趨向。

 

你一開始看到肥皂泡,你可能會認為它有很高的表面張力,其實正好相反。肥皂和洗滌劑表面張力很低,如果不是這樣肥皂泡就不會產生了。因為水的表面張力很高,肥皂泡會立即破裂。

 

另一個讓人印象深刻的是肥皂泡很漂亮。它總是有很多顏色,他們反射的顏色看起來在晃動,混合了油一樣。肥皂泡有這么的豐富顏色,因為它的壁很薄。當水蒸發時(肥皂泡變。,會有不太顯眼的顏色。當然這個效果不能用RealFlow模擬。但可以用物理渲染引擎做到,讓它看起來五顏六色。在渲染時你可以調節材質的不同厚度,得到不同顏色。

 

第一步:怎么在RealFlow里創建一個泡泡

 

第一步就是創建泡泡。在這個例子里,填充模型做泡泡,不是一個好方法,因為它要一個盡可能薄的空心物體。用單個粒子層可以達到這個目的。在RealFlow里有這樣幾種方法來做成這種結構:

 

1把.粒子均勻分布的Python腳本

2.“sphere”發射器

3.“Fill Object”發射器和“k sphere”輔助器結合

4.激活“Particle layer”設置的“Fill Object”發射器

 

第一個方法能給你很好的效果,因為你能得到一個沒有任何縫隙或孔洞的球體。但用粒子腳本是有問題的。原因是每一個粒子有一個確定的基于Resolution值的半徑。

這半徑是很重要的,因為為直接影響粒子之間的力。如果粒子之間距離非常近,你會觀察到互相排斥的效果,流體會變得不穩定。也可以用非常低的內壓“Int Pressure”參數減少這排斥值,但那時就會失去流體的特性看起來像dumb粒子。 這所以是Dumb粒子,當然就是因為非常低的”Int Pressure“值。

 RealFlow 翻譯教程之——破裂的肥皂泡(-) - 豆芽兵 - 豆芽兵的天地

 圖2:分布規則的球體

 

你可以降低“Resolution”值,但不容易找到正確的值。如果太高,很難與粒子交互;太低,流體粒子就會亂飛。

 

第二個方法是使用“Sphere”發射器。用這個方法也可以創建一個很薄的粒子層。你僅僅需要把"speed"值設成很低,例如 0.1 。然后第一幀后停止發射。這樣可以管理表達式或動畫關鍵幀。

 

可能最好的方法就是基于"Fill Object"發射器。這發個發射器提供了兩種模式:第一個模式是填充模型。填充好后你可以把“k volume”輔助器放在模型里面(“Inverse=Yes”),刪除多余的粒子。當然輔助器半徑可以做些調整,根據空心的模型來調。結果還不錯,但你可以在下面的圖片看到,看起來像有花紋的圖案。這方法可以輕松控制厚度并能根據需要,用大量粒子。

RealFlow 翻譯教程之——破裂的肥皂泡(-) - 豆芽兵 - 豆芽兵的天地

圖3.用"Fill Object"發射器填充的空心球粒子,輔助使用"K Sphere"輔助器

 

然后,用“Fill Object”第二種模式:“Particle layer”(粒子層)。當這個設置為“Yes”,RealFlow會覆蓋滿球體表面,但不會出現幾何體交接線。優點是流體是靜止的,因為這是RealFlow自動計算正確粒子半徑,你可以增加“Resolution”到非常高的值,而不會出錯。它也能減少粒子間縫隙,你只是需要一個很高分辨率的球體/泡泡做基礎。

 

用 RF_toolfactory’s “RF Toolbox Scripts”(最后一個教程會介紹這個工具)你可以重新創建很高分辨率的模型。

 

你可以在下面圖片看到結果。請注意這是較低resolution值版本,忽略相鄰邊線。

RealFlow 翻譯教程之——破裂的肥皂泡(-) - 豆芽兵 - 豆芽兵的天地

 這個方法另一個優點是:你不需要任何初始狀態,因為粒子層是Realflow直接創建的,存儲或改變時只要“Reset”一下就可以。

 

第二步:腳本

 

做這個效果的腳本是很短的,也很容易理解。在寫腳本之前,很重要的一件事就是你要知道我們要做成什么效果。我想在粒子層上開一個漸漸擴大的洞。在這個過程中,流體其它部分必須不受影響,保持原樣。

所以第一步就需要凍結所有粒子,然后把他們速度設置成0.0。再然后就開始定義,到底在泡泡哪個地方破裂。函數要允許我們把擴散的種子(seed)放在整個表面,或完美的限制他們在一個特定區域。這部分要在模擬前執行,盡管它是"Simulation Events"腳本:

 

Layout>Simulation Events

 

初始化場景

 

窗口彈出時,你會看到兩個部分。上面部分是模擬事件分支,下面部分是Python 代碼部分。腳本預設必須添加在”SimulationPre“:

 

SimulationPre > Right-click > Add script...(RF5版本后,Layout-->Simulation Events<Ctrl+F2>   打開下圖3窗口)

 

此操作會打開另一個窗口,你可以輸入腳本:

 

# Get the emitter, loop through its particles and freeze them

 

emitter = scene.getEmitter("Fill_Object01")

particleList = emitter.getParticles()

for particle in particleList:

  particle.freeze()

 

# Determine four seed particles which are relatively close together

 

idList = []

maxId = len(particleList)/50

for i in range(0,4):

  curId = random.randint(0, maxId)

  idList.append(curId)

scene.setGlobalVariableValue("oldRadius", 0.005)

scene.setGlobalVariableValue("idList", idList)

 

第一個代碼片段只是簡單的調用發射器和粒子。通過循環全所有粒子凍結用freeze()函數。這個函數功能是使粒子保持當前所有狀態,例如,velocity和position.直接粒子不再鎖定時。


 

RealFlow 翻譯教程之——破裂的肥皂泡(-) - 豆芽兵 - 豆芽兵的天地

 

圖3:初始化"Simulation Evets"窗口腳本 .

 

腳本第二部分是很有趣的,因為會定義種子(seed)。在這個例子,種子(seed)是產生隨機。為此,腳本從“particleList”函數指定粒子的總數。要控制種子(seed)影響更多或更少區域,整個粒子數除以50.如果想靠近一點,可以除以100,或500,如除以1則遍布整個表面。接下來循環

 

for i in range(0,4):

 

用來創建4個種子粒子。如果你想要增多種子,只要簡單的改變括號里第二個數字,例如(0,2)或(0,8)。結果是一個隨機數,可以用來尋找一定的粒子,通過利用粒子的ID數。ID被存儲起來供進一步使用。

 

最后,所有相關數據必須存儲在被為全局變量的里面。這個變量是一種,當你想共享不同腳本(類型)下的值/變量(例如Batch -> SimulationPre, FramesPre -> StepsPost 等等)和當變量要永久存儲(值固定)。全局變量是“oldRadius”和“idList”。這“idList”是,當然需要種子粒子ID。“oldRadius”變量決定種子粒子周圍破裂的大小。它值要很小獲得連續效果。它甚至可以是0.

 

模擬

 

第二部分是腳本控制模擬,在"FramesPre"下,在simulation events tree (模擬事件分支)。這里腳本輸出和用粒子ID,和初始半徑。另外,循環需要遍歷整個粒子。當一個ID存在于“idList”,腳本就繼續擴散到相關連粒子。

 

import random

 

# Prepare the variable, get the emitter and its particles

 

oldRadius        = scene.getGlobalVariableValue("oldRadius")

idList           = scene.getGlobalVariableValue("idList")

emitter          = scene.getEmitter("Fill_Object01")

particleList     = emitter.getParticles()

initialRadiiList = [0.005,0.009,0.015,0.012]

counter          = 0

 

# Loop through all particles, get Ids

for particle in particleList:

  theId = particle.getId()

 

  # Check if the current Id is in already stored in the idList.

  # If yes, calculate the radius around the seed particles.

 

  if theId in idList:

   newRadius = oldRadius + initialRadiiList[counter]

   neighbors = particle.getNeighbors(newRadius)

   counter  += 1

  

   # Replace the old radius with the new radius to simulate a grwoing area

   scene.setGlobalVariableValue("oldRadius", newRadius)

 

   # Loop through the particles around the seed and unfreeze its neighbours

   for neighbor in neighbors:

    if (neighbor.getId() in idList):

     particle.setVelocity(Vector.new(0,0,0))

    else:

     neighbor.unfreeze()

 

腳本思路是,收集種子(seed)粒子周圍一定半徑內相鄰粒子。一旦種子(seed)識別出周圍粒子,它就會解鎖,然后(再次)受到輔助器和力影響。為了使破裂變得更有豐富,每個種子粒子有不一樣的初始半徑。這些半徑存儲在擴散列表:“initialradiiList”里。

 

要獲得種子粒子周圍漸漸增長區域,老的半徑值(oldRadius)必須要被“newRadius”取代。這只能通過全局變量,因為這種類型,不會被清空,在模擬步驟執行后。

 

在此腳本計數器是必要的,從“initialRadiiList”不同的半徑值分配到每個種子粒子:在腳本第一部分四個種子粒子已經設置了。所以必須要除以這四個半徑值。如果ID找到,腳本會從這個列表中給出適當半徑值,例如,半徑值3的種子(seed)粒子:

 

initialRadiiList = [0.005,0.009,0.015,0.012]

[ ... ]

  if theId in idList:

   newRadius = oldRadius + initialRadiiList[2] # (= 0.015)

   neighbors = particle.getNeighbors(oldRadius + 0.015)

   counter  += 1 # Incement the counter to get the next radius value

 

 

請注意,Python列表總是從0開始,第三個位置在"initialradiList"數字是"2":0,1,2,3。

 

在這個階段的腳本已經標出相關種子粒子和相鄰粒子,F在完成遍歷,相鄰粒子,接受"unfreeze()"函數。但這是特別的。這里涉及到種子粒子,因為他們要保持接近他們的初始狀態。想像一個種子粒子,受“Noise field”場影響,在泡泡表面。在這個例子里,腳本找不到相鄰粒子就不會繼續破裂,那會停止在某個點。為避免這個,每個種子粒子速度將要放緩:

 

if (neighbor.getId() in idList):

 particle.setVelocity(Vector.new(0,0,0))

發射器設置

設置發射器實際上只是簡單的幾個步驟。但在你開始往下做時,必須要在Global Links面板移除“sphere”結點,因為它很影響粒子。

 

為了在表面得到足夠多粒子,很高的resolution是必要的。在這個場景"Resolution"值是 1000.0 對 2*2*2球體,有 5120個面。仍然會在粒子間看到一些邊線,但做成mesh就看不到了。如果你要創建更多粒子,可以自由的改變這些值。你會看到模擬,仍然是很快的,盡管因為Python腳本,都是用單核模擬的。

 

為了要凸起的流體界線,“Ext pressure”要設置到5.這將有助于保持粒子靠近一起,避免粒子逃逸。

 

最后,“Surface tension”。代替發射器值,你可以用Surface tension輔助器(同名),激活“Balanced”設置,但這不是必須的。必要的是在“Surface tension”上key幀,讓模擬結果更真實一點。在介紹真實的肥皂泡時,你知道真正的肥皂泡表面張力是很小的,但那只是自然界中,這是模擬。在RealFlow我們可以用各種方法模擬,達到想要的效果。因此設置時數值是否符合自然界中,是不重要的。要達到所需要的外觀和形態時就要很高的“Surface tension”值,如果這值很低,泡泡就會毀掉。這是“Surface tension”動畫曲線:

RealFlow 翻譯教程之——破裂的肥皂泡(-) - 豆芽兵 - 豆芽兵的天地

 

 

 

動畫區間在0到120幀間從 200降到50.曲線是“Bezier”類型,創建第一幀的過程中,泡泡幾乎完好無損。

 

當你點擊“Simulate”,現在你能在種子粒子周圍區域看到逃逸的粒子,或不想要的效果。要避免這個,我建議你用更高的MIN substeps值,在25到50之間。它能保持一些加速的粒子。要保持速度穩定,就添加輔助器。

 

輔助器

 

要除去非?斓牧W雍捅3至黧w穩定,在場景里要用到三個輔助器:

 

1."k Isolated",這個輔助器除去孤立的粒子在 0.1秒后

2."K Speed"作用:粒子速度超過2.0就會被除去

3.”Drag force“這個輔助器把”Drag strength“調到5.0,有助于有一個合理的模擬環境和看起來更自然。

 

基于發射器設置,你可以調節輔助器參數,但要有一個好的起始點。

 

要使模擬更豐富,和得到漩渦,添加"Noise field"場。通常使用值 0.2,來模擬,但“Space scale”3.0獲得的漩渦在更小的區域。最后輔助器是“Attractor”,要使排斥變得很小,"Internal force"值設為-0.1,來分散一點粒子。

 

你現在得到近似圖片上的效果了嗎:

RealFlow 翻譯教程之——破裂的肥皂泡(-) - 豆芽兵 - 豆芽兵的天地

 

 

圖4.粒子表達破裂的肥皂泡

 

在這圖片你能清楚的看到不同的速度,但你的模擬可能只會顯示一個統一的藍色外觀。要有不一樣外觀,到發射器”Display“面板,用下面的設置

 

Node Params > Display > Automatic range > No

 

Node Params > Display > Max range > 0.4

 

Mesh (網絡)

 

所有的部分就是為了創建一個好的mesh。因為肥皂泡是非常易碎的,mesh要盡可能的薄。當然,mesh有一個確定的厚度,你不能創建一個單面的模型,或mesh僅是由一個面幾何體構成。最終設置,是基于粒子數量和場景大小。

RealFlow 翻譯教程之——破裂的肥皂泡(-) - 豆芽兵 - 豆芽兵的天地

 

 

 

 

在左邊圖片上泡泡有接近 92000個粒子。要圓滑幾何體邊線縫隙,“Smooth”值要被用到,除了減小filter值。用很低的"Polygon size"值可提供更多的細節,調高就會損失細節。

 

要得到很薄的表面,mesh的“field”設置必須調節。這里你可以看到“Radius”值。這參數決定了球體的半徑(是指每個創建的粒子)。如果模擬不足,粒子值很小時,你就會看到縫隙和孔洞。因為球體上粒子不能互相接觸到。當你粒子數量很小時,就要降低“Radius”,和減小mesh厚度。所以你如果想要一個非常薄的泡泡,就大大提高發射器的"Resolution"和減小mesh的“Radius”

RealFlow 翻譯教程之——破裂的肥皂泡(-) - 豆芽兵 - 豆芽兵的天地

 

 

圖5.Field設置

 

接下來的圖片,就是剛設的mesh結果,縫隙和孔洞,已經看不到了。粒子呈一串串,和一絲絲狀,是由于很高的“surface tension”引起的。

RealFlow 翻譯教程之——破裂的肥皂泡(-) - 豆芽兵 - 豆芽兵的天地

一句話總結:

當當哐!Fill Object ,Prticle layer建泡泡

嚓咔咔!模擬事件腳本是關鍵,初始化場景,控制模擬進程

嘰嘰咕!發射器,輔助器,也要來幫忙

咂叭叭! mesh,mesh去渲染。

(不太押韻,有時間再修改,大家有好建議可以評論告訴我)

 

 

 

版權注意事項

 

所有在這文章中圖片,文字,和素材都屬于RF_toolfactory.你可以復制和分享這PDF,但不允許直接提供PDF下載。無論是在論壇,還是文件共享站,種子站或其它地方。但你可直接鏈接“simple Vortex”,進行交流的目的,是可以的。

 

所有已經給出的材料都做過最大的努力,但錯誤不能完全排除。RF_toolfactory不為計算機或軟件崩潰和/或數據丟失負責。需要您自己承擔使用本材料腳本,和文件在你硬盤上的風險。

 

不允許轉賣PDF和素材。不允許刪除版權信息。如果你用這PDF圖片或文字到有其它目的,要標明出處。

 

“Simple Vortex” by RF_toolfactory (http://www.rf-toolfactory.com)

 

謝謝。

 

RealFlow 翻譯教程之——破裂的肥皂泡(-)  

2011-11-25 01:02:47|  分類: RealFlow探索 |  標簽:realflow  肥皂泡  免費教程  翻譯  豆芽兵   |字號大中小 訂閱

 
 
重要提示:12,12日 這個教程最終模擬時,第一遍會報錯。Reset一下,再模擬就正常了。

具體原因解釋請看問題總結日志:


內容簡介:
RealFlow 翻譯教程之——破裂的肥皂泡(-) - 豆芽兵 - 豆芽兵的天地
重要提示

 

在 2011.10.5號之前的PDF教程“Bursting Soap Bubble”,有一個錯誤。第二個腳本不能放在“StepsPre”,應放在“FramesPre”。非常感謝來自 孟買/印度(Mumbai/India)的朋友 Sukumar Senthil Raj,告訴我們這個錯誤。正確的教程已經放到下載欄了。

 

此免費教程教你怎樣創建一個,在慢鏡頭中慢慢破裂肥皂泡的漂亮效果。用一點Python腳本就可以幫助你能,確定肥皂泡的不同表面區域破裂。一旦表達破開,效果就會波及整個泡泡。


 

 

雖然此效果可以不需要腳本,但為了更好的控制還是使用的好。

1.效果速度傳播

2.可以輕松定義表面到底哪個區域破裂

3.當破裂產生就定義新的點

4.此效果不只限于肥皂泡,可用于任意開關

 

最后,創建這流體特殊效果要做的一些設置,僅僅是非常高的表面張力值(tension)。輔助器和力也很重要。當然要進行Mesh操作,另一個是原因是,因為我們想輸出一個肥皂泡,最好也是用Mesh。你能在右邊看到兩個視頻,第一個是在RealFlow里Mesh過的樣子,第二個是輸出渲染過的版本。

 

總之這個慢慢破裂的肥皂泡效果是非?晌说模憧梢约由掀渌O置,應用在不同場合,例如用kill輔助器做成,等離子球或融化效果。

 

展示出你的作品

 

當然一個教程只能是一種解決問題的方法,我們希望你多調調參數,力和動畫曲線,并展示出你的實現方法。我們對你作的教程很感興趣,你可以在網站上發靜幀或給我們視頻鏈接。


—— 鄭州奇境視覺動畫公司 收集整理 【中原專業視覺圖像服務商-專注于建筑漫游動畫,施工演示動畫,產品展示動畫

主站蜘蛛池模板: 久久国产精品成人免费 97久久超碰国产精品旧版 国产99视频精品免费视看6 97影院理论片手机在线观看 狠狠色狠狠色综合日日不卡 国产欧美日韩亚洲一区二区三区 男人添女人囗交做爰视频 亚洲欧美日本国产专区一区 玩弄人妻少妇精品视频 欧美性xxxx极品hd欧美风情 国产 精品 自在 线免费 少妇高潮无套内谢麻豆传 玩弄丰满奶水的女邻居 九九线精品视频在线观看 亚洲国产成av人天堂无码 国产精品民宅偷窥盗摄 动漫成人无码精品一区二区三区 男人狂躁进女人下面免费视频 亚洲色大成网站www久久 国产精品泄火熟女 国产精品边做奶水狂喷无码 亚洲大成色www永久网站注册 美女视频黄的全免费视频网站 日韩av无码社区一区二区三区 玩弄少妇的肉体k8经典 国产成人精品97 国自产精品手机在线观看视频 亚洲国产综合无码一区二区bt下 最新亚洲国产手机在线 久碰久摸久看视频在线观看 亚洲国产成人久久综合碰| 亚洲国产老鸭窝一区二区三区| 亚洲伊人久久大香线蕉| 国产福利姬喷水福利在线观看| 乱人妻人伦中文字幕| 97久久综合区小说区图片区| 国产精品乱子伦xxxx裸| 人妻少妇-嫩草影院| 香蕉久久一区二区三区啪啪| 亚洲欧美日本国产mag| 麻花传媒剧国产mv高清播放|