OGRE框架杂谈(二)

针对ParticleUniverse的特效优化以及其他OGRE优化杂谈 0.序 对于使用ParticleUniverse制作的Ogre游戏来说,特效效率问题是很严峻的。很久没有发文章了,这里将结合我最近遇到的问题简单分享一下我面对的问题以及我个人的解决思路。 1. 引子,关于ParticleUnverse的visual particle 阅读详情
杂谈第一篇,大概介绍了一下简单的OGRE使用规则。我自己觉得已经非常清楚,昨日被某老友(资深程序员)一句话说得惭愧不已,“你都研究这么久3D知识当然觉得清楚啦!我程序功夫底子也不错,但是只钻研网络数据库方面,你这篇文章基本上对我而言什么用都没有啊!!”

    为了弥补这个天大的错误。我决定从最基础的说起。OGRE这个项目,提供了非常多的例子。为了大家能够更快的用起来,我决定介绍3大基础构架:ScenceManager(场景管理器),SceneNode(场景节点),Entity(实体)。

    是否需要用比较多的代码进行说明?我考虑还不是那么清楚。先从OGRE的工作原理说起好了:

场景管理器

    在屏幕上显示的所有对象都由场景管理器统一管理。当需要在场景中添加物体时,场景管理器会记录所有物体的位置。当添加摄像机来观看场景时,场景管理器会记录摄像机的位置。添加平面,广告牌(billboard),灯光时,场景管理器同样会管理所有这一切。OGRE中有多种场景管理器,有的渲染地面,有的渲染BSP表,另外你还可以自己编码制作出适合自己制作目标的场景管理器。  

实体

    可以把实体理解为3D模型:一个实体是可以再场景中渲染的物体之一(是之一,而不是全部)。例子中的水池可以是实体,水池中游泳的鱼也可以是实体,走动的机器人是实体,甚至一些山峰也是巨大的实体。但是,灯光,广告牌,摄像机,粒子就不是实体。

    在OGRE中不能将一个实体直接放置到场景中去,必须将其与场景节点绑定,场景节点内包含了该实体的位置和方向信息。多个实体可以绑定到一个场景节点哦!我会用这种方法给主角绑上很多装备/(^o^)/~,背部装备特别适合这种方法(因为绑定和变化的方式都一样!)

场景节点

    场景节点会持续跟踪与他绑定在一起的实体方位信息。创建一个实体后,这个实体只有在与一个场景节点绑定后才会被渲染。当然,一个场景接待点也只有与一个实体绑定后才能在屏幕上显示。

    场景节点可以绑定多个实体。我们如果要创建一个发光的南瓜,很简单,只需要创建一个场景节点,然后创建一个南瓜的实体并与场景节点绑定在一起,之后创建一个发光效果(或者说光照模型)也与这个场景节点绑定在一起,这样就产生了一个发光的南瓜。如果需要更多的效果,还可以和更多的东西绑定,当然也可以与其他场景节点绑定以表现更完整的对象。

    在场景中,场景节点的位置总是与它的父节点相关。每一个场景管理器都包含一个根节点。

OGRE基础程序

    大家都知道SDK,编写基础是依赖于无数接口的。比如设置环境光,首先需要的是调用setAmbientLight函数并指定其颜色。这个的组成是0~1的float数值组成的3元色(红、绿、蓝):

//设置环境光颜色

mSceneMgr->setAmbientLight( ColourValue( 1, 1, 1 ) );            

//创建南瓜,第一个参数是唯一标识(南瓜的简拼)。
Entity *ent1 = mSceneMgr->createEntity( "NG", "NG.mesh" );    

//创建一个场景子节点,为了方便,现在先在根节点下创建,注意场景节点标识也要唯一。
SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "NGNode" );  

