Open Inventor Release 2024.2.0
 
Loading...
Searching...
No Matches
SoObliqueSlice.h
1/*=======================================================================
2 *** THE CONTENT OF THIS WORK IS PROPRIETARY TO FEI S.A.S, (FEI S.A.S.), ***
3 *** AND IS DISTRIBUTED UNDER A LICENSE AGREEMENT. ***
4 *** ***
5 *** REPRODUCTION, DISCLOSURE, OR USE, IN WHOLE OR IN PART, OTHER THAN AS ***
6 *** SPECIFIED IN THE LICENSE ARE NOT TO BE UNDERTAKEN EXCEPT WITH PRIOR ***
7 *** WRITTEN AUTHORIZATION OF FEI S.A.S. ***
8 *** ***
9 *** RESTRICTED RIGHTS LEGEND ***
10 *** USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT OF THE CONTENT OF THIS ***
11 *** WORK OR RELATED DOCUMENTATION IS SUBJECT TO RESTRICTIONS AS SET FORTH IN ***
12 *** SUBPARAGRAPH (C)(1) OF THE COMMERCIAL COMPUTER SOFTWARE RESTRICTED RIGHT ***
13 *** CLAUSE AT FAR 52.227-19 OR SUBPARAGRAPH (C)(1)(II) OF THE RIGHTS IN ***
14 *** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 52.227-7013. ***
15 *** ***
16 *** COPYRIGHT (C) 1996-2024 BY FEI S.A.S, ***
17 *** BORDEAUX, FRANCE ***
18 *** ALL RIGHTS RESERVED ***
19**=======================================================================*/
20/*=======================================================================
21** Author : P. ESTRADE (Mar 2000)
22**=======================================================================*/
23#ifndef _SO_OBLIQUE_SLICE_
24#define _SO_OBLIQUE_SLICE_
25
26#ifdef _MSC_VER
27#pragma warning( push )
28#pragma warning(disable:4251)
29#endif
30
31#include <Inventor/nodes/SoShape.h>
32#include <Inventor/fields/SoSFBool.h>
33#include <Inventor/fields/SoSFFloat.h>
34#include <Inventor/fields/SoSFEnum.h>
35#include <Inventor/fields/SoSFPlane.h>
36#include <Inventor/fields/SoSFNode.h>
37#include <Inventor/fields/SoSFInt32.h>
38#include <Inventor/STL/vector>
39#include <VolumeViz/nodes/SoVolumeRendering.h>
40#include <VolumeViz/nodes/SoSlice.h>
41#include <LDM/SoLDM.h>
42
43class SoVolumeData;
44class SoCache;
45class SoLDMObliqueSliceGeom;
46
47class SoObliqueSliceLdm;
48class SoObliqueSliceInterface;
49class SoObliqueSlicePaging;
50class SoVolumeStateObliqueSlice;
52class SoCallback;
53
399class SoObliqueSlice : public SoSlice {
400 SO_NODE_HEADER( SoObliqueSlice );
401
402 public:
403
416
421
426
427
428
429private:
433 void computeBBox(SoAction *, SbBox3f &box, SbVec3f &center);
434
439 virtual void write(SoWriteAction *action);
440
447 virtual SoNode* getAlternateRep( SoAction* action );
448
449 virtual void GLRender( SoGLRenderAction* action );
450
451private:
455 static void initClass();
456 static void exitClass();
457
458 virtual bool intersect(SoLDMNodeFrontManager* nfm, const SoLDMTileID& tileID) override;
459
466 virtual SoNode* createAlternateRep( SoAction *action );
467
471 virtual void notify(SoNotList *list);
472
476 int getLDMSliceID() const;
477
478 bool m_backFace;
479
480private:
481
485 void setupSliceInterface();
486
490 void generatePrimitives(SoAction* action);
491
495 SoDetail* createTriangleDetail(SoRayPickAction*,
496 const SoPrimitiveVertex* v1,
497 const SoPrimitiveVertex*,
498 const SoPrimitiveVertex*,
500
504 void doRendering(SoGLRenderAction* action);
505
510 virtual SbBool readInstance(SoInput* in, unsigned short flags);
511
515 virtual ~SoObliqueSlice();
516
520 SbBool m_altRepCreatedHere;
521
522 SoObliqueSliceInterface* m_sliceInterface;
523 SoObliqueSliceLdm* m_sliceLdm;
524
525 SoVolumeStateObliqueSlice* m_vs;
526
527private:
528 SoCallback* m_preEltsCBNode;
529 SoCallback* m_postEltsCBNode;
530 int m_savedVertexOrdering;
531 int m_savedShapeType;
532 SoLDM::DataSetIdPair m_savedMasterIdPair;
533
534
535 friend class SoObliqueSliceLdm;
536};
537
538#ifdef _MSC_VER
539#pragma warning( pop )
540#endif
541
542#endif // _SO_OBLIQUE_SLICE_
543
3D box class.
Definition SbBox.h:649
3D vector class.
Definition SbVec.h:932
Abstract base class for all actions.
Definition SoAction.h:132
Provides custom behavior during actions.
Definition SoCallback.h:441
Base class for describing detail information about a shape node.
Definition SoDetail.h:99
Renders a scene graph using Open Inventor's Render Engine.
Computes bounding box of a scene.
Used to read Open Inventor data files.
Definition SoInput.h:363
<a href="IconLegend.html"><img src="extLDM.gif" alt="Large Data Management" border="0"></a> Tile ID
Definition SoLDMTileID.h:63
Abstract base class for all database nodes.
Definition SoNode.h:145
<a href="IconLegend.html"><img src="extVR.gif" alt="VolumeViz" border="0"></a> Oblique slice shape n...
friend class SoObliqueSliceLdm
SoSFInt32 dataSetId
Specifies the SoVolumeData node to use.
SoSFPlane plane
Plane defining the slice.
SoObliqueSlice()
Constructor.
Represents point on surface of picked object.
Represents a vertex of a generated primitive.
Intersects objects with a ray cast into scene.
Field containing a int32_t integer.
Definition SoSFInt32.h:80
Field containing a plane equation.
Definition SoSFPlane.h:82
<a href="IconLegend.html"><img src="extVR.gif" alt="VolumeViz" border="0"></a> Abstract base class f...
Definition SoSlice.h:62
<a href="IconLegend.html"><img src="extVR.gif" alt="VolumeViz" border="0"></a> Volume data property ...
Writes a scene graph to a file.
int SbBool
Boolean type.
Definition SbBase.h:87
std::pair< SoDataSet *, int > DataSetIdPair
Pair containing an SoDataset and its dataSetId.
Definition SoLDM.h:71