65.9K
CodeProject 正在变化。 阅读更多。
Home

ExoEngine - C# 3D 引擎

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.69/5 (16投票s)

2002年1月10日

CPOL

3分钟阅读

viewsIcon

343769

downloadIcon

13823

一个使用 C# 和 .NET 平台构建的基础 3D 引擎

屏幕截图



(点击缩略图展开)

引言

为了我的四年级计算机图形学课程,我使用 C# 和 .NET 平台编写了一个小型 3D 引擎。我决定选择这条路,而不是像其他所有人一样选择 C++,因为我想看看 C# 是否名副其实。令人惊讶的是,在用 C# 编写了大约 600kB 的代码后,它似乎毕竟是一种不错的语言,并且可能有效地替代 C++,即使是在要求苛刻的实时图形领域。 当我将 C# 与 C++ 进行比较时,我发现它最好的功能是垃圾回收、不太复杂的语法和真正的面向对象。

在我走得太远之前,先快速声明一下——请记住我只是一名学生(而且还是一名认知科学/神经科学学生),而不是 John Carmack,因此不要抱有过高的期望。

引擎的工作原理

我必须立即感谢 OpenGL/C# 库,它由 Lloyd Dupont 创建——它是一个非常容易使用的库。在创建这个项目的过程中,我修改了该库,但没有进行重大修改。

这个 3D 引擎从流行的 Worldcraft 编辑器导入它的关卡/世界数据。 奇怪的是,Worldcraft 以边界平面的集合输出它的世界/关卡数据,这些边界平面定义了固体物体的轮廓。 因此,必须将边界平面集合转换为它们各自的多边形集合。 然后快速优化结果面集,以消除相邻对象创建的隐藏/冗余面。 然后将此面集转换为二叉空间分割树(通常简称为“BSP 树”)表示,用于碰撞检测和高效的可见性计算。 还有一些辅助代码可以识别 Worldcraft 数据中专门定义的实体,例如动画池塘和各种鸭子精灵——但这非常简单。

此引擎允许使用反射贴图、(假)Phong 着色、Gouraud 着色或简单的平面着色来渲染多边形。 该引擎使用反射贴图来获得池塘波浪的某种逼真外观。 (假)Phong 着色用于鸭子,以使它们看起来有光泽且平滑圆润——Phong 着色的主要效果(通常称为镜面反射)是观察者/相机相关的白色高光。

负责此引擎的 600kB 代码分为三个部分:“ExocortexNative”,一个用于 OpenGL 和 TIFF 图像的 C++ 支持库,“Exocortex”,一个我跨项目使用的 C# 库,以及“ExoEngine”,特定于此应用程序的代码。 “Exocortex”库实际上包含一些相当可重用的 3D 应用程序类,例如 OpenGL 兼容的矩阵、向量和四元数类,以及用于 Marching Cubes 和多维快速傅里叶变换的更专业的类。

源代码

包含 VS.NET RC1 工程文件的完整源代码 (2.3MB)

  • 将在 .NET v1.0.3328 上成功编译和运行
  • 将在 .NET v1.0.2914 上编译并崩溃

二进制文件

目前,分发 C# 应用程序非常麻烦,因为 .NET 平台仍处于 beta 测试阶段。 希望在发布后,不同 .NET 版本之间的兼容性会更好。

选项 A:完整安装程序 (24.4MB)

  • 如果您尚未安装任何 .NET beta 软件,请选择此选项。
  • 包括应用程序(一个 exe 和 2 个 dll)和 .NET 平台(版本:v1.0.3328)
  • 不包含源代码

选项 B:仅应用程序文件 (1.0MB)

  • 如果您当前已安装 .NET 平台 v1.0.3328,请选择此选项
  • 仅包括应用程序文件(一个 exe 和 2 个 dll)
  • 不包含源代码

选项 C:抱歉,没有二进制文件给您。

  • 如果您有 v1.0.3328 以外的其他版本的 .NET,则您无法从我这里下载可以在您的计算机上运行的二进制文件。
  • 是否可以下载然后编译源代码?
     
© . All rights reserved.