最后,绑定实体到场景节点上
node1->attachObject( ent1 );

    接着将这段代码,放在杂谈(一)中的,CreateScene()函数中中,你就会看到一个南瓜出现在屏幕上了。什么?你没有NG.mesh这个模型?那随便放个什么东西上去吧!你会看到它出现在屏幕上的。

    另外关于设置位置,方向,OGRE和其他的现实引擎没有什么区别。如果对向量只是不熟悉,建议还是努力学好基本空间几何知识再来玩这些3D引擎,不然实在是太痛苦了!但是,我的观点在于(够用理解就好,不用解那些令人头疼而且基本用不上的题目)。

    基础概念:XZ 面作为其水平面,Y 轴作为纵轴。当你面对着屏幕时,从左至右的方向为 X 轴正方向,从下至上为 Y 轴正方向,从里至外为 Z 轴的正方向。

    通过接口来进行位置的设置是非常重要的基础观念。不过,其实这里只有一点想要进行说明,就是在OGRE中场景节点所有的移动都是相对于父节点的,我们可以很容易使两个节点一起移动哦!只要把需要一同移动的那个作为主动移动的节点的子节点就好了!另外,附加说一句,场景节点还可以控制对象的缩放比例和旋转角度。

    好想觉得忘记说了一些东西……OGRE只是一个图形渲染引擎,很多都是依赖于第三方库和帮助库,GU系统,用的就是CEGUI哦!还有鼠标键盘输入通过OIS来实现(一个输入系统),音效和物理也是不同的库。物理使用的是ODE,这些东西都是些博大精深的库,确实很强大,不过真的要用起来可不简单哦!如果某些部分部没有用到,比如:你有自己的UI系统,那么就可以对依赖的OGRE库文件进行瘦身,去掉CEGUI所需要的dll文件。当然,这些都要建立在你对于整个系统都非常熟悉了解的情况才能进行,不然你就等着整个程序的罢工吧。

   还有配置文件,OGRE的运行需要几个配置文件。它们用来控制那些插件需要加载,程序资源在哪里定位等等。

plugins.cfg 指定应用程序使用的插件。resources.cfg 含有Ogre搜索资源的目录列表。media.cfg 告诉Ogre更多关于某些资源的细节。ogre.cfg 是Ogre的配置窗口生成的,这个文件与你的个人电脑和显示配置相关。

    quake3settings.cfg 这个文件是与BSPSceneManager一起使用的。非常的特别!你是不是有点什么疑问…………呵呵,不用怀疑!这个东西确实就是根据伟大的卡马克同志开源了他的代码之后,同理编写的。不过,除非使用这个场景管理器,否则我们就不需要这个文件。

    OGRE只需要找到"plugins.cfg", "resources.cfg", 和 "media.cfg",就能正确运行。

   另外,请记住,plugins.cfg,resources.cfg文件中都是可以使用绝对或者相对路径,但是不能使用好像$(SomeVariable)这样的环境变量。
    去掉某个插件,只需要在plugins.cfg中删除某一行,或用#直接注释掉它。想要添加一个插件,就要添加像"Plugin=[PluginName]"这样的一行。注意不要在插件名后面加上.dll后缀。
    resources.cfg 这个文件含有Ogre搜索资源的目录列表。资源包括:脚本、模型、纹理等等。但是,Ogre不会搜索子目录,所以你如果有多层目录必须手工输入它们。比如,你有一个目录树,像"res/meshes" and "res/meshes/small",你就要为这些路径添加两个入口(如果需要增强,可以添加代码进行子目录搜索,不过出于效率和渲染引擎实际使用方式考虑,似乎不太必要)。

    好啦!罗嗦了这么半天,基本上把OGRE的方式初步使用方式说明了。我准备去吃午饭,过节果然是很不规律……下次不能一口气写这么多有的没的了。要尽量照提纲来编写!!

OGRE_LIB_DEBUG 看标题就应该知道是什么东西了 以后缺什么可以在里面找到 立即下载

相关推荐

两层板如何做阻抗控制呢

两层板如何做阻抗控制呢? 这个问题可能很多人都会碰到,有的人在此等需要做阻抗控制的情况都选择做多层板。诚然,多层板在阻抗控制,EMC等等方面都有着天然的优势。然而,在价格上和周期上,两层板就有着绝对优势了。 对于成本非常敏感而又不是太复杂的产品,尽管对于我们硬件工程师而言,有一堆的理由要求使用多层板。然而在面对毛都不懂的老板“别人能做,你为什么不能做?”这个问题时只得低下我们高傲的头颅。 好...

