我一直想知道,游戏程序员如何将外部3D建模软件(如maya或3d max)中完成的游戏角色与用最喜欢的编程语言(如c或c ++)完成的实际游戏逻辑结合在一起.
你如何将这两件事结合在一起,从建模角色到编程,构建游戏的实际过程是什么?
让我想知道的一些事情是,你是从代码还是从3D模型编写角色动作?
例子真的很高兴看到.
大多数信息,如字符移动,实际上存储在代码之外.实际上这是一个非常简单的过程:
艺术家在Maya或其他任何地方制作3D模型,然后将其保存在文件中.让我们说他们称之为'Gollum.3D'.
现在''Gollum.3D'包含许多代表模型点,纹理和其他所有数字的数字.
程序代码然后读取文件'Gollum.3D' - 它的所有模型点,纹理和所有东西,然后做很多数学来计算3D场景看起来像所有代表模型的数字.
事实证明,游戏中的所有内容最终都与代码分开存储,代码只是读取它并在游戏运行时将它们组合在一起.当我说出一切 - 我的意思是一切!所有文本,生命点和武器伤害量的统计数据,菜单屏幕图像,甚至人工智能都与脚本中的程序代码分开存储.程序代码最终做得很少.
你可能听说过人们为游戏制作mods.修改者是编辑位于程序代码之外的数据的人,这反过来又将游戏改变为适合他们的方式.他们只是利用了一个事实,即游戏的基本内容(除少数核心内容之外)都没有写入程序的代码中.
与最喜欢的答案不同,我冒昧地说,如果你提到的是一个具有动画效果的角色,这实际上是一项相当大的任务.
最终结果是通过脚本和配置文件(换句话说 - 数据驱动)实现大多数功能,但构建这样一个系统的过程并不简单.
通常,您从外部建模器开始,执行以下操作:1.构建皮肤模型.2.根据重量等构建骨架并贴在皮肤上.3.根据需要涂抹所有纹理和材料.4.导出到您的引擎.
现在,您可以开始为此角色骨架或任何类似角色建立动画库,如果您将其与多个角色骨架相关联(通常情况下,如果骨架足够接近或模块化).一些动画将仅包含部分层次结构(仅能够混合动画的一部分 - 例如,下半身正在运行,而上半身可以使用不同的动画或反向运动 - 在跑步期间向敌人射击是很好的例子).
现在终于到了代码部分了.您需要构建一个系统,将动画与骨架相关联并正确渲染它.该系统还需要能够在动画和IK之间进行混合(例如 - 在站立到跑步之间切换),并能够组合多个动画和部分动画 - 例如,步行(全身动画),看着某人(IK)对于上身),同时挥动手(具有部分动画的IK)和呼吸(部分动画)将组合4种不同的部分或完全混合.
我没有提到你需要构建导入器的事实,动作和动作的动画之间也存在差异.动作可以组合或随机选取几个动画 - 它们将通过数据映射文件关联.
我建议看看XNA - 它有很多例子,导入器等等,并且在库中包含很多基本内容,所以你不必从头开始.正如人们也提到的 - Blender3D对于编辑器+来说是个不错的选择,所以Torque可能只是为了体验游戏引擎.
最后一句话 - 如果你要尝试一下,它不会是在公园里散步,但是嘿 - 非常有趣,结果会让你为自己感到骄傲.
看看Blender游戏引擎教程,以及他们的Project Apricot,这是一个用Blender游戏引擎创建3D游戏的开放项目.
3D角色创建和3D游戏编程是两个截然不同的过程.
通常你在3D建模器(Blender,Maya,3D studio Max等)中雕刻你的3D角色,你将这个角色导出到一个文件(.obj,.md2等),你已经将代码编写到你的3D游戏中处理引擎中角色的导入.
虽然这听起来相当困难,但3D游戏引擎确实支持所有这些东西,而无需编写数百万行代码并重新发明轮子.
以Ogre3D为例,这是一款3D开源游戏引擎.您不必成为编程大师就可以在几分钟内完成并运行一个简单的示例.我建议你看看他们的wiki和他们的 教程.
例如,这是一个简单的教程,用于从3D Studio Max创建和导出简单模型并将其导入Ogre 3D