2016年7月31日 星期日

Houdini 實作練習

影片來源https://vimeo.com/174958114

Entagma真的蠻神的,就是講得太快了些,我根本聽不懂啊XD 所以就是跟著做而已。

主要核心技術
用node輕鬆連接node
vdb一些node的使用
remesh

基本流程是這樣,版本H15.5:

建立幾何形狀
isoOffset轉成volume
scatter撒點到3維空間
connect adjacent pieces 將點連接起來→另外建立polygon球與copynode將點上都copy球體

wireframe把線加上實體
合併球體跟wireframe
用VDBnode轉成一個個voxel
用VDB smooth sdf 稍微潤滑
convertVDB轉成polygon
remesh重新布線
wireframe在線條間建立實體線段
上材質 調燈光 輸出圖片

在上面iso之前可以加入switch來切換,我是加在iso之後,因為我在別的地方建立文字,而文字要達到比較完整的volume效果的畫,需要不同的值,所以我是在別的地方做好之後,在object merge進來…。
不過文字要連接…。
上效果

看起來像被揍過一樣 = =。





2016年7月30日 星期六

關於mt4

由於不能加密...
加密的方法有點麻煩
所以我把文章貼到pixnet去了。
http://edgarx14.pixnet.net/blog

2016年7月24日 星期日

Houdini node 介紹 - facet(H15.5)

原文
http://www.sidefx.com/docs/houdini15.5/nodes/sop/facet



Controls the smoothness of faceting of a surface.

控制表面的平滑,同時也能計算點與面的法線。

Group:選定特定group來進行facet(有的話可以選)

Pre-Compute Normals:以連入此節點的input geometry來計算normal。

Make Normals Unit Length:重新把連入的Normal長度resize為1。

Unique points:如果任何vertices有共享點的話,建立新的點,讓每個點變成是不可共享的。

Consolidate
1. No Consolidate:點不會被融合在一起。
2. Consolidate Point Slow/Fast:指定的距離內共享點。
3. Consolidate Normals Slow/Fast:指定距離內的點法線平均。

Slow version不應該使用,for backwards compatibility only.

Distance:Consolidation 的距離。

Use Accurate Distance:強制使用精準的Consolidation距離。

Remove Inline Points:清除多餘點。

Distance:共線距離

Orient Polygons:所有polygons朝向同一方向。

Cusp Polygons:Hard Edge化。

Cusp Angle:Hard Edge 化的Threshold角度設定

Remove Degenerate:清理有問題的polygons。

Make Planar:將polygon平坦化。

Post-Compute Normals:以運算結果來計算Normal。

Reverse Normals:反轉點的normal方向,在其他運算結束之後執行。


Houdini node 介紹 - object Merge(H15.5)

原文:
http://www.sidefx.com/docs/houdini15.5/nodes/sop/object_merge

PS:正剛開始進行英文訓練,所以東西有些實在看不太懂內容,有錯請不吝指正~~

Merges geometry from multiple sources and allows you to define the manner in which they are grouped together and transformed.

從多個來源merge幾何物件,並且定義他們group和transform的方式。

Number of Objects:底下載入模組的數量。
Enable Merge n :載入模組第一項,控制這個模組n要不要啟用,比移除更來得有彈性,資訊會留著。
Object n :載入模組的第二項,選擇要merge進來的node,這裡選到的node必須是geometry才行,fbx載入後的subnet是不能選的。這裡有各種使用方式:
例如
1. /obj/ball*。使用*號來將所有以ball為開頭的node都merge進來。
2. dynamic path來將動力學模擬的結果載入。
3. 使用__display_sop__或__render_sop__來代替設定為顯示模式的node,或設定為render模式的node。
4. bundle reference,使用@props 這種方式。* 這裡我也不太清楚,要實際使用過才知道。
5. 就算不是切到顯示的node,也可以merge進來。
如果路徑沒有輸入,就不會Merge任何東西。

Group n :載入模組的第三部分,如果載入的東西有分Group的話可以從這裡選擇,不輸入的話就是載入所有Group。

Expand Group n:載入模組的第四部份。如果上面的Group n不是空白的,這個功能開啟後可以保持被細分過的polygon primitives也有正確的接縫。

