00001
00011
00012
00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER)
00014 #pragma once
00015 #endif
00016
00017 #ifndef __XSIX3DOBJECT_H__
00018 #define __XSIX3DOBJECT_H__
00019
00020 #include <xsi_sceneitem.h>
00021 #include <xsi_status.h>
00022 #include <xsi_math.h>
00023 #include <xsi_nurbsdata.h>
00024
00025 namespace XSI {
00026
00027 class Primitive;
00028 class Kinematics;
00029 class CameraRig;
00030 class LightRig;
00031 class Camera;
00032 class Light;
00033 class Null;
00034 class ChainRoot;
00035 class StaticKinematicState;
00036 class ParticleCloud;
00037 class CMeshBuilder;
00038 class CRigidBodyAccessor;
00039 class CRigidConstraintAccessor;
00040 class Annotation;
00041
00042
00090
00091 class SICPPSDKDECL X3DObject : public SceneItem
00092 {
00093 public:
00095 X3DObject();
00096
00098 ~X3DObject();
00099
00103 X3DObject(const CRef& in_ref);
00104
00108 X3DObject(const X3DObject& in_obj);
00109
00114 bool IsA( siClassID in_ClassID) const;
00115
00119 siClassID GetClassID() const;
00120
00126 X3DObject& operator=(const X3DObject& in_obj);
00127
00133 X3DObject& operator=(const CRef& in_ref);
00134
00138 CRefArray GetPrimitives() const;
00139
00144 Primitive GetActivePrimitive() const;
00145
00151 Primitive GetActivePrimitive( double in_dFrame ) const;
00152
00156 CRefArray GetChildren() const;
00157
00163 CRefArray GetModels( bool in_recursive = true) const;
00164
00169 CRefArray GetMaterials() const;
00170
00174 Kinematics GetKinematics() const;
00175
00183 CStatus AddPrimitive
00184 (
00185 const CString& in_preset,
00186 const CString& in_name ,
00187 X3DObject& io_3dobj
00188 );
00189
00199 CStatus AddGeometry
00200 (
00201 const CString& in_geompreset,
00202 const CString& in_convpreset,
00203 const CString& in_name,
00204 X3DObject& io_3dobj
00205 );
00206
00287 CStatus AddPolygonMesh( const CString& in_name,
00288 X3DObject& out_3dobj,
00289 CMeshBuilder& out_meshBuilder );
00290
00333 CStatus AddPolygonMesh
00334 (
00335 const MATH::CVector3Array& in_vertices,
00336 const CLongArray& in_polygonData,
00337 const CString& in_name,
00338 X3DObject& io_3dobj
00339 );
00340
00349 CStatus AddModel
00350 (
00351 const CRefArray& in_objects,
00352 const CString& in_name,
00353 Model& io_3dobj
00354 );
00355
00365 CStatus AddLattice
00366 (
00367 const CString& in_preset,
00368 const CRefArray& in_objects,
00369 const CString& in_name,
00370 X3DObject& io_3dobj
00371 );
00372
00383 CStatus AddControl
00384 (
00385 const CString& in_preset,
00386 const CRefArray& in_objects,
00387 const CString& in_name,
00388 X3DObject& io_3dobj
00389 );
00390
00399 CStatus AddCameraRig
00400 (
00401 const CString& in_preset,
00402 const CString& in_name,
00403 CameraRig& io_rig
00404 );
00405
00414 CStatus AddLightRig
00415 (
00416 const CString& in_preset,
00417 const CString& in_name,
00418 LightRig& io_rig
00419 );
00420
00431 CStatus AddCamera
00432 (
00433 const CString& in_preset,
00434 const CString& in_name,
00435 Camera& io_camera
00436 );
00437
00449 CStatus AddLight
00450 (
00451 const CString& in_preset,
00452 bool in_bInterest,
00453 const CString& in_name,
00454 Light& io_light
00455 );
00456
00463 CStatus AddNull
00464 (
00465 const CString& in_name,
00466 Null& io_null
00467 );
00468
00475 CStatus AddChild
00476 (
00477 const CRefArray& in_objects
00478 );
00479
00486 CStatus RemoveChild
00487 (
00488 const CRefArray& in_objects
00489 );
00490
00496 CStatus RemoveFromParent();
00497
00509 CStatus Add2DChain
00510 (
00511 const MATH::CVector3& in_rootPos,
00512 const MATH::CVector3& in_effPos,
00513 const MATH::CVector3& in_normPlane,
00514 si2DChainAlignType in_alignType,
00515 const CString& in_name,
00516 ChainRoot& io_chainroot
00517 );
00518
00529 CStatus Add3DChain
00530 (
00531 const MATH::CVector3& in_rootPos,
00532 const MATH::CVector3& in_effPos,
00533 const MATH::CVector3& in_normPlane,
00534 const CString& in_name,
00535 ChainRoot& io_chainroot
00536 );
00537
00541 CRefArray GetShapeAnimatedClusters() const;
00542
00639 X3DObject FindChild
00640 (
00641 const CString& in_name,
00642 const CString& in_type,
00643 const CStringArray& in_famArray,
00644 bool in_bRecursive = true
00645 ) const;
00646
00736 X3DObject FindChild2
00737 (
00738 const CString& in_name,
00739 const CString& in_type,
00740 const CStringArray& in_famArray,
00741 bool in_bRecursive = true
00742 ) const;
00743
00859 CRefArray FindChildren
00860 (
00861 const CString& in_name,
00862 const CString& in_type,
00863 const CStringArray& in_famArray,
00864 bool in_bRecursive = true
00865 ) const;
00866
00954 CRefArray FindChildren2
00955 (
00956 const CString& in_name,
00957 const CString& in_type,
00958 const CStringArray& in_famArray,
00959 bool in_bRecursive = true
00960 ) const;
00961
00965 bool HasStaticKinematicState() const;
00966
00970 StaticKinematicState GetStaticKinematicState() const;
00971
01023 bool IsNodeAnimated
01024 (
01025 siSourceType in_sourceType = siAnySource,
01026 bool in_bLocal = false
01027 ) const;
01028
01094 CRefArray GetNodeAnimatedParameters
01095 (
01096 siSourceType in_sourceType = siAnySource,
01097 bool in_bLocal = false
01098 ) const;
01099
01108 CStatus AddNurbsCurve
01109 (
01110 const CNurbsCurveData& in_curveData,
01111 siNurbsFormat in_nurbsFormat,
01112 const CString& in_name,
01113 X3DObject& io_3dobj
01114 );
01115
01124 CStatus AddNurbsCurveList
01125 (
01126 const CNurbsCurveDataArray& in_curveDataArray,
01127 siNurbsFormat in_nurbsFormat,
01128 const CString& in_name,
01129 X3DObject& io_3dobj
01130 );
01131
01153 CStatus AddNurbsSurface
01154 (
01155 const CNurbsSurfaceData& in_surfaceData,
01156 siNurbsFormat in_nurbsFormat,
01157 const CString& in_name,
01158 X3DObject& io_3dobj
01159 );
01160
01169 CStatus AddNurbsSurfaceMesh
01170 (
01171 const CNurbsSurfaceDataArray& in_surfaceDataArray,
01172 siNurbsFormat in_nurbsFormat,
01173 const CString& in_name,
01174 X3DObject& io_3dobj
01175 );
01176
01189 CStatus AddParticleCloud
01190 (
01191 const CRefArray& in_parTypes,
01192 const CString& in_name,
01193 ParticleCloud& out_particlecloud
01194 );
01195
01202 MATH::CVector3 GetLocalScaling()const;
01203
01211 CStatus PutLocalScaling(MATH::CVector3 in_scaling);
01212
01213
01220 MATH::CRotation GetLocalRotation()const;
01221
01229 CStatus PutLocalRotation(MATH::CRotation in_rotation);
01230
01237 MATH::CVector3 GetLocalTranslation()const;
01238
01246 CStatus PutLocalTranslation(MATH::CVector3 in_translation);
01247
01253 CRigidBodyAccessor GetRigidBodyAccessor( ) const;
01254
01260 CRigidConstraintAccessor GetRigidConstraintAccessor( ) const;
01261
01286 CStatus GetBoundingBox
01287 (
01288 double & out_minX,
01289 double & out_minY,
01290 double & out_minZ,
01291 double & out_maxX,
01292 double & out_maxY,
01293 double & out_maxZ,
01294 const MATH::CTransformation & in_XfoObjectToBBoxSpace = MATH::CTransformation(),
01295 bool in_bRecursive = false
01296 ) const;
01297
01311 Annotation AddAnnotation( const CString& in_text, const CString& in_name = CString() ) ;
01312
01313 private:
01314 X3DObject * operator&() const;
01315 X3DObject * operator&();
01316 };
01317
01318 };
01319
01320 #endif // __XSIX3DOBJECT_H__