weixin_42005993的博客 2万+

Ogre代码事例:调试跟踪器

在很多时候,程序百分之八十的效率浪费到百分之二十的代码中,在优化效率的时候,针对这些瓶颈函数的改良就显得至关重要。这里提供了一个简单的工具,用于跟踪函数的调用次序和时间花费,并打印出结果提供参考。 OgreDebugTrace.h      #ifndef OgreDebugTrace_H_     #define OgreDebugTrace_H_     #

zeroboundary的专栏 1023

具身智能端侧硬件选型实战:从算力需求到芯片对比与避坑指南

在边缘计算和嵌入式AI快速发展的今天,端侧智能设备的落地不再单纯比拼芯片的标称算力。TOPS数值只是初筛指标,真实的推理性能还受内存带宽、数据精度、稀疏性以及散热功耗等多重因素制约。理解不同视觉感知、决策规划与语言交互任务对算力的差异化需求,是选型的第一步。本文从技术原理出发,剖析了Jetson Orin、地平线征程、RK3588等主流平台的实测表现,并揭示了散热设计、供电链路与软件生态这三个极易被忽略的隐形瓶颈。通过完整的部署调优实录,展示了量化、缓存与电源模式优化如何提升端侧推理效率,为具身智能、无人车

weixin_29164185的博客 364

OGRE启动过程详解(OGRE HelloWorld程序原理解析)

本文介绍 OGRE 3D 1.9 程序的启动过程,即从程序启动到3D图形呈现,背后有哪些OGRE相关的代码被执行。会涉及的OGRE类包括: RootRenderSystemRenderWindowResourceGroupManagerLogManagerViewportSceneManagerCameraSceneNodeEntityLight     建议在阅读本文时参考 OGRE

wang371372的专栏 1374

零外围电路!用CH340X实现ESP32一键下载的完整教程

本文详细介绍了如何利用CH340X系列USB转串口芯片实现ESP32的一键自动下载功能,无需任何外围逻辑控制电路。通过解析CH340X的增强型DTR/RTS功能,提供核心电路设计、电压匹配方案,并指导在Arduino IDE和PlatformIO中进行软件配置,帮助开发者构建简洁、可靠且低成本的ESP32下载方案。

gpu4optimizer的博客 775

我的GIT练习ONE

Git 是一个分布式版本控制及源代码管理工具;Git 可以为你的项目保存若干快照,以此来对整个项目进行版本管理每一次的练习,都是对自身知识的巩固,以及对自身知识的一个测试。

是个非常热爱生活、乐观、奋斗、努力的逗比青年 8870

利用数字孪生技术实现三维场景的智慧景区管理系统

利用大数据、云计算技术,结合地理信息系统等手段,构建一个以信息化为基础,以网络化为支撑、以智能化为方向的智慧景区,实现景区基础设施智能化控制及精细化管理。在开发的系统中,可提供景区地图的三维场景浏览功能,将三维场景中所有的景点和相关设施进行展示和浏览,让游客对景区的整体情况有了直观认识。6、游客可通过三维查看所处位置,并与景区内实景进行对比,还可直观的了解所处位置与景区内各个景点距离的远近情况。1)通过对景点现状和历史数据的梳理和整理,建立景区内各要素的三维模型,实现景点及设施的三维可视化。

2301_76516693的博客 1091

5分钟快速上手:用AI生成3D虚拟场景的保姆级教程

你是否想过:不用学复杂的3D建模软件,不用懂“多边形”“UV贴图”这些专业术语,也能快速生成一个梦幻的森林、未来感的城市,甚至外太空基地?本文的目的就是教完全没接触过3D技术的新手,用AI工具5分钟生成3D虚拟场景。我们会覆盖主流AI工具的选择、提示词编写技巧、生成后的简单调整,以及常见问题解决。本文会像“游戏任务指南”一样,从“认识工具”→“写提示词”→“生成场景”→“调整优化”逐步讲解,最后还会教你把生成的3D场景用起来!提示词:你给AI的“订单备注”,越详细效果越好。扩散模型。

