Tuesday, June 24, 2008

幸福點名

因為我不幸的被我女朋友點到名了,
所以就要玩這個以幸福為名的??(請自由想像)遊戲.....

幸福點名,遊戲規則如下:

A. 被點到名字的要在自己的部落格里寫下自己的答案,然後去掉一個你最不喜歡的問題再加上一個你的問題,仍然組成20個問題,傳給其他8個人,列出其他8個需要回答問題的人的名字,還要到這8個人的部落格里留言通知對方——你被點名了,完成遊戲的人將會得到不可預知的好運。

B. 這8個人要在自己的部落格里駐明是從哪裡接到的,並且再傳給其他8個人,讓遊戲繼續下去,不得回傳。

C. 若同時被2個人點名,或先後被二個以上的人點名,可以只回答一次。



1. 你認為分手後的男女朋友還能做普通朋友嗎?
AnS:我不會因為我辦不到就說不行,世界上還是很多心胸開闊的人

2. 最近最鬱悶的事?
AnS:肚子越來越大了

3. 世界末日就在明天,你最想做的一件事是什麼?
AnS:把所有的奸商跟政客幹掉,世界末日有99%是他們造成的.

4.如果要被變成動物,妳要變成什麼?
AnS:貓,感覺每天都很慵懶

5. 如果你是1億元頭彩的得主?
AnS:那我會希望那張彩券是在英國買的,不是在印尼.

6. 你能為你的國家做什麼?
AnS:誠實納稅,希望這些腐敗的政客不要拿我的錢去綁庄腳。

7. 你的另一半做過什麼讓你最感動的事?
AnS:每逢紀念日的手工紀念品

8. 會介意戀人/老公/老婆有談心的異性朋友嗎?
AnS:不一定,要看那個異性朋友我喜不喜歡

9. 如果可以對過去你曾經傷害過的人說些話,你最想說的是什麼?
AnS:如果是無心的,請原諒我。如果我是故意的,那就沒什麼好說的,除非有一天我認為是我錯,才會想說些什麼話吧.

10. 和戀人/老公/老婆吵架後,通常多久/幾天和好?
AnS:馬上,因為生命不應該浪費在這麼負面情緒上,就算是爭論,也該是在理性的時候做討論.

11. 戀人/老公/老婆讓你最欣賞的優點是什麼?
AnS:有氣質

12. 春夏秋冬最喜歡哪個季節?為什麼?
AnS:冬天,因為泡熱水澡很舒服

13. 十年以後,你想過什麼樣的生活?你打算如何實現呢?
AnS:平平淡淡的生活,努力不要讓自己變得太功利,功利的人會不自覺的用有色眼鏡看待事物,
因而失去一些東西,而這些東西,恰恰就是平淡生活的基礎。

14.接下來想去旅行的國家或城市,為什麼?
AnS:帛琉,因為海跟夕陽很漂亮。

15. 如果可以自由選擇,你最想居住在哪個國家/城市?
AnS:台灣/中和,因為不管多晚出來,可以買到宵夜。

16. 如果要刺青,會選擇刺在哪裡/什麼圖案?
AnS:腳趾頭,刺人臉小圖,這樣以後還可以拿來當指頭玩偶逗別人玩

17. 會介意戀人/老公/老婆保留與前情人的照片/書信嗎?
AnS:我很阿Q,偷偷藏好不要被我看到就不會介意。

18. 最喜歡吃的美食/小吃/名產是什麼?
AnS:鹹酥雞吧

19. 最滿意你身上哪個部份?
AnS:眉毛(!?)

20.坐上時光機,你會如何?
AnS:趕快到明天,這樣就不用寫問卷了



小黃:雖然我覺得小黃不會鳥這種東西
白屎:這傢伙好像沒有blog
Jin:人氣部落作家,交給妳了
Clark:幫我剖析一下
飯塔:雖然妳好像有做過,可是還是要點你
水男:你應該可以寫的很好笑
bruno:誰叫妳有blog

點我名的blog: http://turnstone.spaces.live.com/

Monday, June 23, 2008

討厭的maya nurbs uv與renderman st

不知道為什麼,
maya nurbs的ub順序就是跟renderman的ST方向不一致,
如果UV沒有rotate,
那麼直接將ST的angle設-90度或者用mayaUV這個node,
不過如果uv有rotate就很煩人了。

以下是不負責任的maya uv轉換ST程式,
沒有仔細檢驗過,所以可能會有一些沒有mod或...的部分,
不過方向應該是正確的。
產生一個manifold類別的SLBOX,
然後定義一個float rotateAngle,
這個值跟texture2D的rotateUV填入相同的值,
這樣就OK了

