999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺談三維動畫中綁定工具的開發

2022-10-08 01:46:32劉德新
現代電影技術 2022年8期
關鍵詞:界面程序功能

劉德新

中影動畫產業有限公司,北京 101400

三維軟件中的幾何體 (Geometry)是依據三維空間中不同位置的點 (Vertex)組成的。三個點形成一個可見面,相對平滑的表面需要的點少,結構復雜的表面需要的點多。這些表面最終通過著色系統生成可視化的圖形圖像。在現實生活中通常稱之為 “三維模型”。動畫制作中的資產概念是指包含了模型、材質和綁定三種數據的綜合型文件,所謂綁定 (Rig),就是在三維軟件中通過對三維模型添加變形器 (Deform)、骨骼 (Skeleton)、動態模擬(Dynamic)(其中的一部分功能),從而影響模型上局部的點或全部的點,使其可以按照綁定師的意圖變成新的形態,再通過控制器 (Controller)鏈接到以上幾種不同的影響方式上,最終達到通過控制器可以自由地控制模型形態來完成各種動畫動作的一系列操作。只有在綁定工作完成后才被視為 “可用的資產”,才會被批準上傳給動畫部門使用。Maya的綁定文件是一種對技術和規格要求都很嚴謹的文件形式,有明確的技術標準來處理以上幾種類型組件間的邏輯關系,并且提供保護其綁定組件不被隨意篡改的功能。綁定的內容根據制作難度又可細分為場景、道具、角色三種情況,是整個動畫工業中規范化和自動化需求最高的工作。以道具綁定為例,由于每個道具模型都需要使用同樣的綁定規格,為了減少重復勞動最大幅度的簡化道具的綁定工作,是本次筆者著手編寫綁定工具箱的初衷。(下文中提到的綁定工作均默認在Maya中進行)

1 根據綁定的工作內容和流程規范收集基本需求

1.1 幾何體的命名和綁定文件的層級結構

在一個模型文件中會包含幾何體 (Geometry)和用于分類和管理這些幾何體的組 (Group)。綁定文件會在此基礎上將添加其他用途的內容,為了方便文件管理和規范制作標準,這些 “組件”通常在命名時會使用前綴或者后綴來區分不同物體的類型,并且會被放置在某種固定的層級結構 (Hierarchy)中,這就是所謂的 “綁定的規格”。

1.2 為復雜綁定添加更多的控制器

如果遇上結構復雜或者運動復雜的模型,往往需要添加更多的控制功能。比如汽車的綁定通常會為車身和四輪添加單獨的控制器以實現在顛簸時每個部分都可以進行單獨的表演。為方向盤添加控制器時需要注意控制器和模型的傾斜角度要保持一致。車門、座椅、擋位、后視鏡每個可以動的部分都可能會在考慮的范圍內。從更豐富綁定的功能上來說,還可以在車輛向前或向后運動時添加車輪根據移動的距離自行轉動的功能,甚至是車輛發生碰撞時車身出現的凹損變形等。

每添加一個控制效果幾乎都需要添加相應的控制器,然后與模型匹配中心點和軸向,最后鏈接屬性到模型。控制器一般使用曲線來制作,由于在Maya中提供的曲線類型非常單調,為了動畫師在使用綁定文件時更直觀,綁定師經常需要花費時間根據模型手動制作形狀更加貼切的控制器 (方形、立方型、圓形、球形、箭頭指向形等),以及設置控制器的顏色,也經常會發生替換更合適的曲線形狀的情況。由于幾乎每個綁定文件都會添加很多控制器,因此在控制器方面的需求也是需要進行程序化的重點內容。

圖1 汽車模型和控制系統

1.3 整合常用的綁定命令

