OGRE架构图(http://bbs.gamedev.youkuaiyun.com/Web/54201/ShowPost.aspx)

本文介绍了OGRE游戏引擎的核心架构及其关键组件的功能。详细解释了Root、RenderSystem、SceneManager等核心部分的作用,并探讨了Mesh、Entity及Materials对象在场景渲染中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 OGRE架构图
  • <!--[if !supportLists]--> <!--[endif]-->Root:是ORGE核心系统的一部分,必须在所有ORGE对象产生之前初始化,并在所有ORGE对象销毁之后销毁,用来配置系统。
  • <!--[if !supportLists]-->RenderSystem:是用来发送渲染操作的系统。它是一个抽象类,而另外拥有不同的实现。(OpenGL, DirectX)
  • <!--[if !supportLists]--> <!--[endif]-->SceneManager:除Root对象外最重要的ORGE部件。它创建和管理摄象机,可移动物体,灯光和材质,以及不可移动的场景的材质(如天空,大地)SceneManager保存了各种物体的列表,以便处理物体之间的关系。应用程序无须为之操心。SceneManager还把场景发送到RenderSystem里进行渲染。它确定哪些物体需要绘制,生成一个场景,发送到渲染系统。SceneManager拥有许多子类,因为如何选择物体进行渲染的算法十分多样。缺省的SceneManager功能十分低下,而某些SceneManager子类功能十分强大。例如:BSP(Binary Space Partition)SceneManager处理一个大型建筑。
  • <!--[if !supportLists]-->ResourceManager:是一些管理资源的类的基类。“资源”指的是贴图,mesh和地图。TextureManager是管理贴图的ResourceManagerMeshManager是管理meshResourceManger

 

 

 

Mesh对象

Mesh对象表示出一种不连续的模型,一组自包含的远小于世界尺寸的几何物体。Mesh对象通常用来表现可移动的小型物体,而不是不可移动的背景。
Mesh是一种资源,可被MeshManager管理。它们通常被保存在文件里,以”.mesh”为扩展名。”.mesh”文件可以通过一个建模工具。
MeshManager::createManual方法可以创建一个Mesh。

Entity对象

Entity是场景的一个可移动物体的实例。它可以是车,人,狗等等。它不必固定在一个位置上。
Entity是不连续的Mesh的集合。多个Entity也可以由同一个Mesh所构成,如果你希望的话。
使用SceneManager::createEntity方法可创建一个Entity,参数为它的名字和它所使用的Mesh的文件名。通过MeshManager,我们能保证同一个Mesh只装载一次。
Entity如不加入到SceneNode中,就不认为它是场景的一部分。通过加入SceneNode,Entity能表现出复杂的继承行为。可以通过修改SceneNode的位置来影响一组Entity。
一个Mesh带来一组材质的定义。你可以在原来基础上改变Mesh的材质,因为每个Mesh由子Mesh单元组成。子Mesh单元分别存储着Mesh的各种材质。通过更换子Mesh,就可以改变原有Mesh的外观。
Entity也是如此,通过更换子Entity,也可改变原有Entity的外观。

Materials对象

材质对象控制物体在渲染系统中如何显示,它包括颜色,亮度等等。SceneManager管理所有的材质。当每个材质被加入到SceneManager时,它们都有一系统缺省属性。

  •  周围的反射光(白色)
  •  漫反射(白色)
  •  emmissive(黑色:无)
  •  亮度(无)
  •  没有贴图层,也就没有贴图
  •  SourceBlendFactor = SBF_ONE, DestBlendFactor = SBF_ZERO (不透明)
  •  开启深度缓冲检查
  •  开启深度缓冲写
  •  深度缓冲比较 = CMPF_LESS_EQUAL
  •  周围光线颜色 = ColourValue(0.5, 0.5, 0.5) (半灰)
  •  开启动态光线
  •  Gourad 阴影模式
  •  Bilinear texture filtering


通过对SceneManager::getDefaultMaterialSettings()的返回值进行更改,可以改变这些缺省值。使用方法SubEntity::setMaterialName()创建一个新的材质,再把一个新的子Entity连接上去。

Overlays

Overlays是用来显示HUD的,如HP血槽。它可以是2维或3维形式。2维的用于显示HUD,3维的可用来表示特殊效果如雨雪等。用 SceneManager::createOverlay方法可以创建两种overlay。你也可用”.overlay”脚本定义它们。 Overlay::setZOrder()方法决定了多个overlay的前后顺序。

  •  创建2维overlay
  •  使用OverlayElement类。
  •  使用OverlayContainer,后者是前者的容器。
  •  使用GuiManager类,使用GuiManager::createOverlayElement方法创建一2维元素到一个overlay。
  •  例子:GuiManager::getSingleton().createOverlayElement("Panel", "myNewPanel");


 

Xshell 8 (Build 0068) Copyright (c) 2024 NetSarang Computer, Inc. All rights reserved. Type `help' to learn how to use Xshell prompt. [C:\~]$ Connecting to 192.168.3.57:22... Connection established. To escape to local shell, press 'Ctrl+Alt+]'. Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.9.140-tegra aarch64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage This system has been minimized by removing packages and content that are not required on a system that users do not log into. To restore this content, you can run the 'unminimize' command. 762 packages can be updated. 440 of these updates are security updates. To see these additional updates run: apt list --upgradable Last login: Wed Mar 26 11:41:56 2025 from 192.168.3.62 bingda@robot:~$ roslaunch robot_navigation lidar_rviz.launch ... logging to /home/bingda/.ros/log/b5e7ab2e-0a05-11f0-86b3-1c995715ad1a/roslaunch-robot-21153.log Checking log directory for disk usage. This may take a while. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB. started roslaunch server http://192.168.3.57:39603/ SUMMARY ======== PARAMETERS * /rosdistro: melodic * /rosversion: 1.14.10 NODES / rviz (rviz/rviz) ROS_MASTER_URI=http://192.168.3.57:11311 process[rviz-1]: started with pid [21172] libGL error: MESA-LOADER: failed to open swrast (search paths /usr/lib/aarch64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri) libGL error: failed to load driver: swrast libGL error: MESA-LOADER: failed to open swrast (search paths /usr/lib/aarch64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri) libGL error: failed to load driver: swrast [ WARN] [1742968043.734649687]: OGRE EXCEPTION(3:RenderingAPIException): Unable to create a suitable GLXContext in GLXContext::GLXContext at /build/ogre-1.9-i02lBV/ogre-1.9-1.9.0+dfsg1/RenderSystems/GL/src/GLX/OgreGLXContext.cpp (line 61) rviz::RenderSystem: error creating render window:
03-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值