AI 原生应用开发的博客 1963

【转】3D场景管理

一、场景管理有很多种方法,如四叉树、八叉树、BSP、模糊K-D树、包围球层次结构等。室内环境主要是BSP为主,从quake3一直延续到现在主流的引擎都是以BSP为基础,BSP使用并不难,关键是数据的生成,这就牵涉到场景编辑器。    Quake3、Unreal:BSP,有自己的编辑器。    FarCry:场景分为室内和室外两部分,室内场景使用BSP, 室外不清楚但应该跟地形有很大关系,同时为...

weixin_33716154的博客 320

【教程4>第6章>第3节】LS信道估计与均衡系统MATLAB仿真实现

1]姬国伟,葛利嘉,龙秀虹.基于LS信道估计的SC-FDE系统性能研究[J].军事通信技术, 2010(1):6.DOI:CNKI:SUN:JSTY.0.2010-01-013.在无线通信中,信号在空间传播时,随着传输距离增加,能量会逐渐扩散,导致信号幅度减小,即发生衰减。第四个图表示的是提取的信道估计值,可以看到,在不插值的前提下,得到的信道估计值基本接近真实的信道h。从第五个图可知,通过信道估计,对接收信号进行了校正和补偿。信道模型,先通过awgn加入噪声,然后乘以hreal,模拟通过信道。

FPGA/MATLAB学习教程/源码/项目合作开发 389

ThingsBoard教程(十九):规则节点概览介绍

在ThingsBoard的CE V2.5.6版本中,一共有这几种类型在每一种类都有包含了多个节点,每一种类型的节点都有不同的颜色表示本篇文章做一个简单的概括,后续的文章会详细讲解每一个种类的节点如何使用,每一个节点的使用。一共有10个,使用黄色表示 过滤器节点用于消息过滤和路由。一共有9个,使用绿色 属性节点用于更新传入消息的元数据。一共三个,使用蓝色 转换节点用于更改传入消息字段,如发起者、消息类型、有效负载和元数据。一共21个,使用红色标识 动作节点根据传入的消息执行各种动作。一共9个,使用黄色表示,

知无涯 1万+

OGRE 框架杂谈(一)

    在这个纷乱的世界中,还是有不少的高手,强人为迷路的小鸟指明方向。其中就包括引导我进入3D渲染世界大门的OGRE开发小组。其实,大家首先要知道的是:OGRE的本意,是一个以教学为目的进行的开源3D引擎项目。很多人对其推崇至极(当然,我也很喜欢OGRE,并对其开发者抱有崇高的敬意!),不过有些地方,OGRE很明显的在易懂和高效方面,选择了利于教学的方面……    加上没有合适的编辑器,

得思斋 2016

L2tp环境搭建笔记- Openwrt平台

本文使用3台openwrt设备, 分别搭建L2TP服务和2个客户端, 进行端到端验证和局域网组网,并分析搭建过程中涉及的默认路由( defaultroute) 配置问题。

十年通信老兵的技术修炼之路——从3G到5G,从地面基站到卫星通信。 3391

ubuntu下构建OGRE,CEGUI

ubuntu下构建OGRE,CEGUI (2012-03-20 17:34:53) 转载▼ 标签: 杂谈 分类:Ubuntu 转自  http://bbs.hwcrazy.com/blog/b0108b364a4611e1a814000d601c5586/ 1. InstallingCompiler And Configu

lihesen的专栏 1113

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ogre shader传参,给uniform传参第二种方式

转载自: http://blog.sina.com.cn/s/blog_7c8dc2d50101ce2p.html Ogre学习如何使用着色器脚本(参考例子CelShading) Ogre中如何使用着色器 (2012-12-05 18:18:04) 标签:  杂谈   分类: Ogre3d渲染引擎 通

lynon的专栏 512

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Ogre碰撞检测,精确到物体网格三角面