綁定師在使用Maya時會根據自己的工作需求經常使用到一些在不同模塊不同菜單里的命令,按照類型來劃分,凍結 (Freeze)、刪除歷史 (Delete History)、中心點 (Center Pivot)是第一類。常用變形器比如融合變形 (Blend Shape)、晶格 (Lattice)、簇 (Cluster)、曲線變形 (Wire)是第二類。骨骼相關的命令是第三類。如果能把這些命令集成在一個工具面板里,使用起來會方便得多。最后還有一種特殊類型的命令,以拷貝蒙皮權重命令(Copy Skin Weights)為例,在兩個蒙皮物體間拷貝權重效果通常都是正常的,但是將一個物體作為基礎向多個物體同時拷貝權重時則無法正常工作,這時需要把此類命令用Python改寫成循環語句才能夠達到預期的結果。

1.4 簡化鏈接方式

Maya中提供的鏈接方式主要有約束 (Constrain)、屬性鏈接 (Attribute Connection)、驅動關鍵幀 (Set Driven Key)三種。約束命令在Maya中操作簡單,只要選擇相應的物體點擊命令就可以了。但是屬性鏈接的操作會稍顯復雜,需要使用屬性鏈接編輯器 (Connection Editor)或者節點編輯器(Node Editor)來完成操作。對于物體最外層的移動節點 (Transform Node)的鏈接操作來說還是有值得用Python語句優化的必要,這樣可以免去打開屬性鏈接編輯器或節點編輯器的必要。

1.5 最終化綁定文件

綁定文件在功能性上制作完成后,為了保護其不被篡改,可以對文件中的某些指定內容予以鎖定或者隱藏。

2 制作類道具綁定工具箱的開發

2.1 Python程序的架構

Maya的內置腳本類型為MEL,此外它也支持C、C++、Python等多種語言類型。

制作類程序的開發主要是依托Maya已有的命令和綁定的制作規范,是功能相對單純的程序。這種形式的程序將所有的功能 (Function)和界面(UI)編寫在一個腳本內,最后通過界面中的按鍵(Button)調取各自需要的功能 (Function)以達成既定目標。由于幾乎不會涉及到其他部門和影響整體流水線,編寫和調整十分靈活,缺點是承載的內容有限。

另一種是為了配合生產線,并且會涉及到各個部門間協同工作的結構復雜的程序。這種程序可能是Maya內部的,也可能是與其他軟件相鏈接的。形式上通常會把每個功能寫成單獨的程序存放在固定的路徑中,然后編寫一個更大的框架程序來調用這些子程序。界面程序的按鍵命令會調用路徑下單獨存放的功能程序。在強調流程的前提下,這種方式更便于程序的管理和維護。

2.2 實現功能 (Function)

與其說在Maya中使用Python,不如說是在Python編譯器中使用Maya的命令。在使用Maya的腳本編輯器 (Script Editor)中的Python編輯器開始寫作前,需要將Maya的命令導入Python編輯器,以幫助Python理解Maya命令。

通過整理流程規范和收集工作中的需求我們已經明確了此次需要程序化的工作內容,接著我們來逐個分析,找到適用于編寫它們的Python命令和語法。

本文 “1.1”創建綁定層級 (Hierarchy)的工作大致可以歸納為以下內容:添加一個立方體形狀的曲線 (Curve)作為主控制器,調整曲線匹配模型的范圍。添加一些組,修改這些組和曲線的名字。把模型、組、曲線 (此時已變成控制器)按照綁定規范放置到適當的層級位置。最后再添加一些基本功能,比如杯子重心的切換 (從杯底到杯子間),為防止模型被誤碰還需要添加控制顯示模式切換的屬性。

