顯示具有 介面(UI) 標籤的文章。 顯示所有文章
顯示具有 介面(UI) 標籤的文章。 顯示所有文章

2015年7月13日 星期一

Maya 2015 的 ui mixin class 讓你可以很輕鬆把一個 ui widget 變成 maya 介面的 dockable item

現在在 maya 裡寫 python 的 qt ui 比以前方便多了。2014版本開始把 pyside 完全包在 maya 裡,2015 版本更是加了一些 mixin class 讓寫 pyside ui 簡單許多,其中一個 mixin 就是 MayaQWidgetDockableMixin . 這個 mixin class 讓你繼承他之後可以 生成一個 widget 然後直接用 .show(dockable=True) 讓它顯示成 maya ui 的 dockable item.


簡單的 UI 範例 :
from maya.app.general.mayaMixin import MayaQWidgetDockableMixin
from PySide import QtCore, QtGui

class MyWidget(MayaQWidgetDockableMixin,QtGui.QWidget):
    def __init__(self,parent=None):
        super(MyWidget, self).__init__(parent=parent)
        
        self.setWindowTitle("my widget")
        
        layout = QtGui.QVBoxLayout()
        self.setLayout(layout)
        
        btn1 = QtGui.QPushButton("run this")
        layout.addWidget(btn1)
        
        btn2 = QtGui.QPushButton("run that")
        layout.addWidget(btn2)
        
        spacer = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
        layout.addSpacerItem(spacer)


newWidget = MyWidget()
newWidget.show(dockable=True)
        
        


效果:



Maya PySide UI 參考資料:




2015年1月1日 星期四

如何在 pyside 的程式裡直接使用 Qt designer 產生的 .ui 檔

Maya 每次更新一個版本都會多塞幾個外掛進去,包括 python 的 package 也是如此。2011版加了 pymel, 2014版則是把 PySide 也裝進去了。在那之前 大家如果要在 maya 裡使用 QT 寫介面就得自己裝 PyQt  或 PySide ,現在既然有內建的就應該好好利用它。


