`
shuaiqixiao4
  • 浏览: 54444 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
社区版块
存档分类

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

    博客分类:
  • FLEX
阅读更多
Furry/DDM君:

很多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,和现在很多汽车,服装展示。
分享到:
评论

相关推荐

    三维立体图片制作大师v3.15

    在三维立体图片的制作过程中,首先,用户需要理解基本的立体图像原理,这包括视差原理和立体视觉的概念。视差是由于人眼从不同角度观察同一物体时产生的差异,而立体视觉则是大脑通过解析这两只眼睛接收到的不同图像...

    用VB实现的三维CAD绘图程序源代码

    三维CAD系统允许用户在虚拟空间中构建立体模型,进行尺寸调整、渲染、动画制作等。常见的商业CAD软件有AutoCAD、SolidWorks、CATIA等。用VB来实现这样的系统,开发者需要深入理解图形用户界面(GUI)的设计,以及...

    三维立体画制作软件

    压缩包内的文件包括“三维立体画制作.EXE”,这很可能是该软件的安装程序,用户可以双击运行来安装该软件。"readme.htm"文件通常是软件的使用指南或帮助文档,里面可能包含了软件的详细说明和操作教程。而"down.91....

    creator建模的FLt格式F16战斗机三维模型

    在IT行业中,三维建模是数字艺术和游戏开发领域中的一个重要环节,用于创建虚拟环境和对象。本资源涉及的是一个使用creator软件创建的FLt格式的F16战斗机三维模型,这为我们提供了一个深入理解三维建模技术以及特定...

    三维程序创意设计专项赛.pdf

    ### 三维程序创意设计专项赛知识点解析 #### 一、赛事背景与意义 - **虚拟现实(VR)技术概述**:虚拟现实技术是一种基于计算机软硬件技术、传感技术、机器人技术、人工智能及行为心理学等多学科交叉融合的技术...

    少儿三维编程程序软件~可用于白名单

    【少儿三维编程程序软件】 在当今的数字时代,编程已经成为一项重要的技能,而少儿三维编程程序软件则为儿童提供了一种生动有趣的方式来学习编程。这种软件通常设计得易于理解和操作,旨在激发孩子们对编程的兴趣,...

    三维弹球(opengl)

    总的来说,制作三维弹球游戏是一个很好的学习OpenGL和计算机图形学的实践项目。它涵盖了从基本的图形绘制到高级的物理模拟和视觉特效的诸多方面,对理解3D图形渲染原理和提升编程能力都有极大的帮助。虽然初学者可能...

    三维MAYA拓展—基础—三维动画制作简介PPT教案.pptx

    【三维MAYA拓展—基础—三维动画制作简介】PPT教案主要涵盖了三维动画的基本概念、发展历史、设计流程以及MAYA软件的介绍。以下是详细的解析: 1. **3D动画及其发展史** - 动画的概念源于拉丁文,指的是赋予生命,...

    三维图形学CGAPPS

    首先,我们要理解的是基本的三维坐标系统。在三维空间中,每个点都有三个坐标:X、Y和Z,它们共同定义了空间中的位置。在CGAPPS中,我们通过变换矩阵来处理物体的位置、旋转和缩放,这些矩阵运算构成了图形学的基础...

    VC++ 三维图形绘制实例

    在VC++环境中进行三维图形绘制是一项复杂而有趣的任务,它涉及到计算机图形学的基本原理和Microsoft Visual C++编程技术。这个“VC++三维图形绘制实例”很可能是为了教授开发者如何使用VC++来创建交互式或者静态的3D...

    三维图工具

    随着计算机技术的飞速发展,三维图形的应用已经广泛渗透到我们生活的各个方面,从影视特效、游戏开发,到建筑设计、医学成像等,三维图制作工具为这些领域提供了强大的技术支持。这类工具的核心价值在于其将复杂的...

    三维旋转效果幻灯

    在"三维旋转效果幻灯"中,SWF文件可能包含预先制作好的3D动画或者图片切换效果。通过JavaScript调用,SWF可以在网页上播放,提供流畅的视觉体验。由于Flash已经逐渐被淘汰,现代浏览器可能不再支持SWF,因此在新项目...

    ACK 3D三维动画语言包源程序包

    ACK 3D三维动画语言包源程序包是一个专为3D动画制作设计的软件开发工具。这个源程序包包含了用于创建、编辑和控制三维动画的编程接口和资源,旨在帮助程序员和开发者深入理解和定制3D动画流程。源代码的提供意味着...

    国内外主流的三维GIS软件

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

    Java 3D交互式三维图形编程

    Java 3D是一种基于Java的高性能、跨平台的三维图形应用程序接口(API)。它提供了丰富的功能来创建和管理复杂的3D场景,使得开发人员能够轻松地在Java应用程序中集成三维图形。Java 3D构建于标准的Java SE平台上,...

    基于c++开发三维人脸造型

    在开发三维人脸造型时,我们需要掌握C++的基本语法、类和对象、函数、内存管理(包括堆和栈)、异常处理等。 2. **OpenGL**:OpenGL是一个跨语言、跨平台的图形库,用于渲染2D和3D图形。在这个项目中,开发者可能...

    c语言三维图形变换c语言三维图形变换.doc

    本文档详细探讨了如何在C语言环境下实现三维图形变换,包括变换矩阵的构建、旋转变换、缩放变换、平移变换、投影变换等基本操作,并给出了相应的C语言实现示例。 三维图形变换本质上涉及一系列数学操作,将三维空间...

    JAVA 3D交互式三维动画程序语言.rar

    这个压缩包“JAVA 3D交互式三维动画程序语言.rar”很可能包含了关于使用Java 3D API来构建三维动画和游戏的资源,如源代码、教程、示例项目以及可能的库文件。 Java 3D是Sun Microsystems开发的一个开源库,它提供...

    Visual C++OpenGL DirectX三维动画

    《Visual C++ OpenGL DirectX三维动画》是一门深入探讨游戏开发和图形编程的课程,主要针对初学者和有志于在3D游戏开发领域提升技能的程序员。本课程以Visual C++为开发环境,结合OpenGL和DirectX这两个强大的图形库...

    3D游戏引擎设计与实现

    在3D游戏引擎的设计过程中,首先需要理解的是3D图形的基本原理,包括三维坐标系、向量与矩阵运算、光照模型以及纹理映射等基础知识。DirectX是微软推出的一套用于游戏和多媒体编程的接口,其中Direct3D是处理3D图形...

Global site tag (gtag.js) - Google Analytics