1

我正在为一个类项目进行扫描线渲染。渲染器工作至今,它读取模型(主要使用 utah 茶壶),计算顶点/表面法线,并且可以进行平面和 phong 着色。我现在正在添加纹理映射,这是我遇到问题的地方(除了实际在屏幕上绘制点之外,我不能使用任何 OpenGL 方法)。

因此,我将纹理读入我的应用程序并拥有一个 RGB 值的二维数组。我知道这个概念是将纹理从 2D 纹理空间映射到一个简单的 3D 对象(在我的例子中是一个圆柱体)。然后我现在您将中间表面映射到对象表面上。

但是,我实际上并不知道如何做这些事情:)。我找到了一些将纹理映射到圆柱体的公式,但它们似乎总是遗漏了细节,例如要使用的值。然后我也不知道如何获取对象的顶点坐标并获取该点的圆柱值。还有一些关于映射到圆柱体的其他 StackOverflow 帖子,但它们 1)处理带有着色器等的较新 OpenGL,以及 2)不处理中间表面,所以我不确定如何从它们中翻译知识。

因此,对于使用圆柱体作为中间表面将纹理映射到 3D 对象的伪代码的任何帮助将不胜感激。

4

1 回答 1

2

你一直在使用“中间表面”这个词,它没有正确描述这个过程,但却暗示了你的想法。

基本上,您需要一种将茶壶表面上的每个点映射到圆柱体上的方法(假设纹理将“包裹”在圆柱体上)。

只需将您的表面点转换为圆柱坐标(rthetaheight),然后使用theta asuheight as v(texcoords)。

这就是您要实现的目标:

于 2013-04-15T03:15:50.780 回答