SoTransformManip Class |
Base class for all transform nodes with built-in 3D user interfaces.
Namespace: OIV.Inventor.Manips
The SoTransformManip type exposes the following members.
Name | Description | |
---|---|---|
SoTransformManip | Constructor. |
Name | Description | |
---|---|---|
AffectsState | Returns true if a node has an effect on the state during traversal. | |
Callback | (Overrides SoTransformCallback(SoCallbackAction).) | |
CombineLeft | Convenience function that combines the effects of another transformation node into the current transformation stored in this node. | |
CombineRight | Convenience function that combines the effects of another transformation node into the current transformation stored in this node. | |
Copy | Calls Copy(false). (Inherited from SoNode.) | |
Copy(Boolean) | Creates and returns an exact copy of the node. | |
CopyFieldValues(SoFieldContainer) | Calls CopyFieldValues(fc, false). (Inherited from SoFieldContainer.) | |
CopyFieldValues(SoFieldContainer, Boolean) | Copies the contents of fc's fields into this object's fields. | |
Dispose |
Releases all resources used by SoDisposable.
(Inherited from SoDisposable.) | |
Distribute | (Inherited from SoNode.) | |
DoAction | (Overrides SoTransformDoAction(SoAction).) | |
EnableNotify | Notification at this Field Container is enabled (if flag == true) or disabled (if flag == false). | |
Equals | Determines whether the specified Object is equal to the current Object. (Inherited from Object.) | |
FieldsAreEqual | Returns true if this object's fields are exactly equal to fc's fields. | |
Get | Returns the values of the fields of this object in the Open Inventor ASCII file format in the given string. | |
GetAllFields | Returns a list of fields, including the eventIn's and eventOut's. | |
GetAlternateRep | This method is called by actions to allow the node to provide an "alternate representation" when appropriate (typically depending on the action type). | |
GetBoundingBox | (Overrides SoTransformGetBoundingBox(SoGetBoundingBoxAction).) | |
GetDragger | Returns the dragger being used by this manipulator. | |
GetEventIn | Returns a the eventIn with the given name. | |
GetEventOut | Returns the eventOut with the given name. | |
GetField | Returns a the field of this object whose name is fieldName. | |
GetFieldName | Returns the name of the given field in the fieldName argument. | |
GetFields | Appends references to all of this object's fields to resultList, and returns the number of fields appended. | |
GetHashCode |
Overrides GetHashCode().
(Inherited from SoNetBase.) | |
GetMatrix | (Overrides SoTransformGetMatrix(SoGetMatrixAction).) | |
GetName | Returns the name of an instance. | |
GetPrimitiveCount | (Inherited from SoTransform.) | |
GetRenderEngineMode | Returns the supported Render engine mode. | |
GetRenderUnitID | (Inherited from SoNode.) | |
GetRotationSpaceMatrix | Returns composite matrix that transforms from object space to rotation space (the space after the scale and rotation). | |
GetScaleSpaceMatrix | Returns composite matrix that transforms from object space to scale space (the space after the scale). | |
GetStringName | (Inherited from SoBase.) | |
GetTranslationSpaceMatrix | Returns composite matrix that transforms from object space to translation space (the space after scale, rotation, and translation). | |
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
GLRender | (Overrides SoTransformGLRender(SoGLRenderAction).) | |
GLRenderBelowPath | (Inherited from SoNode.) | |
GLRenderInPath | (Inherited from SoNode.) | |
GLRenderOffPath | (Inherited from SoNode.) | |
GrabEventsCleanup | (Inherited from SoNode.) | |
GrabEventsSetup | (Inherited from SoNode.) | |
HandleEvent | (Overrides SoTransformationHandleEvent(SoHandleEventAction).) | |
HasDefaultValues | Returns true if all of the object's fields have their default values. | |
IsBoundingBoxIgnoring | This method is used by getBoundingBox action traversal to know if the current node must be traversed or not, ie the bounding should be ignored. | |
IsNotifyEnabled | Notification is the process of telling interested objects that this object has changed. | |
IsOverride | Returns the state of the override flag. | |
IsSynchronizable | Gets the ScaleViz synchronizable state of this object. | |
MultLeft | Convenience function that combines the effects of a matrix transformation into the current transformation stored in this node. | |
MultRight | Convenience function that combines the effects of a matrix transformation into the current transformation stored in this node. | |
Pick | (Overrides SoTransformPick(SoPickAction).) | |
PointAt | Sets the node to translate the origin to the fromPoint and rotate the negative z-axis (0,0,-1) to lie on the vector from fromPoint to toPoint . | |
RayPick | (Inherited from SoNode.) | |
Recenter | Changes the center of the transformation to the given point without affecting the overall effect of the transformation. | |
ReplaceManip | Replaces the tail of the path, which must be this manipulator, with the given OIV.Inventor.Nodes.SoTransform node. | |
ReplaceNode | Replaces the tail of the path with this manipulator. | |
Search | (Overrides SoNodeSearch(SoSearchAction).) | |
Set | Sets one or more fields in this object to the values specified in the given string, which should be a string in the Open Inventor file format. | |
SetMatrix | Sets the fields in the node to implement the transformation represented by the given matrix. | |
SetName | (Inherited from SoBase.) | |
SetOverride | Turns the override flag on or off. | |
SetSynchronizable | Sets this to be a ScaleViz synchronizable object. | |
SetToDefaults | Sets all fields in this object to their default values. | |
ToString |
Converts this SoBase structure to a human readable string.
(Inherited from SoBase.) | |
Touch | Marks an instance as modified, simulating a change to it. | |
Write | (Overrides SoNodeWrite(SoWriteAction).) |
Name | Description | |
---|---|---|
center | Origin for scale and rotation. | |
IsDisposable | ISafeDisposable interface implementation.
(Inherited from SoDisposable.) | |
rotation | Rotation specification. | |
scaleFactor | Scale factors. | |
scaleOrientation | Rotational orientation for scale. | |
translation | Translation vector. | |
UserData |
Gets or sets the user data to be contained by the field container.
(Inherited from SoFieldContainer.) |
OIV.Inventor.Manips.SoTransformManip is the base class for all OIV.Inventor.Nodes.SoTransform nodes that have a built-in 3D user interface. Since it is derived from OIV.Inventor.Nodes.SoTransform, any changes to its fields result in the rotation, scaling, and/or translation of nodes that follow it in the scene graph.
Typically, you will want to replace a regular OIV.Inventor.Nodes.SoTransform with an OIV.Inventor.Manips.SoTransformManip (as when the user selects an object to be moved), or vice versa (as when the object is deselected, and the motion interface should go away). Use the OIV.Inventor.Manips.SoTransformManip.ReplaceNode(OIV.Inventor.SoPath) method to insert a manipulator into a scene graph, and the OIV.Inventor.Manips.SoTransformManip.ReplaceManip(OIV.Inventor.SoPath, OIV.Inventor.Nodes.SoTransform) method to remove it when done.
Every subclass of OIV.Inventor.Manips.SoTransformManip utilizes a dragger of some sort to provide a 3D interface. (This class does not have dragger; but all the subclasses do.) However a manipulator differs from a dragger; it influences other objects in the scene because, as an OIV.Inventor.Nodes.SoTransform, it alters the state. The fields values and movement of a dragger, on the other hand, affect only the dragger itself.
Each OIV.Inventor.Manips.SoTransformManip subclass utilizes its dragger by adding it as a hidden child. When an action is applied to the manipulator, such as rendering or handling events, the manipulator first traverses the dragger, and then the manipulator adds its transformation matrix to the state. When you click-drag-release over the manipulator, it passes these events down to the dragger, which moves as a result ("I can't <B> help </B> it, I'm a dragger!").
The manipulator maintains consistency between the fields of the dragger and its own fields. Let's say you use the mouse to rotate the dragger . Delegates insure that the rotation field of the manipulator will change by the same amount, resulting in the rotation of nodes which follow in the scene graph. Similarly, if you set any of the OIV.Inventor.Manips.SoTransformManip fields the manipulator will move the dragger accordingly. You can use this feature to impose constraints on a manipulator: If the user moves the manipulator so that a field value becomes too large, you can set the field back to your desired maximum, and the whole thing will move back to where you specified.
Since each OIV.Inventor.Manips.SoTransformManip uses a dragger to provide its interface, you will generally be told to look at the dragger's reference page for details of how it moves and what the different parts are for. The interface for the dragger and the manipulator will always be exactly the same. Usually, an OIV.Inventor.Manips.SoTransformManip will surround the objects that it influences (i.e., those that move along with it). This is because the manipulator turns on the surroundScale part of its dragger; so the dragger geometry expands to envelope the other objects (see the reference page for OIV.Inventor.Nodes.SoSurroundScale).
Because the dragger is a hidden child, you can see the dragger on screen and interact with it, but the dragger does not show up when you write the manipulator to file. Also, any OIV.Inventor.SoPath will end at the manipulator. (See the Actions section of this reference page for a complete description of when the dragger is traversed).
You can get this dragger from the manipulator using the OIV.Inventor.Manips.SoTransformManip.GetDragger() method. You will need to do this if you want to change the geometry of a manipulator, since the geometry actually belongs to the dragger.
TransformManip {
translation | 0 0 0 |
rotation | 0 0 1 0 |
scaleFactor | 1 1 1 |
scaleOrientation | 0 0 1 0 |
center | 0 0 0 |
OIV.Inventor.Actions.SoGLRenderAction, OIV.Inventor.Actions.SoCallbackAction, OIV.Inventor.Actions.SoGetBoundingBoxAction, OIV.Inventor.Actions.SoGetMatrixAction, OIV.Inventor.Actions.SoHandleEventAction, OIV.Inventor.Actions.SoRayPickAction First, traverses the dragger the way an OIV.Inventor.Nodes.SoGroup would. All draggers place themselves in space, but leave the current transformation unchanged when finished. Then the OIV.Inventor.Manips.SoTransformManip accumulates a transformation into the current transformation just like its base class, OIV.Inventor.Nodes.SoTransform.
OIV.Inventor.Actions.SoSearchAction Searches just like an OIV.Inventor.Nodes.SoTransform. Does not search the dragger, which is a hidden child.
OIV.Inventor.Actions.SoWriteAction Writes out just like an OIV.Inventor.Nodes.SoTransform. Does not write the dragger, which is a hidden child. If you really need to write valuable information about the dragger, such as customized geometry, you can retrieve the dragger with the OIV.Inventor.Manips.SoTransformManip.GetDragger() method and then write it out separately.