如何开始学习3D游戏?

17

我现在做了将近6个月的开发工作,由于我喜欢编程,所以我开始写一些小程序,例如加密器、计算器、工具、与DropBox有关的东西(呵呵),用位图玩的东西,画图形的东西,甚至还写了一个根据iTunes上正在听的音乐的艺术品更新MSN显示图像的程序。

我的另一个爱好是3D建模(完全业余),我想把这些爱好结合起来!所以我读了一些相关知识,想到我必须要有关于几何、数学、点空间位置的良好概念(来自我的3D建模经验),但我不知道如何使用API,所以我制作了一个简单的程序来“模拟”3D (一个旋转的立方体)。

以下是一些问题:
1) 对于像我这样的.NET程序员来说,哪种3D开发工具最好?
2) 是否有一种方法可以使用在3DS Max中制作的3D模型?(我打算为角色建模)
3) 渲染和移动它需要什么知识?
4) 应该使用哪个API?

注意:这不是重复问题,我正在寻求.NET开发特定方向的指导,可能涉及使用3ds MAX,到现在还没有类似的问题。


编辑:

我得到了三个看起来不错的答案,让我详细说明一下,也许你们可以告诉我哪种工具更合适。
我想很快就能够构建以下内容:

  • 可携式(点击即运行,无需安装,并(希望)不需要发送DLL文件)
  • 在winforms应用程序中实现“3D嵌入”,就像可以进行渲染的picturebox一样。
  • 实现类似于真正的winforms应用程序(具有所有系统api,如IO、绘图等)
  • 如果开发环境:

    • 能够导入已有的3D模型(不是必须,但加分项)
    • 能够以编程方式创建3D模型(必须)
    • 可能还有材质和纹理工具(那将是一个巨大的加分项)
    • 广为人知(高可用性的教程、S.O.问题、论坛等)

    如果我能一直使用C#,那真的太好了:)


1
那是一个非常不错的旋转立方体! :) - Lucas Jones
@Lucas_Jones 哈哈..谢谢,但是它有点缓慢,透视应该更流畅..我用简单的几何图形和system.drawing制作了它 =) - Marcelo
1
嗨,马塞洛,抱歉有点偏题,但作为一名3D爱好者,您可能会对建议的3D建模Stack Exchange网站感兴趣:http://area51.stackexchange.com/proposals/5022/3d-modeling-techniques-and-software 如果您能注册并进一步传播这个消息,那就太好了。 :) - Peter Boughton
7个回答

7
我将为XNA提供另一个支持的意见。认为它过于“游戏中心化”的评论是站不住脚的 - 它提供了一个渲染循环,并反馈所有东西运行的速度,因此您可以调整您的渲染以尝试保持特定的帧率(如果您想要)。这并不特别关注游戏,因为大多数3D应用程序都应该担心这个问题。它真正不同寻常的游戏中心化之处只在于它提供了易于访问的游戏控制器。如果您不想使用它,请随意忽略该部分。
你使用XNA的唯一缺点是你需要点击运行,XNA有一个redistributable需要您担心。请注意,Win7默认安装了它,但Vista及更早版本没有安装。

编辑: XNA是专门为严格的3D应用程序设计的。因此,它不支持在XNA项目内本地使用典型的窗口控件。但是,有办法解决这个问题... 以下是几个有用的链接。将XNA嵌入winform中:http://forums.xna.com/forums/p/6471/34180.aspx#34180 在XNA项目中直接使用WPF控件:http://www.c-sharpcorner.com/UploadFile/iersoy/256/Default.aspx


如果人们只需要在运行我编写的任何程序之前运行一次,那么这并不违反我的要求。我只是讨厌为一个简单的示例程序设置安装程序的想法。如果运行此框架将使用户体验与运行WinForms应用程序一样简单,那就可以了。对吗? - Marcelo
是的, redist 只需安装一次。之后,Windows 更新将负责确保它保持最新状态,如果有任何更改。此外,请参阅我上面的编辑。 - Donnie
1
如果你想尝试XNA,可以去riemers.net看看——那里有一些关于XNA的最好教程。 - Dave O.

4

个人而言,我认为XNA有点过于"游戏中心化"。我更感兴趣的是设计/架构类型用途。

你可能会发现SlimDX更符合你的口味。


我的初始想法(为了学习)是制作一个“图像封面流”。这对像我这样的初学者来说是否合适且容易?我能否制作一个EXE文件(带或不带额外的DLL文件),并将其交给其他人使用?(不是安装程序,而是便携式“点击运行”) - Marcelo

4
尽管这篇文章中已经有了一些很好的建议(例如SlimDX和XNA),但我还想提到OpenTK
OpenTK比Direct3D更接近OpenGL,但它可能是跨平台3D .NET应用程序的最佳解决方案。

3

由于您使用的是C#.Net,因此XNA库非常适合您。它可以免费从Microsoft网站下载,并集成到VS IDE中。有很多可用的教程可以帮助您入门。

此外,如果我没记错的话。在XNA中使用3D模型,只需将完成的模型导出为(.X)格式。然后可以将其加载到您的工作中。


XNA还支持FBX格式,并且有许多社区构建的其他格式内容导入器。能够在360上运行游戏是一个巨大的优势。 - David Brown
好的,根据人们告诉我的,它几乎专门为游戏设计。那么,如果我想制作一个简单的winforms应用程序,具有简单的用户交互,比如当用户点击按钮时旋转一个立方体(在多个轴上)(像我的示例一样,但是使用真正的3D),我能轻松做到吗? - Marcelo
有很多关于将XNA渲染到WinForms控件的教程。该框架没有预构建的控件,但是这是完全可能的。事实上,Creators Club网站有一个示例:http://creators.xna.com/en-US/sample/winforms_series1 - David Brown

2
我建议你尝试使用Blender。www.blender.org 它是免费的、开源的,并且拥有一个伟大的社区,无论是在论坛还是在IRC上。每年都有一些重要的社区项目推动应用程序的进展,其中一些是电影和游戏,并获得了一些奖项。它正在获得行业认可,成为一种极快速建模的方式。
缺点:它不像Maya或ZBrush那样被认为是“专业级”的,并且它的界面非常不同。学习曲线可能会很有趣,这取决于你的学习方式以及你获得多少帮助。
优点:它是免费的,拥有伟大的社区,定期更新,有许多教程和社区项目可供参与。
社区:
- 在IRC上的Blender频道 - Blenderartists论坛 以前的社区项目:
- Elephant's Dream - Big Buck Bunny

1

我推荐Povray。它是一个带有类C语法的3D渲染器。虽然它不能满足你的.NET需求,但对于3D渲染来说仍然很酷。如果你需要任何形式的交互性,XNA可能是你最好的选择。但我很想知道你的发现。


它是否有某种API或其他东西供我以编程方式处理?在我看来,它似乎只是用于渲染图像和动画...无论如何,谢谢! - Marcelo
没有API...不过我想你可以自己构建一个。这是真正的光线追踪,所以速度不快。 - nportelli
那肯定是我想要深入学习的解决方案,但现在我正在寻找更实际的解决方案。 - Marcelo

1

嘿!我怎么才能取消这个wikify?我花了几个月的时间收集了我在这里列出的内容。:| - Agnel Kurian
非常感谢!难道别人的感激不够吗?分享是这个网站的全部意义 :) - Marcelo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接