SoQtFlyViewer(3)

๐Ÿ“ฆ
version 1.6.2 ยท 3 versions
, in opensuse-leap 16.0

๐ŸŒธ NAME ๐ŸŒธ

Okay bestie, welcome to SoQtFlyViewer(3) from the SoQt manual. The SoQtFlyViewer class implements controls for moving the camera in a โ€œflyingโ€ motion. Thatโ€™s the whole main-character assignment, and honestly? iconic. ๐Ÿ’…


โœจ SYNOPSIS โœจ

#include <Inventor/Qt/viewers/SoQtFlyViewer.h>

Inherits SoQtConstrainedViewer. No cap.

bestie, the inherited lists below are long, but we are not skipping a single signature. Every one is here. ๐Ÿซถ

๐Ÿ’– Public Member Functions ๐Ÿ’–

  • SoQtFlyViewer (QWidget *parent=NULL, const char *name=NULL, SbBool embed=TRUE, SoQtFullViewer::BuildFlag flag=BUILD_ALL, SoQtViewer::Type type=BROWSER) โ€” the constructor, with every default exactly as written: parent=NULL, name=NULL, embed=TRUE, flag=BUILD_ALL, type=BROWSER. Itโ€™s giving setup era. ๐ŸŽ€
  • ~SoQtFlyViewer () โ€” the destructor. Cleanup time, periodt.
  • virtual void setViewing (SbBool enable) โ€” sets viewing, bestie.
  • virtual void viewAll (void) โ€” does the view-all thing. Simple, slay.
  • virtual void resetToHomePosition (void) โ€” resets to the home position. Home sweet home. ๐Ÿ 
  • virtual void setCamera (SoCamera *camera) โ€” sets the camera.
  • virtual void setCursorEnabled (SbBool enable) โ€” sets whether the cursor is enabled.
  • virtual void setCameraType (SoType type) โ€” sets the camera type.

๐ŸŒˆ Public Member Functions inherited from SoQtConstrainedViewer ๐ŸŒˆ

These cuties are inherited exactly as they come, no remix:

  • void setUpDirection (const SbVec3f &dir)
  • const SbVec3f & getUpDirection (void) const
  • virtual void saveHomePosition (void)

๐Ÿฆ‹ Public Member Functions inherited from SoQtFullViewer ๐Ÿฆ‹

Serving these inherited signatures, untouched:

  • void setDecoration (const SbBool on)
  • SbBool isDecoration (void) const
  • void setPopupMenuEnabled (const SbBool on)
  • SbBool isPopupMenuEnabled (void) const
  • QWidget * getAppPushButtonParent (void) const
  • void addAppPushButton (QWidget *newButton)
  • void insertAppPushButton (QWidget *newButton, int index)
  • void removeAppPushButton (QWidget *oldButton)
  • int findAppPushButton (QWidget *oldButton) const
  • int lengthAppPushButton (void) const
  • QWidget * getRenderAreaWidget (void) const
  • virtual void setComponentCursor (const SoQtCursor &cursor)

๐ŸŒŸ Public Member Functions inherited from SoQtViewer ๐ŸŒŸ

These come from SoQtViewer, all inherited, all exact:

  • SoCamera * getCamera (void) const
  • SoType getCameraType (void) const
  • virtual void toggleCameraType (void)
  • virtual void setHeadlight (SbBool enable)
  • SbBool isHeadlight (void) const
  • SoDirectionalLight * getHeadlight (void) const
  • virtual void setDrawStyle (SoQtViewer::DrawType type, SoQtViewer::DrawStyle style)
  • SoQtViewer::DrawStyle getDrawStyle (const SoQtViewer::DrawType type) const
  • virtual void setBufferingType (SoQtViewer::BufferType type)
  • SoQtViewer::BufferType getBufferingType (void) const
  • SbBool isViewing (void) const
  • SbBool isCursorEnabled (void) const
  • void setAutoClipping (SbBool enable)
  • SbBool isAutoClipping (void) const
  • void setAutoClippingStrategy (const AutoClippingStrategy strategy, const float value=0.6f, SoQtAutoClippingCB *cb=NULL, void *cbuserdata=NULL)
  • virtual void setStereoViewing (SbBool enable)
  • SbBool isStereoViewing (void) const
  • virtual void setStereoOffset (const float dist)
  • float getStereoOffset (void) const
  • SbBool setStereoType (SoQtViewer::StereoType s)
  • SoQtViewer::StereoType getStereoType (void) const
  • void setAnaglyphStereoColorMasks (const SbBool left[3], const SbBool right[3])
  • void getAnaglyphStereoColorMasks (SbBool left[3], SbBool right[3])
  • void setDetailSeek (const SbBool enable)
  • SbBool isDetailSeek (void) const
  • void setSeekTime (const float seconds)
  • float getSeekTime (void) const
  • void addStartCallback (SoQtViewerCB *func, void *data=NULL)
  • void addFinishCallback (SoQtViewerCB *func, void *data=NULL)
  • void removeStartCallback (SoQtViewerCB *func, void *data=NULL)
  • void removeFinishCallback (SoQtViewerCB *func, void *data=NULL)
  • void setWireframeOverlayColor (const SbColor &color)
  • const SbColor & getWireframeOverlayColor (void) const
  • virtual void setDoubleBuffer (const SbBool enable)
  • virtual void setSceneGraph (SoNode *root)
  • virtual SoNode * getSceneGraph (void)