在人工操作的情況下這是一種線性不重復的工作流。每個步驟只操作一次,且步驟非常多。當換作用Python程序的方式來進行描述時是這樣的:工作類型一:各種和創建相關的命令,負責創建整個綁定過程中需要的所有必要的組件。如用于基本結構的空組 (Null)、標準比例主控制器線條 (空間比例1∶1∶1的CV曲線)、定位器 (Locator),以及各種運算節點 (Node)。也可以將為物體添加自定義屬性 (Add Attribute)看作是一種子級的創建工作。工作類型二:屬性的獲取 (Get Attribute)和賦予 (Set Attribute),負責獲取不同物體中必要屬性的數據并將其保存到變量中,在其后的工作中根據需要將這些變量賦給其他物體的屬性。如通過提取模型體積范圍的數據賦予到標準控制器,使控制曲線得以匹配任何模型的體積范圍。工作類型三:負責屬性連接 (Connect Attribute),通過控制器將不同物體或者計算節點的可用屬性連接起來,最終達到預期的可控效果。最后一種工作類型是調整層級結構的命令 (Parent),用于將各部件按照既定規格放置到標準的綁定架構中。這樣便實現了所有的工作目標。經過考慮還特意增加了Deform Reor和JointReor兩個按鈕,可以把選中的內容快速放置到變形器組或者骨骼組的層級結構中。

圖2 右圖的綁定文件在層級結構 (Hierarchy)上發生的變化

圖3 鋼琴按鍵批量創建的控制器

本文 “1.2”提到的控制器一般使用曲線圓環(NURBSCircle)來制作。鋼琴可以作為一個既常見又極端的綁定案例,由于無法預知在動畫制作階段具體會按到哪些琴鍵,為所有的琴鍵都添加控制器是權宜之計,是重復勞動的典型案例。此時工作需求進一步提升了,從最開始的為單一物體創建控制器變成為很多物體批量創建控制器 (Controller)。對應的方法是使用Python語言的ls命令生產列表來判斷當前選擇了的物體,然后通過for循環語句為列表中的物體依次創建曲線圓環,匹配中心點和軸向,修改圓環名稱,添加約束到物體。修改控制器顏色 (彩色按鈕)或替換控制器曲線形態 (Replace)的情況是一種對已有對象的 “修改”行為。最初的做法只考慮了對當前物體 (Select)進行一對一的修改。為了方便工作也都將程序改寫成批量處理的形式。

曲線 (Curve)是通過空間中不同位置的點來形成的,控制器曲線是通過程序自定義了曲線上每個點的位置來實現的。曲線可以單獨當作控制器來使用,也可以通過Replace按鈕替換到其他的控制器形態。

圖4 多種形態的控制器

本文 “1.3”中的Maya常用命令整合僅僅是把需要的命令逐個羅列在程序里即可。為了區分命令種類,特意把它們分成了上下兩個部分。本文“1.4”需要實現的是用第一個選擇的物體對第二個選擇的物體進行移動旋轉縮放三種屬性的鏈接(Connect)或者約束 (Constraint),同樣使用列表命令來判斷選擇的物體,然后對列表中的兩個物體需要的屬性進行鏈接。此外還使用for循環語句添加了前文提到的批量拷貝權重 (Copy Weight)的功能。

圖5 在Outliner中隱藏掉不想被意外改動的內容

本文 “1.5”最終化面板提供兩種鎖定方式,一種是鎖定物體的基礎屬性,一種是最終化鎖定。兩種功能針對的內容是不同的,同樣也提供對應的解鎖功能。需要說明的是為已完成的綁定文件進行最終化的需求并不常見,實現這一功能方式是對綁定架構中已有的且固定的組件名稱進行拾取,并將其信息在大綱視圖 (Outliner)內進行隱藏操作。使得非綁定人員在打開文件后看不到控制器以外的綁定信息,從而達到保護綁定文件的作用。

2.3 可視化界面

通過以上的介紹可以發現,大部分的程序是以基本的命令和簡單的邏輯語句來完成編寫的。要注意的是Python語句的特點是每行只能執行一個命令。在Maya中執行Python語句只要是格式正確都可以被執行。但是為了能夠把這功能性命令通過可視化的界面來執行,需要把每個完整的命令序列封套進def函數并指認到特定的按鈕命令中才能被調用。Maya的Python命令中提供非常豐富的界面編輯類型,通過在Maya幫助文件的命令檢索中查詢Layout一詞,可以得到非常多關于界面布局的命令,筆者使用的第一個UI就是基于Maya提供的幫助文件。但是隨著功能的增多,后續的版本改為了混合型的Layout布局。

