Category Archives: 3D Model

11544-sim

Outline Shader 之災

正想喺Unity用Outline Toony Shader,
點知發現佢會成日穿窿
原來個Shader係令每個face都向外移動少少黎做個outline,
所以如果個model有兩個相鄰嘅面形成一個好尖嘅角,
佢地之間個條邊就好有可能會穿窿啦zzz
有尐人直頭唔用Outline Toony Shader @@
加多個黑色model做邊,
但係咁做問題亦都好多,而且要render多個model。

所以我研究咗好耐去解決呢個本身以為好簡單嘅問題orz
暫時最佳辦法就係割走尐邊位,然後Recalculate個vertice normal。

Recalculate Vertex Normal in Unity

Blender預設嘅情況下,
vertex嘅normal會同個face一樣。
所以Outline Toony Shader會將唔同嘅黑色面分離。
Screen Shot 2014-06-01 at 1.19.07 pm
除非用”Recalculate Normal”然後export做3ds file,
或者喺unity import setting重新calculate normal。
喺Unity Project Panel㨂咗個model之後就可以喺Inspector喥做:
Screen Shot 2014-06-01 at 1.27.17 pm
之後同一個位嘅vertex嘅normal就會merge去同一個方向
Screen Shot 2014-06-01 at 1.28.11 pm

Bevel

做完Recalculate normal之後可能都仲未夠好,
例如我要處理呢個mobel:
Screen Shot 2014-05-30 at 5.08.09 pm
個三角形有三個角度不一嘅角,
同邊位上面嘅面形成90度角。
尖嘅角會令Normal偏離,令outline變到好幼,
會同冇咁尖嘅角形成對比:

Screen Shot 2014-06-01 at 1.35.32 pm

呢個時候就可以用Blender可以用Bevel㨂選角度大嘅edge,
然後造多個面去replace佢。
㨂咗個model之後喺property個panel㨂
Object Modifier -> Add Modifier -> Bevel
Screen Shot 2014-05-30 at 5.13.06 pm
然後㨂角度大嘅角黎割
Screen Shot 2014-06-01 at 1.43.11 pm

Screen Shot 2014-06-01 at 1.43.33 pm
較好個settings記得禁Apply先至export~
Screen Shot 2014-06-01 at 1.52.42 pm
(Figure1: Bevel-ed model with 16 triangles)

注意1:我冇去割走90度嘅角但係佢地都改進咗,
因為新嘅model喺每個邊位都畫多咗polygon,
咁佢recalculate normal個陣就會順滑咗。
當然割走曬每個角就最滑但係就會render得慢尐~

Screen Shot 2014-06-01 at 1.59.43 pm
(Figure2: Bevel-ed model with 32 triangles)

注意2:model本身嘅顏色(對光源嘅反應)會因為normal而改變,
留意Figure1本來平的面上對平衡光會有彎的光影而Figure2沒有,
因為Figure1的vertex normal被Recalculate改動太大,
上半部被視為”向上”而下半被視為”向下”,
整個面形成一個彎的normal field。
至於呢個現象好唔好就見人見智啦~

搞個咁簡單嘅effect搞咗我勁耐orz
其實會唔會有更聰明嘅方法做呢?⋯