有很多人喜歡使用 Qt Designer 先把介面設計好再 load 進 pyqt/pyside 裡. 但如果每次都要把 .ui 檔轉成 .py 檔 (pyuic4 / pyside-uic)實在是有點麻煩,所以大家通常都想直接 load .ui 檔。pyqt 本身有個 function 叫 loadUi 可以達到這件事 (http://pyqt.sourceforge.net/Docs/PyQt4/designer.html) , 但目前 pyside 好像沒有相對的功能,所以有人在 github 上放了一個 wrapper, 把 PySide.QtUiTools.QUiLoader  包成 loadUi function, 也讓 pyqt  code 可以"無接縫" 的轉換 pyside code.

https://github.com/lunaryorn/snippets/blob/master/qt4/designer/pyside_dynamic.py

大家只需要把這個 module 下載放到自己的 python path 裡 (class MainWindow 以下的 範例程式可以刪掉),就可以像 pyqt 一樣使用 loadUi('mainwindow.ui') 把 ui 檔裡的元件直接匯入 pyside 程式裡。


2014年8月5日 星期二

如何把 maya 預設 icon 通通存下來 (how to save maya default icon to a directory)



假設你想 "美化" shelf 上的一些小工具,不妨可以換一下工具的小圖案。有哪些圖案可以用呢? 其實 maya 內建就有很多不錯的圖案,個人覺得大部分的狀況下其實不需要自己製作一個圖案(除非是個用途很重要需要一眼就認出來的工具)。

在 shelf editor 裡可以透過選取介面去選你想要替換的圖案。



只是這樣一行一行預覽可能很難選到你滿意的圖案來表示這工具的用途。以下的小程式可以幫你把所有 maya 內建的圖案下載到一個目錄裡,方便你使用 file browser 來瀏覽。


python:
import maya.cmds as cmds
for item in cmds.resourceManager(nf='*png'):
    cmds.resourceManager(s=(item, "H:/rainmaker/maya_icon/{0}".format(item)))
(把 H:/rainmaker/maya_icon 改為你的指定目錄)

有了這些圖案你就可以快速找到滿意的,然後在 shelf editor 裡直接 filter 圖案名稱去快速替換你想要用的那個圖案。

2014年6月7日 星期六

Render Setting 視窗壞了要怎麼修? (How to fix broken render setting window)



有時候也不知是什麼原因,開啟 render setting window 畫面一整個是空的,所有render選項都消失了,這時候該怎麼修呢?網路上查了一下有人提出了一方法可以殺掉 Maya 的 render setting window 物件,然後再重新產生一個,就可以讓 render setting window 恢復原狀。

http://www.creativecrash.com/maya/tutorials/scripting/mel/c/fix-broken-render-setting-window-using-simple-mel-command--2

簡單來說執行以下這兩行 MEL 指令就對了!

 deleteUI unifiedRenderGlobalsWindow;  
 buildNewSceneUI;  

2014年2月13日 星期四

Maya 2014 的 multi component selection 問題




在 Maya 2014 之前的版本,要同時選取不同的 component (vertex & edge, face & vertex) 是件很容易做到的事情。例如 edge&vertex, 只要先選好 edge, 在按右鍵 切換到 vertex 模式 shift+選 vertex 就可以了。但在maya 2014 這版本卻無法做到這件事。只要切換到別的 component 模式,原本被選取的 component 就會消失。

原來 Maya 2014 的 multi component selection 行為是有做了些變動。但幸好在 preference 裡還是保留了可以回到舊行為的選項。那就是在 preference 裡的 selection-> preserve component selection 這個選項。只要不打勾它就可以回到以前的 "正常" 行為 。

n.b. : 這選項的寫法其實也有點怪。照常來說一般人會認為 "preserve component selection " 就是要保留不同的 component 選取結果,但它卻是反過來的意思。



當然在 Maya 裡還有一個 component 模式是可以達到類似的效果,也就是 Multi 這個模式。但是有些人還是會習慣切換到專屬模式來做選取。







2013年12月15日 星期日

存 .ma 檔時保留節點屬性的全名 (save attribute full names in .ma file)



有時候為了偷學 Maya 怎麼做事或是想知道某個節點 ( node ) 會有哪一些屬性 ( attribute )可以用,我們可能需要使用文字編輯器打開 Maya 的 .ma 檔。但一般來說 Maya 並不會在 .ma 檔裡把屬性的全名存起來,而是用簡稱來代替 (可能是為了縮減檔案大小吧)。

以下是 "正常" Maya 會存的格式。我們從這裡並很難看出來 .s .g .wgt 這種屬性到底是代表什麼,必須到 maya 官方 help 才可以查得出來 wgt --> weightedTangents,  cuv --> createUVs . 
 createNode lightLinker -s -n "lightLinker1";  
     setAttr -s 2 ".lnk";  
     setAttr -s 2 ".slnk";  
 createNode displayLayerManager -n "layerManager";  
 createNode displayLayer -n "defaultLayer";  
 createNode renderLayerManager -n "renderLayerManager";  
 createNode renderLayer -n "defaultRenderLayer";  
     setAttr ".g" yes;  
 createNode polyCube -n "polyCube1";  
     setAttr ".cuv" 4;  
 createNode animCurveUL -n "pCube1_translateX";  
     setAttr ".tan" 18;  
     setAttr ".wgt" no;  
     setAttr -s 3 ".ktv[0:2]" 0.00078463554382324219 0 3.7023928165435791   
         -6.4533541657909801 5.9996156692504883 -0.74532827237241772;  
 createNode animCurveUL -n "pCube1_translateY";  
     setAttr ".tan" 18;  
     setAttr ".wgt" no;  
     setAttr -s 3 ".ktv[0:2]" 0.00060009956359863281 0 3.7026000022888184   
         6.453 5.9995999336242676 -0.745;  

有一個方法可以強迫 Maya 把屬性全名存下來,也就是在 save as[] 時打開 Use full names for attributes on nodes 這選項。


相較之下,這種存法就清楚多了。不需要額外上網搜尋就大概可以了解每個屬性到底是可以用來設定什麼參數。
 createNode lightLinker -shared -name "lightLinker1";  
     setAttr -size 2 ".link";  
     setAttr -size 2 ".shadowLink";  
 createNode displayLayerManager -name "layerManager";  
 createNode displayLayer -name "defaultLayer";  
 createNode renderLayerManager -name "renderLayerManager";  
 createNode renderLayer -name "defaultRenderLayer";  
     setAttr ".global" yes;  
 createNode polyCube -name "polyCube1";  
     setAttr ".createUVs" 4;  
 createNode animCurveUL -name "pCube1_translateX";  
     setAttr ".tangentType" 18;  
     setAttr ".weightedTangents" no;  
     setAttr -size 3 ".keyTimeValue[0:2]" 0.00078463554382324219 0 3.7023928165435791   
         -6.4533541657909801 5.9996156692504883 -0.74532827237241772;  
 createNode animCurveUL -name "pCube1_translateY";  
     setAttr ".tangentType" 18;  
     setAttr ".weightedTangents" no;  
     setAttr -size 3 ".keyTimeValue[0:2]" 0.00060009956359863281 0 3.7026000022888184   
         6.453 5.9995999336242676 -0.745;  

2013年12月8日 星期日

在 Outliner 展開節點底下的所有階層 ( expand all hierarchy in outliner)




大部分的 Maya 使用者應該都知道在 Outliner裡按 F 的話可以顯示被選取的物件所在的位子。但最近實作一些檔案時需要檢查某個節點的所有階層關係,於是我就在網路上發現了一個方法,也就是 按住   + 左鍵按下 outliner 裡的   (shitft + left click   ) , 就可以把目前選取的物件所有底下的階層都展開。



2013年11月24日 星期日

如何關掉 Maya 2014 的 Help 訊息 (In View Messages) ?



Maya 2014 新增了一個功能,看來是針對 Maya 新手所設計的,也就是當你用了一些快速鍵時,在 畫面上會顯示訊息告訴你這快速鍵的用法。這功能雖然很貼切,但對於靠 Maya 吃飯的人來說卻可能只是一種干擾。如此"假會"的功能要在哪關掉呢?


最快的方式就是透過 Display -> Heads up Display -> In View Messages 這裡切換。

把 In View Messages 勾勾拿掉,就可以再也不用看到礙眼的 Help 訊息。


另外還有一個地方可以調整這個Help 設定就在 Window-> Settings/Preferences-> Preferences 裡的 Help 分區。在這有比較完整的 "小幫手" 選項,例如 顯示時間長短,字體大小,還有透明度等設定可以調。



2012年2月23日 星期四

透明模型的顯示順序設定


這功能開關主要是讓有透明度的物件顯示起來比較正確 (例如有加透明貼圖的樹葉)。
為什麼預設狀態是關閉的呢?我也不曉得,可能是因為考慮到效能的關係吧 ,但其實我測試切換這兩個顯示狀態時感覺差不了多少。


Shading -> Polygon Transparency Sorting.





關閉 Polygon Transparency Sorting 的狀態

打開 Polygon Transparency Sorting 的狀態



2012年2月1日 星期三

切換 Maya 背景顏色 ( background color)


舊/新  背景


有些人喜歡 Maya 2011 之後的 "modern look", 有灰階漸層的背景,但有些使用者卻傾向於舊的單灰色。這兩者的選項是在 Window->Settings/Preferences/Preferences : Display -> Background gradient 。On 的話是漸層背景,Off 則是 單色背景。

Option Menu

2011年7月2日 星期六

Maya 2012 簡體中文官方版 登場了!


Autodesk 前幾天很低調的發布了 Maya 2012 Hotfix 3. 說它這麼低調是因為在知名論壇或CG blog 上好像都沒看到相關的新聞。我猜是因為 Autodesk 怕被 Maya user 痛罵一頓,原因是在這次 hotfix 裡什麼 bug 也沒修,卻只加了一個功能就是可以顯示簡體中文的介面! 可能是越來越多 CG 代工都轉移到大陸去了,所以想多賺一點他們的錢吧 (實際報酬率我是有點質疑啦。。。)


Maya 2012 Hotfix 3 下載:
http://usa.autodesk.com/adsk/servlet/ps/dl/item?siteID=123112&id=17286269&linkID=9242259


Maya 2012 簡體中文版 Help 網頁 ( 對於看得懂簡體中文的同學們應該有不少的幫助,我本身是完全看不懂 XD )
http://download.autodesk.com/global/docs/maya2012/zh-cn/index.html


資訊來源:
http://area.autodesk.com/blogs/cory/maya_2012_in_chinese

2011年6月16日 星期四

Maya 2011 & 2012 終於可以顯示中文字體了 :)