๐ŸŽ€ Public Member Functions inherited from SoQtRenderArea ๐ŸŽ€

The SoQtRenderArea inheritance squad, fully present and accounted for:

  • SoQtRenderArea (QWidget *parent=NULL, const char *name=NULL, SbBool embed=TRUE, SbBool mouseInput=TRUE, SbBool keyboardInput=TRUE)
  • ~SoQtRenderArea ()
  • void setOverlaySceneGraph (SoNode *scene)
  • SoNode * getOverlaySceneGraph (void)
  • void setBackgroundColor (const SbColor &color)
  • const SbColor & getBackgroundColor (void) const
  • void setBackgroundIndex (int idx)
  • int getBackgroundIndex (void) const
  • void setOverlayBackgroundIndex (int idx)
  • int getOverlayBackgroundIndex (void) const
  • void setColorMap (int start, int num, const SbColor *colors)
  • void setOverlayColorMap (int start, int num, const SbColor *colors)
  • void setViewportRegion (const SbViewportRegion &newRegion)
  • const SbViewportRegion & getViewportRegion (void) const
  • void setTransparencyType (SoGLRenderAction::TransparencyType type)
  • SoGLRenderAction::TransparencyType getTransparencyType (void) const
  • void setAntialiasing (SbBool smoothing, int numPasses)
  • void getAntialiasing (SbBool &smoothing, int &numPasses) const
  • void setClearBeforeRender (SbBool enable, SbBool zbEnable=TRUE)
  • SbBool isClearBeforeRender (void) const
  • SbBool isClearZBufferBeforeRender (void) const
  • void setClearBeforeOverlayRender (SbBool enable)
  • SbBool isClearBeforeOverlayRender (void) const
  • void setAutoRedraw (SbBool enable)
  • SbBool isAutoRedraw (void) const
  • void setRedrawPriority (uint32_t priority)
  • uint32_t getRedrawPriority (void) const
  • void render (void)
  • void renderOverlay (void)
  • void scheduleRedraw (void)
  • void scheduleOverlayRedraw (void)
  • void redrawOnSelectionChange (SoSelection *selection)
  • void redrawOverlayOnSelectionChange (SoSelection *selection)
  • void setEventCallback (SoQtRenderAreaEventCB *func, void *user=NULL)
  • void setSceneManager (SoSceneManager *manager)
  • SoSceneManager * getSceneManager (void) const
  • void setOverlaySceneManager (SoSceneManager *manager)
  • SoSceneManager * getOverlaySceneManager (void) const
  • void setGLRenderAction (SoGLRenderAction *action)
  • SoGLRenderAction * getGLRenderAction (void) const
  • void setOverlayGLRenderAction (SoGLRenderAction *action)
  • SoGLRenderAction * getOverlayGLRenderAction (void) const
  • SbBool sendSoEvent (const SoEvent *event)
  • void registerDevice (SoQtDevice *device)
  • void unregisterDevice (SoQtDevice *device)

๐Ÿ’€ Public Member Functions inherited from SoQtGLWidget ๐Ÿ’€

