`

三维程序游戏制作基本常识

阅读更多

很多flash3d初学者都是从flash或平面绘制转型的,对三维方面的常识的确理解甚少,即使是天天玩三维游戏的人。虽然这些信息对一些三维经验丰富的朋友是简单的不能再简单的东西,但写这一篇对某一些新上手的朋友是有必要的。

建模
除非简单几何体,任何复杂一点的模型和贴图位置,都只能靠其他三维软件导入,这不光是flash3d的常识,也是游戏制作的基本常识。

甚至很多朋友会以为既然用flash是可以‘画’图形的,那么用flash3d就能直接‘画’三维模型。
三维模型之所以叫做‘建’模,就一定和‘画’模有本质的区别。模型就像“一个灯笼框,外面粘着各种图画”一样,立体的‘灯笼框’肯定是不能简单的用笔‘画’出来的。

建模至少包括两个步骤:
1 模型的建立,每个顶点的空间位置的确定。
2 确定模型每个顶点对应的贴图位置,以便能够正确的贴图
而这两个步骤,人类不靠建模max,maya,xsi等等建模工具是无法完成的。

理论上来说,只要知道一个模型的所有顶点和对应的贴图位置,就能不靠三维软件也能建模,但问题就是稍复杂点的模型至少都是几百个点到几万个点,人类不靠三维软件是根本无法知道这些顶点和对应贴图的位置的。
具体如何导入外部模型,请参考《超简易papervision3D基础 第三篇 导入外部模型》->点击去教程
具体如何建漂亮的模型和贴图则是美工工作,网上有很多教程,和flash3d关系不大。电视剧难看,把电视抱着啃没什么用,对吧。


引擎
‘引擎’的定义现在看来已经包括三种:
1)      图形引擎
最 简单的理解就是一个成像的东西。把三维的数据变成图像,放映给观众。就像一个电视机一样,把接收到的数据信息变成图像。 这是我们最早称作‘引擎’的东西。它的目的就是减少游戏编程者的工作,因为图形编程的工作量很庞大的,避免每次重复开发,和让游戏编程者尽量把精力集中在 游戏本身的逻辑和规则的开发,而不是怎么显示图形上。现在很经典的游戏图形引擎比如DOOM,虚幻等等。Pv3d,away3d等等都是 ActionScript写的图形引擎。

2)      动力引擎
个人认为动力引擎最初的目的应该是“编程人员向动画人员发起的挑战”。以前的三维游戏,动态全是靠动画人员制作出来。有些简单游戏使用动画人员又有些不必要,简单动作希望能用程序模拟出来。
动力引擎的好处是每次模拟出来的动态随受力不同会有改变,这是动画师无法达到的,因为动画师做出什么动作就是什么,无法随机变化,头发,布料,高处下落,吹飞,拖扯都是动力引擎的强项。但弊端是无法制作出复杂的动态,比如说跳肚皮舞(=_=好冷)
所以现在的大作,一般都是动画师和动力引擎共同实现,动力引擎处理一些随机的动态,动画师(和动态捕捉)处理人物的基本动作。
游 戏界hover这个三维动力引擎是非常有名的。Box2d是一个可以说小巧完美的flash的二维动力引擎,用它可以做一些非常有趣的小游戏。Wow则是 我们flash3d的三维动力引擎,比起前两者还是非常不完善的。不知道以后会否有hover的支持,(shockwave是可以用hover的)

3)      游戏引擎
比 如说我们现在说的‘《上古卷轴》引擎’的意思就是说能够轻松做出自制任务的引擎,这种引擎制作者根本不用考虑游戏的规则,逻辑判断,或者图形效果等等,大 部分精力完全专著于制作任务就是了。也就是说,制作者根本对基本游戏规则没法修改,只能根据这个规则添加或改变内容。所以实际上这个东西以前是不叫做‘引 擎’的,只是现在大家都喜欢这么称而已。


什么是三维
从物理概念来说,所有屏幕上显示的东西,都不是三维的,都是二维的。只有我们这些能被摸到的东西才是‘真的三维’。我们能触摸到屏幕,但触摸不到屏幕里显示的美女,对吧。所以屏幕是三维的,显示的美女是二维,即使这个在现实中存在的美女真人是三维的。

但我们平常所说的‘三维’,实际上一种在平面上模拟三维的成像技术,它除了‘左右上下’的移动,还多了‘看起来像’是‘里外’的移动(其实就是缩放)。
和‘看起来是否立体,玩起来是否立体’没有任何关系。
举例:《红侠Joe》和《勇者斗恶龙7》都是卡通渲染,看起来像是二维画的,但都是‘三维游戏’
举例:DC上的《斑鸠》和PS2上的《魂斗罗》都是只能平面的移动飞机和人物的游戏,但他们都是‘三维游戏’

“三维”的最大不清楚的地方是,区分“即时(实时)演算三维”和“渲染播放三维”

其实,从本质上来说,这两个的区别是‘即时(实时)演算三维’的渲染一张图的时间只有0.0几秒,而‘渲染播放三维’渲染一张图的时间需要很多个小时。
另一个区分方法就是“是否有交互的可能性”
举 例:最终幻想10,12有很多玩家不能交互对白过场动画(不是指那种漂亮的渲染CG的过场动画),这些都是‘三维’的,虽然玩家不能交互,但有‘交互的可 能性’,就是说制作者愿意,玩家是可以对对白场景进行各种旋转操作的。而那种漂亮的渲染CG是没有‘交互的可能性’的,不管制作者愿不愿意。

电影,三维动画片都是用‘渲染播放三维’,里面有生动真实的光影,毛发,凹凸等等。‘渲染播放三维’的画面是可以无限完美的,但它的弊端是无法立即做出交互式的反应。导演开始渲染了什么镜头,观众就必须看什么画面。电影院没有观众自己能旋转镜头的说法吧。
但因为最终他们保存和播放都是以位图格式,所以我们都按游戏的观点,他们都是‘二维’的。所有三维电影都是游戏定义里的‘二维’,所以游戏开场动画这种不能交互的图像都是‘二维’的。

三维游戏中,玩家是需要立即交互反应的。我们不可能按一个前进键,然后傻坐着等1个月渲染出这个角色做出前进的动作吧。我们需要按前进键时,角色能立即作出动画上的反应。也就是说,如果渲染速度达不到0.0几秒渲染一张图,玩家就会觉得‘卡’。
正因为要达到这个速度,所以游戏画面虽然越来越华丽,但游戏角色始终比电影角色看起来要简陋些的原因

但随着图形技术和硬件的不断进化,几十年后这两个称呼也许会统一起来。

另:我们很多游戏制作和产品演示中,有一种把三维模型先渲染出几个方向存起来的方法。这些都是‘二维’的,即使模型看起来是三维的,也可以旋转。它的优势是对图形运算需求很低。弊端是旋转只能有开始渲染出来的方向,没渲染的角度就没有,旋转不流畅。

举例:游戏里暗黑破坏神1,2,和现在很多汽车,服装展示。

 

分享到:
评论

相关推荐

    国内外主流的三维GIS软件

     本文唱谈了十九个国内外主流的三维GIS软件,并对其基本特点、发展历程、应用等方面做了总结概述。由于作者水平有限,不足之处恳请读者批评指正。  国外三维GIS软件:  一重唱·美国谷歌公司:Google Earth--...

    基于OpenGL的井下开采虚拟现实系统关键技术研究

    以3dmax作为基本三维建模工具,利用OpenGL作为图形和场景驱动工具,VC++作为软件开发平台,借鉴目前成熟的三维游戏引擎制作方法开发了某煤矿井工开采虚拟现实系统,使用者使用鼠标、键盘等外围设备通过三维模型运动控制...

    精通DirectX.3D图形与动画程序设计.pdf

     本书主要面向对direct3d三维图形程序设计感兴趣的编程人员、游戏开发人员以及可视化仿真工程技术人员,也可作为高等院校相关专业和培训机构的direct3d程序设计用书。 目录: 第一部分 基础篇 第1章 ...

    开题报告-基于JAVA的俄罗斯方块游戏设计与实现.doc

    这款游戏最初是由苏联的游戏制作人 Alex Pajitnov 制作的,它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶 不思饭不想的那个俄罗斯方块时代。究其历史,俄罗斯方块最早还是出现在 PC 机上,...

    c语言实战105例源码

    70 三维视图制作  71 红旗图案制作  72 火焰动画制作  73 模拟水纹扩散  74 彩色的Photo Frame 75 火箭发射演示  76 恢复内存文本 77 挽救磁盘数据 78 建立和隐藏多个PRI DOS分区 79 ...

    计算机图形学pdf(可copy内容版)

    5.4 三维变换程序设计案例 5.5 课后练习 第 6 章曲线与曲面 6.1 曲线曲面参数表示的基础知识 6.1.1 非参数表示和参数表示 6.1.2 参数表示的基本特征 6.1.3 曲线段之间的连续性 6.1.4 曲线曲面设计中的几个概念 6.2 ...

    3D迷宫(源代码+演示程序)

    其实我在制作的时候为了简化,将二维迷宫的左上角与三维的原点重合,二维迷宫的右对应三维的X轴正方向,迷宫的下对应Z轴的正方向。 2、迷宫的“上、下、左、右”在三维中应该叫做什么? 在确定好迷宫的位置后,...

    C语言实战105例 含105个源代码

    实例70 三维视图制作 193 实例71 红旗图案制作 194 实例72 火焰动画制作 196 实例73 模拟水纹扩散 199 实例74 彩色的Photo Frame 201 实例75 火箭发射演示 203 第6部分 系统篇 实例76 恢复内存文本 ...

    《C语言实战105例》

    实例70 三维视图制作 193 实例71 红旗图案制作 194 实例72 火焰动画制作 196 实例73 模拟水纹扩散 199 实例74 彩色的Photo Frame 201 实例75 火箭发射演示 203 第6部分 系统篇 实例76 恢复内存文本 ...

    C语言实战105例源码.rar

    实例70 三维视图制作 193 实例71 红旗图案制作 194 实例72 火焰动画制作 196 实例73 模拟水纹扩散 199 实例74 彩色的Photo Frame 201 实例75 火箭发射演示 203 第6部分 系统篇 实例76 恢复内存文本 ...

    C语言实战105例源码

    实例70 三维视图制作 193 实例71 红旗图案制作 194 实例72 火焰动画制作 196 实例73 模拟水纹扩散 199 实例74 彩色的Photo Frame 201 实例75 火箭发射演示 203 第6部分 系统篇 实例76 恢复内存文本 ...

    OpenGL_参考手册.rar

    近年来,随着计算机技术的进步,我们跨入了一个三维时代,各种扣人心弦的三维游戏、能数字化地显示天气变化的气象服务、震撼人心的3D数字化特殊效果,无不使我们体验到三维世界的全新感觉。可视化、计算机动画、...

    VB编程资源大全(源码 其它4)

    o044_zm045.zip 一个非常酷的机器人的源程序,你可以自己制作你喜欢的机器人并保存起来,很有意思哦(137KB) 613,o043_004101102.zip TreeView的基本操作(5KB) 614,o042.zip 一个比较完整的源代码 ...

    c语言实用代码举例

     实例1利用库函数编写基本显示程序  实例2变量属性  实例3运算符与类型  实例4关于程序结构  实例5显示函数曲线图  实例6二分法选代的应用  实例7多变的立方体  实例8一维整型数组应用(1)  实例9一维整型...

    极好的 3D 示范实例程序:全景漫游vb版

    一个 3D 的全景漫游程序,它包含了制作 3D 游戏的许多基本技巧,例如:Z 缓冲, 纹理映射, 矩阵, 多角形排序和移动背景。程序中的 3D 世界包括一架飞机和一条小船和一些树,这样您将容易理解代码并自行修改为您需要的...

    C语言经典算法100例.rar

     实例1利用库函数编写基本显示程序  实例2变量属性  实例3运算符与类型  实例4关于程序结构  实例5显示函数曲线图  实例6二分法选代的应用  实例7多变的立方体  实例8一维整型数组应用(1)  实例9一维整型...

Global site tag (gtag.js) - Google Analytics