国产日韩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輔助器做成,等離子球或融化效果。

 

展示出你的作品

 

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


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

亚洲欧美在线一区中文字幕 欧美亚洲自偷自拍 在线 久久香蕉国产线看观看精品yw 国产av无码精品色午夜 亚洲成av人片无码不卡播放器 5060国产午夜无码专区 亚洲免费精品aⅴ国产 亚洲精品毛片av一区二区三区 狠狠色噜噜狠狠狠狠777米奇 亚洲精品久久久久久婷婷 国产精品99久久精品 免费观看18禁无遮挡真人网站 嫩草院一区二区乱码 久久性色欲av免费精品观看 国产人妻精品一区二区三首 久久一本精品久久精品66 中文天堂网www新版资源在线 亚洲va欧美va国产综合 成人午夜亚洲精品无码区 五月婷之久久综合丝袜美腿 国产精品无码a∨麻豆 成年无码av片 亚洲gv猛男gv无码男同短文 亚洲精品一区二区三区四区久久 无码少妇一区二区三区免费 国产欧美日韩亚洲18禁在线 亚洲国产欧美在线人成app 色久悠悠婷婷综合在线亚洲 国产亚洲精品久久久久久武则天 18禁裸乳啪啪无遮裆网站 日韩人妻无码免费视频一二区| 精品人妻无码视频中文字幕一区二区三区 | 国产精品久久久久蜜芽| 亚洲和欧洲一码二码区别7777| 99久久精品6在线播放| 一边捏奶头一边高潮视频| 欧美丰满熟妇vaideos| 久久久精品日本一区二区三区| 国产高清精品综合在线网址| 亚洲精品一卡2卡3卡4卡乱码| 亚洲另类无码专区首页|