Ogre中文社区上线
作者:volfmath 日期:2008-01-23
Ogre中的层级动画处理方法
作者:volfmath 日期:2008-01-17
他们并不是Ogre中的骨骼动画,或者只能说是Ogre骨骼动画的一个特例。(因为没有骨骼权重的影响)。因此美工再做完动画后不能导出Ogre所需要的.skeleton文件。
层级动画的信息好像丢失了?
其实不然,我们用Ofusion导出后,打开osm文件。osm文件其实就是一个XML格式文件。你会发现其实信息完全都被记录下来了,每个关键帧的位置,角度,缩放以及关键时间点。我们只要用tinyXML把他解析出来就好了。
Ogre教程第五篇
作者:volfmath 日期:2008-01-11
了解了帧监听这个东西以后就可以知道怎么样在“操作”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指明的这段时间里不允许有其它动作发生。
Ogre教程第四篇
作者:volfmath 日期:2007-12-18
在这篇教程里将说一些跟输入输出相关的东西。提到输入输出就需要提出一个帧监听(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为止。这些函数的返回值的主要意思是“保持渲染”。如果返回否程序就会退出。
Direct3D ShaderX提供下载
作者:volfmath 日期:2007-12-17
现在好像已经出到了第五本,现在先放出ShaderX第一本,其他的将后续放出。

简介:
我们已经看到曾经越来越多图形性能在PC上自从3dfx发布Voodoo卡在1995以来。虽然这个性能已经允许PCs运行更快的图形,它可能不允许更快的运行图形。基本限制他们大部分的固定渲染管限在PC图形加速卡沙锅内更快,意味着硅片设计者已经把图形算法集程到图形卡芯片,产生的结果是,游戏和应用开发使用不会使用这些指定固定的算法。
翻译资料下载<Pro.OGRE.3D.Programming>
作者:volfmath 日期:2007-12-10
Ogre教程第三篇
作者:volfmath 日期:2007-12-10
这篇教程将讲解摄像机和视口的一些简单用法。
在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()));
Ogre教程第二篇
作者:volfmath 日期:2007-12-04
首先我们需要继承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有两个参数,第一个参数是给创建实体的一个唯一标识,第二个参数是具体使用的实体模型。这样就在屏幕上显示了一个机器人。
Ogre教程第一篇
作者:volfmath 日期:2007-12-04
本章将介绍Ogre中场景管理器组织结构以及实体和场景管理的一些知识。
众所周知场景管理器是游戏中最重要的部分之一,可以毫不夸张的说是整个游戏的基石。记住所有在屏幕上显示的东西都是由场景管理器来管理的,当你添加物体时,场景管理器要了解他们的位置,当你添加摄像机(Camera)来观察场景是,场景管理器也要了解他们。当你添加平面(Plane),布告牌(billboard),灯光(light)等等等等,场景管理器都要了解他们。







![Validate my RSS feed [Valid RSS]](valid-rss.png)
![Validate my Atom 1.0 feed [Valid Atom 1.0]](valid-atom.png)
