![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最简单的OGRE
cgnerds
这个作者很懒,什么都没留下…
展开
-
最简单的Ogre系列之三——添加鼠标(不使用任何GUI)
本节在上节画矩形框的基础上添加了一个鼠标箭头,以更形象展示鼠标位置。显示鼠标我们可以用CEGUI之类的组件,但对于我的实验程序来说过于庞大,我只需要鼠标来显示点击位置即可。所以我利用OGRE中的Overlay面板和PanelOverlayElement组件来实现鼠标效果。下面简单介绍一下Overlay。基本概念 Overlay是那些将在主场景被渲染之后才渲染的可视组件(2D和3D)的容器。这些可视组件将构成HUD(Heads-Up-Display)、菜单或其它在主场景内容之上的任何东西原创 2011-05-11 00:34:00 · 3521 阅读 · 0 评论 -
OGRE 1.7 鼠标非独占使用(鼠标移出当前窗口)
网上已经有解决鼠标独占问题的文章,如《OGRE+CEGUI+OIS 完美解决鼠标非独占使用》,还有在此基础上解决鼠标在窗口边框没有指针问题的文章,如《OGRE+CEGUI+OIS 鼠标非独占使用 (含代码)》。这些文章提供了解决鼠标独占问题的完整方案,但其针对的情况是OGRE 1.6.x版本的情况,对于OGRE新的1.7.x版本则不再适应。OGRE 1.7 使用的是叫“Tray”的系统,这个系原创 2011-06-21 21:58:00 · 3821 阅读 · 3 评论 -
Ogre例子Facial Animation分析
动画可以用Maya、3ds Max等离线工具制作而成,也可以运行时产生,甚至仅是为了实现相机漫游而填充了一系列位置的曲线。Ogre能做到的就是重新播放这些动画,即当场景中的实体与动画被稍稍移动或产生变形,重绘场景。1. 顶点动画(Vertex Animation)顶点动画是直接使用顶点让网格(Mesh)产生动画的一种方式。每一组动作在顶点动画中对应一个顶点数据实体。顶点动画被存储在.mes原创 2012-02-16 22:14:52 · 3372 阅读 · 0 评论 -
Ogre中显示Kinect的彩色图像
首先创建材质文件以显示所需的图片//-------------------------------------------------------------------------------------void SetupImageMaterial(){ // Create the texture TexturePtr texture = TextureManager::get原创 2012-02-29 09:36:05 · 2184 阅读 · 1 评论 -
Ogre及Kinect中的坐标(不定时更新)
(1)Ogre::RenderWindow可用下面四个函数得到渲染窗口的左上角坐标和窗口的大小int winLeft = mWindow->getViewport(0)->getActualLeft();int winTop = mWindow->getViewport(0)->getActualTop();int winWidth = mWindow->getView原创 2012-02-22 11:03:39 · 1729 阅读 · 0 评论 -
图形库坐标矩阵
转载地址:http://www.cnblogs.com/siphen/articles/1881974.html最近在几种图形api与渲染引擎环境中来回切换,比较下矩阵运算opengl 右手坐标系 列向量 左乘 列主序存储矩阵osg 右手坐标系 行向量 右乘 行主序存储矩阵d3d 左手坐标系 行向量 右乘 行主序存储矩阵ogre转载 2012-03-26 15:52:41 · 1506 阅读 · 0 评论 -
骨骼动画-Maya制作及Ogre渲染
1 概述简述骨骼动画的制作,分为Maya中制作模型、插件导出为Ogre形式和Ogre中渲染三个部分。2Maya中制作模型(以圆柱体为例)(1)执行菜单Create→Polygon Primitives→Cylinder创建一个圆柱体。(2)右侧属性栏INPUT设置polyCylinder1的Subdivisions Height为20,以细分模型,获取较好的变形效果。(3)平移原创 2012-03-27 12:14:23 · 3053 阅读 · 4 评论 -
Ogre及C++程序日志文件
static void My_Log(float rx, float ry, float rz){ char* filename="my_test1.log"; FILE *fo; fo = fopen(filename,"a"); if(fo == 0){ return; } fprintf(fo,"BVH: x:%f; y:%f; z:%f \r\n",rx,ry,r原创 2011-10-20 19:15:22 · 1098 阅读 · 0 评论 -
Maya中模型表面任意点处设置单骨骼(MEL)
int $num[] = {4313,4185,4170,4188,4172};int $n = `size($num)`;for ($i = 0; $i < $n; $i++){ float $p[] = `pointPosition face_noSeam.vtx[ $num[$i] ]`; select -cl; joint -p $p[0] $p[1] $原创 2012-03-28 13:10:22 · 2605 阅读 · 0 评论 -
Ogre着色方式和光照模型(shading mode vs lighting model)
(1) 着色方式shading Ogre有三种着色方式,分别为shading flat/gouraud/phong。当动态光照打开时,该选项的作用是生成每个顶点的颜色,决定是否在该三角面上插值及如何插值。Flat不进行插值,每个三角面的颜色都由该三角面的第一个顶点色决定;Gouraud对三角面上每个顶点颜色进行线性插值计算;Phong对三角面上的顶点法线进行插值,并以此决定每个像素原创 2012-06-05 17:30:05 · 3847 阅读 · 0 评论 -
蒙皮算法LBS和DQ比较
Ogre 1.8 RC中已经包含了DQ的实现,但是目前只能处理每顶点双骨骼的情况,参考论文《Geometric skinning with approximate dual quaternion blending》,我对其进行了扩充,能够实现每顶点四骨骼的情况,并进行了简单的速度比较。首先是用LBS的软件实现,帧率约为380。结果如下然后是LBS的GPU实现,帧率约为510原创 2012-05-22 16:39:16 · 6583 阅读 · 1 评论 -
LightHouse3D的GLSL教程
英文教程:http://www.lighthouse3d.com/tutorials/glsl-tutorial/中文翻译:(一)图形流水线(二)在OpenGL中使用GLSL(三)在OpenGL中向Shader传递消息(四)Shader的简单示例(五)卡通着色(六)逐顶点的光照(七)逐像素的光照(八)纹理贴图(九)其他说明原创 2012-06-13 22:18:44 · 1953 阅读 · 0 评论 -
最简单的Ogre系列之四——球体场景查询
Ogre中集成了简单的碰撞检测查询,包围体方面只有AABB和Sphere两种场景查询,没有层次包围体的概念,可以作为最基础最简单的碰撞检测。下面是我实现的代码,其中的BaseApplication可以见以前的博客,模型资源Sinbad和Sphere都是Ogre自带的。#ifndef __Ogre_Rigid_Simple__H__#define __Ogre_Rigid_Simple__原创 2012-06-14 10:43:09 · 2759 阅读 · 0 评论 -
最简单的Ogre系列之五——AABB场景查询
在球体场景查询的基础上,增加了AABB场景查询,并给与了碰撞次数的显示。需要设置的全局变量是int mCollisionNumber;// OgreBitesOgreBites::ParamsPanel* mCollisionPanel;下面的函数是设置碰撞次数的显示//-----------------------------------------------原创 2012-06-14 16:32:55 · 3028 阅读 · 0 评论 -
Ogre中实现Blend Shape / Pose Animation
Blend shape通常用于人脸动画,Ogre例子Facial Animation就是这样实现的,不过换了种说法,叫做Pose Animation。而这个例子中混杂了Pose Animation和一般的Animation,不容易看清具体是怎样实现的Blend shape。因此,我打算简化它的实现步骤,只保留最有用的代码。当然前提是读一读Maya的形状融合变形器Blend Shape,了解了怎原创 2012-02-21 23:16:01 · 3249 阅读 · 4 评论 -
Ogre中控制HLSL参数
首先在定义HLSL材质文件中添加需要控制的参数,如fragment_program test_fs hlsl{ source test.hlsl target ps_3_0 entry_point test_fs default_params { param_named testParam float 0.0 }}原创 2011-12-25 22:03:08 · 1439 阅读 · 0 评论 -
Normal Mapping整理资料
1. Bump Mapping概述1.1 什么是BumpMapping我们知道,如果几何体表面有高低不平的凹凸,那么表面上各点的法线方向就会不同,那么当光照射到这些点上时,各点光照产生效果就不一样,那么我们最终看到的各点就是凹凸不平的。如果几何体表面是平的,但是各点的法线方向各不相同,当用光照模型进行光照计算后,我们看到最终渲染出来的图会是什么样呢?会看到高低不平的凹凸效果。基于这种思原创 2011-12-25 22:24:20 · 2636 阅读 · 0 评论 -
最简单的Ogre系列之二——画线
在原创 2011-04-15 17:55:00 · 5783 阅读 · 0 评论 -
最简单的Ogre系列之一——Ogre框架程序(不使用ExampleListener/Application)
本文参考Ogre官网上的MinimalApplication写了一个最简单的Ogre程序,不包含任何资源文件,当然了,也没有任何功能: )。本文写作的初衷是:(1)ExampleListener/Application包含的内容过于丰富,不便于在此基础上写出简单的程序应用,如2D程序。它需要的资源文件和相应的配置文件对于简单的程序显得臃肿。(2)现有的MinimalApplication混淆了Listener和Application,而且将所有文件写到了一个程序里面,文档结构不清晰。(3)更重要的是通过自己原创 2011-04-14 20:01:00 · 3376 阅读 · 0 评论 -
MeshLab的ply模型转化为Ogre所需的mesh模型(一)
最近希望将MeshLab的ply模型转化为Ogre的mesh模型,最初的思路是:(1)在MeshLab中将ply模型转化为Maya支持的obj模型;(2)利用插件,在Maya中将obj模型导出为mesh模型。上述思路是可行的,但导出后发现虽然面片数目没变,但顶点数目增加了很多。由原创 2011-07-25 19:00:33 · 5949 阅读 · 1 评论 -
Ogre自己创建Mesh
官网上有教程,只是拷贝代码时格式混乱,还得自己调整,故讲自己调整好的保存一下。void createColourCube() { /// Create the mesh via the MeshManager Ogre::MeshPtr msh = MeshManage原创 2011-07-25 16:48:02 · 2158 阅读 · 0 评论 -
不使用SampleBrowser创建Ogre应用的框架
Ogre 1.7引入了SampleBrowser,可以浏览30多个例子,无需单个编译单个浏览,可以说是一大进步。但通常我们创建的应用程序只有一个例子,不需要使用SampleBrowser;而且带有SampleBrowser的程序结构比较混乱,其实也是没有必要的。而如果采用Ogre原创 2011-07-13 18:20:47 · 2627 阅读 · 0 评论 -
Ogre 处理顶点/索引数据
处理Maya、3D Max模型时,我们首先需要处理顶点/索引数据。这里分两步进行:(1)得到顶点/索引数据这里可以参考OGRE官网上的代码,需要注意的是官网上参数Mesh为指针类型,而今Mesh已经有了MeshPtr类作为Mesh的指针。代码如下: void getMeshInfo(const Ogre::MeshPtr mesh, size_t &原创 2011-06-24 15:51:00 · 3133 阅读 · 3 评论 -
Ogre中的人眼模型渲染
今天程序终于调试成功,记录一下实现的过程。(一)首先就是眼睛模型的提取。完整的头部模型用ply文件表示,用MeshLab读取后,显示顶点数为6292,面片数为12280:在ply文件中有眼睛顶点和面的参数信息,可以通过一个小程序来单独提取。为了后面顶点变换的方便,原创 2011-08-05 11:16:24 · 2288 阅读 · 2 评论 -
MeshLab的ply模型转化为Ogre所需的mesh模型(二)
在前一篇文章中,介绍了将ply文件的顶点和纹理数据转化成mesh文件的方法,但还没有纹理数据,这篇文章给出的是添加纹理的方法。代码如下:/* * File: CxMesh.h * Author: zhuxiaoyang (cgnerds@gmail.com)原创 2011-08-05 15:21:12 · 3188 阅读 · 1 评论 -
Ogre利用OpenCV实现视频纹理
由于Ogre自身没有实现视频纹理,我们需要自己想办法读取视频并显示到某个物体上。网上已有人通过TheoraVideoPlugin实现视频播放,但需要编译libogg等几个第三方库,其自身带的Demo也不完善,不便于利用。由于最近在搞OpenCV,就想到是不是可以通过OpenCV来原创 2011-09-07 23:21:58 · 4427 阅读 · 4 评论 -
使用Ogre自带UI(SdkTrays)创建应用程序
(1)主程序界面采用SampleBrowser包含文件为FileSystemLayerImpl.h,FileSystemLayerImpl.cpp,SampleBrowser.h和SampleBrowser.cpp共四个文件。创建项目的时候选择Windows应用程序。(2)运行程序根据Ogre自带例子修改,创建的时候选择DLL。代码如下:Motion原创 2011-11-24 16:53:35 · 3447 阅读 · 0 评论 -
Ogre中实时切换多个模型
通过按主键盘的1和2键可切换两个模型。代码如下:MeshViewer.h#ifndef __MeshViewer_H__#define __MeshViewer_H__#include "BaseApplication.h"using namespace Ogre;using namespace OgreBites;class MeshViewer : public Bas原创 2011-11-24 17:01:34 · 1660 阅读 · 0 评论 -
Ogre中使用FMOD作为声音引擎(一)
准备工作:1.写一个能正确运行的OGRE程序,越简单越好。我采用的是BaseApplication。2.下载FMOD声音引擎并安装,下载版本为FMOD Ex Programmers API,当前稳定版为4.38.01。3.下载官网上讲OGRE和FMOD相结合的SoundManager例子。4.给程序添加相应的文件,在FMOD安装路径下,如D:\Program Files\FMOD原创 2011-11-16 20:06:12 · 3890 阅读 · 0 评论 -
Ogre中将法线贴图和硬件蒙皮结合
原文链接:http://www.ogre3d.org/tikiwiki/Normal+Mapping+with+Hardware+Skinning+and+Specular&structure=Cookbook原本标题:Normal Mapping with Hardware Skinning and Specular - Combined normal mapping and hardwar翻译 2011-12-11 21:31:03 · 2710 阅读 · 0 评论 -
Ogre中使用HLSL的一个例子
本文主要参考的是http://www.ogre3d.org/tikiwiki/HLSL&structure=Cookbook,并据此写了一个在Ogre中使用HLSL的例子。在Ogre中使用HLSL主要分为三部分,首先是材质脚本的编写,其次是顶点shader和片段shader的编写,最后是在应用程序中使用以上程序。我这个例子的功能是将一个模型赋予纹理贴图。详细的就不解释了,看参考的网址即可,主要是注原创 2011-12-10 16:05:07 · 2234 阅读 · 0 评论 -
Ogre粒子编辑器ParticleUniverse
最近需要使用粒子系统制作一些特效,由于没有美术人员的帮助,制作难度可想而知。在苦闷中,找到了ParticleUniverse,这也是Torchlight采用的粒子系统。ParticleUniverse包括Particle Universe Editor和Particle Universe Plugin两部分,目前最新的版本是1.5.1。官方购买链接是http://www.fxpression.co原创 2013-06-30 23:05:28 · 7483 阅读 · 3 评论