第一項Number of merge,就依照輸入數量產生對應數量的載入模組。

Transform:大意好像是說,這個選項是用來設定載入的物件的Transform屬性設定。
1. None,制止任何修正的變換值。
2. Into This Object,確保source object與this object之間的差異
3. Into Specified Object,使用指定的Transform object,而不是目標空間中的object。

Transform Object:被Merge進來的物件將會被這裡設定的物件關聯。
1. 留空的話,merge進來的物件就會是目前的object's space,會出現在原點,不帶任何的tranform值。
2. 輸入 . 的話,物件merge會在他的原始位置,但是transform值歸零。
3. 有選到東西或是輸入路徑的話,有點類似變成該物件的子物體的感覺。

Invert Transform:上面有輸入物件的話,打勾可以反轉兩物件的關聯,變成與父物體同樣的方向或是反向。

Create Point Groups:merge in 的每個物件都建立一個point Group,每個group名稱都是唯一的,有需要的話會加上一個數字。

Point Group Prefix:Point Group的前綴。

Create Primitive Groups:為每個merge in的物件建立一個primitive Group。

Primitive Group Prefix:primitive group的前綴

Create Per-Point Path:建立一個Attribute在import進來的點上,包含source完整路徑。
如果是從DOP來的點,那路徑就是DOP Geometry Data的路徑。

Create Per-Primitive Path:與上述參數類似。

Path Attribute:增加path attribute後的名稱。預設名稱的objname可以在之後被expression使用→OBJNAME這個變數。

Pack Geometry Before Copying:這裡應該是文檔錯誤,node上是merging。應該是指在merge in 之前先把geometry打包吧。

Pivot Location:中心點位置,可以在物件中心,或是原點。

Display As:顯示類型...

Add Path Attribute:允許使用者把完整路徑放到有命名過的字串attribute中。

FBX in Houdini

比較早期一點有注意的人會知道mixamo這個網站。這裡有提供一些mocap的動作與角色,有免費有付費。

根據這個教學,可以知道fbx要怎麼帶入houdini中。
https://vimeo.com/59524177  這是個模擬布料的教學。

我從mixamo上抓了一個peasant girl跳samba的fbx下來,載入後是subnet的狀態,所以我先找到geometry是在peasant girl這個geo node之中。

所以在/obj下建立一個geometry,使用object Merge這個 node,然後要選到上圖之中的這個node來載入,就可以讀過來。接著在用rop output node來輸出成bgeo。


本來我要試著轉成alembic,但原因不明的錯誤...。

我使用的是Houdini 15.5.523 NC 版的Houdini FX...

PyQt in maya - 01.準備工作

不囉嗦,直接從實作開始說明,我認為是對學習最快的。

不過在開始寫之前,我們要知道幾個小事情。可能讀到這篇文章的人,完全沒有寫過程式,以前在學習的時候,老師們都會說要把他們當成第一次學習的人來說明,也就是要說得讓大家都懂才行。我們就從最簡單的東西開始。

由於我這台新筆電,完全不打算灌maya,裡面現在只裝了steam買來的特價世紀帝國2(透露年紀了),所以maya的部分我就不附圖,大家自行查看maya的document。

maya開了介面之後,在右下角有個小小的方形。點了之後會打開Script Editor。分成上與下格。上面是執行的Script結果,下方則是編輯的地方。預設打開應該是mel的標籤頁。在上面按右鍵,選擇New Tab,選python。

直接用maya的python editor來編輯是可以啦,但功能很陽春,我只會在這裡直接呼叫python來測試,或是測試函數的寫法,以及用來debug。

所以建議可以使用Notepad ++ 這一套,編輯上面非常好用。這個因為教學很多,我就不多說啦。







PyQt in Maya - intro

這裡開始我會以我所認知的概念去講,這未必是正確的,但我相信會有助於看文章的人學習。

PyQt in Maya

簡單來說,Maya自從被自動桌買入之後,至今一直企圖進行很大的變革。當然有些變革是測試,不過在Maya 2011時,他們將整個Maya介面做了很大的修改,就是使用Qt介面。

去查資料的話,會發現這個Qt本來是Nokia的東西。要說的話,在我學習到現在自己在寫小工具的整個歷程來看,Qt是一個快速簡易的介面,而Maya與Python其實都有帶著Qt Designer這個介面製作工具。