Ogre碰撞检测,精确到物体网格三角面 (2010-06-11 19:14:27) 转载 标签: 杂谈 分类: MSN搬家 我们课程的期末项目是做一个蚊子吸血的三维游戏。由于蚊子的体积很小,并且蚊子需要在三维场景中穿梭飞行。因此常规的模型包围盒检测便显得有些不足。例如,场景中有一个台灯,从模型的包围盒看,台灯是一个长方体,如果按照这样来做碰撞检测...

weixin_30642561的博客 175

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

2010年的杂谈

<br />      很久很久没有写博客了,其实我是不太愿意写博客的,我习惯用精简的一两句话来来概述我的想法和收获并发在微博上,而不是博客上。博客是需要很多文字的,而我又不爱讲话,自然没有太多话要讲。不过,此人已下决心要改变此现状。下面我把收获分享给大家。<br />      我的搜索技能收获:1.浏览器背景色的设置,浅蓝色。2.360安全卫士->网盾->广告过滤。3.google翻译,可以查看国外网页。4.多去论坛(技术、心灵、电影、娱乐、生活、资讯)5.邮箱阅读功能(qq、163)。<br />  

超越 1028

游戏引擎起步杂谈

那要看你基础有多深厚,如果一点基础都没有,又想要开发rpg这些大东西的,建议你先玩一玩rpgmaker,很多人说rpgmaker太小儿科,但是玩rpgmaker看到的不是开发技术而是开发方法,也许这些开发方法很落后看起来很低端。但是当你玩过知道那么点东西之后,日后你用unity想做一个游戏才不会至于啥都不知道,游戏里面一堆对象怎么管理,一堆数据往哪儿放,怎么安排level才方便调节,游戏内容比如剧

big_bit的博客 634

nedmalloc结构分析

【内存池】nedmalloc结构分析 (2011-06-11 11:09:02) 转载▼ 标签: 杂谈 分类:游戏开发   nedmalloc是一个跨平台的高性能多线程内存分配库,很多库都使用它,例如:OGRE.现在我们来看看nedmalloc的实现(以WIN32部分为例)     位操作小技巧; (1)、获取最低位的出现位置的掩码;x&(

xdgs_2005的专栏 862

小熊不去实验室 Keep marching, Don't settle —— 把自己带到离梦想最近的地方!

OpenCV(81)计算机视觉(39)机器学习(26)特征篇(11)matlab(5)算法(46)C++(25)基本(19)杂谈(21)Qt(3)数据库(2)Kinect(16)OpenGL(6)Ogre(3)计算机图形学(11)笔试面试(4)滤镜(15)shader(5)Leap(1)Unity(1)CUDA(3)并行计算(1)UDK(3)Cinder(1)

hktkfly6的专栏 540

我的原创技术随笔大全(2000~2009)

 二十一世纪的第一个十年过去了,回顾了一下这些年写的博客,发现自己也没闲着。但不免也有些遗憾,内容大都是关于知识、经验和技术,而关于思考和idea的却比较少。期待下一个十年吧!         第一篇日志是在2004年发布在优快云的博客上(记得开始不叫博客),截至到现在累积了不少东西了。为了怀念这过去的十年(2000~2003是个空白期,那段时间国内好像也没博客,网络也不发达,信息也闭塞),特整

力为的博客 7392

伺服系统调试实战:刚性、惯量与三环控制参数优化指南

伺服系统调试中,刚性、惯量与三环控制是核心概念。刚性决定系统抵抗扰动的能力,惯量比影响动态响应,三环控制(电流环、速度环、位置环)则是底层架构。理解这些原理,能有效解决啸叫、过冲、定位不准等问题,提升设备稳定性与精度。在汇川伺服电机、STM32控制伺服电机485通信、PLC伺服电机控制程序等场景中,合理匹配惯量比、调节刚性等级、优化三环参数至关重要。本文分享现场调试方法与避坑经验,助你从选型到落地高效完成项目。

weixin_33985507的博客 466
上一篇: VS2008 自用注释宏
下一篇: OGRE 框架杂谈(一)
凭谁问
博客等级 码龄15年 178粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值