float ss = s-0.5;
float tt = t-0.5;
float oAngle = atan(tt,ss);
float rad = sqrt(ss*ss+tt*tt);
float newAngle = oAngle - PI/2 - radians(rotateAngle);
result_Q = (rad*cos(newAngle)+0.5,0.5+rad*sin(newAngle),0);

Wednesday, June 18, 2008

利用Ribbox來製作pass

在動畫製作中,
常常需要給合成部門(comp)各種不同的pass,
假設我們將畫面分成兩層:前景(fg)與後景(bg),
也許comp需要
1.前景為matte,需要產生影子或反射在背景上。
2.前景不運算,但是需要產生影子或反射在背景上。
3. ....

其中就以1和2比較不能麻煩,
不能直接將maya的Primary Visibility還是cast shadow點一點就可以了,

這時候修改rib內容的ribbox就很好用了
在(1)的狀況,可以產生一個ribbox內容為
[if {$ELEMENTTYPE == "final"} {return "matte 1"}]
貼在前景的物件上

至於(2)的情況,
可以用visibility來控制,
一樣弄一個ribbox為
[if {$ELEMENTTYPE == "final"} {return "Attribute \"visibility\" \"int camera\" \[0\] "}]

大概這兩個是比較常出現又比較頭痛的pass,
其他pass就舉一反三吧 :)

Friday, June 13, 2008

Render with bleed

大部分的時候,
算出來的圖都要經過comp做一些defocus的動作,
這時候出血(bleed)就很重要了,
出血一詞是印刷的用語,
意指印刷裝訂的底色,須比裁切線多出一點,
這樣裁切時就不用怕邊邊是白色的底色。
comp也有相同的問題,
在做blur等動作時,因為邊緣的地方沒有足夠的資訊,
因此blur後會有問題。

假設原圖如下
1
在blur之後會在邊緣有問題


如果是有做出血

做完blur之後再裁切成原本尺寸則沒有這個問題


至於要怎麼設定出血才不會跟focal length等的設定跑掉,
這時候需要設定camera的cameraScale參數,
比如設定1.1,就是會比原來的畫面多出0.1倍的畫面,
這時候最好去更改render的解析度,改成原本的1.1倍。
例如原本是800x600,這時候新的解析度為880x660。
然後等做完comp之後在將圖crop成800x600就是原本camera看到的樣子,
(左右各crop 40,上下crop 30)

這樣的設定Renderman的mtor也吃,
不過如果是自己弄Rib的話,
是將原本的Format變大,
例如原本是 "Format 800 600 1",要改成 "Format 880 660 1",
然後原本的是ScreenWindow是 "ScreenWindow -1 1 -0.75 0.75",
要改成 "ScreenWindow -1.1 1.1 -0.825 0.825",
這樣就OK了,

至於為什麼是這個值,
是因為 600/800 = 0.75,所以原本的screen是-1 1 -0.75 0.75,
新的X部分是880/800=1.1倍,y是660/800=0.825,
所以是 -1 1 -0.825 0.825。
這樣出血設定就OK了。

Thursday, June 12, 2008

善用filter

因為很懶,所以很久沒有新內容了,
最近因為算的東西用了許多的displacement,
而且displacement bound都開的蠻大的,
造成了運算的時間還蠻久的,
可是mtor預設是算shadow map也會算Displacement,
所以就造成了運算shadow map時間還比較久一點,
以目前我這個case其實shadow部分有沒有displacement並不是那麼重要,
是可以偷時間的地方,
所以就去看了一下文件。

在mtor產生rib的時候,會在一些地方加入filter來控制要不要加入某些元素,
就可以裡用這個架構來做一些修正,
利用加入Attribute來控制rib真正的內容,
幾個比較重要的有
RATFilterSurface, RATFilterLightSource, RATFilterVolume,
user:RATFilterSurface, user:RATFilterDisplacement

所以如果我們不要加入displacement資訊,
就可以加入一個ribbox取名frame或world,
然後內容填上
Attribute "user" "uniform int RATFilterDisplacement" \[1\]
這樣displacement資訊就會被filter掉了。

當然啦,這樣一定不只算shadow時不會有displacement,
連算圖的時後也不會有displacement。
所以如果單純只是要shadow不產生displacement,
可以改用ribboxAdapter,
這時候ribboxAdapter取名frame或world,
Controller選ElementType,
然後新產生一個condition,
將 * 改成 shadow,然後連上一個ribbox,
然後內容填上
Attribute "user" "uniform int RATFilterDisplacement" \[1\]

(記得這時候的ribbox請不要取frame或world)
同樣的這樣也可以也可以做surface的置換,
做shadow pass就不用拔來拔去了。