使用VB6的3D软件渲染器

时间:2009-11-12 17:43:54

标签: math vb6 3d rendering

我是IT学生,我必须在VB6中创建一个项目,我正在考虑制作一个3D软件渲染器,但我真的不知道从哪里开始,我找到了一些教程,但我想要一些深入的东西使用数学和算法,我想要一些东西,展示如何进行3D变换,相机,灯光,阴影......

使用的编程语言并不重要,我只需要一些资源来告诉我如何制作这个。

所以我只想知道在哪里找到一些资源,或者你可以告诉我一些源代码并告诉我从哪里开始。

或者,如果你们中的任何人对VB6项目有更好的了解。

感谢。

8 个答案:

答案 0 :(得分:5)

我不同意以前的帖子,3D渲染器实际上非常简单。然而,高质量的3D渲染器很难。

  1. 获取一堆3D数据,三角形最简单。
  2. 了解同质坐标和变换的4x4矩阵。
  3. 通过位置和旋转定义摄像机(以4x4矩阵表示)。
  4. 通过此相机变换3D几何体。
  5. 对窗口执行透视分割和缩放。这会将您的3D数据转换为2D。
  6. 将数据渲染为2D。
  7. 现在你将失去深度缓冲区,所以在开始时坚持使用线框。 : - )

    不要听这些不说话的人,出去玩得开心!

答案 1 :(得分:3)

很多年前,我制作了一个阴影三角形渲染器,它使用库调用来绘制三角形。这是一种相当天真的方法,但您可以使用VB6获得相同的结果。我得到了所有的数学和数学Foley等人的“计算机图形学原理与实践”中的技术。有些部件现在已经过时,但我认为你会发现它对这个项目非常有帮助,例如它可以以合理的价格从亚马逊购买。

一种简单的方法可能是:

  1. 将模型文件读为三角形
  2. 使用矩阵转换每个三角形以考虑相机位置
  3. 项目三角形指向2D
  4. 绘制2D三角形(可能是using GDI
  5. 这包括线框查看。要将其扩展到隐藏曲面移除,您需要确定前面的三角形。两种可能的方式:

    1. Z-order排序三角形并首先绘制距离相机最远的三角形。如果有很多三角形,这很简单但效率很低,当顺序不正确时可以给出重叠的三角形效果。您还必须决定如何对三角形进行排序 - 例如按质心,按范围......
    2. 使用软件深度缓冲区。这将带来更好的结果,但更多的工作要实施。您将不得不编写自己的三角形绘图代码,因此不能依赖GDI。有关如何执行填充三角形的信息,请参阅bresenham's line algorithm和相关算法。
    3. 在此之后你还需要一些基于灯光的阴影。计算机图形学原理和实践涵盖了这些计算。对于简单的着色,您可以使用gdi坚持使用绘制三角形,但如果您想要进行gouraud或phong着色,则颜色值会在三角形中变化。解决这个问题的一种方法是将三角形细分为较小的三角形,但这样效率低,不会给出非常漂亮的效果。更好的方法是按照上面的软件深度缓冲区要求自己绘制三角形。

      一个好的扩展是支持三角形以外的基元。基本方法是在读取时将基元分割成三角形。

      祝你好运 - 可能是一个有趣的项目。

答案 2 :(得分:1)

VB6不是最适合做数学和3D图形的语言,并且考虑到你之前没有关于这个主题的知识,我建议你选择不同的(并且更容易)。

因为它是Visual Basic,你可以尝试更多面向表单的东西,这是该语言的原始意图。

答案 3 :(得分:1)

3D engine list列出了三个引擎的纯粹基础(一个矛盾)+源代码,其中一个是在Visual Basic(Dex3D)

  

DeX3D是一款开源3D引擎   完全用Visual Basic编写   Jerry Chen(-onlyuser@hotmail.com)。

     
      
  • Gouraud阴影
  •   
  • 透明度
  •   
  • 起雾
  •   
  • Omni和聚光灯
  •   
  • 分层网格
  •   
  • 支持3D Studio文件
  •   
  • 粒子系统
  •   
  • Bezier曲线段
  •   
  • 2.5 D text
  •   
  • Visual Basic源代码
  •   
     

更多信息,截图和   源可以在Dex3D上找到   主页。 (< = Dead Link)

答案 4 :(得分:1)

Erkan Sanli的

EGL25是一个快速开源VB 6渲染器,可以渲染,旋转,动画等由数千个多边形组成的复杂实体形状。只是Windows API调用 - 没有DirectX,没有OpenGL。

alt text

VBMigration.com chose EGL25作为一个高质量的开源VB6项目,用于演示他们的VB6到VB.Net升级工具。

答案 5 :(得分:0)

如果您以前从未这样做过3D软件渲染器整个项目相当复杂。我会建议更小的东西 - 比如只做3D部分并使用线条进行渲染或者只是写一个阴影三角形渲染器(无论如何都是3D渲染器的基础)。

有点简单,而不是试图在第一时间编写成熟的3D软件渲染器 - 尤其是在VB中。

答案 6 :(得分:0)

软件渲染器是一个非常困难的项目,并且根本没有显示语言VB6(对于像这样的c ++这样的任务的方式......),无论如何我可以建议你使用一些好书:

  1. 着色器:http://wiki.gamedev.net/index.php/D3DBook:Introduction_%28Volume%29
  2. 数学:3D Math Primer for Graphics and Game Development
  3. 还有其他2本书。即使它们是用于VB.NET,您也可以找到一些有用的代码:

    1. .NET Game Programming with DirectX 9.0
    2. Beginning .NET Game Programming in VB .NET

答案 7 :(得分:0)

我认为您可以采用两种方式使用Direct X方式并使用支持VB 5-6的DirectX 8。我找到了一个页面http://www.gamedev.net/reference/articles/article1308.asp

你总是可以编写一个引擎组,但这样做需要一些基本的线性代数,比如Frank Krueger建议的那样。