11、Manipulators

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

相關文章
相關標籤/搜索