关于C++,我觉得好的设计法则
作者:volfmath 日期:2009-05-02
Ogre中的插件系统组织方式
作者:volfmath 日期:2009-01-01
众所周知Ogre今天能在开源社区里占据一席之地,得益于他的插件化架构方式。
在Ogre中我们喜欢把这个方法叫“热驱”,Ogre对插件的加载就像USB那样可以随时“热插拔”。那Ogre究竟是如何做到的呢,让我们来分析分析,OgreDynLib就知道了。
引用内容
void* DynLib::getSymbol( const String& strName ) const throw()
{
return (void*)DYNLIB_GETSYM( m_hInst, strName.c_str() );
}
在Ogre中我们喜欢把这个方法叫“热驱”,Ogre对插件的加载就像USB那样可以随时“热插拔”。那Ogre究竟是如何做到的呢,让我们来分析分析,OgreDynLib就知道了。
引用内容void* DynLib::getSymbol( const String& strName ) const throw()
{
return (void*)DYNLIB_GETSYM( m_hInst, strName.c_str() );
}
3D美术现在也不好当
作者:volfmath 日期:2008-11-30
美术虽说是个艺术行业,但是一跟3D扯上关系。就需要懂很多东西。美术什么都不知道的话会给整个游戏制作造成很大的问题,甚至是半路流产。
综合起来一般有以下几个问题。
1.在设计之初,不考虑好比如一个大场景的规划。包括对场景的分割,遮挡等问题处理,在日后游戏完成时,会导致机卡的情况发生,就是我们常说的“显卡杀手”。比如没有处理好遮挡,明明看不到的物体也全画出来,导致DrawCall巨多。
2.不懂3D的一些常识,比如固定管线,像素融合的一些问题,Alpha Blend问题等等。结果是常常一些东西做出来后跟想象的不一样,比如用了addtive blending,然后用了固定管线的雾化,就会导致整个物体发白。
3.没有3D美术经验,做出来的模型布线乱七八糟的,导致日后在做CG的时候非常困难,模型不能被多次重用等。
综合起来一般有以下几个问题。
1.在设计之初,不考虑好比如一个大场景的规划。包括对场景的分割,遮挡等问题处理,在日后游戏完成时,会导致机卡的情况发生,就是我们常说的“显卡杀手”。比如没有处理好遮挡,明明看不到的物体也全画出来,导致DrawCall巨多。
2.不懂3D的一些常识,比如固定管线,像素融合的一些问题,Alpha Blend问题等等。结果是常常一些东西做出来后跟想象的不一样,比如用了addtive blending,然后用了固定管线的雾化,就会导致整个物体发白。
3.没有3D美术经验,做出来的模型布线乱七八糟的,导致日后在做CG的时候非常困难,模型不能被多次重用等。
Ogre & Scaleform整合
作者:volfmath 日期:2008-07-15
如果你玩Crysis,你会觉得他的UI很帅很帅,因为他使用全屏动画,
这完全依赖于Scaleform的高超表现,Scaleform真是个好东西啊。
www.scaleform.com
他把Flash影片,用三角形描绘出来,让你能制作出传统位图不能解决的UI效果。
图片由于公司的保密,只能稍后放出。至于scaleform的项目看看质量效应,Crysis这样的大作就可以了。
另外使用Scaleform的好处是,你的编辑工具将非常好,因为可以使用Flash来编辑。所以强大度可想而知,比CEGUI LayoutEditor要强不知道多少倍了。
这完全依赖于Scaleform的高超表现,Scaleform真是个好东西啊。
www.scaleform.com
他把Flash影片,用三角形描绘出来,让你能制作出传统位图不能解决的UI效果。
图片由于公司的保密,只能稍后放出。至于scaleform的项目看看质量效应,Crysis这样的大作就可以了。
另外使用Scaleform的好处是,你的编辑工具将非常好,因为可以使用Flash来编辑。所以强大度可想而知,比CEGUI LayoutEditor要强不知道多少倍了。
Ogre骨骼动画融合
作者:volfmath 日期:2008-06-22
Ogre中的动画纹理
作者:volfmath 日期:2008-05-21
在最近一个休闲游戏项目中,有一个需求:需要一个瞄准心。
由于需要瞄准的地方环境非常复杂(其实就是模型很多,不规则),所以如果用求碰撞的方法去计算,再把一张纹理图贴上去是非常麻烦的 :)
所以我考虑了用纹理投影,Texture Decal。
这个在Ogre中级教程中有个例子。
PS:题外话,Texture Decal可以无缝的贴到模型上,但是也有很多局限性,比如每一个Decal需要一个Pass,如果Decal太多的话就没办法了,多了Pass会大大影响到效率。
由于需要瞄准的地方环境非常复杂(其实就是模型很多,不规则),所以如果用求碰撞的方法去计算,再把一张纹理图贴上去是非常麻烦的 :)
所以我考虑了用纹理投影,Texture Decal。
这个在Ogre中级教程中有个例子。
PS:题外话,Texture Decal可以无缝的贴到模型上,但是也有很多局限性,比如每一个Decal需要一个Pass,如果Decal太多的话就没办法了,多了Pass会大大影响到效率。
Ogre实现场景动态装载卸载
作者:volfmath 日期:2008-05-03
经常玩日本游戏的朋友们应该都知道。日本RPG中经常有一些场景切换的画面。比如在角色走动过程中,突然进入战斗状态,他会先把先前的场景渲染成一张图片,然后移开这张图片,在渲染另一个场景,譬如是战斗场景。
最近在休闲网络游戏时,也碰到一个这样的需求。就是在一局游戏中动态的切换场景。
这个项目时间比较紧迫,场景直接用了解析OFusion的OSM文件来做。但是我遇到一些问题是OfusionLoader这个东西,只有装载没有卸载。如果这样的话,就很难满足项目中的需求。(就算没有这个需求,卸载场景还是需要做的)
最近在休闲网络游戏时,也碰到一个这样的需求。就是在一局游戏中动态的切换场景。
这个项目时间比较紧迫,场景直接用了解析OFusion的OSM文件来做。但是我遇到一些问题是OfusionLoader这个东西,只有装载没有卸载。如果这样的话,就很难满足项目中的需求。(就算没有这个需求,卸载场景还是需要做的)






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