# I3DShModifier Struct Reference
[Shell Interfaces]

Inheritance diagram for I3DShModifier:

List of all members.

## Public Member Functions
virtual MCCOMErr MCCOMAPI | Apply (I3DShTreeElement *tree)=0
virtual MicroTick MCCOMAPI | GetMaxTimeWithoutComputation (I3DShTreeElement *tree)=0
virtual boolean MCCOMAPI | IsIKTerminator (boolean &outExcludeFromChain) const =0
virtual void MCCOMAPI | SetBoundingBox (const TBBox3D &bbox)=0
virtual void MCCOMAPI | DeformPoint (const TVector3 &point, TVector3 &result)=0
virtual void MCCOMAPI | DeformVertex3D (const TVertex3D &vertex, TVertex3D &result)=0
virtual void MCCOMAPI | DeformFacetMesh (real lod, FacetMesh *in, FacetMesh **outMesh)=0
virtual void MCCOMAPI | DeformBBox (const TBBox3D &in, TBBox3D &out)=0
virtual void MCCOMAPI | GetNeededLOD (const real outputLOD, real &neededLod)=0
virtual void MCCOMAPI | GetDeformerInfo (real lod, TDeformInfo &deformInfo)=0

## Detailed Description

I3DShModifier is the shell interface of a modifier.

There are two interfaces to access a modifier: The shell interface (I3DShModifier) and the external interface (I3DExModifier) . You can get one from the other using QueryInterface.

Whenever it is possible you should use the Shell interface (I3DShModifier) to access the component because the Shell will make sure that the parameter map of the external component is valid. This is especially important if the component is animated. For more information on components see the Overview of the SDK.

See also:
  I3DExModifier

## Member Function Documentation

virtual MCCOMErr MCCOMAPI I3DShModifier::Apply | ( | I3DShTreeElement * | tree | ) | `[pure virtual]`

Gives access to all the parameters of the tree the modifier is on. To implement a behavior, just change the transforms.

Parameters:

  | tree | The tree to which the modifier is applied

virtual void MCCOMAPI I3DShModifier::DeformBBox | ( | const TBBox3D & | in,
|  | TBBox3D & | out |
| ) |  |  | `[pure virtual]`

Returns an approximation of how the modifier affects a given zone of space contained in the box in, and returns the box that encompass the deformed space in out.

Parameters:

  | in | The bounding box before deformation (in local coordinates)
  | out | The bounding box after deformation (in local coordinates)

Returns:
  MC_S_OK if it is implemented, MC_E_NOTIMPL if not.

virtual void MCCOMAPI I3DShModifier::DeformFacetMesh | ( | real | lod,
|  | FacetMesh * | in,
|  | FacetMesh ** | outMesh |
| ) |  |  | `[pure virtual]`

Deforms or creates 3D facets. Given the original facet mesh of a primitive, it produces a (new) deformed mesh. You can modify whatever you want on the mesh: you can add or remove vertices, normals, facets, or change their position.

But you should NOT modify the in mesh. You need to create a new mesh and return it in outMesh (yet you can clone in to outMesh and then change outMesh).

If the parameters of your deformer won't deform the mesh, you can have outMesh reference in thus:

     TMCCountedGetHelper<FacetMesh> result(outMesh); result= in;

Parameters:

  | lod | Level of detail (LOD) of the output mesh (0 is the best quality)
  | in | The facet mesh that needs to be deformed.
  | outMesh | The mesh after deformation

Returns:
  MC_S_OK if it is implemented, MC_E_NOTIMPL if not.

virtual void MCCOMAPI I3DShModifier::DeformPoint | ( | const TVector3 & | point,
|  | TVector3 & | result |
| ) |  |  | `[pure virtual]`

Computes result of the deformation of a given point (in local coordinates). DeformPoint is called by the shell if you do not implement DeformFacetMesh or DeformVertex3D (the shell will automatically subdivide the facet mesh to achieve a smooth deformation).

Parameters:

  | point | The point that needs to be moved
  | result | The position of the point after deformation.

virtual void MCCOMAPI I3DShModifier::DeformVertex3D | ( | const TVertex3D & | vertex,
|  | TVertex3D & | result |
| ) |  |  | `[pure virtual]`

Computes the result of the deformation of a given vertex (in local coordinates). DeformVertex3D called by the 3D Shell if you do not implement DeformFacetMesh (the shell will automatically subdivide the facet mesh to achieve a smooth deformation).

Parameters:

  | vertex | The vertex that needs to be moved
  | result | The vertex after deformation.

Returns:
  MC_S_OK if it is implemented, MC_E_NOTIMPL if not.

virtual void MCCOMAPI I3DShModifier::GetDeformerInfo | ( | real | lod,
|  | TDeformInfo & | deformInfo |
| ) |  |  | `[pure virtual]`

Returns information about the modifier. If you implement only DeformPoint or DeformVertex3D and not DeformFacetMesh, use this function to give the shell some directions to guide the facet mesh subdivision process.

Parameters:

  | lod | The level of detail
  | deformInfo | The deformer information.

virtual MicroTick MCCOMAPI I3DShModifier::GetMaxTimeWithoutComputation | ( | I3DShTreeElement * | tree | ) | `[pure virtual]`

Tells the shell how much cached data the behavior has (starting at zero).

Parameters:

  | tree | The tree to which the modifier is applied

virtual void MCCOMAPI I3DShModifier::GetNeededLOD | ( | const real | outputLOD,
|  | real & | neededLod |
| ) |  |  | `[pure virtual]`

Returns the level of detail the modifier needs to produce a result at the precision outputLOD.

Parameters:

  | outputLOD | The desired output precision
  | neededLod | The necessary input precision to get that result.

virtual boolean MCCOMAPI I3DShModifier::IsIKTerminator | ( | boolean & | outExcludeFromChain | ) | const`[pure virtual]`

Returns true if the modifier is an IK Terminator.

Parameters:

  | outExcludeFromChain | Tells if the tree should be excluded from the chain.

virtual void MCCOMAPI I3DShModifier::SetBoundingBox | ( | const TBBox3D & | bbox | ) | `[pure virtual]`

Is called by the 3D Shell to tell the 3D deformation modifier in which boundaries the 3D data to deform is going to be. This is the bounding box of the facet mesh before the deformation is applied.

Parameters:

  | bbox | The Bounding Box

The documentation for this struct was generated from the following file:

- I3dShModifier.h