托QT的福,Maya 2011 & 2012 都可以顯示中文字體了 :) 。 使用 mel 或 python 程式 建立 介面 (GUI) 時也可利用一些中文解說來讓華人地區的使用者更容易了解該工具的使用方法 。記得程式檔案不管是 MEL 或 Python 多要把 encoding 設為 UTF-8。

2011年6月15日 星期三

polygon face selection display

在 Maya 2008 之前,當我們把模型選取方式切換到 component mode ->face (面) 時 (F11), 模型每的個一面中間都會出現一個小點, 來表示該面的中間位子,也是該面的選取範圍。自從 maya 2008 之後有了 preselection highlight (選取預覽)這功能, Maya 也加了一個 面部選取方式,也就是只要我們把游標移到面部的任何區域都可以把該面選起來。切換這兩個模式的選項是在 Window ->Settings/Preferences->Preferences 裡的 Selection 視窗。


  • Center : 面中間會出現一個小點。游標必須移到點附近才可以選取該面。
  • Whole face: 游標只要移到面部的任何區域子都可以把該面選取。

左:whole face
右:center

2011年3月11日 星期五

在 graph editor 顯示 expression 所產生的曲線

如何可以在 graph editor 看到 expression 結果 ?


1. 建立 / 編輯出你要的 expression