GL widget inheritance, no cap:

  • void setBorder (const SbBool enable)
  • SbBool isBorder (void) const
  • SbBool isDoubleBuffer (void) const
  • void setDrawToFrontBufferEnable (const SbBool enable)
  • SbBool isDrawToFrontBufferEnable (void) const
  • void setQuadBufferStereo (const SbBool enable)
  • SbBool isQuadBufferStereo (void) const
  • void setAccumulationBuffer (const SbBool enable)
  • SbBool getAccumulationBuffer (void) const
  • void setStencilBuffer (const SbBool enable)
  • SbBool getStencilBuffer (void) const
  • void setAlphaChannel (const SbBool enable)
  • SbBool getAlphaChannel (void) const
  • void setOverlayRender (const SbBool onoff)
  • SbBool isOverlayRender (void) const
  • void setSampleBuffers (const int numsamples)
  • int getSampleBuffers (void) const
  • void setStealFocus (SbBool enable)
  • SbBool isStealFocus (void) const
  • QWidget * getGLWidget (void) const
  • QWidget * getNormalWidget (void) const
  • QWidget * getOverlayWidget (void) const
  • SbBool hasOverlayGLArea (void) const
  • SbBool hasNormalGLArea (void) const
  • unsigned long getOverlayTransparentPixel (void)
  • void getPointSizeLimits (SbVec2f &range, float &granularity)
  • void getLineWidthLimits (SbVec2f &range, float &granularity)

๐ŸŒˆ Public Member Functions inherited from SoQtComponent ๐ŸŒˆ

Component inheritance, all here:

  • virtual SoType getTypeId (void) const
  • virtual ~SoQtComponent ()
  • virtual void show (void)
  • virtual void hide (void)
  • SbBool isFullScreen (void) const
  • SbBool setFullScreen (const SbBool onoff)
  • SbBool isVisible (void)
  • SbBool isTopLevelShell (void) const
  • QWidget * getWidget (void) const
  • QWidget * getBaseWidget (void) const
  • QWidget * getShellWidget (void) const
  • QWidget * getParentWidget (void) const
  • void setSize (const SbVec2s size)
  • SbVec2s getSize (void) const
  • void setTitle (const char *const title)
  • const char * getTitle (void) const
  • void setIconTitle (const char *const title)
  • const char * getIconTitle (void) const
  • const char * getWidgetName (void) const
  • const char * getClassName (void) const
  • void setWindowCloseCallback (SoQtComponentCB *const func, void *const user=NULL)

โญ Public Member Functions inherited from SoQtObject โญ

  • SbBool isOfType (SoType type) const

๐Ÿ›ก๏ธ Protected Member Functions ๐Ÿ›ก๏ธ

These are the protected SoQtFlyViewer ones โ€” yes, theyโ€™re on the list, bestie:

  • SoQtFlyViewer (QWidget *parent, const char *const name, SbBool embed, SoQtFullViewer::BuildFlag flag, SoQtViewer::Type type, SbBool build)
  • virtual const char * getDefaultWidgetName (void) const
  • virtual const char * getDefaultTitle (void) const
  • virtual const char * getDefaultIconTitle (void) const
  • virtual SbBool processSoEvent (const SoEvent *const event)
  • virtual void setSeekMode (SbBool enable)
  • virtual void actualRedraw (void)
  • virtual void rightWheelMotion (float value)
  • virtual void afterRealizeHook (void)

๐Ÿงš Protected Member Functions inherited from SoQtConstrainedViewer ๐Ÿงš

  • SoQtConstrainedViewer (QWidget *parent, const char *const name, SbBool embed, SoQtFullViewer::BuildFlag flag, SoQtViewer::Type type, SbBool build)
  • ~SoQtConstrainedViewer ()
  • virtual void tiltCamera (float delta)
  • virtual void bottomWheelMotion (float value)
  • virtual void leftWheelMotion (float value)
  • virtual void changeCameraValues (SoCamera *camera)
  • void findUpDirection (SbVec2s mouselocation)
  • void checkForCameraUpConstrain (void)

๐Ÿ”ฅ Protected Member Functions inherited from SoQtFullViewer ๐Ÿ”ฅ

Full viewer protected inheritance, all present:

  • SoQtFullViewer (QWidget *parent, const char *name, SbBool embed, BuildFlag flag, Type type, SbBool build)
  • ~SoQtFullViewer ()
  • virtual void sizeChanged (const SbVec2s &size)
  • QWidget * buildWidget (QWidget *parent)
  • virtual void buildDecoration (QWidget *parent)
  • virtual QWidget * buildLeftTrim (QWidget *parent)
  • virtual QWidget * buildBottomTrim (QWidget *parent)
  • virtual QWidget * buildRightTrim (QWidget *parent)
  • QWidget * buildAppButtons (QWidget *parent)
  • QWidget * buildViewerButtons (QWidget *parent)
  • virtual void createViewerButtons (QWidget *parent, SbPList *buttonlist)
  • virtual void buildPopupMenu (void)
  • virtual void setPopupMenuString (const char *title)
  • virtual void openPopupMenu (const SbVec2s position)
  • virtual void leftWheelStart (void)
  • virtual void leftWheelFinish (void)
  • float getLeftWheelValue (void) const
  • void setLeftWheelValue (const float value)
  • virtual void bottomWheelStart (void)
  • virtual void bottomWheelFinish (void)
  • float getBottomWheelValue (void) const
  • void setBottomWheelValue (const float value)
  • virtual void rightWheelStart (void)
  • virtual void rightWheelFinish (void)
  • float getRightWheelValue (void) const
  • void setRightWheelValue (const float value)
  • void setLeftWheelString (const char *const name)
  • QWidget * getLeftWheelLabelWidget (void) const
  • void setBottomWheelString (const char *const name)
  • QWidget * getBottomWheelLabelWidget (void) const
  • void setRightWheelString (const char *const name)
  • const char * getRightWheelString () const
  • QWidget * getRightWheelLabelWidget (void) const

