您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 72集OpenSceneGraph视频教程PPT
OpenSceneGraph第二讲:环境的搭建FreeSouth第三讲:osgViewer应用基础(上)FreeSouth第四讲:osgViewer应用基础(下)FreeSouth是否控制帧速计算公式控制帧速为x,当前帧实际使用时间为t,每n帧计算一次帧速,需要得出每帧的睡眠时间?1、期望每帧绘制时间为:1000/x2、实际每帧绘制时间为:t3、每帧睡眠时间为:1000/x–t每n帧刷新一次睡眠时间OpenSceneGraph第五讲:基本图元(上)FreeSouth第六讲:基本图元(下)FreeSouth设置顶点设置顶点关联方式设置法线、颜色其它属性线段三角折线OpenSceneGraph第七讲:矩阵(上)FreeSouth,0,0AddtogroupMAXTRANSFORMCALLBACKADDGLIDER.OSGSET5.0,0.0,0.0MAXTRANSFORMCALLBACKSET5.0,0.0,0.0MAXTRANSFORMADDGLIDER.OSGOpenSceneGraph第八讲:矩阵(下)FreeSouth第九讲:漫游(上)FreeSouth第十讲:漫游(下)FreeSouth第十一讲:碰撞检测(上)FreeSouth(NodeVisitor)NodeVisitorApply(Node)遍历NodeCameraAccept(NodeVisitor)IntersectionVisitorApply(Node)Enter()Leave()OpenSceneGraph第十二讲:应用-上楼梯算法FreeSouth第十三讲:碰撞检测(下)FreeSouth(NodeVisitor)IntersectVisitorApply(Node)IntersectVisitorGetHitListOpenSceneGraph第十四讲:窗口FreeSouth……创建图形上下文……窗口…………Main系统设备接口WindowingSystemInterfaceLinuxWin32Win32WindowingSystemAppleFrame……创建图形上下文事件窗口…………事件回调控制OpenSceneGraph第十五讲:超级指针FreeSouth超级指针的思想:使用栈中的资源管理堆中的东西OpenSceneGraph第十六讲:NodeVisitorFreeSouth(nv)Nv.applyGroupGliderChild1(-5,-5)Child2(5,-5)CowChild3(-10,-10)Child4(0,-10)Child5(10,-10)OpenSceneGraph第十七讲:OpenThreadsFreeSouth准备好数据到内存中(帧缓存)渲染管线最终将帧缓存渲染到屏幕上osgViewer::viewerviewer;Viewer.setSceneData(osgDB::ReadNodeFile(“g.osg”);Viewer.run()EventVisitorCallBack……操作系统接口创建窗口OpenThreadsThreadsMutexConditionBarrier创建线程,类似windows中的_beginthread创建互斥类似windows中的CreateMutex,用于针对多个线程访问同一资源情况创建条件,用于符合条件时才启动某个线程,使用Mutex实现创建壁垒,用于同步线程,比如某操作必须前面几个线程完成时才能进行OpenSceneGraph第十八讲:操作系统接口FreeSouth(osgDB::ReadNodeFile(“g.osg”);Viewer.run()操作系统接口创建窗口WindowingSystemInterfaceWin32WindowingSystemX11WindowingSystemInterfaceGraphicsWindowCarbon创造窗口系统分辩率消息映射……..上下文GraphicsContext主函数消息循环注册窗口类创建窗口消息处理关于对话框WIN32OSGOpenSceneGraph第十九讲:ControlFreeSouth部分交互负责场景的数据加载,事件处理ViewerBase_firstFrame判断当前帧是否是第一帧,从而……_done判断渲染是否需要结束_keyEventSetsDone渲染退出键(ESC)_qutEventSetsDone可通过QUIT_APPLICATION事件退出程序_releaseContextAtEndOfFrameHint渲染结束后是否释放上下文_threadingModel设置当前渲染的线程模型_threadsRunning线程状态_endBarrierPosition线程同步点_requestRedraw要求重绘_requestContinousUpdate要求更新,与_requestRedraw作用相同_runFrameScheme帧更新策略_runMaxFrameRate帧速Osg::View_statsstate_lightingMod灯光模式_light灯光_camera相机_slaves从机_frameStam帧快照osgViewer::View_viewerBase_scene场景,主管数据加载部分_eventQueu事件序列,主管事件处理_cameraManipulator操作器_eventHandlers事件回调_frameStam帧快照_displaySettings渲染设置,比如Stereo,EyeSeparationOpenSceneGraph第二十讲:osgDB(1)读文件FreeSouth渲染OsgDB::RegistryOsgDB::ReaderWriterOsg::NodeFileOption模型读写查找……点面Osg::NodeReadNodeFilereadImplementationReadNodeFunctorDoReadReadNodeReadObjectReadImageopenArchivewriteObject….Osgdb_xxx.dllOpenSceneGraph第二十一讲:应用-文件读取进度FreeSouth第二十二讲:osgDB(2)写文件FreeSouth格式转换作用,将模型转换为无法更改的二进制流格式osgArchive-i往包中插入一个文件-a读取一个包文件-e释放一个包中文件-l查看包中有哪些文件OpenSceneGraph第二十三讲:应用-文件加密FreeSouth文件结构UniqueIDname…Geometry1StateSetVertexListNormal…Geometry2…Geode1Geode2…OpenSceneGraph第二十四讲:事件响应FreeSouth事件是计算机应用程序和人通过外设进行交互键盘鼠标程序自身其它外设键按下键弹起多键按下键按下/弹起移动双击单击拖拽关闭窗口拖滑动条改变窗口大小方向盘游戏杆跳舞毯OSG里的事件控制流程外界按下某键操作系统捕捉到压入OSG事件序列帧绘制事件遍历对事件进行响应取出事件队列里的事件事件处理类压入到事件处理类序列遍历各事件处理类中handle方法OpenSceneGraph第二十五讲:分页数据管理FreeSouth初始化加载模型渲染加载需要显示的模型释放不需要显示的模型数据库分页管理(DatabasePager)Frame()eventTraversalupdateTraversalrenderingTraversalupdateSceneGraphremoveExpiredSubgraphs删除过期子场景addLoadedDataToSceneGraph加载需要添加的子场景1、如何判断场景过期(默认情况下)超过1帧没有渲染看观察点与模型的距离2、什么情况下释放子场景释放子场景过期的时间,通过setExpiryDelay,默认10S通过setExpiryFrames进行设置,默认为1场景内总视图数目是否超过设置的大小,默认300,通过setTargetMaximumNumberOfPageLOD设置OSG在什么时机判断的当前场景是否需要显示(视距)renderingTraverseCull(cullVisitor)LOD.TraverseDatabasePager中的众变量DatabaseThread删除过期结点LOD需要加入结点预编译结点Cull_childrenToDeleteListRender-Update_requestListCullOpenSceneGraph第二十六讲:拣选FreeSouth初始化加载模型渲染挑出需要显示的(cull)对cull的结果进行绘制(draw)拣
本文标题:72集OpenSceneGraph视频教程PPT
链接地址:https://www.777doc.com/doc-4654275 .html