曾經我一開始,是用Maya內部的指令去拼湊出我要的介面。說在前頭,我個人是比較鄙視mel script的,雖然mel能做到很多maya python沒有的指令(就只是maya python沒有加入而已)。

為何要鄙視呢?這就要從python的特性去說。

在這裡我要鄭重地說

要學python!也不要學python!

要學的原因,是目前許多軟體,就我有用過的,maya不用說,Houdini、Nuke,製作魔戒半獸人大軍的massive(在舊版本,還是獨立軟體的時候,不是現在變成maya外掛的這種。),做crowd現在非常知名的Miarmy,都支援python,Miarmy還是用python寫的。

但為什麼不要學呢?
因為Python的設計有幾個地方,會讓人難以接受其他語言。
1. python的任何變數都不需要宣告,只要賦值。給他字串,他就是字串;給他list,他就是list。
2. 採用縮排的方式(tab = 4個空格,但是記得不要兩者混用,兩者混用的話會讀不懂,最好都是用空格。)來界定函數與迴圈的範圍。

光是基於以上這兩個,就造成了Python的語法非常清楚好讀,mel裡面一下{}大括號,一下一堆$String,實在是太囉哩叭唆了。

一旦學了python,就回不去了。

2016年7月17日 星期日

Blender step6 曲線編輯製作blender圖案

https://www.youtube.com/watch?v=6VluMZsIRHE

本文前半基礎來自於這個,blender小聚。跟著做完之後再把步驟和註解打上來。

1.開啟blender,左click選到中央的cube,按x或del將它刪除掉。

2.按下N開啟右側功能選單列,倒數第二個background images,點擊Add Image,下方會跳出更多選項。將Axis設定為top view,也就是放在頂視圖裡。接著選擇image,movie clip是影片用來參考的。

3.點選open,選到從網路上抓下來的這張圖。
5.按7切換到頂視圖,再按5切換到ortho正交視角,圖片就會出現。移動一下這張圖片,將藍色的原點大致放在世界座標中心,這是為了方便製作。以這張圖來說,大概設定2.55,0.4就差不多了。

6.接著就要開始畫曲線。按Shift+a新增一個bezier curve。按tab切換到編輯模式。

7.圖中會有一堆箭頭指出曲線的方向與距離的疏密,這在後面拉線的時候很好判斷。選到尾端的點,放到blender圖案的最上面,先來做這條直線。放好位置之後,再控制兩端的拉桿。此時拉桿預設是對齊(align)的狀態。

8.移動另一端的點,並且調整位置。接著在選到點的狀況下,按住ctrl+右click,加入第二段線。接下來以此類推,直到第一個尖角。

9.這時候必須要把兩邊的拉桿折斷才能畫出尖角,因此選擇中間的點,按V,選擇Free來釋放拉桿。以此類推直到最後。一旦折斷過,就會一直保持free的狀態,除非再次切回來。最後,選到最後一個點,shift加選第一個點,按Alt + C,關閉curve。

10.這時在右邊功能列(可按Shift+space切換)選到curve,將shape切換成2D,剛才做的這個範圍就會變成一個面。

11. 中間的圓我們可以直接加入一個貝茲圓,讓所有貝茲曲線自行運算來產生挖洞的效果。在剛才曲線的編輯模式下,按Z切成wireframe顯示模式,Shift+a加入一個貝茲圓。

12. 使用GSR與單軸向鎖定(即按下GSR後,輸入XYZ來指定要改變的方向)的方式來調整。然後在選到這個圓,往內複製一個來做出藍色圓點的部分。完成後退出編輯模式,按Z切換成solid顯示。以下為示意圖...因為我複製到兩層,變成無法形成面,undo的結果是曲線沒了。先拿圓來代替。

13.在右邊curve功能表下方,輸入Extrude = 0.25,就會長出實體;在設定旁邊bevel的深度,會切出倒角,再把Resolution設定為3,增加倒角面數變成圓角。

14. 接下來就是材質。先將物體移動到地平線以上,建立一個plane,拉大為scale 20。調整攝影機的位置。(按數字鍵的0進入,然後按N選單勾選Lock camera,就可以直接控制camera,這與houdini類似。)