๐Ÿซถ Protected Member Functions inherited from SoQtViewer

Okay so these are the protected members you get handed down from SoQtViewer, bestie โ€” they're lowkey the whole toolkit for making the camera do your bidding:

  • SoQtViewer (QWidget *parent, const char *name, SbBool embed, Type type, SbBool build)
  • ~SoQtViewer ()
  • SbBool isSeekMode (void) const
  • SbBool seekToPoint (const SbVec2s screenpos)
  • void seekToPoint (const SbVec3f &scenepos)
  • virtual void computeSeekFinalOrientation (void)
  • void interactiveCountInc (void)
  • void interactiveCountDec (void)
  • int getInteractiveCount (void) const
  • void setSeekDistance (const float distance)
  • float getSeekDistance (void) const
  • void setSeekValueAsPercentage (const SbBool on)
  • SbBool isSeekValuePercentage (void) const
  • void addSuperimposition (SoNode *scene)
  • void removeSuperimposition (SoNode *scene)
  • void setSuperimpositionEnabled (SoNode *scene, const SbBool enable)
  • SbBool getSuperimpositionEnabled (SoNode *scene) const

โœจ Protected Member Functions inherited from SoQtRenderArea โœจ

And here's what SoQtRenderArea passes down โ€” the redraw-y, event-y, widget-y stuff โœจ:

  • SoQtRenderArea (QWidget *parent, const char *name, SbBool embed, SbBool mouseInput, SbBool keyboardInput, SbBool build)
  • virtual void redraw (void)
  • virtual void redrawOverlay (void)
  • virtual void actualOverlayRedraw (void)
  • virtual void processEvent (QEvent *event)
  • virtual void initGraphic (void)
  • virtual void initOverlayGraphic (void)
  • virtual void widgetChanged (QWidget *widget)
  • QWidget * buildWidget (QWidget *parent)
  • virtual SbBool glScheduleRedraw (void)

๐ŸŽ€ Protected Member Functions inherited from SoQtGLWidget ๐ŸŽ€

The GL widget's protected goodies โ€” sizes, buffers, and the lock/unlock dance ๐Ÿ’…:

  • SoQtGLWidget (QWidget *const parent=NULL, const char *const name=NULL, const SbBool embed=TRUE, const int glmodes=SO_GL_RGB, const SbBool build=TRUE)
  • ~SoQtGLWidget ()
  • QWidget * buildWidget (QWidget *parent)
  • void setGLSize (const SbVec2s size)
  • SbVec2s getGLSize (void) const
  • float getGLAspectRatio (void) const
  • void setGlxSize (const SbVec2s size)
  • SbVec2s getGlxSize (void) const
  • float getGlxAspectRatio (void) const
  • void setStereoBuffer (SbBool flag)
  • SbBool isStereoBuffer (void) const
  • SbBool isRGBMode (void)
  • void glLockNormal (void)
  • void glUnlockNormal (void)
  • void glLockOverlay (void)
  • void glUnlockOverlay (void)
  • void glSwapBuffers (void)
  • void glFlushBuffer (void)

๐ŸŒธ Protected Member Functions inherited from SoQtComponent ๐ŸŒธ

Component-level protected stuff โ€” class names, base widgets, and visibility callbacks, iykyk:

  • SoQtComponent (QWidget *const parent=NULL, const char *const name=NULL, const SbBool embed=TRUE)
  • void setClassName (const char *const name)
  • void setBaseWidget (QWidget *widget)
  • void registerWidget (QWidget *widget)
  • void unregisterWidget (QWidget *widget)
  • void addVisibilityChangeCallback (SoQtComponentVisibilityCB *const func, void *const user=NULL)
  • void removeVisibilityChangeCallback (SoQtComponentVisibilityCB *const func, void *const user=NULL)

