Algorithm 在哪里可以找到有关3D算法的信息?

Algorithm 在哪里可以找到有关3D算法的信息?,algorithm,3d,game-physics,Algorithm,3d,Game Physics,我对学习3D视频游戏开发很感兴趣,但不确定从哪里开始。 我更感兴趣的是它是如何制作的,而不仅仅是制作各种游戏制作人都可以制作的。 理想情况下,我想知道存储通用3D模型等的格式。坐标格式等,以及如何从特定角度在屏幕上表示3D数据的信息,例如在一般的自由漫游3D视频游戏(如Devil May Cry)中。 我看到了一些关于3D矩阵的链接,但我真的不明白它们是如何使用的。对初学者的任何帮助都将不胜感激 谢谢基本上第一个决定是使用OpenGL还是DirectX。 我建议您使用OpenGL,因为它与平台无

我对学习3D视频游戏开发很感兴趣,但不确定从哪里开始。 我更感兴趣的是它是如何制作的,而不仅仅是制作各种游戏制作人都可以制作的。 理想情况下,我想知道存储通用3D模型等的格式。坐标格式等,以及如何从特定角度在屏幕上表示3D数据的信息,例如在一般的自由漫游3D视频游戏(如Devil May Cry)中。 我看到了一些关于3D矩阵的链接,但我真的不明白它们是如何使用的。对初学者的任何帮助都将不胜感激


谢谢

基本上第一个决定是使用OpenGL还是DirectX。 我建议您使用OpenGL,因为它与平台无关,也可以用于移动设备

对于OpenGL,以下是一些很好的入门教程:


基本上,第一个决定是使用OpenGL还是DirectX。 我建议您使用OpenGL,因为它与平台无关,也可以用于移动设备

对于OpenGL,以下是一些很好的入门教程:


电子游戏开发是一个巨大的领域,需要博弈论、计算机科学、数学、物理和艺术方面的知识。根据你想专攻什么,有不同的起点。但是,由于这是一个关于编程问题的网站,这里有一些关于编程部分的见解:

文件格式 资产模型、纹理和声音是使用专用的第三方工具创建的,例如Gimp、Photoshop、Blender、3ds Max等,它们提供了多种不同的导出格式。这些格式通常有一个共同点:它们为应用程序之间的简单通信而优化

视频游戏有很高的性能要求,在游戏过程中,必须始终加载和卸载资产。因此,内容必须采用紧凑且加载速度快的格式。第三方格式通常不符合游戏项目中的特定要求。为了获得最佳性能,您需要考虑开发自己的格式。

资产和通用第三方格式示例:

纹理:PNG、JPG、BMP、TGA 三维模型:OBJ、3DS、COLLADA 声音:WAV,MP3 其他示例 Direct3D中的纹理 在我的游戏项目中,我使用一个导入器将我的纹理从上述格式之一转换为文件。这不是我自己开发的格式,但它是Direct3D图形API加载速度最快的格式之一

静态三维模型 文件格式是一种非常简单易懂的基于文本的格式。大多数3D建模应用程序都支持它。但由于它是基于文本的,所以文件比等效的二进制文件大得多。此外,它们还需要大量昂贵的解析和处理。因此,我开发了一个导入程序,将OBJ模型转换为我定制的高性能二进制格式

波声文件 是一种非常常见的声音文件格式。此外,它非常适合在游戏中使用。因此,在这种情况下不需要自定义格式

三维图形 以平均屏幕分辨率每秒至少渲染30次3D场景需要大量计算。为了这个目的,我们建造了一座城堡。虽然可以使用非常低级的语言为GPU编写任何类型的程序,但大多数开发人员使用类似or的抽象。这些API虽然限制了与GPU的通信方式,但大大简化了与图形相关的任务

使用API进行渲染 到目前为止,我只使用过Direct3D,但其中一些应该也适用于OpenGL

正如我所说,GPU可以编程。Direct3D和OpenGL都有自己的GPU编程语言,也称为着色语言:Direct3D和。用这些语言之一编写的程序称为着色器

在渲染三维模型之前,图形设备必须准备好进行渲染。这是通过将着色器和其他效果状态绑定到设备来完成的。所有这些都是使用API完成的

三维模型通常表示为一组顶点。例如,矩形有4个顶点,立方体有8个顶点,等等。这些顶点由多个组件组成。在这种情况下,绝对最小值为位置分量3个浮点数,表示三维空间中的X、Y和Z偏移。而且,位置只是一个无限小的点。因此,我们还需要定义点如何连接到曲面

定义顶点和三角形后,可以将它们写入GPU的内存中。如果一切都设置正确,我们可以通过API发出Draw调用。然后GPU执行着色器并处理所有输入数据。例如,在最后一步中,渲染的三角形将写入屏幕上定义的输出

三维图形中的矩阵 如前所述,三维网格由在三维空间中具有位置的顶点组成。这些位置都嵌入到称为对象spa的坐标系中 行政长官

为了在世界中放置对象、移动、旋转或缩放对象,必须变换这些位置。换句话说,它们必须嵌入到另一个坐标系中,在这种情况下称为世界空间

进行此转换的最简单和最有效的方法是矩阵乘法:从平移、旋转和缩放量构造4x4矩阵。然后将该矩阵与每个顶点相乘。它背后的数学很有趣,但不在这个问题的范围之内

