.TH "SoQuadMesh" 3 "Tue Dec 26 2023 17:59:22" "Version 4.0.2" "Coin" \" -*- nroff -*- .ad l .nh .SH NAME SoQuadMesh \- The \fBSoQuadMesh\fP class is used to render and optimize a quadrilateral mesh\&. .SH SYNOPSIS .br .PP .PP \fC#include \fP .PP Inherits \fBSoNonIndexedShape\fP\&. .SS "Public Member Functions" .in +1c .ti -1c .RI "\fBvirtual\fP \fBSoType\fP \fBgetTypeId\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBSoQuadMesh\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBGLRender\fP (\fBSoGLRenderAction\fP *action)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBgetPrimitiveCount\fP (\fBSoGetPrimitiveCountAction\fP *action)" .br .ti -1c .RI "\fBvirtual\fP SbBool \fBgenerateDefaultNormals\fP (\fBSoState\fP *state, \fBSoNormalBundle\fP *\fBnb\fP)" .br .in -1c Public Member Functions inherited from \fBSoVertexShape\fP .in +1c .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBnotify\fP (\fBSoNotList\fP *\fBnl\fP)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBwrite\fP (\fBSoWriteAction\fP *action)" .br .in -1c Public Member Functions inherited from \fBSoShape\fP .in +1c .ti -1c .RI "\fBvirtual\fP SbBool \fBaffectsState\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBgetBoundingBox\fP (\fBSoGetBoundingBoxAction\fP *action)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBrayPick\fP (\fBSoRayPickAction\fP *action)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBcallback\fP (\fBSoCallbackAction\fP *action)" .br .ti -1c .RI "\fBconst\fP \fBSoBoundingBoxCache\fP * \fBgetBoundingBoxCache\fP (\fBvoid\fP) \fBconst\fP" .br .in -1c Public Member Functions inherited from \fBSoNode\fP .in +1c .ti -1c .RI "\fBvoid\fP \fBsetOverride\fP (\fBconst\fP SbBool state)" .br .ti -1c .RI "SbBool \fBisOverride\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvoid\fP \fBsetNodeType\fP (\fBconst\fP \fBNodeType\fP type)" .br .ti -1c .RI "\fBNodeType\fP \fBgetNodeType\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBSoNode\fP * \fBcopy\fP (SbBool \fBcopyconnections\fP=FALSE) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBdoAction\fP (\fBSoAction\fP *action)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBGLRenderBelowPath\fP (\fBSoGLRenderAction\fP *action)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBGLRenderInPath\fP (\fBSoGLRenderAction\fP *action)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBGLRenderOffPath\fP (\fBSoGLRenderAction\fP *action)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBgetMatrix\fP (\fBSoGetMatrixAction\fP *action)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBhandleEvent\fP (\fBSoHandleEventAction\fP *action)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBpick\fP (\fBSoPickAction\fP *action)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBsearch\fP (\fBSoSearchAction\fP *action)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBaudioRender\fP (\fBSoAudioRenderAction\fP *action)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBgrabEventsSetup\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBgrabEventsCleanup\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBstartNotify\fP (\fBvoid\fP)" .br .ti -1c .RI "SbUniqueId \fBgetNodeId\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBSoChildList\fP * \fBgetChildren\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBwriteInstance\fP (\fBSoOutput\fP *\fBout\fP)" .br .ti -1c .RI "\fBvirtual\fP \fBSoNode\fP * \fBaddToCopyDict\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBcopyContents\fP (\fBconst\fP \fBSoFieldContainer\fP *from, SbBool \fBcopyconnections\fP)" .br .ti -1c .RI "\fBvirtual\fP \fBSoFieldContainer\fP * \fBcopyThroughConnection\fP (\fBvoid\fP) \fBconst\fP" .br .in -1c Public Member Functions inherited from \fBSoFieldContainer\fP .in +1c .ti -1c .RI "\fBvoid\fP \fBsetToDefaults\fP (\fBvoid\fP)" .br .ti -1c .RI "SbBool \fBhasDefaultValues\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "SbBool \fBfieldsAreEqual\fP (\fBconst\fP \fBSoFieldContainer\fP *container) \fBconst\fP" .br .ti -1c .RI "\fBvoid\fP \fBcopyFieldValues\fP (\fBconst\fP \fBSoFieldContainer\fP *container, SbBool \fBcopyconnections\fP=FALSE)" .br .ti -1c .RI "SbBool \fBset\fP (\fBconst\fP char *\fBconst\fP fielddata)" .br .ti -1c .RI "\fBvoid\fP \fBget\fP (\fBSbString\fP &fielddata)" .br .ti -1c .RI "\fBvirtual\fP int \fBgetFields\fP (\fBSoFieldList\fP &\fBl\fP) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP int \fBgetAllFields\fP (\fBSoFieldList\fP &\fBl\fP) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBSoField\fP * \fBgetField\fP (\fBconst\fP \fBSbName\fP &name) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBSoField\fP * \fBgetEventIn\fP (\fBconst\fP \fBSbName\fP &name) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBSoField\fP * \fBgetEventOut\fP (\fBconst\fP \fBSbName\fP &name) \fBconst\fP" .br .ti -1c .RI "SbBool \fBgetFieldName\fP (\fBconst\fP \fBSoField\fP *\fBconst\fP \fBfield\fP, \fBSbName\fP &name) \fBconst\fP" .br .ti -1c .RI "SbBool \fBenableNotify\fP (\fBconst\fP SbBool \fBflag\fP)" .br .ti -1c .RI "SbBool \fBisNotifyEnabled\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "SbBool \fBset\fP (\fBconst\fP char *fielddata, \fBSoInput\fP *input)" .br .ti -1c .RI "\fBvoid\fP \fBget\fP (\fBSbString\fP &fielddata, \fBSoOutput\fP *\fBout\fP)" .br .ti -1c .RI "\fBvirtual\fP SbBool \fBvalidateNewFieldValue\fP (\fBSoField\fP *\fBfield\fP, \fBvoid\fP *\fBnewval\fP)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBaddWriteReference\fP (\fBSoOutput\fP *\fBout\fP, SbBool \fBisfromfield\fP=FALSE)" .br .ti -1c .RI "SbBool \fBgetIsBuiltIn\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBgetFieldsMemorySize\fP (size_t &\fBmanaged\fP, size_t &\fBunmanaged\fP) \fBconst\fP" .br .ti -1c .RI "\fBvoid\fP \fBsetUserData\fP (\fBvoid\fP *userdata) \fBconst\fP" .br .ti -1c .RI "\fBvoid\fP * \fBgetUserData\fP (\fBvoid\fP) \fBconst\fP" .br .in -1c Public Member Functions inherited from \fBSoBase\fP .in +1c .ti -1c .RI "\fBvoid\fP \fBref\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvoid\fP \fBunref\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvoid\fP \fBunrefNoDelete\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "int32_t \fBgetRefCount\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvoid\fP \fBtouch\fP (\fBvoid\fP)" .br .ti -1c .RI "SbBool \fBisOfType\fP (\fBSoType\fP type) \fBconst\fP" .br .RI "Returns \fCTRUE\fP if the type of this object is either of the same type or inherited from \fItype\fP\&. " .ti -1c .RI "\fBvirtual\fP \fBSbName\fP \fBgetName\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBsetName\fP (\fBconst\fP \fBSbName\fP &\fBnewname\fP)" .br .ti -1c .RI "\fBvoid\fP \fBaddAuditor\fP (\fBvoid\fP *\fBconst\fP \fBauditor\fP, \fBconst\fP \fBSoNotRec::Type\fP type)" .br .ti -1c .RI "\fBvoid\fP \fBremoveAuditor\fP (\fBvoid\fP *\fBconst\fP \fBauditor\fP, \fBconst\fP \fBSoNotRec::Type\fP type)" .br .ti -1c .RI "\fBconst\fP \fBSoAuditorList\fP & \fBgetAuditors\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "SbBool \fBshouldWrite\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBvoid\fP \fBassertAlive\fP (\fBvoid\fP) \fBconst\fP" .br .in -1c .SS "Static Public Member Functions" .in +1c .ti -1c .RI "\fBstatic\fP \fBSoType\fP \fBgetClassTypeId\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBinitClass\fP (\fBvoid\fP)" .br .in -1c Static Public Member Functions inherited from \fBSoNonIndexedShape\fP .in +1c .ti -1c .RI "\fBstatic\fP \fBSoType\fP \fBgetClassTypeId\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBinitClass\fP (\fBvoid\fP)" .br .in -1c Static Public Member Functions inherited from \fBSoVertexShape\fP .in +1c .ti -1c .RI "\fBstatic\fP \fBSoType\fP \fBgetClassTypeId\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBinitClass\fP (\fBvoid\fP)" .br .in -1c Static Public Member Functions inherited from \fBSoShape\fP .in +1c .ti -1c .RI "\fBstatic\fP \fBSoType\fP \fBgetClassTypeId\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBinitClass\fP (\fBvoid\fP)" .br .RI "Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system\&. " .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBgetScreenSize\fP (\fBSoState\fP *\fBconst\fP state, \fBconst\fP \fBSbBox3f\fP &boundingbox, \fBSbVec2s\fP &\fBrectsize\fP)" .br .ti -1c .RI "\fBstatic\fP float \fBgetDecimatedComplexity\fP (\fBSoState\fP *state, float complexity)" .br .in -1c Static Public Member Functions inherited from \fBSoNode\fP .in +1c .ti -1c .RI "\fBstatic\fP uint32_t \fBgetCompatibilityTypes\fP (\fBconst\fP \fBSoType\fP &nodetype)" .br .ti -1c .RI "\fBstatic\fP \fBSoType\fP \fBgetClassTypeId\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBSoNode\fP * \fBgetByName\fP (\fBconst\fP \fBSbName\fP &name)" .br .ti -1c .RI "\fBstatic\fP int \fBgetByName\fP (\fBconst\fP \fBSbName\fP &name, \fBSoNodeList\fP &\fBl\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBinitClass\fP (\fBvoid\fP)" .br .RI "Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system\&. " .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBinitClasses\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP SbUniqueId \fBgetNextNodeId\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP int \fBgetActionMethodIndex\fP (\fBconst\fP \fBSoType\fP type)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBgetBoundingBoxS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBGLRenderS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBcallbackS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBgetMatrixS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBhandleEventS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBpickS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBrayPickS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBsearchS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBwriteS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBaudioRenderS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBgetPrimitiveCountS\fP (\fBSoAction\fP *action, \fBSoNode\fP *node)" .br .in -1c Static Public Member Functions inherited from \fBSoFieldContainer\fP .in +1c .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBinitClass\fP (\fBvoid\fP)" .br .RI "Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system\&. " .ti -1c .RI "\fBstatic\fP \fBSoType\fP \fBgetClassTypeId\fP (\fBvoid\fP)" .br .RI "This static method returns the \fBSoType\fP object associated with objects of this class\&. " .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBcleanupClass\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBinitCopyDict\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBaddCopy\fP (\fBconst\fP \fBSoFieldContainer\fP *\fBorig\fP, \fBconst\fP \fBSoFieldContainer\fP *copy)" .br .ti -1c .RI "\fBstatic\fP \fBSoFieldContainer\fP * \fBcheckCopy\fP (\fBconst\fP \fBSoFieldContainer\fP *\fBorig\fP)" .br .ti -1c .RI "\fBstatic\fP \fBSoFieldContainer\fP * \fBfindCopy\fP (\fBconst\fP \fBSoFieldContainer\fP *\fBorig\fP, \fBconst\fP SbBool \fBcopyconnections\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBcopyDone\fP (\fBvoid\fP)" .br .in -1c Static Public Member Functions inherited from \fBSoBase\fP .in +1c .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBinitClass\fP (\fBvoid\fP)" .br .RI "Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system\&. " .ti -1c .RI "\fBstatic\fP \fBSoType\fP \fBgetClassTypeId\fP (\fBvoid\fP)" .br .RI "This static method returns the \fBSoType\fP object associated with objects of this class\&. " .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBaddName\fP (\fBSoBase\fP *\fBconst\fP base, \fBconst\fP char *\fBconst\fP name)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBremoveName\fP (\fBSoBase\fP *\fBconst\fP base, \fBconst\fP char *\fBconst\fP name)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBincrementCurrentWriteCounter\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBdecrementCurrentWriteCounter\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBSoBase\fP * \fBgetNamedBase\fP (\fBconst\fP \fBSbName\fP &name, \fBSoType\fP type)" .br .ti -1c .RI "\fBstatic\fP int \fBgetNamedBases\fP (\fBconst\fP \fBSbName\fP &name, \fBSoBaseList\fP &\fBbaselist\fP, \fBSoType\fP type)" .br .ti -1c .RI "\fBstatic\fP SbBool \fBread\fP (\fBSoInput\fP *input, \fBSoBase\fP *&base, \fBSoType\fP \fBexpectedtype\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBsetInstancePrefix\fP (\fBconst\fP \fBSbString\fP &c)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBsetTraceRefs\fP (SbBool \fBtrace\fP)" .br .ti -1c .RI "\fBstatic\fP SbBool \fBgetTraceRefs\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP SbBool \fBconnectRoute\fP (\fBSoInput\fP *input, \fBconst\fP \fBSbName\fP &\fBfromnodename\fP, \fBconst\fP \fBSbName\fP &\fBfromfieldname\fP, \fBconst\fP \fBSbName\fP &\fBtonodename\fP, \fBconst\fP \fBSbName\fP &\fBtofieldname\fP)" .br .ti -1c .RI "\fBstatic\fP SbBool \fBreadRoute\fP (\fBSoInput\fP *input)" .br .in -1c .SS "Public Attributes" .in +1c .ti -1c .RI "\fBSoSFInt32\fP \fBverticesPerColumn\fP" .br .ti -1c .RI "\fBSoSFInt32\fP \fBverticesPerRow\fP" .br .in -1c Public Attributes inherited from \fBSoNonIndexedShape\fP .in +1c .ti -1c .RI "\fBSoSFInt32\fP \fBstartIndex\fP" .br .in -1c Public Attributes inherited from \fBSoVertexShape\fP .in +1c .ti -1c .RI "\fBSoSFNode\fP \fBvertexProperty\fP" .br .in -1c .SS "Protected Member Functions" .in +1c .ti -1c .RI "\fBvirtual\fP \fBconst\fP \fBSoFieldData\fP * \fBgetFieldData\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fB~SoQuadMesh\fP ()" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBgeneratePrimitives\fP (\fBSoAction\fP *action)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBcomputeBBox\fP (\fBSoAction\fP *action, \fBSbBox3f\fP &\fBbox\fP, \fBSbVec3f\fP ¢er)" .br .ti -1c .RI "\fBvirtual\fP SbBool \fBgenerateDefaultNormals\fP (\fBSoState\fP *, \fBSoNormalCache\fP *)" .br .in -1c Protected Member Functions inherited from \fBSoNonIndexedShape\fP .in +1c .ti -1c .RI "\fBSoNonIndexedShape\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBvirtual\fP \fB~SoNonIndexedShape\fP ()" .br .ti -1c .RI "\fBvoid\fP \fBcomputeCoordBBox\fP (\fBSoAction\fP *action, int numVertices, \fBSbBox3f\fP &\fBbox\fP, \fBSbVec3f\fP ¢er)" .br .ti -1c .RI "\fBvoid\fP \fBfixNumVerticesPointers\fP (\fBSoState\fP *state, \fBconst\fP int32_t *&start, \fBconst\fP int32_t *&\fBend\fP, int32_t *\fBdummyarray\fP) \fBconst\fP" .br .in -1c Protected Member Functions inherited from \fBSoVertexShape\fP .in +1c .ti -1c .RI "\fBSoVertexShape\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBvirtual\fP \fB~SoVertexShape\fP ()" .br .ti -1c .RI "\fBvirtual\fP SbBool \fBshouldGLRender\fP (\fBSoGLRenderAction\fP *action)" .br .ti -1c .RI "\fBvoid\fP \fBsetNormalCache\fP (\fBSoState\fP *\fBconst\fP state, \fBconst\fP int num, \fBconst\fP \fBSbVec3f\fP *normals)" .br .ti -1c .RI "\fBSoNormalCache\fP * \fBgetNormalCache\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBSoNormalCache\fP * \fBgenerateAndReadLockNormalCache\fP (\fBSoState\fP *\fBconst\fP state)" .br .ti -1c .RI "\fBvoid\fP \fBgetVertexData\fP (\fBSoState\fP *state, \fBconst\fP \fBSoCoordinateElement\fP *&coords, \fBconst\fP \fBSbVec3f\fP *&normals, \fBconst\fP SbBool \fBneednormals\fP)" .br .ti -1c .RI "\fBvoid\fP \fBreadLockNormalCache\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBvoid\fP \fBreadUnlockNormalCache\fP (\fBvoid\fP)" .br .in -1c Protected Member Functions inherited from \fBSoShape\fP .in +1c .ti -1c .RI "\fBSoShape\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBvirtual\fP \fB~SoShape\fP ()" .br .ti -1c .RI "float \fBgetComplexityValue\fP (\fBSoAction\fP *action)" .br .ti -1c .RI "\fBvoid\fP \fBbeginSolidShape\fP (\fBSoGLRenderAction\fP *action)" .br .ti -1c .RI "\fBvoid\fP \fBendSolidShape\fP (\fBSoGLRenderAction\fP *action)" .br .ti -1c .RI "\fBvoid\fP \fBGLRenderBoundingBox\fP (\fBSoGLRenderAction\fP *action)" .br .ti -1c .RI "SbBool \fBshouldPrimitiveCount\fP (\fBSoGetPrimitiveCountAction\fP *action)" .br .ti -1c .RI "SbBool \fBshouldRayPick\fP (\fBSoRayPickAction\fP *\fBconst\fP action)" .br .ti -1c .RI "\fBvoid\fP \fBcomputeObjectSpaceRay\fP (\fBSoRayPickAction\fP *\fBconst\fP action)" .br .ti -1c .RI "\fBvoid\fP \fBcomputeObjectSpaceRay\fP (\fBSoRayPickAction\fP *\fBconst\fP action, \fBconst\fP \fBSbMatrix\fP &matrix)" .br .ti -1c .RI "\fBvirtual\fP \fBSoDetail\fP * \fBcreateTriangleDetail\fP (\fBSoRayPickAction\fP *action, \fBconst\fP \fBSoPrimitiveVertex\fP *\fBv1\fP, \fBconst\fP \fBSoPrimitiveVertex\fP *\fBv2\fP, \fBconst\fP \fBSoPrimitiveVertex\fP *\fBv3\fP, \fBSoPickedPoint\fP *\fBpp\fP)" .br .ti -1c .RI "\fBvirtual\fP \fBSoDetail\fP * \fBcreateLineSegmentDetail\fP (\fBSoRayPickAction\fP *action, \fBconst\fP \fBSoPrimitiveVertex\fP *\fBv1\fP, \fBconst\fP \fBSoPrimitiveVertex\fP *\fBv2\fP, \fBSoPickedPoint\fP *\fBpp\fP)" .br .ti -1c .RI "\fBvirtual\fP \fBSoDetail\fP * \fBcreatePointDetail\fP (\fBSoRayPickAction\fP *action, \fBconst\fP \fBSoPrimitiveVertex\fP *v, \fBSoPickedPoint\fP *\fBpp\fP)" .br .ti -1c .RI "\fBvoid\fP \fBinvokeTriangleCallbacks\fP (\fBSoAction\fP *\fBconst\fP action, \fBconst\fP \fBSoPrimitiveVertex\fP *\fBconst\fP \fBv1\fP, \fBconst\fP \fBSoPrimitiveVertex\fP *\fBconst\fP \fBv2\fP, \fBconst\fP \fBSoPrimitiveVertex\fP *\fBconst\fP \fBv3\fP)" .br .ti -1c .RI "\fBvoid\fP \fBinvokeLineSegmentCallbacks\fP (\fBSoAction\fP *\fBconst\fP action, \fBconst\fP \fBSoPrimitiveVertex\fP *\fBconst\fP \fBv1\fP, \fBconst\fP \fBSoPrimitiveVertex\fP *\fBconst\fP \fBv2\fP)" .br .ti -1c .RI "\fBvoid\fP \fBinvokePointCallbacks\fP (\fBSoAction\fP *\fBconst\fP action, \fBconst\fP \fBSoPrimitiveVertex\fP *\fBconst\fP v)" .br .ti -1c .RI "\fBvoid\fP \fBbeginShape\fP (\fBSoAction\fP *\fBconst\fP action, \fBconst\fP \fBTriangleShape\fP \fBshapetype\fP, \fBSoDetail\fP *\fBconst\fP detail=\fBNULL\fP)" .br .ti -1c .RI "\fBvoid\fP \fBshapeVertex\fP (\fBconst\fP \fBSoPrimitiveVertex\fP *\fBconst\fP v)" .br .ti -1c .RI "\fBvoid\fP \fBendShape\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBvoid\fP \fBgenerateVertex\fP (\fBSoPrimitiveVertex\fP *\fBconst\fP \fBpv\fP, \fBconst\fP \fBSbVec3f\fP &point, \fBconst\fP SbBool \fBuseTexFunc\fP, \fBconst\fP \fBSoMultiTextureCoordinateElement\fP *\fBconst\fP \fBtce\fP, \fBconst\fP float s, \fBconst\fP float t, \fBconst\fP \fBSbVec3f\fP &normal)" .br .ti -1c .RI "\fBvoid\fP \fBgenerateVertex\fP (\fBSoPrimitiveVertex\fP *\fBconst\fP \fBpv\fP, \fBconst\fP \fBSbVec3f\fP &point, \fBconst\fP SbBool \fBuseTexFunc\fP, \fBconst\fP \fBSoMultiTextureCoordinateElement\fP *\fBconst\fP \fBtce\fP, \fBconst\fP float s, \fBconst\fP float t, \fBconst\fP float r, \fBconst\fP \fBSbVec3f\fP &normal)" .br .ti -1c .RI "SbBool \fBstartVertexArray\fP (\fBSoGLRenderAction\fP *action, \fBconst\fP \fBSoCoordinateElement\fP *coords, \fBconst\fP \fBSbVec3f\fP *\fBpervertexnormals\fP, \fBconst\fP SbBool \fBtexpervertex\fP, \fBconst\fP SbBool colorpervertex)" .br .ti -1c .RI "\fBvoid\fP \fBfinishVertexArray\fP (\fBSoGLRenderAction\fP *action, \fBconst\fP SbBool vbo, \fBconst\fP SbBool \fBnormpervertex\fP, \fBconst\fP SbBool \fBtexpervertex\fP, \fBconst\fP SbBool colorpervertex)" .br .in -1c Protected Member Functions inherited from \fBSoNode\fP .in +1c .ti -1c .RI "\fBSoNode\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBvirtual\fP \fB~SoNode\fP ()" .br .ti -1c .RI "\fBvirtual\fP SbBool \fBreadInstance\fP (\fBSoInput\fP *\fBin\fP, \fBunsigned\fP short flags)" .br .in -1c Protected Member Functions inherited from \fBSoFieldContainer\fP .in +1c .ti -1c .RI "\fBSoFieldContainer\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBvirtual\fP \fB~SoFieldContainer\fP ()" .br .in -1c Protected Member Functions inherited from \fBSoBase\fP .in +1c .ti -1c .RI "\fBSoBase\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBvirtual\fP \fB~SoBase\fP ()" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBdestroy\fP (\fBvoid\fP)" .br .ti -1c .RI "SbBool \fBhasMultipleWriteRefs\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "SbBool \fBwriteHeader\fP (\fBSoOutput\fP *\fBout\fP, SbBool \fBisgroup\fP, SbBool \fBisengine\fP) \fBconst\fP" .br .ti -1c .RI "\fBvoid\fP \fBwriteFooter\fP (\fBSoOutput\fP *\fBout\fP) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBconst\fP char * \fBgetFileFormatName\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBSoNotRec\fP \fBcreateNotRec\fP (\fBvoid\fP)" .br .in -1c .SS "Static Protected Member Functions" .in +1c .ti -1c .RI "\fBstatic\fP \fBconst\fP \fBSoFieldData\fP ** \fBgetFieldDataPtr\fP (\fBvoid\fP)" .br .in -1c Static Protected Member Functions inherited from \fBSoNonIndexedShape\fP .in +1c .ti -1c .RI "\fBstatic\fP \fBconst\fP \fBSoFieldData\fP ** \fBgetFieldDataPtr\fP (\fBvoid\fP)" .br .in -1c Static Protected Member Functions inherited from \fBSoVertexShape\fP .in +1c .ti -1c .RI "\fBstatic\fP \fBconst\fP \fBSoFieldData\fP ** \fBgetFieldDataPtr\fP (\fBvoid\fP)" .br .in -1c Static Protected Member Functions inherited from \fBSoShape\fP .in +1c .ti -1c .RI "\fBstatic\fP \fBconst\fP \fBSoFieldData\fP ** \fBgetFieldDataPtr\fP (\fBvoid\fP)" .br .in -1c Static Protected Member Functions inherited from \fBSoNode\fP .in +1c .ti -1c .RI "\fBstatic\fP \fBconst\fP \fBSoFieldData\fP ** \fBgetFieldDataPtr\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBsetNextActionMethodIndex\fP (int index)" .br .ti -1c .RI "\fBstatic\fP int \fBgetNextActionMethodIndex\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBincNextActionMethodIndex\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBsetCompatibilityTypes\fP (\fBconst\fP \fBSoType\fP &nodetype, \fBconst\fP uint32_t \fBbitmask\fP)" .br .in -1c Static Protected Member Functions inherited from \fBSoBase\fP .in +1c .ti -1c .RI "\fBstatic\fP uint32_t \fBgetCurrentWriteCounter\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBstaticDataLock\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBstaticDataUnlock\fP (\fBvoid\fP)" .br .in -1c .SS "Additional Inherited Members" Public Types inherited from \fBSoShape\fP .in +1c .ti -1c .RI "enum \fBTriangleShape\fP { \fBTRIANGLE_STRIP\fP, \fBTRIANGLE_FAN\fP, \fBTRIANGLES\fP, \fBPOLYGON\fP, \fBQUADS\fP, \fBQUAD_STRIP\fP, \fBPOINTS\fP, \fBLINES\fP, \fBLINE_STRIP\fP }" .br .in -1c Public Types inherited from \fBSoNode\fP .in +1c .ti -1c .RI "enum \fBNodeType\fP { \fBINVENTOR\fP = 0x0000, \fBVRML1\fP = 0x0001, \fBVRML2\fP = 0x0002, \fBINVENTOR_1\fP = 0x0004, \fBINVENTOR_2_0\fP = 0x0008, \fBINVENTOR_2_1\fP = 0x0010, \fBINVENTOR_2_5\fP = 0x0020, \fBINVENTOR_2_6\fP = 0x0040, \fBCOIN_1_0\fP = 0x0080, \fBCOIN_2_0\fP = 0x0100, \fBEXTENSION\fP = 0x0200, \fBCOIN_2_2\fP = 0x0400, \fBCOIN_2_3\fP = 0x0800, \fBCOIN_2_4\fP = 0x1000, \fBINVENTOR_5_0\fP = 0x2000, \fBCOIN_2_5\fP = 0x4000, \fBCOIN_3_0\fP = 0x8000, \fBINVENTOR_6_0\fP = 0x10000, \fBCOIN_4_0\fP = 0x20000 }" .br .in -1c Protected Types inherited from \fBSoBase\fP .in +1c .ti -1c .RI "enum \fBBaseFlags\fP { \fBIS_ENGINE\fP = 0x01, \fBIS_GROUP\fP = 0x02 }" .br .in -1c Protected Attributes inherited from \fBSoNode\fP .in +1c .ti -1c .RI "SbUniqueId \fBuniqueId\fP" .br .in -1c Protected Attributes inherited from \fBSoFieldContainer\fP .in +1c .ti -1c .RI "SbBool \fBisBuiltIn\fP" .br .in -1c Static Protected Attributes inherited from \fBSoNode\fP .in +1c .ti -1c .RI "\fBstatic\fP SbUniqueId \fBnextUniqueId\fP = 1" .br .ti -1c .RI "\fBstatic\fP int \fBnextActionMethodIndex\fP = 0" .br .in -1c .SH "Detailed Description" .PP The \fBSoQuadMesh\fP class is used to render and optimize a quadrilateral mesh\&. This node uses the coordinates in order, either from the state or from the \fBSoQuadMesh::vertexProperty\fP node, to construct a quadrilateral mesh\&. .PP The quads are generated in row major order, using the two fields \fBSoQuadMesh::verticesPerColumn\fP and \fBSoQuadMesh::verticesPerRow\fP to specify the mesh\&. E\&.g\&. if \fBSoQuadMesh::verticesPerColumn\fP is 3 and \fBSoQuadMesh::verticesPerRow\fP is 2, two quads will be generated with the first one using (in order) coordinates 0, 1, 3 and 2, the second one using coordinates 2, 3, 5 and 4 (you get three rows of vertices; the first row uses vertices 0 and 1, the second row 2 and 3, and the third row 4 and 5)\&. .PP Here's a quick and simple usage example code snippet: .PP .PP .nf // Vertices for the Quad mesh\&. static float vertices[25][3] = { // Row 1 {\-11, 0, 1}, {0, 11, 1}, {11, 0, 1}, {0, \-11, 1}, {\-11, 0, 1}, // Row 2 {\-9, 0, 1}, {0, 9, 1}, {9, 0, 1}, {0, \-9, 1}, {\-9, 0, 1}, // Row 3 {\-9, 0, \-1}, {0, 9, \-1}, {9, 0, \-1}, {0, \-9, \-1}, {\-9, 0, \-1}, // Row 4 {\-11, 0, \-1}, {0, 11, \-1}, {11, 0, \-1}, {0, \-11, \-1}, {\-11, 0, \-1}, // Row 5 {\-11, 0, 1}, {0, 11, 1}, {11, 0, 1}, {0, \-11, 1}, {\-11, 0, 1} }; // This function generates an object by using the SoQuadMesh node // Return: // SoSeparator * static SoSeparator * quadMesh(void) { SoSeparator * qm = new SoSeparator; // Define coordinates SoCoordinate3 * coords = new SoCoordinate3; coords\->point\&.setValues(0, 30, vertices); qm\->addChild(coords); // QuadMesh SoQuadMesh * mesh = new SoQuadMesh; mesh\->verticesPerRow = 5; mesh\->verticesPerColumn = 5; qm\->addChild(mesh); return qm; } .fi .PP .PP The quadmesh geometry resulting from this code looks like this: .br .PP .PP Here is another example, this time making a 2x2 grid, with a texture: .PP .PP .nf #Inventor V2\&.1 ascii Separator { Complexity { textureQuality 0\&.01 } Texture2 { image 2 2 4 0xff0000ff 0x00ff00ff 0xffff00ff 0xff00ffff } Coordinate3 { point [ 0 2 0, 1 2 0, 2 2 0, 0 1 0, 1 1 0, 2 1 0, 0 0 0, 1 0 0, 2 0 0 ] } QuadMesh { verticesPerRow 3 verticesPerColumn 3 } } .fi .PP .PP For \fBSoQuadMesh\fP, normals and materials can be bound PER_PART (per row), PER_FACE, PER_VERTEX and OVERALL\&. The default material binding is OVERALL\&. The default normal binding is PER_VERTEX\&. .PP A note about \fBSoQuadMesh\fP shading: the quads in the mesh are just passed on to OpenGL's GL_QUAD primitive rendering\&. Under certain circumstances, this can lead to artifacts in how your meshes are shaded\&. This is an inherent problem with drawing quads in meshes\&. .PP There is a work around solution for the above mentioned problem that can be applied with Coin: by setting the global environment variable \fCCOIN_QUADMESH_PRECISE_LIGHTING\fP to '1', the quads will be broken up into triangles before rendered, and shading will likely look much better\&. Be aware that this technique causes rendering of the \fBSoQuadMesh\fP to slow down by an approximate factor of 6\&. .PP The 'precise lighting' technique is currently limited to work only when \fBSoQuadMesh\fP rendering is parameterized with 3D coordinates, a material binding that is \fInot\fP per vertex, and if texture mapping is done is must be without using any of the \fBSoTextureCoordinateFunction\fP subclass nodes\&. .PP \fBFILE FORMAT/DEFAULTS:\fP .PP .nf QuadMesh { vertexProperty NULL startIndex 0 verticesPerColumn 1 verticesPerRow 1 } .fi .PP .PP \fBSee also\fP .RS 4 \fBSoTriangleStripSet\fP \fBSoIndexedTriangleStripSet\fP .RE .PP .SH "Constructor & Destructor Documentation" .PP .SS "SoQuadMesh::SoQuadMesh (\fBvoid\fP)" Constructor\&. .SS "SoQuadMesh::~SoQuadMesh ()\fC [protected]\fP, \fC [virtual]\fP" Destructor\&. .SH "Member Function Documentation" .PP .SS "\fBSoType\fP SoQuadMesh::getClassTypeId (\fBvoid\fP)\fC [static]\fP" This static method returns the \fBSoType\fP object associated with objects of this class\&. .br .SS "\fBSoType\fP SoQuadMesh::getTypeId (\fBvoid\fP) const\fC [virtual]\fP" Returns the type identification of an object derived from a class inheriting \fBSoBase\fP\&. This is used for runtime type checking and 'downward' casting\&. .br .PP Reimplemented from \fBSoNonIndexedShape\fP\&. .SS "\fBconst\fP \fBSoFieldData\fP ** SoQuadMesh::getFieldDataPtr (\fBvoid\fP)\fC [static]\fP, \fC [protected]\fP" \fIThis API member is considered internal to the library, as it is not likely to be of interest to the application programmer\&.\fP .br .br Returns the \fBSoFieldData\fP class which holds information about fields in this node\&. .br .SS "\fBconst\fP \fBSoFieldData\fP * SoQuadMesh::getFieldData (\fBvoid\fP) const\fC [protected]\fP, \fC [virtual]\fP" Returns a pointer to the class-wide field data storage object for this instance\&. If no fields are present, returns \fCNULL\fP\&. .PP Reimplemented from \fBSoNonIndexedShape\fP\&. .SS "\fBvoid\fP SoQuadMesh::initClass (\fBvoid\fP)\fC [static]\fP" .SS "\fBvoid\fP SoQuadMesh::GLRender (\fBSoGLRenderAction\fP * action)\fC [virtual]\fP" Action method for the \fBSoGLRenderAction\fP\&. .PP This is called during rendering traversals\&. Nodes influencing the rendering state in any way or want to throw geometry primitives at OpenGL override this method\&. .PP Reimplemented from \fBSoShape\fP\&. .SS "\fBvoid\fP SoQuadMesh::getPrimitiveCount (\fBSoGetPrimitiveCountAction\fP * action)\fC [virtual]\fP" Action method for the \fBSoGetPrimitiveCountAction\fP\&. .PP Calculates the number of triangle, line segment and point primitives for the node and adds these to the counters of the \fIaction\fP\&. .PP Nodes influencing how geometry nodes calculate their primitive count also override this method to change the relevant state variables\&. .PP Reimplemented from \fBSoShape\fP\&. .SS "SbBool SoQuadMesh::generateDefaultNormals (\fBSoState\fP * state, \fBSoNormalBundle\fP * bundle)\fC [virtual]\fP" \fIThis API member is considered internal to the library, as it is not likely to be of interest to the application programmer\&.\fP .br .br Subclasses should override this method to generate default normals using the \fBSoNormalBundle\fP class\&. \fCTRUE\fP should be returned if normals were generated, \fCFALSE\fP otherwise\&. .PP Default method returns \fCFALSE\fP\&. .PP This function is an extension for Coin, and it is not available in the original SGI Open Inventor \fBv2\&.1\fP API\&. .br .PP Reimplemented from \fBSoVertexShape\fP\&. .SS "\fBvoid\fP SoQuadMesh::generatePrimitives (\fBSoAction\fP * action)\fC [protected]\fP, \fC [virtual]\fP" The method implements action behavior for shape nodes for \fBSoCallbackAction\fP\&. It is invoked from \fBSoShape::callback()\fP\&. (Subclasses should \fInot\fP override \fBSoNode::callback()\fP\&.) .PP The subclass implementations uses the convenience methods \fBSoShape::beginShape()\fP, \fBSoShape::shapeVertex()\fP, and \fBSoShape::endShape()\fP, with \fBSoDetail\fP instances, to pass the primitives making up the shape back to the caller\&. .PP Implements \fBSoShape\fP\&. .SS "\fBvoid\fP SoQuadMesh::computeBBox (\fBSoAction\fP * action, \fBSbBox3f\fP & box, \fBSbVec3f\fP & center)\fC [protected]\fP, \fC [virtual]\fP" Implemented by \fBSoShape\fP subclasses to let the \fBSoShape\fP superclass know the exact size and weighted center point of the shape's bounding box\&. .PP The bounding box and center point should be calculated and returned in the local coordinate system\&. .PP The method implements action behavior for shape nodes for \fBSoGetBoundingBoxAction\fP\&. It is invoked from \fBSoShape::getBoundingBox()\fP\&. (Subclasses should \fInot\fP override \fBSoNode::getBoundingBox()\fP\&.) .PP The \fIbox\fP parameter sent in is guaranteed to be an empty box, while \fIcenter\fP is undefined upon function entry\&. .PP Implements \fBSoShape\fP\&. .SS "SbBool SoQuadMesh::generateDefaultNormals (\fBSoState\fP * state, \fBSoNormalCache\fP * cache)\fC [protected]\fP, \fC [virtual]\fP" \fIThis API member is considered internal to the library, as it is not likely to be of interest to the application programmer\&.\fP .br .br Subclasses should override this method to generate default normals using the \fBSoNormalCache\fP class\&. This is more effective than using \fBSoNormalGenerator\fP\&. Return \fCTRUE\fP if normals were generated, \fCFALSE\fP otherwise\&. .PP Default method just returns \fCFALSE\fP\&. .PP This function is an extension for Coin, and it is not available in the original SGI Open Inventor \fBv2\&.1\fP API\&. .br .PP Reimplemented from \fBSoVertexShape\fP\&. .SH "Member Data Documentation" .PP .SS "\fBSoSFInt32\fP SoQuadMesh::verticesPerColumn" Specifies to number of vertices in each column\&. .SS "\fBSoSFInt32\fP SoQuadMesh::verticesPerRow" Specifies the number of vertices in each row\&. .SH "Author" .PP Generated automatically by Doxygen for Coin from the source code\&.