diff --git a/docs/images/SLProject.mdj b/docs/images/SLProject.mdj index e48ce9d..b1e291c 100644 --- a/docs/images/SLProject.mdj +++ b/docs/images/SLProject.mdj @@ -27967,20 +27967,6 @@ "$ref": "AAAAAAFs2ITQtmGQdVk=" } }, - { - "_type": "UMLTextView", - "_id": "AAAAAAFs2I/I0mhkeKs=", - "_parent": { - "$ref": "AAAAAAFF+qBtyKM79qY=" - }, - "fontColor": "#ff0000", - "font": "Arial;13;0", - "left": 104, - "top": 24, - "width": 153, - "height": 177, - "text": "Application code split in platform independent (C/C++) code (light brown boxes) and platform dependent code (C/C++, Java or Objective C) in dark brown boxes. Supported platforms are: GLFW (desktop OS), Emscripten (Web), iOS and Android." - }, { "_type": "UMLClassView", "_id": "AAAAAAFs2JHSOnGQgcE=", @@ -29285,34 +29271,6 @@ "$ref": "AAAAAAFs2+87bJQkBMo=" } }, - { - "_type": "UMLTextView", - "_id": "AAAAAAFs2/A5NLd8nZo=", - "_parent": { - "$ref": "AAAAAAFF+qBtyKM79qY=" - }, - "fontColor": "#ff0000", - "font": "Arial;13;0", - "left": 1232, - "top": 232, - "width": 225, - "height": 57, - "text": "CV contains classes that use OpenCV for video processing. \nNo SL classes are used." - }, - { - "_type": "UMLTextView", - "_id": "AAAAAAFs2/F70MeCg2g=", - "_parent": { - "$ref": "AAAAAAFF+qBtyKM79qY=" - }, - "fontColor": "#ff0000", - "font": "Arial;13;0", - "left": 88, - "top": 232, - "width": 313, - "height": 65, - "text": "SL (Scene Library) C++ classes contain the functionality scenegraph management and 3D rendering with OpenGL, ray or path tracing." - }, { "_type": "UMLTextView", "_id": "AAAAAAFs2/GPrM5h7+E=", @@ -31208,36 +31166,6 @@ "$ref": "AAAAAAFs3CgybsVoino=" } }, - { - "_type": "UMLTextView", - "_id": "AAAAAAFs4d9cGukL494=", - "_parent": { - "$ref": "AAAAAAFF+qBtyKM79qY=" - }, - "lineColor": "#002133", - "fontColor": "#ff2b2b", - "font": "Arial;13;0", - "left": 992, - "top": 136, - "width": 145, - "height": 64, - "text": "Inherits from SLSceneView if specific event handling is needed." - }, - { - "_type": "UMLTextView", - "_id": "AAAAAAFs4e0kVvk2ZVs=", - "_parent": { - "$ref": "AAAAAAFF+qBtyKM79qY=" - }, - "lineColor": "#002133", - "fontColor": "#ff2b2b", - "font": "Arial;13;0", - "left": 1192, - "top": 464, - "width": 201, - "height": 57, - "text": "Video capturing for Android and iOS is handled within the toplevel app code." - }, { "_type": "UMLClassView", "_id": "AAAAAAFs4jY5V1I+2yM=", @@ -32986,36 +32914,6 @@ "$ref": "AAAAAAFs5xpR078PG5Q=" } }, - { - "_type": "UMLTextView", - "_id": "AAAAAAFs5zhJir0l+cM=", - "_parent": { - "$ref": "AAAAAAFF+qBtyKM79qY=" - }, - "lineColor": "#002133", - "fontColor": "#ff2b2b", - "font": "Arial;13;0", - "left": 1144, - "top": 136, - "width": 129, - "height": 64, - "text": "All UI is rendered with OpenGL with ImGUI once per frame." - }, - { - "_type": "UMLTextView", - "_id": "AAAAAAFs5zlJ1M72/X4=", - "_parent": { - "$ref": "AAAAAAFF+qBtyKM79qY=" - }, - "lineColor": "#002133", - "fontColor": "#ff2b2b", - "font": "Arial;13;0", - "left": 256, - "top": 162, - "width": 177, - "height": 38, - "text": "Top level main() function calls App::run." - }, { "_type": "UMLTextView", "_id": "AAAAAAFs51PsklFHo1k=", @@ -33323,21 +33221,6 @@ "$ref": "AAAAAAF+SZre5mxncfo=" } }, - { - "_type": "UMLTextView", - "_id": "AAAAAAF+SZ55kZGoiX0=", - "_parent": { - "$ref": "AAAAAAFF+qBtyKM79qY=" - }, - "lineColor": "#002133", - "fontColor": "#ff2b2b", - "font": "Arial;13;0", - "left": 856, - "top": 160, - "width": 129, - "height": 38, - "text": "Owns top-level instances for apps" - }, { "_type": "UMLAssociationView", "_id": "AAAAAAF+Sbog6i68yII=", @@ -34603,66 +34486,6 @@ "$ref": "AAAAAAF+SfcaY6pz4X8=" } }, - { - "_type": "UMLTextView", - "_id": "AAAAAAF+SftzahJqSCY=", - "_parent": { - "$ref": "AAAAAAFF+qBtyKM79qY=" - }, - "lineColor": "#002133", - "fontColor": "#ff2b2b", - "font": "Arial;13;0", - "left": 440, - "top": 175, - "width": 161, - "height": 25, - "text": "Platform dependent code." - }, - { - "_type": "UMLTextView", - "_id": "AAAAAAF+SfyZzx0hrQU=", - "_parent": { - "$ref": "AAAAAAFF+qBtyKM79qY=" - }, - "lineColor": "#002133", - "fontColor": "#ff2b2b", - "font": "Arial;13;0", - "left": 608, - "top": 160, - "width": 153, - "height": 38, - "text": "C-Interface for non-C platforms (iOS, Android)" - }, - { - "_type": "UMLTextView", - "_id": "AAAAAAF+Sf86TzWscu8=", - "_parent": { - "$ref": "AAAAAAFF+qBtyKM79qY=" - }, - "lineColor": "#002133", - "fontColor": "#ff2b2b", - "font": "Arial;13;0", - "left": 248, - "top": 696, - "width": 185, - "height": 25, - "text": "Major event handler" - }, - { - "_type": "UMLTextView", - "_id": "AAAAAAGQT9FP6UCVgu4=", - "_parent": { - "$ref": "AAAAAAFF+qBtyKM79qY=" - }, - "lineColor": "#002133", - "fontColor": "#ff2b2b", - "font": "Arial;13;0", - "left": 1280, - "top": 160, - "width": 169, - "height": 43, - "text": "All video code used for tracking." - }, { "_type": "UMLClassView", "_id": "AAAAAAGRE0PAOugNY7U=", diff --git a/docs/images/SLProject_UML_min.svg b/docs/images/SLProject_UML_min.svg index bd5c8be..47eb751 100644 --- a/docs/images/SLProject_UML_min.svg +++ b/docs/images/SLProject_UML_min.svg @@ -1 +1 @@ -SLScene_root3D: SLNode*_root2D: SLNode*_skybox: SLSkybox*_lights: SLVLight_animManager SLAnimManager_eventHandlers: SLVEventhandler_selectedNodes: SLVNode_selectedMeshes: SLVMeshinit()unInit()onUpdate()SLSceneView_camera: SLCamera*_raytracer: SLRaytracer_pathtracer: SLPathtracer_visibleMat2D: SLVMaterial_visibleMat3D: SLVMaterial_visibleNodes: SLVNodes_blendedNodes: SLVNodes_conetracer: SLGLConetraceronResize()onPaint()onMouseDown()onMouseMove()onMouseUp()onKeyPress()onKeyRelease()SLMeshP(ositions): SLVVec3fN(ormals): SLVVec3fUV[2]: SLVVec2fT(angents): SLVVec4fJi (Joint IDs): SLVVec4fJw (Joint weights) : SLVVec4fI16 (inices 16bit): SLVushortI32 (indices 32bit): SLVuint_accelStruct: SLAccelStruct_vao: SLGLVertexArray_mat: SLMaterial*draw()hit()calcNormals()calcTangents()transformSkin()computeHardEdgesIndices()generateVAO()SLMaterial_reflectionModel: SLReflMdl_ambient: SLCol4f_diffuse: SLCol4f_specular: SLCol4f_emissive: SLCol4f_shininess: float_roughness: float_metalness: float_translucency: float_textures[n]: SLVGLTextures_program: SLGLProgram*_skybox: SLSkybox*_nodesVisible3D: SLVNode_nodesVisible2D: SLVNodeactivate()passToUniforms()SLGLProgram_progID: SLuint_shaders: SLVGLShader_uniforms1f: SLVGLUniform_uniforms1i: SLVGLUniform_isLinked: booluseProgram()endUse()passLightsToUniforms()SLGLTexture_texID: SLuint_img[6]: CVImage_min_filter_mag_filter_texType: SLTextureType_tm: SLMat4f_bumpScale: floatbuild()bindActive()+1+1SLGLShader_shaderID: SLuint_type: SLShaderType_code: SLstring_file: SLstringload()createAndCompile()removeComments()preprocessPragmas()SLNode_parent: SLNode*_children: SLVNode_mesh: SLMesh*_om: SLMat4_wm: SLMat4_wmI: SLMat4f_wmN: SLMat4f_drawBits: SLDrawBits_aabb: SLAABBox_animation: SLAnimation*updateAndGetWM()cullRec()hitRec()drawRec()drawMesh()addChild()insertChild()deleteChild()findChild()+0..n+1SLCamera_fov: float_clipNear: float_clipFar: float_aspect: float_projection_vm: SLMat4f_viewport: SLRectisetView()setProjection()onMouseDown()onMouseMove()onMouseUp()+0..1SLAABBox_minWS_maxWSisHitInWS()SLMat4f_m[16]: floattranslate()rotate()scale()frustum()+1+1+0..nSLVec3fx: floaty: floatz: floatlength()normalize()+2..nSLSLGLState_modelViewMatrix_viewMatrix_projectionMatrix_modelViewMatrixStacklightStatesmaterialStatesfogStatesSLBox_min: SLVec3f_max: SLVec3fSLRevolver_revPoints: SLVVec3f_revAxis: SLVec3f_slices: int_stacks: intSLSpheric_radius: float_thetaStart: float_thetaEnd: floatSLCylinder_radius: float_height: floatSLCone_radius: float_height: floatSLRectangle_min: SLVec3f_max: SLVec3f_resX: int_resY: intSLPolygon_corners: SLVVec3f_texCoords: SLVVec2fSLAccelStructSLUniformGrid+1SLLightSpot_radius: floatSLLight_id: int_ambient: SLCol4f_diffuse: SLCol4f_specular: SLCol4f_spotCutoff: float+1..nSLJoint_id uint_skeleton SLSkeleton*_offsetMat SLMat4f_radius SLfloatSLAnimation_name SLstring_length SLfloat_nodeAnimTracksapply()applyToNode()SLSkeleton_root SLJoint*_joints SLVJoint_changed bool_animations_animationPlaysupdateAnimations()reset()SLAnimTrack_animation SLAnimation*_keyframes SLVKeyframegetKeyframesAtTime()SLNodeAnimTrack_animatedNode SLNode*_interpolCurve SLCurve*calcInterpolatedKeyframe()SLAnimManager_skeletons_animationNamesMap_animPlaybackNamesMapupdate()SLAnimPlayback_animation SLAnimation*_localTime SLfloat_weight SLfloat_playbackRate SLfloat_playbackDir SLushort_enabled SLbool_easing SLEasingCurve_looping SLAnimLoopingplayForward()playBackward()pause()skipToNextKeyframe()skipToPrevKeyframe()skipToStart()skipToEnd()advanceTime()SLKeyframe_animTrack SLAnimTrack*_time SLfloatSLTransformKeyframe_translation SLVec3f_rotation SLQuat4f_scale SLVec3f+1+1+1+2..n+0..n+1..n+1..n+1..n+1..n+1..n+2..n+3SLInputManager_devices: SLVInputEvent_sysEvents: SLQInputEventpollAndProcessEvents()CVImage_cvMat: cv::Mat_format: CVPixformat_bytesPerPixel: int_bytesPerLine: int_bytesPerImage: int_path: string_name: string+1..6SLLightRect_width: float_height: floatSLGLVertexArray_idVAO: uint_numVertices: uint_vbof: SLGLVertexBuffer_numIndices: uint_indexData_indexType: SLGLBufTypesetAttrib()setIndices()updateAttrib()generate()drawArrayAs()drawElementAs()SLGLVertexBuffer_id: uint_numVertices: uint_dataType: SLGLBufType_attribs: SLVVertexAttrib_outputInterleaved: bool_strideBytes: uint_sizeBytes: uint_usage: SLGLBufferUsageupdateAttrib()generate()bindAndEnableAttrib()disableAttrib()+1+1SLGLVertexAttribtype: SLGLAttributeTypeelementSize: intoffsetBytes: uintbufferSizeBytes: uintdataPointer: void*location: intconvertToHalf: bool+1..nSLSphereCVCapturelastFrame: cv::MatlastFrameGray: cv::Matformat: CVPixFormatcaptureSize: cv:SizecalibMainCam: CVCalibrationcalibScndCam: CVCalibrationactiveCalib: CVCalibration*_videoType: CVVideoType_captureDevice: cv::videoCaptureCVTrackedChessboard_edgeLengthM: float_boardPoints3D: CVVPoint3f_boardSize: cv::Size_solved: bool_rVec: cv::Mat_tVec: cv::MatCVTracked_isVisible: bool_drawDetection: bool_objectViewMat: cv::Matx44f_timer: HighResTimerCVCalibration_cameraMat: cv::Mat_distortion: cv::Mat_cameraFOVDeg: float_state: CVCalibState_boardSize: cv::Size_boardSquareMM: float_numImgsToCapture: int_numCaptured: int_reprojectionError: float_imagePoints: CVVVPoint2f_showUndistorted: bool_isMirrored: boolCVTrackedAruco_arucoID: intSLLightDirectCVTrackedFaces_marker: SLFeatureMarker2D_currentFrame: SLFrameData_prevFrame: SLFrameData_forceRelocation: bool_featureManagerAppDemoGUIbuild()buildMenuBar()buildSceneGraph()loadConfig()saveConfig()AppCommoninputManager: SLInputManagerassetManager: SLAssetManager*scene: SLScene*sceneViews: SLVSceneViewgui: SLImGui*devRot: SLDeviceRotationdevLoc: SLDeviceLocationcreateApp()+1+1AppDemoMainmain()createSceneView()createScene()onUpdate()+2CVTrackedFeatures_marker: SLFeatureMarker2D_currentFrame: SLFrameData_prevFrame: SLFrameData_forceRelocation: bool_featureMngr: CVFeatureMngrCVAppDemoVideovideoTexture: SLGLTexture*tracker: CVTracked*trackedNode: SLNode*onUpdateVideo()APPAppDemoSceneViewonMouseDown()onKeyPress()onKeyRelease()Application code split inplatform independent(C/C++) code (lightbrown boxes) andplatform dependentcode (C/C++, Java orObjective C) in darkbrown boxes. Supportedplatforms are: GLFW(desktop OS),Emscripten (Web), iOSand Android.AppGLFWwindow: GLFWwindow*run()onResize()onPaint()onMouseButton()onMouseMove()onKeyPress()SLInterface C-InterfaceslCreateAppAndScene()slCreateSceneView()slUpdateScene()slResize()slPaintAllViews()slOnMouseDown()onKeyPress()UtilsUtilsAveragedProfilerCV contains classes that useOpenCV for video processing. No SL classes are used.SL (Scene Library) C++ classes contain thefunctionality scenegraph management and 3Drendering with OpenGL, ray or path tracing.Utils contains helpers used by SLand CV. No dependenciesExternalsOpenGLOpenCVassimpimguiglfwgl3w3D graphics API foracceleratedframebuffer renderingComputer Visionlibrary for imageand videoprocessing3D assets importand export libraryImmediate ModeGUI library forrealtime framebufferrenderingOpenGL contextand windowmanagement librarySimple OpenGLcore profile loadinglibrarySLRaytracerrenderClassic()renderDistrib()renderSlices()trace()shade()setPrimaryRay()sampleAAPixel()renderImage()saveImage()SLRayorigin: SLVec3fdir: SLVec3flength: floatdepth: intcontrib: floathitNode: SLNode*hitMesh: SLMesh*hitTriangle: uintreflect()refract()+1SLPathtracer+1Inherits fromSLSceneView ifspecific event handlingis needed.Video capturing for Android andiOS is handled within thetoplevel app code.SLLens_diameter: float_thickness: float_radiusBot: float_radiusTop: floatSLArrow_radius: float_length: float_headLen: float_headWidth: floatSLVec4fx: floaty: floatz: floatw: floatlength()SLVec2fx: floaty: floatlength()normalize()All UI is renderedwith OpenGL withImGUI once perframe.Top level main() functioncalls App::run.All external libraries areeither within the SLProjectrepository or areautomatically automaticallydownloaded by cmake,v4.2open source C++library for geometryprocessing researchand developmentlibiglSLAssetManager+meshes: SLVMesh+materials: SLVMaterial+textures: SLVGLTexture+programs: SLVGLProgramOwns top-levelinstances for apps+1..n+1SLGLProgramGenerated+buildProgramCode()+buildProgramName()Linear algebrasupport library foradvanced linalgoperationseigenProfilerZipUtilsPlatform dependent code.C-Interface for non-Cplatforms (iOS, Android)Major event handlerAll video code used fortracking.SLImGui+onInitNewFrame()+onPaint()+loadFonts()+onMouseDown()+onKeyPress()+1 \ No newline at end of file +SLScene_root3D: SLNode*_root2D: SLNode*_skybox: SLSkybox*_lights: SLVLight_animManager SLAnimManager_eventHandlers: SLVEventhandler_selectedNodes: SLVNode_selectedMeshes: SLVMeshinit()unInit()onUpdate()SLSceneView_camera: SLCamera*_raytracer: SLRaytracer_pathtracer: SLPathtracer_visibleMat2D: SLVMaterial_visibleMat3D: SLVMaterial_visibleNodes: SLVNodes_blendedNodes: SLVNodes_conetracer: SLGLConetraceronResize()onPaint()onMouseDown()onMouseMove()onMouseUp()onKeyPress()onKeyRelease()SLMeshP(ositions): SLVVec3fN(ormals): SLVVec3fUV[2]: SLVVec2fT(angents): SLVVec4fJi (Joint IDs): SLVVec4fJw (Joint weights) : SLVVec4fI16 (inices 16bit): SLVushortI32 (indices 32bit): SLVuint_accelStruct: SLAccelStruct_vao: SLGLVertexArray_mat: SLMaterial*draw()hit()calcNormals()calcTangents()transformSkin()computeHardEdgesIndices()generateVAO()SLMaterial_reflectionModel: SLReflMdl_ambient: SLCol4f_diffuse: SLCol4f_specular: SLCol4f_emissive: SLCol4f_shininess: float_roughness: float_metalness: float_translucency: float_textures[n]: SLVGLTextures_program: SLGLProgram*_skybox: SLSkybox*_nodesVisible3D: SLVNode_nodesVisible2D: SLVNodeactivate()passToUniforms()SLGLProgram_progID: SLuint_shaders: SLVGLShader_uniforms1f: SLVGLUniform_uniforms1i: SLVGLUniform_isLinked: booluseProgram()endUse()passLightsToUniforms()SLGLTexture_texID: SLuint_img[6]: CVImage_min_filter_mag_filter_texType: SLTextureType_tm: SLMat4f_bumpScale: floatbuild()bindActive()+1+1SLGLShader_shaderID: SLuint_type: SLShaderType_code: SLstring_file: SLstringload()createAndCompile()removeComments()preprocessPragmas()SLNode_parent: SLNode*_children: SLVNode_mesh: SLMesh*_om: SLMat4_wm: SLMat4_wmI: SLMat4f_wmN: SLMat4f_drawBits: SLDrawBits_aabb: SLAABBox_animation: SLAnimation*updateAndGetWM()cullRec()hitRec()drawRec()drawMesh()addChild()insertChild()deleteChild()findChild()+0..n+1SLCamera_fov: float_clipNear: float_clipFar: float_aspect: float_projection_vm: SLMat4f_viewport: SLRectisetView()setProjection()onMouseDown()onMouseMove()onMouseUp()+0..1SLAABBox_minWS_maxWSisHitInWS()SLMat4f_m[16]: floattranslate()rotate()scale()frustum()+1+1+0..nSLVec3fx: floaty: floatz: floatlength()normalize()+2..nSLSLGLState_modelViewMatrix_viewMatrix_projectionMatrix_modelViewMatrixStacklightStatesmaterialStatesfogStatesSLBox_min: SLVec3f_max: SLVec3fSLRevolver_revPoints: SLVVec3f_revAxis: SLVec3f_slices: int_stacks: intSLSpheric_radius: float_thetaStart: float_thetaEnd: floatSLCylinder_radius: float_height: floatSLCone_radius: float_height: floatSLRectangle_min: SLVec3f_max: SLVec3f_resX: int_resY: intSLPolygon_corners: SLVVec3f_texCoords: SLVVec2fSLAccelStructSLUniformGrid+1SLLightSpot_radius: floatSLLight_id: int_ambient: SLCol4f_diffuse: SLCol4f_specular: SLCol4f_spotCutoff: float+1..nSLJoint_id uint_skeleton SLSkeleton*_offsetMat SLMat4f_radius SLfloatSLAnimation_name SLstring_length SLfloat_nodeAnimTracksapply()applyToNode()SLSkeleton_root SLJoint*_joints SLVJoint_changed bool_animations_animationPlaysupdateAnimations()reset()SLAnimTrack_animation SLAnimation*_keyframes SLVKeyframegetKeyframesAtTime()SLNodeAnimTrack_animatedNode SLNode*_interpolCurve SLCurve*calcInterpolatedKeyframe()SLAnimManager_skeletons_animationNamesMap_animPlaybackNamesMapupdate()SLAnimPlayback_animation SLAnimation*_localTime SLfloat_weight SLfloat_playbackRate SLfloat_playbackDir SLushort_enabled SLbool_easing SLEasingCurve_looping SLAnimLoopingplayForward()playBackward()pause()skipToNextKeyframe()skipToPrevKeyframe()skipToStart()skipToEnd()advanceTime()SLKeyframe_animTrack SLAnimTrack*_time SLfloatSLTransformKeyframe_translation SLVec3f_rotation SLQuat4f_scale SLVec3f+1+1+1+2..n+0..n+1..n+1..n+1..n+1..n+1..n+2..n+3SLInputManager_devices: SLVInputEvent_sysEvents: SLQInputEventpollAndProcessEvents()CVImage_cvMat: cv::Mat_format: CVPixformat_bytesPerPixel: int_bytesPerLine: int_bytesPerImage: int_path: string_name: string+1..6SLLightRect_width: float_height: floatSLGLVertexArray_idVAO: uint_numVertices: uint_vbof: SLGLVertexBuffer_numIndices: uint_indexData_indexType: SLGLBufTypesetAttrib()setIndices()updateAttrib()generate()drawArrayAs()drawElementAs()SLGLVertexBuffer_id: uint_numVertices: uint_dataType: SLGLBufType_attribs: SLVVertexAttrib_outputInterleaved: bool_strideBytes: uint_sizeBytes: uint_usage: SLGLBufferUsageupdateAttrib()generate()bindAndEnableAttrib()disableAttrib()+1+1SLGLVertexAttribtype: SLGLAttributeTypeelementSize: intoffsetBytes: uintbufferSizeBytes: uintdataPointer: void*location: intconvertToHalf: bool+1..nSLSphereCVCapturelastFrame: cv::MatlastFrameGray: cv::Matformat: CVPixFormatcaptureSize: cv:SizecalibMainCam: CVCalibrationcalibScndCam: CVCalibrationactiveCalib: CVCalibration*_videoType: CVVideoType_captureDevice: cv::videoCaptureCVTrackedChessboard_edgeLengthM: float_boardPoints3D: CVVPoint3f_boardSize: cv::Size_solved: bool_rVec: cv::Mat_tVec: cv::MatCVTracked_isVisible: bool_drawDetection: bool_objectViewMat: cv::Matx44f_timer: HighResTimerCVCalibration_cameraMat: cv::Mat_distortion: cv::Mat_cameraFOVDeg: float_state: CVCalibState_boardSize: cv::Size_boardSquareMM: float_numImgsToCapture: int_numCaptured: int_reprojectionError: float_imagePoints: CVVVPoint2f_showUndistorted: bool_isMirrored: boolCVTrackedAruco_arucoID: intSLLightDirectCVTrackedFaces_marker: SLFeatureMarker2D_currentFrame: SLFrameData_prevFrame: SLFrameData_forceRelocation: bool_featureManagerAppDemoGUIbuild()buildMenuBar()buildSceneGraph()loadConfig()saveConfig()AppCommoninputManager: SLInputManagerassetManager: SLAssetManager*scene: SLScene*sceneViews: SLVSceneViewgui: SLImGui*devRot: SLDeviceRotationdevLoc: SLDeviceLocationcreateApp()+1+1AppDemoMainmain()createSceneView()createScene()onUpdate()+2CVTrackedFeatures_marker: SLFeatureMarker2D_currentFrame: SLFrameData_prevFrame: SLFrameData_forceRelocation: bool_featureMngr: CVFeatureMngrCVAppDemoVideovideoTexture: SLGLTexture*tracker: CVTracked*trackedNode: SLNode*onUpdateVideo()APPAppDemoSceneViewonMouseDown()onKeyPress()onKeyRelease()AppGLFWwindow: GLFWwindow*run()onResize()onPaint()onMouseButton()onMouseMove()onKeyPress()SLInterface C-InterfaceslCreateAppAndScene()slCreateSceneView()slUpdateScene()slResize()slPaintAllViews()slOnMouseDown()onKeyPress()UtilsUtilsAveragedProfilerUtils contains helpers used by SLand CV. No dependenciesExternalsOpenGLOpenCVassimpimguiglfwgl3w3D graphics API foracceleratedframebuffer renderingComputer Visionlibrary for imageand videoprocessing3D assets importand export libraryImmediate ModeGUI library forrealtime framebufferrenderingOpenGL contextand windowmanagement librarySimple OpenGLcore profile loadinglibrarySLRaytracerrenderClassic()renderDistrib()renderSlices()trace()shade()setPrimaryRay()sampleAAPixel()renderImage()saveImage()SLRayorigin: SLVec3fdir: SLVec3flength: floatdepth: intcontrib: floathitNode: SLNode*hitMesh: SLMesh*hitTriangle: uintreflect()refract()+1SLPathtracer+1SLLens_diameter: float_thickness: float_radiusBot: float_radiusTop: floatSLArrow_radius: float_length: float_headLen: float_headWidth: floatSLVec4fx: floaty: floatz: floatw: floatlength()SLVec2fx: floaty: floatlength()normalize()All external libraries areeither within the SLProjectrepository or areautomatically automaticallydownloaded by cmake,v4.2open source C++library for geometryprocessing researchand developmentlibiglSLAssetManager+meshes: SLVMesh+materials: SLVMaterial+textures: SLVGLTexture+programs: SLVGLProgram+1..n+1SLGLProgramGenerated+buildProgramCode()+buildProgramName()Linear algebrasupport library foradvanced linalgoperationseigenProfilerZipUtilsSLImGui+onInitNewFrame()+onPaint()+loadFonts()+onMouseDown()+onKeyPress()+1 \ No newline at end of file