๐ŸŒˆ Additional Inherited Members ๐ŸŒˆ

๐Ÿ’œ Public Types inherited from SoQtFullViewer

  • enum BuildFlag { BUILD_NONE = 0x00, BUILD_DECORATION = 0x01, BUILD_POPUP = 0x02, BUILD_ALL = (BUILD_DECORATION | BUILD_POPUP) }

๐Ÿฆ‹ Public Types inherited from SoQtViewer

  • enum Type { BROWSER, EDITOR }
  • enum DrawStyle { VIEW_AS_IS, VIEW_HIDDEN_LINE, VIEW_NO_TEXTURE, VIEW_LOW_COMPLEXITY, VIEW_LINE, VIEW_POINT, VIEW_BBOX, VIEW_LOW_RES_LINE, VIEW_LOW_RES_POINT, VIEW_SAME_AS_STILL, VIEW_WIREFRAME_OVERLAY }
  • enum DrawType { STILL = 0, INTERACTIVE }
  • enum BufferType { BUFFER_SINGLE, BUFFER_DOUBLE, BUFFER_INTERACTIVE }
  • enum AutoClippingStrategy { VARIABLE_NEAR_PLANE, CONSTANT_NEAR_PLANE }
  • enum StereoType { STEREO_NONE, STEREO_ANAGLYPH, STEREO_QUADBUFFER, STEREO_INTERLEAVED_ROWS, STEREO_INTERLEAVED_COLUMNS }

โญ Static Public Member Functions inherited from SoQtRenderArea

  • static uint32_t getDefaultRedrawPriority (void)

๐ŸŒŸ Static Public Member Functions inherited from SoQtComponent

  • static void initClass (void)
  • static SoType getClassTypeId (void)
  • static void setWidgetCursor (QWidget *w, const SoQtCursor &cursor)
  • static SoQtComponent * getComponent (QWidget *widget)
  • static void initClasses (void)

๐Ÿ’ซ Static Public Member Functions inherited from SoQtObject

  • static void initClass (void)
  • static SoType getClassTypeId (void)
  • static void init (void)

๐Ÿ“ Protected Attributes inherited from SoQtFullViewer

These are the wheel/decorations attributes, and ngl they're giving "trust me bro, it's internal" energy โ€” but they're all here, no cap:

  • QWidget * leftWheel
  • QWidget * rightWheel
  • QWidget * bottomWheel
  • QWidget * leftDecoration
  • QWidget * rightDecoration
  • QWidget * bottomDecoration
  • QWidget * leftWheelLabel
  • char * leftWheelStr
  • float leftWheelVal
  • QWidget * rightWheelLabel
  • char * rightWheelStr
  • float rightWheelVal
  • QWidget * bottomWheelLabel
  • char * bottomWheelStr
  • float bottomWheelVal
  • SoQtPopupMenu * prefmenu

๐Ÿ”ฅ Protected Attributes inherited from SoQtGLWidget

  • SbBool waitForExpose
  • SbBool drawToFrontBuffer

๐Ÿ’… Detailed Description ๐Ÿ’…

So, the SoQtFlyViewer class? It's literally the whole "fly the camera around" vibe โ€” it implements the controls for moving the camera in a flying motion. Main character energy for your viewpoint, fr fr.

๐ŸŽฎ Controls:

  • Left mouse button increases the speed.
  • Middle mouse button decreases the speed.
  • Left and middle mouse button together sets the speed to zero.
  • "s" puts the viewer in seek mode. Click some geometry with the left mouse button to start the seek zoom animation. (Hitting "s" again before clicking will cancel the seek operation.)
  • "u" puts the viewer in up-vector pick mode. Click some geometry with the left mouse button to set the camera's up-vector to the normal vector of the face you pick. (Hitting "u" again before clicking will cancel the pick operation.)
  • The control key stops the flying and lets you tilt the camera by moving the pointer.

๐ŸŽฌ Constructor & Destructor Documentation ๐ŸŽฌ

๐Ÿ’– SoQtFlyViewer::SoQtFlyViewer

SoQtFlyViewer::SoQtFlyViewer (QWidget * parent = NULL, const char * name =
    NULL, SbBool embed = TRUE, SoQtFullViewer::BuildFlag flag = BUILD_ALL,
    SoQtViewer::Type type = BROWSER)

Public constructor. Slay, you made one โœจ

