Math 基于VB6的三维软件渲染器

Math 基于VB6的三维软件渲染器,math,vb6,3d,rendering,Math,Vb6,3d,Rendering,我是IT专业的学生,我必须用VB6做一个项目,我想做一个3D软件渲染器,但我真的不知道从哪里开始,我找到了一些教程,但我想要一些深入数学和算法的东西,我想要一些展示如何进行3D变换、相机、灯光、着色 使用哪种编程语言并不重要,我只需要一些资源来准确地说明如何实现这一点 所以我只想知道在哪里可以找到一些资源,或者你可以给我看一些源代码,告诉我从哪里开始 或者,如果你们中有人对VB6项目有更好的想法 谢谢。VB6不是最适合做数学和3D图形的语言,而且鉴于您以前也没有这方面的知识,我建议您选择一些不同

我是IT专业的学生,我必须用VB6做一个项目,我想做一个3D软件渲染器,但我真的不知道从哪里开始,我找到了一些教程,但我想要一些深入数学和算法的东西,我想要一些展示如何进行3D变换、相机、灯光、着色

使用哪种编程语言并不重要,我只需要一些资源来准确地说明如何实现这一点

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

或者,如果你们中有人对VB6项目有更好的想法


谢谢。

VB6不是最适合做数学和3D图形的语言,而且鉴于您以前也没有这方面的知识,我建议您选择一些不同的(更简单的)语言


由于它是VisualBasic,您可以尝试更面向表单的方式,这是该语言的初衷。

如果您以前从未做过3D软件渲染器,那么它作为一个整体项目是相当复杂的。我建议做一些更小的事情——比如只做3D部分,使用线条进行渲染,或者只写一个着色三角形渲染器(这是3D渲染器的基础)


一种简单的方法,而不是试图在第一次尝试中写出一个完整的3D软件渲染器——尤其是在VB中.< /p> < P>软件渲染器是一个非常困难的项目,语言VB6根本没有被显示(对于像C++这样的任务)…无论如何,我可以给你推荐一些我用过的好书:

  • 着色器:
  • 数学:
  • 还有另外两本书。即使它们适用于VB.NET,您也可以找到一些有用的代码:


  • 我不同意前面的文章,3D渲染器实际上非常简单。但是,高质量的3D渲染器很难实现

  • 得到一堆3D数据,三角形是最简单的
  • 了解齐次坐标和变换的伟大4x4矩阵
  • 通过位置和旋转(以4x4矩阵表示)定义相机
  • 使用此摄影机变换三维几何体
  • 对窗口执行透视分割和缩放。这会将三维数据转换为二维数据
  • 将数据渲染为2D
  • 现在,您将失去深度缓冲区,因此请在开始时坚持使用线框。:-)

    别听这些反对者的话,出去玩玩吧

    有三个引擎在纯basic(一种矛盾修饰法)+源代码中列出,其中一个在Visual basic(Dex3D)中

    DeX3D是一个开源的3D引擎 完全用Visual Basic从 陈杰瑞(-onlyuser@hotmail.com)

    • 古罗阴影
    • 透明度
    • 雾化
    • 泛光灯和聚光灯
    • 分层网格
    • 支持3D Studio文件
    • 粒子系统
    • 贝塞尔曲线段
    • 2.5维文本
    • Visual Basic源代码
    更多信息、屏幕截图和 可以在Dex3D上找到源
    主页(我认为你可以采取两种方法,一种是直接X方式,另一种是使用支持VB5-6的DirectX8

    你可以随时编写引擎组,但这样做你将需要一些基本的线性代数,如Frank Krueger所建议的。

    Erkan Sanli是一款快速开源VB 6渲染器,可以渲染、旋转、动画等由数千个多边形组成的复杂实体形状。只需Windows API调用即可–无DirectX,无OpenGL


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

    许多年前,我制作了一个着色三角形渲染器,它使用库调用来绘制三角形。这是一种相当幼稚的方法,但使用VB6可以获得相同的结果。我从Foley等人的“计算机图形原理与实践”。有些部分现在已经过时了,但我想你会发现它对这个项目非常有用,例如,它可以从亚马逊以合理的价格二手购买

    一个简单的方法可以是:

  • 将模型文件读取为三角形
  • 使用矩阵变换每个三角形以说明相机位置
  • 将三角形点投影到二维
  • 绘制二维三角形(可能)
  • 这包括线框查看。若要将其扩展到隐藏面移除,您需要确定哪些三角形在前面。有两种可能的方法:

  • Z顺序排序三角形并首先绘制离相机最远的三角形。如果有很多三角形,这很简单但效率低下,并且在顺序不太正确时会产生重叠三角形效果。您还必须决定如何排序三角形-例如,按质心、按范围
  • 使用软件深度缓冲区。这将提供更好的结果,但需要更多的工作来实现。您必须编写自己的三角形绘制代码,因此不能依赖GDI。有关如何做到这一点,请参阅和完成填充三角形的相关算法
  • 在此之后,您还需要基于照明的某种着色。计算机图形学原理和实践中介绍了计算。对于简单的着色,您可以坚持使用gdi绘制三角形,但如果您想使用gouraud或phong着色,则颜色值在三角形上会有所不同。解决此问题的一种方法是细分三角形将三角形绘制成更小的三角形,但这是低效的,并且不会给出非常好看的结果。更好的方法是按照上述软件深度缓冲区的要求自己绘制三角形

    一个很好的扩展是支持除三角形以外的基本体。基本方法是在读取基本体时将其拆分为三角形


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

    我只是好奇为什么他们让你使用VB6?哪个虐待狂大学的课程中仍然有VB6?我实际上写道