预览模式: 普通 | 列表

Ogre中文社区上线

大家好!Ogre中文社区上线!
花了一点时间 用了Discuz
因为觉得Gameres的Ogre版太笼统了。
而中国学习Ogre的人越来越多,所以开了论坛。
希望大家支持

查看更多...

Tags: OGRE 开源引擎 3D技术 论坛

分类:My Life | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 5209

Ogre中的层级动画处理方法

层级动画(hierarchical Animation)是一个在游戏中非常常见的部分。比如卡通画的大风车、小人骑的自行车等等。

    他们并不是Ogre中的骨骼动画,或者只能说是Ogre骨骼动画的一个特例。(因为没有骨骼权重的影响)。因此美工再做完动画后不能导出Ogre所需要的.skeleton文件。
    层级动画的信息好像丢失了?
    其实不然,我们用Ofusion导出后,打开osm文件。osm文件其实就是一个XML格式文件。你会发现其实信息完全都被记录下来了,每个关键帧的位置,角度,缩放以及关键时间点。我们只要用tinyXML把他解析出来就好了。

查看更多...

Tags: 3D技术 OGRE 开源引擎 游戏 动画

分类:Tech | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4692

Ogre教程第五篇

了解了帧监听这个东西以后就可以知道怎么样在“操作”Ogre场景中的人物了。这是互动最必要的一个部分。

 

在我们走得更远之前,还是先介绍一下TutorialFrameListener类里的一些变量:

bool mMouseDown;       // 鼠标左键是否在上一帧被按下
Real mToggle;          // 直到下一次触发的时间
Real mRotate;          // 滚动常量
Real mMove;            // 移动常量
SceneManager *mSceneMgr;   // 当前场景管理器
SceneNode *mCamNode;   // 当前摄像机所附在的场景节点