2. 打開 graph editor, 然後 勾選 View->Show results. 使用預設選項值即可



3. Show results 啟動之後選取你要顯示的屬性. graph editor 將會秀出目前 expression 的曲線 提醒一點 : 這功能可以能會讓 Maya 變得有點 lag, 所以有需要時再打勾









2011年2月25日 星期五

小招術 : 鍵盤上的"[" 輿 "]" 是 鏡頭版的 undo & redo




Maya 的鏡頭導覽是無法使用 Ctrl+Z 來 undo 的 ,但按下"[" 就可以回到前一次的鏡頭位子。而 "]" 就是 redo 鏡頭的快速鍵。

另外,可以使用 View->Bookmarks->Edit Bookmarks 來儲存設定好的 view.





2010年10月19日 星期二

History & Undo






你如果發現你製造或修改物件時,channel 裡的 input 沒啥東西出現的話 (只剩物件的 shape 名
稱),那應該就是你不小心(或刻意也行) 把 history 的 切換關掉了,再給它按下去一次吧, 這動作雖然救不回你之前所用過的history, 但至少 之後的 history都會出現了。



還有一個蠻實用的選項就是在 Window->Settings/Preferences->Preferences->Undo 裡。你可以把 Undo 次數設成無限多次/infinite (雖然個人不建議這麼做), 或設成比較多的次數,例如 100 或 200。 這樣你就不用怕 修改很多東西之後不能 undo 回來 ( 但有些動作,例如 import 是沒辦法 undo 的,不管你設成幾次都沒用)。

2010年9月27日 星期一

替換shelf 上的 圖案(icon)工具 / Script to replace shelf icon


這工具是方便我們把shelf上的 icon 替換成其他圖案。主要是給 Maya 2011 以前的使用者方便整理shelf。

下載 : rainShelfIconUI.mel
Maya 內建 icon (2011前的版本) : maya icon

安裝方法:
  • 把 程式放到 maya script 目錄,例如: C:\Documents and Settings\me\My Documents\maya\scripts

使用方法:
  • 從開 Maya, 然後執行 rainShelfIconUISetup。
  • shelf 上會出現一個新的案紐. 那就是 rainShelfIconUI 工具的按鈕。
介面操作請參考以下影片:






Maya 內建 icon 使用 xpm 格式, 推薦用 xnview 這軟體預覽。

2010年8月27日 星期五

還原 Maya 預設的 shelf



我個人會把當時覺得用不到的 Maya shelf (例如 Subdivs, Fluids, Fur 等等) 刪除掉,讓選項少一些, 這樣找東西比較快. 但若有一天需要還原之前被殺掉的 shelf 的話, 就需要下一點功夫了. 其中一個快速方法就是 執行以下的 mel 指令 (只選你要的 shelf 就好):


loadNewShelf "shelf_General.mel";
loadNewShelf "shelf_Curves.mel";
loadNewShelf "shelf_Surfaces.mel";
loadNewShelf "shelf_Polygons.mel";
loadNewShelf "shelf_Subdivs.mel";
loadNewShelf "shelf_Deformation.mel";
loadNewShelf "shelf_Animation.mel";
loadNewShelf "shelf_Dynamics.mel";
loadNewShelf "shelf_Rendering.mel";
loadNewShelf "shelf_Cloth.mel";
loadNewShelf "shelf_nCloth.mel";
loadNewShelf "shelf_Fluids.mel";
loadNewShelf "shelf_Fur.mel";
loadNewShelf "shelf_Hair.mel";

另外一種方法就是到 Maya/[版本]/prefs/shelves 裡 找 類似 shelf_PaintEffects.mel.deleted 這種檔案, 去掉 .deleted 這字元, 然後從開 maya 應該就行了.

2010年8月14日 星期六

曲線(curve) / Display Layer 顏色參考表









建立角色或物件控制器時,我們常會用多種顏色來表示不同部位的控制範圍. 曲線的 顏色可以在 attribute editor裡修改,或使用 MEL/Python 把 color index 改為你想要的顏色,i.e.:
setAttr nurbsCircleShape1.overrideColor 12;

以下是顏色 index 參考表 :