1. Manipulators是能夠用三維進行繪製的的節點,能夠將用戶行爲值化,對其餘節點的屬性進行modify。node
2. 屬性值能夠經過Channel Box 和Graph Editor進行修改。同其餘的dg節點不同,manipulator直接修改屬性值,而不經過plug。app
3.能夠用如下幾種方法是用manipulator:ide
Create a manipulator on any node in the current scene at any time.函數
Create and assign a manipulator for a specific type of object.spa
Create a context tool and associate the manipulator to the context tool. Whenever the context tool is active, the manipulator becomes active and ready for use.code
4. 全部的manipulator的function set都是從MFnManip3D派生而來。blog
(1)FreePointTriadManip: ip
The FreePointTriadManip provides a point that can be moved anywhere. It has axes for constrained x, y, and z movement and obeys grid snapping, point snapping, and curve snapping.ci
(2)DirectionManip:it
.....詳情見document
5 Manipulator Containers:
(1)
經過MPxManipContainer建立Manipulator container.
能夠將base manipulators加入到container。
定義從manipulator到attribute的聯繫。
(2)必要的幾個方法:
creator(), initialize(), createChildren(), connectToDependNode()
你也能夠經過重寫draw函數來自定義manipulator的繪製。
(3)initialize()
靜態函數須要註冊的。進行一些必要的初始化。
(4)createChildren()
base manipulator加到container裏面是經過這個函數的,例子:
MStatus moveManip::createChildren() { ... fDistanceManip = addDistanceManip(manipName, distanceName); fFreePointManip = addFreePointTriadManip(pointManipName, pointName); ... }
The MPxManipContainer class provides a set of member functions to add individual base manipulators, most of them are named as addXYZManip, where XYZ represents the manipulator name