HDK
|
#include <SIM_ForceField.h>
Public Member Functions | |
GETSET_DATA_FUNCS_S (SIM_NAME_FORCEATTRIBNAME, ForceAttribName) | |
The name of the point attribute holding the force values. More... | |
GETSET_DATA_FUNCS_F (SIM_NAME_FORCESCALE, ForceScale) | |
Scale the calculated force value. More... | |
GETSET_DATA_FUNCS_S (SIM_NAME_TORQUEATTRIBNAME, TorqueAttribName) | |
The name of the point attribute holding the torque values. More... | |
GETSET_DATA_FUNCS_F (SIM_NAME_TORQUESCALE, TorqueScale) | |
Scale the calculated torque value. More... | |
GETSET_DATA_FUNCS_B (SIM_NAME_USEMAXDISTANCE, UseMaxDistance) | |
Determines whether or not there is a maximum distance to check. More... | |
GETSET_DATA_FUNCS_F (SIM_NAME_MAXDISTANCE, MaxDistance) | |
The maximum distance we are allowed to search for a point. More... | |
GETSET_DATA_FUNCS_B (SIM_NAME_TREATASWIND, TreatAsWind) | |
Whether to treat the force as a wind or a force. More... | |
GETSET_DATA_FUNCS_I (SIM_NAME_SAMPLEMODE, SampleMode) | |
Whether to sample by point, circle, or sphere. More... | |
![]() | |
void | getForce (const SIM_Object &object, const UT_Vector3 &position, const UT_Vector3 &velocity, const UT_Vector3 &angvel, const fpreal mass, UT_Vector3 &force, UT_Vector3 &torque) const |
bool | getForceSet (const SIM_Object &object, const UT_Vector3Array &positions, const UT_Vector3Array &velocities, const UT_Vector3Array &angvelocities, const UT_FloatArray &masses, UT_Vector3Array &forces, UT_Vector3Array &torques) const |
SIM_ForceResolver * | getForceResolver (const SIM_Object &object) const |
void | getForceOnCircle (const SIM_Object &object, const UT_Vector3 &position, const UT_Vector3 &normal, const fpreal radius, const UT_Vector3 &velocity, const UT_Vector3 &angvel, const fpreal mass, UT_Vector3 &force, UT_Vector3 &torque) const |
void | getForceOnSphere (const SIM_Object &object, const UT_Vector3 &position, const fpreal radius, const UT_Vector3 &velocity, const UT_Vector3 &angvel, const fpreal mass, UT_Vector3 &force, UT_Vector3 &torque) const |
void | getForceJacobian (const SIM_Object &object, const UT_Vector3 &position, const UT_Vector3 &velocity, const UT_Vector3 &angvel, const fpreal mass, UT_Matrix &dFdX, UT_Matrix &dFdV) const |
SIM_ForceSample | getOptimalForceSampling () const |
void | getPointForces (SIM_PointForceCallback &cb, const SIM_Object &object, const GU_ConstDetailHandle &gdh, const UT_DMatrix4 &geoxform, const SIM_Position *position, const SIM_Motion *motion, bool forcesinworldspace) const |
![]() | |
const UT_StringHolder & | getDataType () const |
void | initialize (const SIM_SubdataBehavior &subdatabehavior) |
void | makeEqual (const SIM_Data *source, const SIM_SubdataBehavior &subdatabehavior) |
void | setParameters (const SIM_Options &parms) |
void | interpolate (const SIM_Data *source1, const SIM_Data *source2, fpreal interp) |
int64 | getMemorySize () const |
bool | getIsAlternateRepresentation () const |
bool | saveToFile (const char *filename, UT_CompressionType compressionType) const |
bool | saveToStream (std::ostream &os, UT_CompressionType compressionType) const |
void | appendFullDataPath (const SIM_Data *subdata, bool useobjectid, UT_String &datapath) const |
bool | loadFromFile (const char *filename) |
bool | loadFromStream (UT_IStream &is, bool skiptype=false) |
bool | getIsOfType (const UT_StringRef &datatype) const |
const void * | getConstPointerToType (const UT_StringRef &datatype) const |
void * | getPointerToType (const UT_StringRef &datatype) |
int | getNumSubData () const |
Get the number of sub-data items attached to this data. More... | |
const UT_StringHolder & | getSubDataName (int index) const |
Get the name of the sub-data at a particular index location. More... | |
int | getSubDataIndex (const SIM_Data *subdata) const |
bool | buildSubDataPath (const SIM_Data *subdata, UT_String &pathto) const |
const SIM_Query & | getQueryObject () const |
SIM_Options * | getUserOptions () |
const SIM_Options * | getConstUserOptions () const |
long | getGuideParmVersion () const |
void | addGuideDep (DEP_MicroNode &src) const |
virtual bool | getGuideGeometryList (const SIM_RootData &root, const char *datapath, const SIM_Time &t, UT_Array< GU_ConstDetailHandle > &detailArray, UT_Array< UT_DMatrix4 > &xformArray) const |
GU_ConstDetailHandle | getGuideGeometry (const SIM_RootData &root, const char *datapath, UT_DMatrix4 &xform, const SIM_Time &t) const |
void | buildGuideOptions (SIM_Options &options, const SIM_Time &time) const |
SIM_Data * | getSubData (int index) |
const SIM_Data * | getConstSubData (int index) const |
SIM_Data * | getNamedSubData (const char *dataname) |
const SIM_Data * | getConstNamedSubData (const char *dataname) const |
void | filterSubData (SIM_DataArray &ncdp, UT_StringArray *names, const SIM_DataFilter &ncfilter, const char *startfrom, const SIM_DataFilter &recursefilter) |
void | filterConstSubData (SIM_ConstDataArray &dp, UT_StringArray *names, const SIM_DataFilter &filter, const char *startfrom, const SIM_DataFilter &recurseFilter) const |
SIM_Data * | getNthSubData (UT_String *name, const SIM_DataFilter &filter, int n, const char *startfrom, const SIM_DataFilter &recurseFilter) |
const SIM_Data * | getNthConstSubData (UT_String *name, const SIM_DataFilter &filter, int n, const char *startfrom, const SIM_DataFilter &recurseFilter) const |
void | forEachSubData (SIM_EachDataCallback &cb, const SIM_DataFilter &filter, const char *startfrom, const SIM_DataFilter &recurseFilter) |
void | forEachConstSubData (SIM_EachDataCallback &cb, const SIM_DataFilter &filter, const char *startfrom, const SIM_DataFilter &recurseFilter) const |
SIM_Data * | createNamedSubData (const char *dataname, const char *datatype, int creationflags, UT_String *newdatanameptr=NULL) |
SIM_Data * | getOrCreateAlternateRepresentation (const char *dataname, const char *datatype) const |
void | interpolateSubData (const SIM_Data &source1, const SIM_Data &source2, fpreal interp, const SIM_DataFilter &interpdata, const SIM_DataFilter &recurse) |
void | setNamedSubData (const char *dataname, const SIM_Data *data, int setflags) |
void | createUniqueSubDataName (const SIM_Data *subdata, UT_String &dataname) const |
void | removeNamedSubData (const char *dataname) |
Remove some existing sub-data by name. More... | |
void | removeSubData (int index) |
Remove some existing sub-data by index. More... | |
void | moveNamedSubData (const char *oldname, const char *newname) |
const UT_Guid & | getUniqueId () const |
long | getReferenceCount () const |
int | getCreatorId () const |
Get the ID of the node that created this data. More... | |
OP_Node * | getCreatorNode () const |
Use the creator ID to look up the OP_Node that created this data. More... | |
OP_Node * | getOwnerNetwork () const |
Look up the owner node of our engine to get the DOP Network pointer. More... | |
const SIM_Engine & | getEngine () const |
Get the engine that created us (from our data factory). More... | |
int | getCreatorIndex () const |
Get the output index of the creator node that generated this data. More... | |
const SIM_Time & | getCreationTime () const |
Get the creation time for this data. More... | |
bool | getIsSelected () const |
Get the selected flag for this data. More... | |
void | setIsSelected (bool selected) const |
bool | getSelectionRepresentsObject () const |
void | copyCreationInfoFrom (const SIM_Data *source) |
OP_Node & | getNodePathsRelativeTo () const |
OP_Node * | getOPNode (const char *path, bool addinterest) const |
Given a path relative to our creator node, return an OBJ_Node. More... | |
OBJ_Node * | getOBJNode (const char *path, bool addinterest) const |
Given a path relative to our creator node, return an OBJ_Node. More... | |
SOP_Node * | getSOPNode (const char *path, bool addinterest) const |
Given a path relative to our creator node, return a SOP_Node. More... | |
DOP_Node * | getDOPNode (const char *path, bool addinterest) const |
Given a path relative to our creator node, return a DOP_Node. More... | |
COP2_Node * | getCOP2Node (const char *path, bool addinterest) const |
Given a path relative to our creator node, return a COP2_Node. More... | |
CHOP_Node * | getCHOPNode (const char *path, bool addinterest) const |
Given a path relative to our creator node, return a CHOP_Node. More... | |
void | addOPInterest (OP_Node *node) const |
Adds an interest in the specified node to our engine's owner node. More... | |
void | addError (const SIM_RootData *root, int errorcode, const char *errorparm, UT_ErrorSeverity severity) const |
Adds an error to our SIM_Engine. More... | |
void | makeMemberDataUnique () |
virtual void | makeMemberDataUniqueSubclass () |
![]() | |
SIM_OptionsUser (SIM_Data *owner) | |
virtual | ~SIM_OptionsUser () |
void | optionChanged (const char *name) |
const SIM_Options & | getOptions () const |
Protected Member Functions | |
SIM_ForceField (const SIM_DataFactory *factory) | |
~SIM_ForceField () override | |
void | getForceSubclass (const SIM_Object &object, const UT_Vector3 &position, const UT_Vector3 &velocity, const UT_Vector3 &angvel, const fpreal mass, UT_Vector3 &force, UT_Vector3 &torque) const override |
SIM_ForceResolver * | getForceResolverSubclass (const SIM_Object &object) const override |
void | getForceOnCircleSubclass (const SIM_Object &object, const UT_Vector3 &position, const UT_Vector3 &normal, const fpreal radius, const UT_Vector3 &velocity, const UT_Vector3 &angvel, const fpreal mass, UT_Vector3 &force, UT_Vector3 &torque) const override |
void | getForceJacobianSubclass (const SIM_Object &object, const UT_Vector3 &position, const UT_Vector3 &velocity, const UT_Vector3 &angvel, const fpreal mass, UT_Matrix &dFdX, UT_Matrix &dFdV) const override |
SIM_ForceSample | getOptimalForceSamplingSubclass () const override |
We want to use area sampling if treat as wind is on. More... | |
SIM_Guide * | createGuideObjectSubclass () const override |
void | buildGuideGeometrySubclass (const SIM_RootData &root, const SIM_Options &options, const GU_DetailHandle &gdh, UT_DMatrix4 *xform, const SIM_Time &t) const override |
![]() | |
SIM_Force (const SIM_DataFactory *factory) | |
~SIM_Force () override | |
void | applyNoise (const UT_Vector3 &pos, UT_Vector3 &forceortorque) const |
void | applyNoise (const UT_Vector3 &pos, UT_Vector3 &force, UT_Vector3 &torque) const |
void | applyNoiseJacobian (const UT_Vector3 &pos, UT_Matrix &dFdX, UT_Matrix &dFdV) const |
virtual bool | getForceSetSubclass (const SIM_Object &object, const UT_Vector3Array &positions, const UT_Vector3Array &velocities, const UT_Vector3Array &angvelocities, const UT_FloatArray &masses, UT_Vector3Array &forces, UT_Vector3Array &torque) const |
virtual void | getForceOnSphereSubclass (const SIM_Object &object, const UT_Vector3 &position, const fpreal radius, const UT_Vector3 &velocity, const UT_Vector3 &angvel, const fpreal mass, UT_Vector3 &force, UT_Vector3 &torque) const |
![]() | |
SIM_Data (const SIM_DataFactory *factory) | |
virtual | ~SIM_Data () |
void | handleModification (int code=-1) |
void | setNeedsToRecalculateMemorySize () const |
void | deleteQueryObjectIfNotBuilding () const |
Deletes the query object for this data, if there is one. More... | |
void | deleteGuideObjectIfNotBuilding () const |
Delete the guide geometry for this data, if it exists. More... | |
void | initAlternateRepresentation () const |
void | setNeedsInitialization (bool needsinit) const |
Flags an alternate representation subdata as requiring initialization. More... | |
bool | getNeedsInitialization () const |
Tests whether an alternate representation requires initialization. More... | |
bool | saveOptionPacket (std::ostream &os, const char *name, const SIM_Options *opts) const |
bool | loadOptionPacket (UT_IStream &is, const char *name, SIM_Options *opts) const |
bool | getIsDoingSimplifiedSaveLoad () const |
void | initializeFromParmDefaults () |
void | setSelectionRepresentsObject (bool representsobject) |
virtual void | setNeedsInitializationSubclass (bool needsinit) const |
virtual void | initializeSubclass () |
virtual void | makeEqualSubclass (const SIM_Data *source) |
virtual void | saveSubclass (std::ostream &os) const |
virtual void | saveIOSubclass (std::ostream &os, SIM_DataThreadedIO *io) const |
virtual bool | loadSubclass (UT_IStream &is) |
virtual bool | loadIOSubclass (UT_IStream &is, SIM_DataThreadedIO *io) |
virtual SIM_Query * | createQueryObjectSubclass () const |
virtual long | getGuideParmVersionSubclass () const |
virtual void | setParametersSubclass (const SIM_Options &parms) |
virtual void | setNamedSubDataSubclass (const char *dataname, const SIM_Data *data) |
virtual void | removeNamedSubDataSubclass (const char *dataname) |
virtual void | interpolateSubclass (const SIM_Data *source1, const SIM_Data *source2, fpreal interp) |
virtual int64 | getMemorySizeSubclass () const |
virtual void | handleModificationSubclass (int code) |
virtual bool | getIsAlternateRepresentationSubclass () const |
virtual void | initAlternateRepresentationSubclass (const SIM_Data &) |
virtual void * | getCastToType (const UT_StringRef &datatype) const |
virtual const UT_StringHolder & | getDataTypeSubclass () const |
const SIM_Data * | getAlternateRepresentationOf () const |
![]() | |
SIM_Options & | getOptions () |
virtual void | optionChangedSubclass (const char *name) |
Friends | |
class | SIM_ForceResolverField |
Additional Inherited Members | |
![]() | |
enum | SIM_ForceSample { SIM_FORCE_SAMPLEPOINT, SIM_FORCE_SAMPLECIRCLE, SIM_FORCE_SAMPLESPHERE } |
![]() | |
static bool | getDataTypeFromFile (const char *filename, UT_String &datatype) |
static bool | getDataTypeFromStream (UT_IStream &is, UT_String &datatype) |
static const void * | castConstPointerToType (const SIM_Data *data, const UT_StringRef &datatype) |
static void * | castPointerToType (SIM_Data *data, const UT_StringRef &datatype) |
![]() | |
static const PRM_Template * | getEmptyTemplateList () |
static const SIM_DopDescription * | getEmptyDopDescription () |
A DOP description that says not to create an automatic DOP. More... | |
static void | getDataTypeSuperclasses (UT_StringArray &) |
This is an implementation of the SIM_Force interface. This implementation calculates the interpolated value from a point cloud with force and torque attributes attached to it.
Definition at line 20 of file SIM_ForceField.h.
|
explicitprotected |
|
overrideprotected |
|
overrideprotectedvirtual |
Build guide geometry by copying the points from the source geometry, and adding lines to represent the force and torque vectors.
Reimplemented from SIM_Data.
|
overrideprotectedvirtual |
Override this to return a SIM_GuideShared so we only have to draw our guide geometry once regardless of how many objects we are attached to.
Reimplemented from SIM_Data.
|
overrideprotectedvirtual |
Returns the derivatives of force & torque with respect to position and velocity. The jacobians are 6x6 matrices indexed from 1 (ie, dFdX(1,1) is first element). The default behaviour is to return 0 matrices. Note that the matrices are already initialized to 0 when this is called.
Reimplemented from SIM_Force.
|
overrideprotectedvirtual |
Returns the force and torque applied by this force to a circle. The outputs may be modified according to the information passed in about the object to which the force is being applied. The default implementation calls getForce() and assumes this is the force on a unit area. So the force and torque are then scaled by the area of the circle.
Reimplemented from SIM_Force.
|
overrideprotectedvirtual |
Creates a force resolver to evaluate this force in a threadsafe manner.
Reimplemented from SIM_Force.
|
overrideprotectedvirtual |
Returns the force and torque on a point. The returned values are exact copies of the force and torque attributes. The getForceOnCircleSubclass() and getForceOnSphereSubclass() functions use the default implementations which scale the point force by the area or volume of the circle or sphere. This means that regardless of the size of samples used to quantize an object, the total force on the object should remain roughly constant.
Reimplemented from SIM_Force.
|
overrideprotectedvirtual |
We want to use area sampling if treat as wind is on.
Reimplemented from SIM_Force.
SIM_ForceField::GETSET_DATA_FUNCS_B | ( | SIM_NAME_USEMAXDISTANCE | , |
UseMaxDistance | |||
) |
Determines whether or not there is a maximum distance to check.
SIM_ForceField::GETSET_DATA_FUNCS_B | ( | SIM_NAME_TREATASWIND | , |
TreatAsWind | |||
) |
Whether to treat the force as a wind or a force.
SIM_ForceField::GETSET_DATA_FUNCS_F | ( | SIM_NAME_FORCESCALE | , |
ForceScale | |||
) |
Scale the calculated force value.
SIM_ForceField::GETSET_DATA_FUNCS_F | ( | SIM_NAME_TORQUESCALE | , |
TorqueScale | |||
) |
Scale the calculated torque value.
SIM_ForceField::GETSET_DATA_FUNCS_F | ( | SIM_NAME_MAXDISTANCE | , |
MaxDistance | |||
) |
The maximum distance we are allowed to search for a point.
SIM_ForceField::GETSET_DATA_FUNCS_I | ( | SIM_NAME_SAMPLEMODE | , |
SampleMode | |||
) |
Whether to sample by point, circle, or sphere.
SIM_ForceField::GETSET_DATA_FUNCS_S | ( | SIM_NAME_FORCEATTRIBNAME | , |
ForceAttribName | |||
) |
The name of the point attribute holding the force values.
SIM_ForceField::GETSET_DATA_FUNCS_S | ( | SIM_NAME_TORQUEATTRIBNAME | , |
TorqueAttribName | |||
) |
The name of the point attribute holding the torque values.
|
friend |
Definition at line 122 of file SIM_ForceField.h.