15.將上方的renderer由blender render切換成cycle render。

16.選到Logo,點選材質並選擇Mix shader。這個shade會有blend的效果,經由fac因子來調整混合的量。

cycle render 是給予幾種基本的材質,然後由使用者自行去混合疊加以得到我們想要的效果。

17. 加入glossy與diffuse兩種效果。fac的數字越小越接近第一個shader。glossy是金屬高光,diffuce則是單純顏色。

18.接下來,右側功能表選到第一個相機的圖案,將Render使用CPU改成使用GPU。

19.切到地球圖案(環境),點選Use Node,並且且勾選AO,將factor改為0.5。

20.如果把mix shader的factor拉到底,開啟render顯示模式,就像下圖金屬感非常強。

上方黑色是因為沒有環境可以反射。這裡設定成0.3即可。

21.接下來設定顏色,按Num7回到頂視圖,並用Num5切成orthogonal正交視圖,就可以看到我們原本設定的image。按下N開啟右側參數欄位,在background image下有個opacity半透明的數值,開到1讓圖片完全顯示。按下z切換到wireframe顯示模式。然後在材質的shader 2,diffuse材質的color上點一下,使用滴管吸取圖片中的橘色。

將金屬顏色也設定成一樣的橘色。將這個材質設定名稱為orange。

22.新增一個材質,並且也選到orange。

這時在旁邊會出現一個2,在2上面點一下。他會複製orange這個材質,變成orange.001這個名字。

再將orange.001改名為blue。並改變blue材質中兩個shader的顏色,吸取參考圖中的藍色。

23.按tab進入編輯模式,先按A確定取消選擇了,再按B框選模式,框選最中間的那個貝茲圓,再按下材質標籤頁上面的Assign套用。這樣中間的顏色就改好了。

在render模式下可以看到顏色已經改變了。不過在視圖中顏色沒有改變,到下方的設定裡面,有個viewport,將它設定為一樣的顏色,這樣視圖中也會顯示一樣的顏色了。

24.給地板一個材質,也設定是Glossy BSDF,Roughness 0.3,顏色深灰色。

25.算圖會發現金屬感沒了,因為環境的關係。所以選到地球圖案,在color旁的小點點一下,加入一個Env texture,點選open選到一張HDRI圖片。

25.現在按F12算圖會看到雜點很多,這是算圖的設定裡Sample設定太低的關係,或是場景中光源不夠充足。新版本的光源已經可以在Cycle render中直接拿來使用,也可以使用模型,設定材質來打光。如果要算有粗糙度的材質或玻璃,render的sample設定至少要在3000以上,有時候要設定到5000才會完全乾淨沒有雜訊。

26.現在這樣的實體並不是真正的實體,如果要拿來做動力學運算的話,會發現這沒法設定成碰撞物。選到物件,按下Alt + C,選擇Mesh from Curve/Meta/Surf/Text。這樣就能把這個表面轉換成Mesh。

最後加上cloth的模擬,結果如圖。


2016年7月10日 星期日

Blender step4 隕石製作

網址如下:
http://www.blenderguru.com/tutorials/how-to-make-a-realistic-asteroid/

這裡有個Finish.blend檔案可以下載。


會需要下載是因為,一般的blend檔案之所以大,是把材質也整個打包進去了。所以要學怎麼把材質給拆出來。下載好blend檔案之後開啟。


很猛的樣子...。依照下圖的步驟,找到隕石的貼圖,選擇color,然後在最下方的箭頭處,點擊可以Unpack file把圖檔給存出來。


接著開始製作。

1.首先預設的box物件,加入一個Modifier / Subdivide,設定6階,並且在Transform工具列設定為smooth。

2. 建立一個新的Texture,Type為cloud,參數如圖。

3. 加入Modifier / displace,並選擇剛才製作的這個texture。


4. 加入材質後,使用剛才存出的材質圖片。

F12出來的效果如圖。


單軸向移動旋轉縮放:
啟用G R S的狀況下,輸入要單獨影響的xyz軸向。

要雙軸向的話,則是啟用GRS的狀況下按住shift,輸入不要動到的軸向。

選到物件後,按M可以選擇要放到哪個圖層。


step4 fin