2.4 逐步完善和最終版本的完成

工具的開發是一個循序漸進的過程,也許最開始只是單純為了減少某項重復勞動。作為編程的起點,很多Maya用戶會通過復制腳本編輯器中已經執行好的MEL命令,就可以有效地減少重復工作了。如果能有目的地對這些程序進行篩選并去掉不需要的部分,工作效率會提高地更多。在Maya中使用Python命令有兩個基本前提:一是需要專門學習Python的編譯方式,二是學習Maya幫助文件中的Python命令和借鑒其提供的腳本范例。從單行的命令開始逐步掌握循環語句 (for語句)、條件語句 (if語句)、函數 (def)等編寫形式。建議把界面看作一個獨立的部分去學習掌握。筆者在完成最初幾個小功能的代碼時完全沒有考慮會為其編寫界面程序,隨后逐漸開始樂此不疲,幾乎將以往累計下的所有需求逐個進行了程序化,并最終整合到同一個腳本中。

從圖6來看,V01版本中最初的想法只是為了完成需求1.1道具綁定的層級 (Props Puppet Create)和需求1.5綁定文件的最終化 (Props Rigging Finalize)。在V04版本中加入了1.2為物體添加控制器和調整控制器顏色的功能,由于新按鈕是接在上個版本的下面,導致這個版本過于浪費界面空間,布局和顏色都是默認參數,不夠美觀。第V06版本在界面布局做了較大調整,選擇了新的Layout布局命令,并重新規劃了功能分區。根據工作需求分為層級創建 (Hierarchy)、控制器 (Controller)、屬性鏈接 (Connection)、最終化 (Finalize),可以算得上是最終版的雛形了。在V10版本中添加了控制器形態參考 (ShapeRef)用于創建形態各異的控制器,并將原來的控制器顏色設置按鍵 (Color)的字母顯示去掉,改為了以不同色塊形式表現的按鈕,使其更加直觀便于使用。在最終的版本V13里添加了常用的需求1.3的Maya常用命令集合 (Maya Command),隨著經驗的累積,能力的提升,還添加了以前并沒有考慮過的重新命名工具 (Rename),并按照工作流程和使用習慣確認了最終的布局。

圖6 不同時期的版本演變

2.5 經驗與收獲

和所有學習Python的初學者一樣,從在Python編譯器中打出“Hello Python”開始,到在Maya中執行第一條Python命令。從390行代碼三個功能按鍵的V01版本,到最終版976行代碼五十一個功能按鍵的V13版本。現在回頭想想,最重要的感受還是工作需求是第一學習動力,經驗都是在摸索中實踐,在實踐中摸索,慢慢積累而來的。筆者從2019年1月開始接觸各種學習資料,5月嘗試寫完了第一個功能創建綁定層級 (Hierarchy)的基礎部分后,不僅由于工作太忙,自己對Python的掌握程度也不足以支撐寫下去,綁定工具開發的事情就戛然而止了。直到10月習得界面的寫法,11月每周更新一次,12月更新了一次然后又被有限的知識卡住了。最終在2020年4月更新了6次后完成了功能上的定稿,最后在5月和8月各更新了一次界面。總體上看花在寫腳本上的時間只有兩個多月,但收獲這一成果花費將近一年半的時間。此間,筆者翻閱了大量的Python書籍和網絡教程,經常是一手查資料一手看幫助文件,逐字模仿逐句揣摩。面對各式各樣的教材,筆者發現基礎的教材不足以解決當前遇到的實際問題,高級教材又晦澀難懂,因為自身的能力和經驗都不足無法將其轉化為實際生產力。最困難的一步是如何將自己豐富的工作經驗和有限的編程知識結合起來,最終寫出可以解決具體需求的工具來。

