2008-12-29
转贴——馒头的新作
2008-12-05
《花足球》预告片
2008-12-03
令人惊叹的动画
2008-12-02
maya脚本共享 - transformToZero
maya mel script - transformToZero
2008-12-01
Pixar的动画总监和指导们教你怎样做动画的Demo
Pixar的动画指导和动画总监们建议你在动画的Demo里应该放什么他们爱看。
And in an effort to hit you with even more information, below are some quotes from our Directing and Supervising Animators about what they like to see in reels:
我宁可看15秒的美妙动画,也不想看3分钟那么长的没法看的电影。如果样样不行那三分钟会非常的难熬。
"I'd rather see 15 seconds of amazing animation than 3 looooooooooong minutes of an unwatchable film. Those 3 minutes can feel like an eternity if everything isn't perfect."
你想申请动画方面职位?好——展示好的动画给我!给我看表演。展示思考。告诉我角色是活的。我不在乎灯光,模型,材质,粒子特效,或者你多聪明。给我些我没看过的东西让我折服。一个拥有独特个性的原创角色!
"You’re applying for Animation? Well--show me good animation! Show me acting. Show me thinking. Show me a character that is alive. I don't care about lighting, modeling, shading, particle effects, or how clever you are. Blow me away with something I've never seen. An original character with a distinct personality!"
你画画吗?你是个好设计师吗?很好!确保你在电脑动画中也展示这些出来!
"Do you draw? Are you a good designer? That's great! Make sure it's in your computer animation as well!"
动画。电脑。手绘。定格。玻璃下沙画。如果你的Reel超级棒,我们会要你的。不管什么介质。我们不要看只有电脑起作用的那点东西。
"Animation. Computer. Drawn. Stop Motion. Sand under glass. If your reel kicks arse, we may hire you regardless of the medium. We don't want to see only computer stuff."
保持你的Reel简短凝练。我们在Reel中看很多东西,所以如果奇怪的,老套的,不太好的东西在开始,我们可能会在你的好动画出现前退出带子!我们不管你从哪来——我们需要知道你现在有多棒。最好的放最前面。
"Keep your reel short n' sweet. We watch a lot of these things in reel review so if there's weird, older, not-so-good stuff at the beginning we might pull the tape out before your great stuff! We don't need to see where you came from--we need to know how good you are right now. Edit down to your best stuff."
传统动画师受现实生活的启发,还有所有他们周围的电影。你也一样。我们不要动画书呆子。我们要那些从他们自身的经历中,从真人影片,还有当然从动画泰斗们那里汲取养料做动画的人!
" The classic animators were inspired by real life and all of the other films around them. And so are we. We're not looking to hire Animation Nerds. We want people who draw from their own other experiences, from live action, and yes, from the Old Masters!"
2008-11-30
两年的绑定学习过程日志
2007.10.3
可開關的拉伸彈性手臂ik完成
用两个condition和一个multiply节点完成对骨骼的缩放控制
@@@ 需要在drv的x scale上面添加condition控制他的縮放屬性,跟隨ik的時候由ik控制,跟隨fk的時候由fk控制縮放
@@@ 右側手臂控制器可以實現跟骨胳一樣的對稱旋轉,身體其它部分的控制器都需要重新做,右腳ik control
@@@ make spine ribbon skeleton
2007.10.6
@@@ finish ik fk spine. first add parent constrain, and then createNode md, make new group x and z axis is negative
OOO make foot skeleton
OOO drv scaleX follow ik/fk
OOO inverse foot skeleton
2007.10.11
*** Mirror Control:
1) 複製控制器的所在組,然後繼續成組,把新組的X軸設置為-1
2) Unparent new group,here original group scale Z is -1, and then Freeze it, change to positive 1.
3) X axis rotate 原来的值 + 180 degree,Y axis is negative of original.
4) and then adjust curve control CVs,relative scale x = -1 y = -1.
===========================
OOO finish leg ribbon setup
@@@ 在設置腳部旋轉的時候,要跟隨fk/ik旋轉,複製兩個inverseFoot_con
成爲fk/ik控制器的子物體,用這兩個骨骼來orient inverseFoot_con
SSS setup foot control.
??? 反轉腳于腳部的ik控制器有衝突
@@@ 腳部bone全部完成,並完成foot 與ik/fk變換跟隨
2007.10.14
@@@ 開始設置ik/fk自動捕捉匹配
OOO objExists 可以判斷場景中是否存在某個物體的名稱
OOO 解決ik switch to fk問題 使用一個locator成爲l_arm01_fk的子物體,然後
l_armPoleVec01_ctl捕捉到上面就可以了
2007.10.16
@@@ 繼續完善fk/ik auto snap mel
OOO 基本完成L arm fk/ik auto snap 還差ik scale有點問題
??? iK拉長以後,再切換回fk還有點問題
OOO 全部完成左右手臂的 arm fk/ik auto snap 歐也!!!
OOO 繼續完成其他部位的 ik/fk auto snap
OOO 右侧手臂骨骼的 transformX 為負數, fk to ik mode 要注意,把長度數值變爲負數
OOO 左右手臂的fk/ik auto snap全部完成 歐也!
OOo 右臂drv skeleton ScaleX Ik mode 要跟每段的fk/ik骨骼相匹配
??? they are not orient match of foot ik control and fk control
*** Leg drv skeleton 每一個scaleX都要用單獨的cnd運算連接
OOO 完成左腿的ik/fk auto snap
2007.10.20
OOO 全部完成四肢的 ik/fk auto snap操作,帶縮放可控制的 :)
*** 做雙關節骨骼兩個要素,才能保證ik變化時候2和3的角度一致
(1) 1根3段的骨骼長度要一致
(2) 2根3段骨骼默認的Joint Orient要一致
(感謝manitou的靈感)
2007.10.21
@@@ 開始製作腳部控制器
2007.10.22
OOO 修改腳設計,把反轉腳改稱層級控制,簡化腳部骨骼,用CSik來控制骨骼
??? 發現了一條骨骼鏈的ik fk seamless switch 測試一下
2007.10.24
@@@ 重新製作limb骨骼系統,使用單獨一套骨骼,重新優化mel,繼續使用雙關節骨骼
按照雙關節要素來做
*** 夢工場那人的mel使用了下面這種命名方式,可以使用IkFk_switch( "giant01", "_l_", "arm" );這種調用方式,場景中的任意角色都可以使用通一段mel來實現ikfk_switch
global proc IkFk_switch( string $nameSpace, string $side, string $limb )
而不用不同的角色使用不同的mel,而且還大大的簡化了mel數量,牛逼阿
不愧是greamwork的
2007.10.25
OOo 完成左臂的新獨立骨骼ik/fk轉換
??? 左臂還有問題,切換到fk的時候,ik控制器位置不變,身體移動,長度發生變化,影響骨骼長度,需要在切換fk的時候就把骨骼的長度修改,縮放值恢復到1,然後關閉縮放功能即可
OOO 左右臂的ikfk切换全部完成,注意控制其和骨骼的Rotate Order is xzy, not xyz
OOO 完成左右手的跟隨設置,復制兩個手部根部con骨骼,分別命名為ori,然后設置orient約束到手部,并且指定給ik fk子物體
OOo left leg finish
OOO 四肢的新的独立骨骼的ik/fk切换完成,同一段mel,實現左右自動切換
pow 2 6;的意思是2的6次冪 (乘方,冪power)
sqrt 是平方根 square root
1) Stretchy the spine chain
2) Twisting the spine chain
4) Enhancing the Stretch
OOO frameCache的用法:
stream給定一個動畫曲線,然后通過vary time來返回一個數值。
for example, stream是一段1-6幀的弧形曲線,當vary time為1的時候,返回就是曲線第一幀的數值,當vary time為3的時候,返回的就是曲線在第三幀時候的數值,以此類推,可以通過動畫曲線來控制一個幾個物體屬性的變化值。又弄明白一個節點
2007.11.4
OOO 按住ctrl鍵可以在outliner里面添加ik
2007.11.8
@@@ 繼續制作右腳rigging
優化mel,規范制作流程,命令規則,把制作量減小到最少,代碼盡量能夠少修改,重復使用
沒有必要保持transform為0的物體就不用加group
2007.11.11
*** ribbon原始場景有嚴重重名,所有物體包括組都不要重名,否則experssion會有問題
2007.11.12
OOO orient 各骨骼鏈條
2007.11.13
@@@ 繼續orient bone chain
OOO 設置fk根部控制器Follow
*** 設置關節鏈跟隨的時候,把復制的兩個組的屬性全部 hide and lock,然后再進行約束,和parent
OOO 四肢 Follow設置完成
OOO head ik/fk ok
OOO head fk/ik switch finish(include mel)
*** mel里面設置約束的時候,需要先設置關鍵幀再刪除約束,這樣位置才不會有變化
OOo 基本完成骨骼設置
@@@ 開始skin
??? 新問題,膝關節大腿部骨骼有反轉現象
OOO 把大腿下端的segRibbon方向約束到leg01_drv上,使其方向與上面一致
2007.11.17
@@@ 開始制作character Selection GUI (感謝夢工廠的牛人)
OOO Giant01 GUI v0.1界面完成
@@@ GUI 0.2 鏈接代碼生成 內部命名規范化
OOO \为mel的转义符(escape character),在后面可以添加一些特殊的符號,如"
OOO 腿部反轉問題解決,修改頭部控制器歸零,然后完成右手控制器,開始skin
*** sdk = set driven key
2007.11.26
??? 大問題啊,切換ik/fk做動畫的時候,互相的動作不能顯示,調ik的時候,fk的動畫就沒有了,fk的時候ik的動畫也沒有了,弄了一大天,弄出來一個垃圾rigging,呵呵
2007.11.29
@@@ 開始解決骨骼問題,關鍵幀和ik手臂旋轉問題
*** mel里刪除臨時約束的時候要先key幀,然后再刪除,不然控制器會跳回上一個關鍵幀的位置
找到問題了,物體的visibility屬性也要打關鍵幀,然后kz_ikFkSwitch里面,armIk01_con的orient約束沒有setKey,愚蠢的錯誤
OOO OK,mel問題解決了
??? finger bone scale is not assign
2007.11.30
OOO GUI的mel基本上調節完畢了(還應該改成四根手指和五根手指可調的效果,以后再弄)
OOO clavicle_con用移動方式來控制 clavicle bone旋轉,更直觀
OOO 修改GUI mel,設置了Reset Selection效果,很實用,人家設計的牛逼啊
OOO Create autoClavicle feature.
*** Create autoClavicle attribute on shoulder control.
OOO MirrorBlendShape update mel
2007.12.3
OOO 優化了GUI,設置了四根手指的界面
OOO 手指的骨骼上級再添加一個joint, 就可以作為驅動幀來使用了,不用在制作額外的控制器
擴展名用 _sdk means set driven key
*** zero group must clear attributes to preserve position and rotate state.
OOO all button 的作用是用來選擇所有控制器然后歸零的
2007.12.8
OOO 弄好了卡通眼球材質
2007.12.10
_arm ribbon rotate must set rotate decay,跟随arm01_drv骨骼就可以,像前臂一样
2007.12.15
OOO enum控制兩個約束的開關更方便,blendcolor來控制三套骨骼比約束更方便
2007.12.16
OOO hide object visibility attribute will be hide all child objects, but hide object shape visibility attribute to only hide himself.
OOO it is very cool that use expression to control objects visibility.
OOO 手指不用特殊的控制器,把selection handle打開就好了,有干凈有方便
2007.12.23
@@@ hand setup
2008.1.1
@@@ 第二次重新rig,用新方法做fk/ik,重寫mel
2008.1.2
*** 制作好骨骼以后一定要調整 local rotation axis,使其與上級控制器一致
2008.1.4
OOO 修改了segRibbon模板,可以squash stretch,globalScale也沒問題了
2008.1.5
OOO 模型又改了,手部修改一下
2008.1.8
OOO 手部rig完成
??? 發現segRibbon的旋轉有問題,超過90度上部關節后兩個jnt會有反轉問題
XXX 使segRibbon里面的nurbs Surface法線朝向骨骼的旋轉方向即可解決,旋轉根部組即可
OOO 優化了segRibbon模板,解決了旋轉的時候反轉問題,為segPos01_geo制作四個cluster
然后兩個兩個分組,在重新給他們約束,用parent約束,但是要只選擇幾個旋轉軸可以達到
理想的過度旋轉效果
2008.1.10
@@@ 應該做l_leg 方向約束了
2008.3.1
*** min为最小值返回命令,返回后面给定的两个数值中最小的数值;
2008.3.2
*** linstep(0, 10, 5) // Result: 0.5 //
linstep 1 3 2.5; // Result: 0.75 //
linstep返回一个浮点数值 =(第三变量 - 第一变量)/(第二变量 - 第一变量)
第一个变量为最小值,第二个变量为最大值,如果第三个变量小于第一个变量,则返回0,如果第三个变量大于第二个变量则返回1.
l_ball_loc.rotateX = (linstep(0,$toeLift,$roll)) * (1-(linstep( $toeLift,$toeStraight,$roll))) * $roll;
这行可以让ball关节的度数这样变化,随着roll的在0到45的时候,ball也从0到45,也就做到了脚跟抬起脚掌不动
在roll从45到90的时候,ball会从45返回到0,也就做到了向前走步的时候,脚掌抬起,但脚变成了直的了
ik由noFlip和poleVector互相驱动,noFlip也是RP Solver,只不过把vector控制器放到了旁边,这样就能实现环绕无翻转了,然后通过knee spin属性来控制膝盖的方向。
pv骨骼就是正常的RP Solver来控制,添加一个Pole Vector控制器来控制膝盖方向。
OOO 解决blendshape in-between 模型问题,使用animToBlend脚本命令直接产生,把目标删除就好了
OOO 足球形象二次修改,比较满意,继续rig四肢
fk ik切换调试完成,fk拉伸,ik拉伸相互切换,之后reset都没有问题了
Char GUI优化基本完毕,fk/ik switch mel分离出来了 v0.91a
添加一些新功能:
只有选择了控制器才能允许弹出界面,不选择物体的话会出现提示按钮。
优化了mel里面的命名方式,全部以变量的名称进行命名,方便修改。
优化resetSelection,不会出现找不到物体的错误提示了
添加了手部 r01AllBttn l01AllBttn 按钮,可以选择全部三个手指的后三节骨骼
手部只做一个控制器就好,不用添加太多的手指形状控制,对手指控制用控制器倒不太方便,可以后面用poseLib来做
2008.5.4
01 根据选择不同角色的控制器来确定角色名称,里面的各项功能也都会针对相应的角色
conform character name according as selected control
02 低分辨率和高分辨率模型切换显示
03 镜像选择控制器
04 恢复选择的控制器到默认数值状态
05 可控制身体各部分的显示状态(如头、身体、左臂。。。)
06 可在面板直接选择角色各个部位的控制器
07 Fk手臂的方向无缝转换跟随
08 手臂和腿部Ik的方向位置无缝转换跟随
09 可拉伸的四肢Fk Ik.
10 手臂和腿部的Fk Ik 无缝转换,并且可以匹配各种模式下的不同的长度
11 各个手指每个方向快速选择(如食指的三个关节,或者食指中指小拇指的第一个关节)
2008.5.6
写了kz_createIkLenMdn.mel, 可以直接根据选择的节点来添加Ik骨骼的length参数和IkLen_mdn节点
下午左臂完成绑定,比较顺利了
??? ribbon出现新问题,global scale有问题了
OOO 在expression里面修改下面这行就可以,把golbalScale连接到##01_all_ctl上面就行了
$scale = segRibbon2008_seg_curveInfo.normalizedScale/giant01_all_con.golbalScale
腿部的rig流程制作完成,
应该在镜像物体之后再清理场景,锁定和隐藏控制器属性,要不然不能镜像骨骼
Fk腿部也可以暂不设置跟随
2008-11-29
2008-11-26
人体模型布线图
2008-11-24
動畫製作流程(pipeline)就像膠水
對於一個動畫製作團隊(Animation Studio)來說,製作流程(pipeline)的重要性,很難簡單言喻,或傳達出來。只能說,大家都在說 pipeline 很重要,不管是非常有經驗的主管級人物(supervisor, manager, ...),或是在下頭苦幹實幹的作業人員(artist, TD, RD, production assistant, ...),都會一致同意 pipeline 真的很重要這個說法。但究竟它有多重要,加上又聽說它是跟行政管理、軟體工作使用方式與規則、電腦圖學相關背景知識、程式技術…等,你問每個參與製作的人,大家都有自己的一套說法。在這邊,我想分享一下,從一位從事程式設計與問題排除的 TD(Technical Director)來看,pipeline 可以怎麼解釋。
Pipeline to a 3D/CG production is like glues everywhere between different softwares, departments and people.
對一個 3D/CG 專案來說,在不同的軟體之間、部門之間,甚或人之間,隨處可見到製作流程(pipeline)的影子,它就像膠水一樣,把這些不同的東西緊緊黏在一塊兒。
(上圖摘錄自 accad( the Advanced Computing Center for the Arts and Design)的 Animation Production 這門課。)
做 3d 模型的部門叫建模( modeling),畫材質(texture)與拉 UV 的部門叫材質(texturing)。當一個 3d 模型要從 modeling 進 texturing 時,需要一些程式或工具,用來檢驗這個模型的好與壞。檢驗的內容可以是:
- 它是不是 2-manifold。
- 模型裏頭的每個面的面數是否都少於或等於 4,或是沒有凹多邊型的存在。
- 法向量是否有反了的情況發生。
- 模型的佈線是否均勻,而且有做上應有的倒角(bevel)。
- 是否有 T-junction 的點存在。
- …
做好這樣的檢查,才可以保證日後的部門在使用這個模型時,不會發生問題,導致退貨,尤其在專案進行到後頭時,退貨的代價就會愈來愈高,像是可能導致有很多卡都要拿出來修正,或是要投入大量的技術人員…等。其中,模型的「好壞」,大大地決定了日後打燈算圖的品質。
做動畫,安排角色表演的是動畫部門(animation),接手開始打燈光,營造氣氛的是燈光部門(lighting)。當一卡,從 animation 進入 lighting 部門時,可能會發生如下的一些問題:
- 燈光師拿到的卡,一開起來,有些東西走位掉了,或是燈光師自己不小心動到,於是和動畫師調好的樣子不一樣。
- 動畫師工作時,用的是面數比較少的角色模型,而燈光師需要的是高精細度的模型。
- 動畫師不小心設定了鏡頭的一些參數,導致打燈時,一些依靠鏡頭的效果(像是動態模糊 motion blur、景深 depth of field、立體效果 sterescopic effect、…)有問題。
- …
這裏比較有趣的是,動畫師在拉動作時,最最關切的因素之一「穿幫」,與燈光師看到的「穿幫」,有時是不一樣的,結果就是,動畫師也很傷腦筋,因為他們看不出燈光師看得到的「穿幫」;而燈光師也很傷腦筋,因為處理這個問題,可能會佔去他們非常多的調燈光與算圖時間。這時,程式技術人員(或說是打雜人員也行)就介入,他們使出神的右手(有人是左手?),飛快地在鍵盤上敲敲打打,找出問題,解決,然後想想要開發點什麼工具,或是想個怎通的法子,避免這個問題重覆出現,並把結論傳承下去,供後人勉懷…
負責把燈光師打的燈光且算好的圖,拿來重整、微調與補救的部門叫合成(comp),接手的部門是把這些片段合起來,加入聲音與一些修正的是剪輯(editing)部門。他們之間的差別,在於一個是處理個別的動畫段落(卡、scene?),一個是處理一整串的動畫,所以在資料上來看,兩邊的差別是資料量的大小。剪輯需要的是合成把段落放好,方便供他快速取用,且隨時會被通知有更新的一卡出來,而且可能還得知會是否要做一些,像是 gamma correction/encoding、film grain 調整、影片品質與影片檔格式變更…等。
這時,我們可愛的技術指導又出現了,他們可能會寫一些小 script 來加快流程,或是做一些研究,報告說,在什麼階段,我們需要什麼影片檔格式比較優(ex, mpeg4 with mpeg 1 layer 3 audio on .avi, h.264 on quicktime movie, ...)。
這些技術指導跑出來協助的工作,寫的小程式(有的慢慢就變大程式),就是我說的「膠水」了。
转载自 Drake's blog
原文链接: http://drakeguan.org/animation_pipeline_is_like_a_glue_everywhere