SoProjection Class |
Coordinate projection node.
Namespace: OIV.Inventor.Nodes
The SoProjection type exposes the following members.
Name | Description | |
---|---|---|
SoProjection | Constructor. |
Name | Description | |
---|---|---|
AddProjection | Add a projection with the given name and id to the list. | |
AffectsState | Returns true if a node has an effect on the state during traversal. | |
Callback | (Overrides SoNodeCallback(SoCallbackAction).) | |
CheckProjection | Apply projection to given coordinates. | |
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 SoNodeDoAction(SoAction).) | |
EnableNotify | Notification at this Field Container is enabled (if flag == true) or disabled (if flag == false). | |
Equals | (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 SoNodeGetBoundingBox(SoGetBoundingBoxAction).) | |
GetCurrentProjectionInfos | Return current projection name and id. | |
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 SoNodeGetMatrix(SoGetMatrixAction).) | |
GetName | Returns the name of an instance. | |
GetPrimitiveCount | (Inherited from SoNode.) | |
GetProjection | Return current projection. | |
GetRenderEngineMode | Returns the supported Render engine mode. | |
GetRenderUnitID | (Inherited from SoNode.) | |
GetStringName | (Inherited from SoBase.) | |
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
GLRender | (Overrides SoNodeGLRender(SoGLRenderAction).) | |
GLRenderBelowPath | (Inherited from SoNode.) | |
GLRenderInPath | (Inherited from SoNode.) | |
GLRenderOffPath | (Inherited from SoNode.) | |
GrabEventsCleanup | (Inherited from SoNode.) | |
GrabEventsSetup | (Inherited from SoNode.) | |
HandleEvent | (Overrides SoNodeHandleEvent(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. | |
Pick | (Overrides SoNodePick(SoPickAction).) | |
RayPick | (Overrides SoNodeRayPick(SoRayPickAction).) | |
Search | (Inherited from SoNode.) | |
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. | |
SetName | (Inherited from SoBase.) | |
SetOverride | Turns the override flag on or off. | |
SetProjection | Set the current projection. | |
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 | (Inherited from SoNode.) |
Name | Description | |
---|---|---|
floatParameters | Float parameters stored for projections. | |
IsDisposable | ISafeDisposable interface implementation.
(Inherited from SoDisposable.) | |
isOn | If set to false, projection is inactive. | |
matrix | Matrix that can be applied before projecting a point. | |
parameters | String parameters stored for projections. | |
parametersIn | String parameters stored for projections. | |
projTypeId | Current projection id. | |
UserData |
Gets or sets the user data to be contained by the field container.
(Inherited from SoFieldContainer.) |
This property node defines a coordinate projection that will be applied to all subsequent shapes in the scene graph. Coordinate transform nodes like OIV.Inventor.Nodes.SoTransform can only apply transforms that can be expressed as a matrix. A coordinate projection can be any algorithm that takes a coordinate and returns a different coordinate. This is particularly useful for geospatial coordinate systems (see OIV.Inventor.Nodes.SoGeoProjection), but is also useful for using spherical, cylindrical and other coordinate systems directly.
This node works together with projection classes derived from the OIV.Inventor.Projection.SbProjection class. The projection classes implement the projection computations applied to 3D points. Applications can create new subclasses of OIV.Inventor.Projection.SbProjection.
To use a specific projection, call OIV.Inventor.Nodes.SoProjection.SetProjection(OIV.Inventor.Projection.SbProjection) with an instance of the OIV.Inventor.Projection.SbProjection class. Each instance of OIV.Inventor.Nodes.SoProjection can also store a list of projections, each one associated with a unique id. This is convenient for switching between different geospatial projections. Changing the OIV.Inventor.Nodes.SoProjection.m_projTypeId value activates the projection registered with the corresponding id.
The default projection is spherical coordinates (OIV.Inventor.Projection.SbSphericalProjection).
The projection classes will use the string parameters and float parameters in the fields OIV.Inventor.Nodes.SoProjection.m_parameters and OIV.Inventor.Nodes.SoProjection.m_floatParameters respectively. See the projection class documentation for relevant parameters.
Normal vectors
If no normal vectors are given for the geometry (and normal vectors are needed), Open Inventor will automatically compute normal vectors using the projected vertices, i.e. the coordinates after projection has been applied. This is usually the desired result.
If normal vectors are specified for the geometry, they are not projected. Therefore normal vectors must be specified in post-projection (world) coordinates.
LIMITATIONS
Shapes The following shapes are not supported by OIV.Inventor.Nodes.SoProjection:
Text nodes (OIV.Inventor.Nodes.SoAnnoText3, OIV.Inventor.Nodes.SoAsciiText, OIV.Inventor.Nodes.SoText2, OIV.Inventor.Nodes.SoText3 )
OIV.Inventor.Nodes.SoCylinder, OIV.Inventor.Nodes.SoCube, OIV.Inventor.Nodes.SoCone
All classes inheriting from OIV.Inventor.Nodes.SoAlgebraicShape
NURBS shapes
All VolumeViz shapes except
OIV.VolumeViz.Nodes.SoVolumeRender with some limitations (see OIV.VolumeViz.Nodes.SoVolumeRender doc for details)
Volume geometry nodes (e.g. OIV.VolumeViz.Nodes.SoVolumeIndexedFaceSet)
Transform nodes The projection mechanism is not compatible with transform and manipulator nodes. Using nodes derived from OIV.Inventor.Nodes.SoTransformation, for example OIV.Inventor.Nodes.SoTransform or OIV.Inventor.Manips.SoTabBoxManip will give unexpected results. To apply a transformation matrix to projected shapes, set the OIV.Inventor.Nodes.SoProjection.m_matrix field to the expected value. Shape vertices will be multiplied by the matrix before being projected.
Draggers Because draggers are composed with OIV.Inventor.Nodes.SoTransformation nodes, they can't be projected using an OIV.Inventor.Nodes.SoProjection node.
Memory Because shape coordinates must be duplicated, memory consumption will increase when using projections.
Picking Projection is not applied when doing picking (OIV.Inventor.Actions.SoRayPickAction). Results may be incorrect.
Projection {
parameters | "" |
matrix | identity |
isOn | true |
floatParameters | 1 |
projTypeId | 0 |