3 結束語

正所謂 “不積跬步無以至千里”,如果您也像筆者一樣,發現工作中存在大量的工作都有待被提煉、被規范,那么就值得花些時間來學習編程語言。此工具箱早已投入到生產當中,在不同的項目中發揮了積極的作用,可以明顯感受到工作效率的極大提升。原本工作中需要幾個、幾十個的操作步驟,幾分鐘到幾十分鐘才能完成的工作,現在只需要在綁定工具箱中點擊相應的按鈕,很多工作只需要零點幾秒就完成了,真正實踐了以科學技術為第一生產,解放生產力,提高生產力。動畫行業的技術工作在諸多方面都對流程開發或者技術開發有著龐大的需求,希望有更多的同仁能關注中國動畫工業的發展,并能有興趣參與其中,在不同的領域里為業界提供優質的解決方案,共同促進行業的發展。?

猜你喜歡
界面程序功能
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
“程序猿”的生活什么樣
關于非首都功能疏解的幾點思考
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
人機交互界面發展趨勢研究
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
主站蜘蛛池模板: 久久伊伊香蕉综合精品| 不卡的在线视频免费观看| 正在播放久久| 日韩欧美国产成人| 精品99在线观看| 2021天堂在线亚洲精品专区| 亚洲中文字幕97久久精品少妇| 91网址在线播放| 99re在线免费视频| 日韩无码视频专区| 国产SUV精品一区二区6| 黄片一区二区三区| 中文字幕人成人乱码亚洲电影| www.精品国产| 国内a级毛片| 国产午夜福利亚洲第一| 99re这里只有国产中文精品国产精品| 欧美一级专区免费大片| 国产理论一区| 嫩草影院在线观看精品视频| 久久永久视频| AV片亚洲国产男人的天堂| 亚洲色欲色欲www在线观看| 国产精品污视频| 国产成人欧美| 国内精品久久九九国产精品 | 成色7777精品在线| 国产麻豆精品手机在线观看| 国产精品亚洲一区二区三区z| 午夜精品区| 国产丰满成熟女性性满足视频| 日韩精品高清自在线| 国产综合精品一区二区| 99久久精品免费看国产免费软件| av在线5g无码天天| 成人国产免费| 最新精品久久精品| a级免费视频| 国产福利微拍精品一区二区| 天堂成人在线| 亚洲人成网站色7799在线播放| 伊人久久久久久久久久| 成人小视频网| 福利在线不卡| 亚洲精品无码不卡在线播放| 亚洲精品卡2卡3卡4卡5卡区| 国产精品网曝门免费视频| 欧美有码在线| 国产99精品久久| 97综合久久| 一级黄色片网| 日本亚洲最大的色成网站www| 最新亚洲人成网站在线观看| 亚洲欧美在线综合一区二区三区 | 亚洲AⅤ无码国产精品| 成人在线亚洲| 丰满人妻一区二区三区视频| 欧美午夜小视频| 亚洲人成影视在线观看| 国产精品污污在线观看网站| 丁香婷婷久久| 国产成人资源| 99视频精品全国免费品| 亚洲无码91视频| 国产精品尤物铁牛tv| 亚洲av无码成人专区| 国产美女主播一级成人毛片| 九九这里只有精品视频| 在线观看国产网址你懂的| 亚洲香蕉伊综合在人在线| 色综合综合网| 一级毛片免费不卡在线视频| 91精品视频播放| 亚洲美女视频一区| 毛片在线区| 日韩欧美网址| 国产精品欧美日本韩免费一区二区三区不卡| 亚洲成aⅴ人在线观看| 啊嗯不日本网站| 国产女人水多毛片18| 婷婷综合在线观看丁香| 久久久精品无码一区二区三区|