第十七章:户外场景

本章我们将会学习如何在3D游戏中制作户外场景,包括天空、海洋、地形等。 天空 3D游戏中的天空有很多实现方法,总的来说,皆是障眼法。最简单的手法不过是改变画面的背景色,让玩家“感觉”到天色的变化。 如果在玩家头顶上放置一个平面,再把云朵、太阳、星星、月亮等图片“贴”上去,就可以混合成类似下面的效果。 这种技术称为“天空面(SkyPlane)”。 显然,这种方法是很容易露馅的。当玩家的视野足够远时, ...

第十六章:物理引擎

牛顿的苹果 长久以来,哲学领域有一个争论不休的话题,就是这个世界有没有独立意志? 有一种观点认为世界是有意志的,但是它的意志与人的表现形式不同。天道无私,对世间万物并无任何偏爱。另一种观点认为世界是无意识的,它的背后并无一个主宰来决定应该怎么做,只是按照大道规则自然运转。事实上这是一个无法证伪的问题,因为具有独立意志,就意味着不需要任何外在来证明其存在。 这个问题只对思考它的人有意义,最终取决于人们如何与世界相处。世界孕育了各种生灵,其中人类天生便开启了灵智。如果我们有意识,那这个孕育了我们的世界呢? 汉语中有个话说得很有意思,叫做“采天地之灵气,吸日月之精华”。很多人幻想世界上有种看不见摸不着的“灵气” ...

第十五章:碰撞检测

碰撞与相交 碰撞检测这个词通常有两种含义,一种是物理意义上的碰撞检测,另一种是数学意义上的碰撞检测。本章讨论的是纯数学的碰撞检测,即判断物体之间是否相交(或包含、重合)、计算交点、预测相交时刻等。“物理引擎”则是在碰撞检测的基础上又增加了“物理”因素,模拟力与力之间的相互作用,这个内容将在下一章讨论。 显而易见,数学碰撞检测比物理碰撞检测的速度要快,而且消耗的内存也更少,因为压根就不用考虑质量、能量、动量、速度、加速度等物理因素。类似于鼠标拾取、视线范围等功能, ...

第十四章:特效

在jMonkeyEngine中,我们有3种实现特殊视觉效果的工具。 后期滤镜 FilterPostProcessor & Filter 场景处理器 SceneProcessor 粒子发射器 PraticleEmitter 后期滤镜 在游戏场景渲染完成后,我们可以使用滤镜(Filter)对画面进一步加工。在3D游戏中,下列效果通常都是用滤镜来实现的: 雾化(Fog) 马赛克(Mosaic) 玻璃(Glass) 雨雪(Rain / Snow) ...

MabiPE开发日志

这个端午节我没有继续写教程,而是捡起了一个被我暂停了的兴趣项目:洛奇口袋版。 之所以暂停这个项目,主要是因为开发过程中遇到了一些古怪的问题,无论我怎么调试,都搞不清楚错在哪里。 播放骨骼动画时,角色模型被肢解了。 我希望通过手动拖拽进度条来控制动画,但是我不知道该怎么实现。 模型的影子会突然消失。 角色模型的部件之间有裂缝。 人类/精灵的模型原点在肚脐处,不在脚底。这导致骨骼动画绑定异常。 经过几个月的学习之后,在这个端午节总算是解决了前2个问题,其他问题我也有信心解决了。 项目介绍 首先我还是要介绍一下这个项目。 “洛奇(Mabinogi)”是一款韩国NEXON公司出品的生活类3DMMORPG,我从大学开始玩这个游戏, ...