mSceneMgr拥有一个目前SceneManager的指针,mCamNode拥有目前SceneNode并且绑定着摄像机。mRotate和mMove是旋转和移动的变量。如果你想移动或旋转的更快或更慢,改变这两个变量的大小就可以了。 另外两个变量(mToggle和mMouseDown)控制我们的输入。我们将在本章中使用“非缓冲”(unbuffered)鼠标和键盘输入(“缓冲”(buffered)输入将是下一张的议题。这意味着我们将在帧监听器查询鼠标和键盘状态时调用方法。

当我们试图用键盘来改变屏幕中物体的状态时,会遇到一些有趣的问题。如果知道一个键正被按下,我们会去处理它,但到了下一帧怎么办?我们还会看见它被按下,然后再重复地做操作吗?在一些情况(比如用方向键来移动),我们是这样做的。然而,我们想通过“T”键来控制灯的开关时,在第一帧里按下T键,拨动了灯的开关,但在下一帧T键仍然被按着,所以灯又打开了...如此返复,直到按键被释放。我们必须在帧与帧之间追踪这些按键状态,才能避免这个问题。我将介绍两种不同的方法来解决它。

mMouseDown用来追踪鼠标在上一帧里是否也被按下(所以如果mMouseDown为真,在鼠标释放之前我们不会做同样的操作)。mToggle指定了直到我们可以执行下一个操作的时间。即,当一个按键被按下去了,在mToggle指明的这段时间里不允许有其它动作发生。

查看更多...

Tags: OGRE 游戏 开源引擎 输入输出

分类:Tech | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4751

Ogre教程第四篇

在这篇教程里将说一些跟输入输出相关的东西。提到输入输出就需要提出一个帧监听(FrameListener)的概念。在Ogre中我们可以注册一个类去接收消息当一帧被渲染到屏幕之前和之后。FrameListener接口定义两个函数:

分别是:

bool frameStarted(const FrameEvent& evt)
bool frameEnded(const FrameEvent& evt)

在Ogre的主循环(Root::startRendering)中,首先是Root object在所有注册的FrameListeners中调用frameStarted方法,然后Root object会渲染一帧,最后调用frameEnded方法。这样直到有任意一个FrameListerner的frameStarted后者frameEnded函数返回flase为止。这些函数的返回值的主要意思是“保持渲染”。如果返回否程序就会退出。

查看更多...

Tags: 图形学 图形引擎 教程 一起学 程序 输入输出

分类:Tech | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2866

Direct3D ShaderX提供下载

ShaderX是ATI公司出的用来对抗NV的GPU精粹的一系列书籍。
现在好像已经出到了第五本,现在先放出ShaderX第一本,其他的将后续放出。

简介:
我们已经看到曾经越来越多图形性能在PC上自从3dfx发布Voodoo卡在1995以来。虽然这个性能已经允许PCs运行更快的图形,它可能不允许更快的运行图形。基本限制他们大部分的固定渲染管限在PC图形加速卡沙锅内更快,意味着硅片设计者已经把图形算法集程到图形卡芯片,产生的结果是,游戏和应用开发使用不会使用这些指定固定的算法。

查看更多...

Tags: 下载 图形学 3D技术 游戏

分类:Down | 固定链接 | 评论: 3 | 引用: 0 | 查看次数: 5419

翻译资料下载<Pro.OGRE.3D.Programming>

中文翻译名:Ogre3D程序设计语言
简单介绍:这本书详细介绍了Ogre 3D引擎的用法,通过这本书你将了解到什么是Ogre,什么是最重要的东西。Ogre提供了一个面向对象的渲染3D场景的接口,她依赖于D3D或OpenGL。Ogre可以运行在Windows,Mac OS X和Linux上。


查看更多...

Tags: OGRE 游戏 3D技术 下载

分类:Down | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4783

Ogre教程第三篇

这篇教程将讲解摄像机和视口的一些简单用法。

在3D游戏中摄像机是一个非常重要的东西。他用来观察所有的场景。摄像机有点类似一个场景节点,可以设置它的位置,以及对他进行偏移、滚动、倾斜等操作。摄像机的位置是跟父节点有关的。视口可以理解为使摄像机和场景的一个交集。当我们需要处理多个摄像机来观察场景时,视口就显得非常重要了,比如在console game中两个人或者几个人可以互不干扰的观察者同一个场景的不同角度,就需要这样的技术了。

下面我们要利用ogre里面的一些方法来建立一个视口,并把它提供给正在使用的摄像机。 

//创建一个视口
Viewport* vp = mWindow->addViewport(mCamera);
//下面要做的是设置背景颜色,为了以后处理光照,在这里我把背景设置成黑色
vp->setBackgroundColour(ColourValue(0,0,0));
// 设置摄像机的纵宽比,这是对4/3屏幕而言的一个默认值,如果是16/9的屏幕需要改变纵宽比。
mCamera->setAspectRatio(Real(vp->getActualWidth()) / Real(vp->getActualHeight()));

Tags: 图形学 图形引擎 教程 一起学 程序 摄像机 视口

分类:Tech | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2976

Ogre教程第二篇

这一章节里将做一些布置场景最基本的工作。包括添加一些实体等。
首先我们需要继承ExampleApplication。
#include "ExampleApplication.h"
class MyApplication : public ExampleApplication
{
protected:
public:
MyApplication()
{
}
~MyApplication()
{
}
protected:
void createScene(void)
{
}
};

目前我们什么也没有做,只是完完全全继承了ExampleApplication里所有的东西,如果你编译通过后,在运行的时候可以用WASD键移动,鼠标来转镜头,ESC键来退出程序。

接着要做一些具体的工作了。在场景中添加实体,以及灯光等。

setAmbientLight( ColourValue( 1, 1, 1 ) );//设置环境光(以后会详细说)
Entity *ent1 = mSceneMgr->createEntity( "Robot", "robot.mesh" );
//创建实体
SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode" );
//设置场景节点
node1->attachObject( ent1 );

 

设置环境光的时候直接设置了白色(红绿蓝都是1),createEntity有两个参数,第一个参数是给创建实体的一个唯一标识,第二个参数是具体使用的实体模型。这样就在屏幕上显示了一个机器人。

查看更多...

Tags: 程序 一起学 教程 图形引擎 图形学 OGRE

分类:Tech | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 3133

Ogre教程第一篇

从这篇教程开始将由浅入深的介绍Ogre,假定你已经有一定的c++基础,至少用c++写过一定的代码,否则不要企图从Ogre中学习到c++的基础知识。

本章将介绍Ogre中场景管理器组织结构以及实体和场景管理的一些知识。

众所周知场景管理器是游戏中最重要的部分之一,可以毫不夸张的说是整个游戏的基石。记住所有在屏幕上显示的东西都是由场景管理器来管理的,当你添加物体时,场景管理器要了解他们的位置,当你添加摄像机(Camera)来观察场景是,场景管理器也要了解他们。当你添加平面(Plane),布告牌(billboard),灯光(light)等等等等,场景管理器都要了解他们。

查看更多...

Tags: OGRE 一起学 教程 图形引擎 图形学

分类:Tech | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4234