除了对象和世界空间,还有“摄影机”的视图空间坐标系、剪辑空间、屏幕空间和对象表面上的切线空间。向量必须在这些坐标系之间进行大量转换。你看,为什么矩阵在3D图形中如此重要

如何从这里继续 找到一个你认为有趣的话题,开始谷歌搜索。我想我给了你很多关键词,我希望我给了你一些你特别提到的主题的想法


StackExchange框架中还有一个更适合此类问题的解决方案。在任何SE网站上都可以很好地阅读这些内容。

视频游戏开发是一个巨大的领域,需要博弈论、计算机科学、数学、物理和艺术方面的知识。根据你想专攻什么,有不同的起点。但是,由于这是一个关于编程问题的网站,这里有一些关于编程部分的见解:

文件格式 资产模型、纹理和声音是使用专用的第三方工具创建的,例如Gimp、Photoshop、Blender、3ds Max等,它们提供了多种不同的导出格式。这些格式通常有一个共同点:它们为应用程序之间的简单通信而优化

视频游戏有很高的性能要求,在游戏过程中,必须始终加载和卸载资产。因此,内容必须采用紧凑且加载速度快的格式。第三方格式通常不符合游戏项目中的特定要求。为了获得最佳性能,您需要考虑开发自己的格式。

资产和通用第三方格式示例:

纹理:PNG、JPG、BMP、TGA 三维模型:OBJ、3DS、COLLADA 声音:WAV,MP3 其他示例 Direct3D中的纹理 在我的游戏项目中,我使用一个导入器将我的纹理从上述格式之一转换为文件。这不是我自己开发的格式,但它是Direct3D图形API加载速度最快的格式之一

静态三维模型 文件格式是一种非常简单易懂的基于文本的格式。大多数3D建模应用程序都支持它。但由于它是基于文本的,所以文件比等效的二进制文件大得多。此外,它们还需要大量昂贵的解析和处理。因此,我开发了一个导入程序,将OBJ模型转换为我定制的高性能二进制格式

波声文件 是一种非常常见的声音文件格式。此外,它非常适合在游戏中使用。因此,在这种情况下不需要自定义格式

三维图形 以平均屏幕分辨率每秒至少渲染30次3D场景需要大量计算。为了这个目的,我们建造了一座城堡。虽然可以使用非常低级的语言为GPU编写任何类型的程序,但大多数开发人员使用类似or的抽象。这些API虽然限制了与GPU的通信方式,但大大简化了与图形相关的任务

使用API进行渲染 到目前为止,我只使用过Direct3D,但其中一些应该也适用于OpenGL

正如我所说,GPU可以编程。Direct3D和OpenGL都有自己的GPU编程语言,也称为着色语言:Direct3D和。用这些语言之一编写的程序称为着色器

在渲染三维模型之前,图形设备必须准备好进行渲染。这是通过将着色器和其他效果状态绑定到设备来完成的。所有这些都是使用API完成的

三维模型通常表示为一组顶点。例如,矩形有4个顶点,立方体有8个顶点,等等。这些顶点由多个组件组成。在这种情况下,绝对最小值为位置分量3个浮点数,表示三维空间中的X、Y和Z偏移。而且,位置只是一个无限小的点。因此,我们还需要定义点如何连接到曲面

定义顶点和三角形后,可以将它们写入GPU的内存中。如果一切都设置正确,我们可以通过API发出Draw调用。然后GPU执行着色器并处理所有输入数据。例如,在最后一步中,渲染的三角形将写入屏幕上定义的输出

三维图形中的矩阵 如前所述,3D网格由在3D sp中具有位置的顶点组成 王牌这些位置都嵌入到称为对象空间的坐标系中

为了在世界中放置对象、移动、旋转或缩放对象,必须变换这些位置。换句话说,它们必须嵌入到另一个坐标系中,在这种情况下称为世界空间

进行此转换的最简单和最有效的方法是矩阵乘法:从平移、旋转和缩放量构造4x4矩阵。然后将该矩阵与每个顶点相乘。它背后的数学很有趣,但不在这个问题的范围之内

除了对象和世界空间,还有“摄影机”的视图空间坐标系、剪辑空间、屏幕空间和对象表面上的切线空间。向量必须在这些坐标系之间进行大量转换。你看,为什么矩阵在3D图形中如此重要

如何从这里继续 找到一个你认为有趣的话题,开始谷歌搜索。我想我给了你很多关键词,我希望我给了你一些你特别提到的主题的想法


StackExchange框架中还有一个更适合此类问题的解决方案。在任何SE网站上都可以很好地阅读这些内容。

在谷歌上搜索GPU GempcGPE 2、[Windows]游戏编程大师的技巧、图形编程黑皮书、计算机图形学:C的原理和实践……在谷歌上搜索GPU GempcGPE 2、[Windows]游戏编程大师的技巧、图形编程黑皮书、,计算机图形学:C语言的原理和实践…非常感谢。它背后的数学是我最感兴趣的东西,但我明白它一定是非常复杂的,所以我将使用关键字,并帮助您提供了通过它。非常感谢,非常感谢。它背后的数学是我最感兴趣的东西,但我明白它一定是非常复杂的,所以我将使用关键字,并帮助您提供了通过它。非常感谢。这绝对是一个有帮助的链接。谢谢这绝对是一个有帮助的链接。谢谢