3D游戏引擎入门课程——场景渲染

3D游戏引擎入门课程——场景渲染目录写在前面场景渲染渲染概述与剔除方法场景渲染实例 OGRE 场景渲染 Panda3D 场景渲染写在前面本专栏内容均为学堂在线慕课 3D 游戏引擎架构设计基础 中的内容

写在前面

场景渲染

渲染概述与剔除方法

渲染的定义:将三维矢量描述的场景转换到二维像素描述的场景的处理过程,是整个游戏引擎功能模块是最重要的内容。

相关的概念描述包括:
在这里插入图片描述
为了提升渲染的效率,可以采用不可见物体剔除,包括:

  • 根据摄像机位置,剔除视见体外的物体(可以通过包围体)
  • 判断视见体中物体的遮挡关系,剔除被遮挡的物体(可以通过包围体)
  • 剔除可见物体的背面

真实感渲染中,包括以下内容的计算和融合得到渲染结果。

  • 光照,指根据场景定义的灯光、材质等属性,用图形库支持光照模型渲染场景。其中光照模型包括:局部光照模型,全局光照模型,光照绘制算法等,光照计算通过光源、三角形面片的顶点法向量和材质等属性计算。光源是不可渲染的,只是作为计算真实感场景的属性,本身不被渲染。
  • 纹理:纹理映射是增加场景网格模型真实感表现效果的方法。纹理是由像素表示的,是以贴图映射的形式与网格模型关联起来,其纹理涂是一种资源文件。如.jpg,.tga,.bmp,.png,.tif等,可以与光照、阴影、特效等产生混合效果。纹理映射方法包括:多重纹理、凹凸纹理、光泽纹理、投影纹理、环境纹理等。
  • 阴影,可以产生场景深度和立体效果。阴影区域就是,在视点位置看是可见区域,但在光源位置看是不可见区域,示意图如下:

在这里插入图片描述

其中软阴影的概念为:如果是面光源照射物体,则影子区域呈现为软阴影,即阴影由全阴影区和半阴影区组成,示意图如下:

在这里插入图片描述

  • 视觉特效,可以产生动态光影效果,一般用布告板或粒子系统等实现。
    渲染实现的重要部分:GPU和着色器编程:
    在这里插入图片描述
    其对于游戏引擎的要求:
    在这里插入图片描述
  • LOD

LOD(Level of Detail)是指渲染时,使用较少的细节表示较小的、较远的或不太重要的场景物体。实现方法包括:离散LOD(静态LOD),连续LOD(动态LOD)和视点依赖LOD等。

场景渲染实例

OGRE场景渲染

OGRE主渲染循环:

在这里插入图片描述
OGRE主渲染时序图:
在这里插入图片描述
OGRE SceneManager类的渲染操作:

  1. SceneManager::_renderScene(Camera *camera, Viewport *vp, bool includeOverlays)
    在这里插入图片描述
  2. SceneManager::_renderVisibleObjects(void)
    在这里插入图片描述
  3. SceneManager::renderVisibleObjectsDefaultSequence(void)
    在这里插入图片描述
  4. SceneManager::_renderQueueGroupObjects(RenderQueueGroup *pGroup, QueuedRenderableCollection::OrganisationMode om)
    在这里插入图片描述
  5. SceneManager::renderBasicQueueGroupObjects(RenderQueueGroup *pGroup, QueuedRenderableCollection::OrganisationMode om)
    加粗样式在这里插入图片描述
  6. SceneManager::renderObjects(…);
    QueuedRenderableCollection::acceptVisitorGrouped(…)
    QueuedRenderableCollection::acceptVisitor(…);
    在这里插入图片描述
  7. SceneManager::SceneMgrRenderableVistor::VISIT(Pass *p, Renderable *r);
    在这里插入图片描述
  8. SceneManager::renderSignleObject(…)
    在这里插入图片描述
  9. SceneManager::_issueRenderOp(…)
    GLRenderSystem::_render(RenderOperation &op)//使用OpenGL渲染
    在这里插入图片描述

以上Step总结:

在这里插入图片描述

Panda3D场景渲染

Panda3D渲染过程:

在这里插入图片描述

Panda3D渲染核心类和类关系:
在这里插入图片描述

下面是几种Panda3D场景渲染的核心类详细描述:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Panda3D渲染管理:

  1. 应用程序启动渲染;
  2. 对于视见体,剔除不可见物体,建立渲染队列和状态,并排序;
  3. 执行渲染,获得一帧渲染结果
  4. 应用程序更新场景,循环开始下一帧渲染,转2.

Panda3D主渲染流程:

在这里插入图片描述
在这里插入图片描述

其中的几个子过程如下:

  1. 异步任务驱动渲染的流程:
    在这里插入图片描述
  2. 多线程渲染:
    在这里插入图片描述
  3. 剔除操作
    在这里插入图片描述
  4. 渲染操作
    在这里插入图片描述
今天的文章 3D游戏引擎入门课程——场景渲染分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-25 15:57
下一篇 2024-12-25 15:51

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/96140.html