๐Ÿ’– SoQtFlyViewer::~SoQtFlyViewer

SoQtFlyViewer::~SoQtFlyViewer ()

Virtual constructor (yes bestie, the destructor is called "virtual constructor" here โ€” that's just how the page says it ๐Ÿ’€).

๐Ÿ’– SoQtFlyViewer::SoQtFlyViewer (protected)

SoQtFlyViewer::SoQtFlyViewer (QWidget * parent, const char *const name,
    SbBool embed, SoQtFullViewer::BuildFlag flag, SoQtViewer::Type type,
    SbBool build) [protected]

Protected constructor, used by viewer components derived from the SoQtFlyViewer. Lowkey the "for subclasses only" door ๐Ÿšช


๐ŸŒŸ Member Function Documentation ๐ŸŒŸ

๐Ÿฆ‹ void SoQtFlyViewer::setViewing (SbBool enable) [virtual]

Set view mode.

If the view mode is on, user events will be caught and used to influence the camera position / orientation. If view mode is off, all events in the viewer canvas (like for instance keypresses or mouse clicks and -movements) will be passed along to the scene graph.

Default is to have the view mode active. So yeah, the viewer's driving unless you tell it to chill ๐Ÿ’…

See also: isViewing()

Reimplemented from SoQtFullViewer.


๐Ÿฆ‹ void SoQtFlyViewer::viewAll (void) [virtual]

Reposition the current camera so we can see the complete scene. Basically the "okay everyone get in frame" button ๐Ÿ“ธ

Reimplemented from SoQtViewer.


๐Ÿฆ‹ void SoQtFlyViewer::resetToHomePosition (void) [virtual]

Restore the saved camera settings. Home sweet home ๐Ÿ โœจ

See also: saveHomePosition()

Reimplemented from SoQtConstrainedViewer.


๐Ÿฆ‹ void SoQtFlyViewer::setCamera (SoCamera * cam) [virtual]

Set the camera we want the viewer to manipulate when interacting with the viewer controls.

โš ๏ธ Okay important, bestie: the camera passed in as an argument to this method must already be part of the viewer's scene graph. You do not inject viewpoint cameras to the viewer with this method.

You should rather insert a camera into the scene graph first (if necessary, often one will be present already), then register it as the camera used by the viewer controls with this method.

If the application code doesn't explicitly set up a camera through this method, the viewer will automatically scan through the scene graph to find a camera to use. If no camera is available in the scene graph at all, it will set up its own camera. Iconic self-sufficiency behavior ๐Ÿ‘‘

See also: getCamera()

Reimplemented from SoQtConstrainedViewer.


๐Ÿฆ‹ void SoQtFlyViewer::setCursorEnabled (SbBool on) [virtual]

Set whether or not the mouse cursor representation should be visible in the viewer canvas.

Default value is on. Cursor stays visible unless you say otherwise, periodt.

See also: isCursorEnabled()

Reimplemented from SoQtViewer.


๐Ÿฆ‹ void SoQtFlyViewer::setCameraType (SoType t) [virtual]

When the viewer has to make its own camera as a result of the graph passed to setSceneGraph() not containing any camera nodes, this call can be made in advance to decide which type the camera will be of.

Default is to use an SoPerspectiveCamera. ๐ŸŽฅ

If this method is called when there is a scene graph and a camera already set up, it will delete the old camera and set up a camera with the new type if the t type is different from that of the current camera. So yeah, it'll swap it out on you โ€” that's the deal ๐Ÿ’€

See also: getCameraType()

Reimplemented from SoQtViewer.


๐Ÿฆ‹ const char * SoQtFlyViewer::getDefaultWidgetName (void) const [protected], [virtual]

This method returns the default name of a component widget class.

It should be overridden by derived non-abstract classes for the topmost widget in the component to have a proper name. (Translation: if you're making your own widget class, do your homework and override this ๐Ÿซถ)

Reimplemented from SoQtRenderArea.


๐Ÿฆ‹ const char * SoQtFlyViewer::getDefaultTitle (void) const [protected], [virtual]

This method returns the default window caption string of the component.

It should be overridden by derived non-abstract classes so the window and pop-up menu will get a proper title. Nobody wants a window called "Untitled 37", bestie ๐Ÿ˜ญ

Reimplemented from SoQtRenderArea.


๐Ÿฆ‹ const char * SoQtFlyViewer::getDefaultIconTitle (void) const [protected], [virtual]

This method returns the default icon title of the component.

It should be overridden by derived non-abstract classes so icons will get proper titles. Same deal as above, just for the tiny icon version ๐ŸŽ€

Reimplemented from SoQtRenderArea.


๐Ÿฆ‹ SbBool SoQtFlyViewer::processSoEvent (const SoEvent *const event) [protected], [virtual]

Toolkit-native events are tried to convert to Coin-generic events in the SoQtRenderArea::processEvent() method. If this succeeds, they are forwarded to this method.

This is a virtual method, and is overridden in its subclasses to catch events of particular interest to the viewer classes, for instance.

๐Ÿ”ฅ Return TRUE if the event was processed. If not it should be passed on further up in the inheritance hierarchy by the caller. This last point is extremely important to take note of if you are expanding the toolkit with your own viewer class. Like, do not skip this, fr fr.

This method is not part of the original SGI InventorXt API. Note that you can still override the toolkit-native processEvent() method instead of this "generic" method. Choose your fighter ๐Ÿ’…

Reimplemented from SoQtFullViewer.


๐Ÿฆ‹ void SoQtFlyViewer::setSeekMode (SbBool enable) [protected], [virtual]

Put the viewer in or out of "waiting-to-seek" mode.

If the user performs a mouse button click when the viewer is in "waiting-to-seek" mode, the camera will be repositioned so the camera focal point lies on the point of the geometry under the mouse cursor. Point, click, zoom, slay ๐ŸŽฏโœจ

See also: isSeekMode(), setDetailSeek()

Reimplemented from SoQtViewer.

void SoQtFlyViewer::actualRedraw (void ) [protected], [virtual] โ€” โœจ the instantly-redraw main-character method ๐Ÿ’…

Okay so this method instantly redraws the normal (non-overlay) scene graph by calling SoSceneManager::render(). Iconic behavior, no cap.

Subclasses may override this method to add their own rendering before or after Coin renders its scene graph. Bestie, that's your moment to shine โœจ

The following is a complete example that demonstrates one way of adding both a background image and foreground (overlay) geometry to the "normal" rendering:

// This example shows how to put a permanent background image on
// your viewer canvas, below the 3D graphics, plus overlay
// foreground geometry.  Written by mortene.
// Copyright Kongsberg Oil & Gas Technologies 2002.

// *************************************************************************

#include <Inventor/Qt/SoQt.h>
#include <Inventor/Qt/viewers/SoQtExaminerViewer.h>
#include <Inventor/nodes/SoBaseColor.h>
#include <Inventor/nodes/SoCone.h>
#include <Inventor/nodes/SoCube.h>
#include <Inventor/nodes/SoImage.h>
#include <Inventor/nodes/SoLightModel.h>
#include <Inventor/nodes/SoOrthographicCamera.h>
#include <Inventor/nodes/SoRotationXYZ.h>
#include <Inventor/nodes/SoSeparator.h>
#include <Inventor/nodes/SoTranslation.h>

#include <GL/gl.h>

// *************************************************************************

class MyExaminerViewer : public SoQtExaminerViewer {

public:
  MyExaminerViewer(QWidget* parent, const char * filename);
  ~MyExaminerViewer();

protected:
  virtual void actualRedraw(void);

private:
  SoSeparator * bckgroundroot;
  SoSeparator * foregroundroot;
  SoRotationXYZ * arrowrotation;
};

MyExaminerViewer::MyExaminerViewer(QWidget* parent, const char * filename)
  : SoQtExaminerViewer(parent)
{
  // Coin should not clear the pixel-buffer, so the background image
  // is not removed.
  this->setClearBeforeRender(FALSE, TRUE);

  // Set up background scene graph with image in it.

  this->bckgroundroot = new SoSeparator;
  this->bckgroundroot->ref();

  SoOrthographicCamera * cam = new SoOrthographicCamera;
  cam->position = SbVec3f(0, 0, 1);
  cam->height = 1;
  // SoImage will be at z==0.0.
  cam->nearDistance = 0.5;
  cam->farDistance = 1.5;

  SoImage * img = new SoImage;
  img->vertAlignment = SoImage::HALF;
  img->horAlignment = SoImage::CENTER;
  img->filename = filename;

  this->bckgroundroot->addChild(cam);
  this->bckgroundroot->addChild(img);

  // Set up foreground, overlaid scene graph.

  this->foregroundroot = new SoSeparator;
  this->foregroundroot->ref();

  SoLightModel * lm = new SoLightModel;
  lm->model = SoLightModel::BASE_COLOR;

  SoBaseColor * bc = new SoBaseColor;
  bc->rgb = SbColor(1, 1, 0);

  cam = new SoOrthographicCamera;
  cam->position = SbVec3f(0, 0, 5);
  cam->height = 10;
  cam->nearDistance = 0;
  cam->farDistance = 10;

  const double ARROWSIZE = 2.0;

  SoTranslation * posit = new SoTranslation;
  posit->translation = SbVec3f(-2.5 * ARROWSIZE, 1.5 * ARROWSIZE, 0);

  arrowrotation = new SoRotationXYZ;
  arrowrotation->axis = SoRotationXYZ::Z;

  SoTranslation * offset = new SoTranslation;
  offset->translation = SbVec3f(ARROWSIZE/2.0, 0, 0);

  SoCube * cube = new SoCube;
  cube->width = ARROWSIZE;
  cube->height = ARROWSIZE/15.0;

  this->foregroundroot->addChild(cam);
  this->foregroundroot->addChild(lm);
  this->foregroundroot->addChild(bc);
  this->foregroundroot->addChild(posit);
  this->foregroundroot->addChild(arrowrotation);
  this->foregroundroot->addChild(offset);
  this->foregroundroot->addChild(cube);
}

MyExaminerViewer::~MyExaminerViewer()
{
  this->bckgroundroot->unref();
  this->foregroundroot->unref();
}

void
MyExaminerViewer::actualRedraw(void)
{
  // Must set up the OpenGL viewport manually, as upon resize
  // operations, Coin won't set it up until the SoGLRenderAction is
  // applied again. And since we need to do glClear() before applying
  // the action..
  const SbViewportRegion vp = this->getViewportRegion();
  SbVec2s origin = vp.getViewportOriginPixels();
  SbVec2s size = vp.getViewportSizePixels();
  glViewport(origin[0], origin[1], size[0], size[1]);

  const SbColor col = this->getBackgroundColor();
  glClearColor(col[0], col[1], col[2], 0.0f);
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  // Render our scene graph with the image.
  SoGLRenderAction * glra = this->getGLRenderAction();
  glra->apply(this->bckgroundroot);

  // Render normal scene graph.
  SoQtExaminerViewer::actualRedraw();

  // Increase arrow angle with 1/1000 degrees every frame.
  arrowrotation->angle = arrowrotation->angle.getValue() + (0.001 / M_PI * 180);
  // Render overlay front scene graph.
  glClear(GL_DEPTH_BUFFER_BIT);
  glra->apply(this->foregroundroot);
}

// *************************************************************************

int
main(int argc, char ** argv)
{
  if (argc != 2) {
    (void)fprintf(stderr, "\n\n\tUsage: %s <image-filename>\n\n", argv[0]);
    exit(1);
  }

  QWidget* window = SoQt::init(argv[0]);

  MyExaminerViewer * viewer = new MyExaminerViewer(window, argv[1]);

  viewer->setSceneGraph(new SoCone);
  viewer->show();

  SoQt::show(window);
  SoQt::mainLoop();

  delete viewer;
  return 0;
}

// *************************************************************************

Reimplemented from SoQtViewer.

void SoQtFlyViewer::rightWheelMotion (float value) [protected], [virtual] โ€” ๐ŸŽก thumbwheel go brrr

Called repeatedly as the user drags the thumbwheel in the right frame. Override this method in subclassed viewers to provide your own functionality on the thumbwheel. Slay, custom behavior ๐Ÿ’…

See also: rightWheelStart(), rightWheelFinish() โ€” and also leftWheelStart(), bottomWheelStart() ๐Ÿซถ

Reimplemented from SoQtFullViewer.

void SoQtFlyViewer::afterRealizeHook (void ) [protected], [virtual] โ€” ๐ŸŒธ the just-after-realized hook

A function "hook" / callback invoked just after the window for the component has been realized. Like, the window just became a whole real thing, and this fires right after โœจ

Override this if you need specific initialization for your own component or viewer class to happen right after it has been made visible, but remember to call upwards in the inheritance hierarchy:

void
MyLittleViewer::afterRealizeHook(void)
{
  <superclass>::afterRealizeHook();
  // [own initialization here]
}

Reimplemented from SoQtRenderArea.


โœจ Author โœจ

Generated automatically by Doxygen for SoQt from the source code. Very demure, very automatic ๐Ÿ’–


๐ŸŽ€ That's the whole vibe, bestie! Cute little sign-off: source/version 1.6.2, date Sat Jan 6 2024 12:20:55, page SoQtFlyViewer(3). Byeeee! ๐ŸŒˆโœจ

๐Ÿ“ฆ where this page comes from