问题标签 [uv-mapping]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
14370 浏览

opengl - GLSL纹理坐标到绝对像素?

我的问题是关于纹理坐标如何准确映射到纹理中的纹素(不考虑过滤)。

例如,(0,0)是指左上角像素的左上角还是指左上角像素的中心?

如果使用近似过滤,在纹理坐标 (0.5,0.5) 处获取什么像素?

那么(1.0,1.0)呢,它是指右下角像素的右下角还是右下角像素的左上角?(我记得几年前这在一些 ATI 和 NVIDIA 卡之间有所不同。现在标准化了吗?)

如果使用 texelFetch() 而不是 textureLod(),那么访问像素的正确方法是什么?

是吗

或者也许

正确的?

甚至

?

也许有人可以澄清映射究竟是如何工作的?

0 投票
3 回答
1403 浏览

javascript - 在 Three.js 中加载多个 Blender 导出的对象/网格+材质

我在Blender中对两个对象进行了建模,它们具有不同的材质和不同的纹理 UV 映射到它们。我用CanvasRenderer渲染它

如果我导出它,生成的JSON 文件中有不止一种材料,但只有一个网格。

这是我使用 Three.js 加载模型的(简化的)代码:

如您所见,我只使用该[0]材料。结果是第二个对象使用了第一个对象的材质(如果我使用[1]材质,则相反)。

但我不知道如何创建使用多种材料的网格!

甚至可能吗?或者,有没有办法从 Blender 导出多个 JSON 文件(每个对象一个)?

0 投票
1 回答
2284 浏览

opengl - OpenGL中球体的UV坐标有问题?

我的球体上有错误的纹理贴图。这个问题众所周知,但解决方案很少。

这是我为球体生成 UV 的代码。

T = 三角形,Nv = 顶点法线。

输出: http: //i.stack.imgur.com/luhgZ.jpg ![在此处输入图像描述][1]

如图所示,我的代码在球体的一侧生成长条。解决方案在这里.. http://sol.gfxile.net/sphere/index.html但无法弄清楚.. 我该如何解决这个问题?有什么建议吗?

这段代码对我也不起作用。我不知道它有什么问题。仍然是我得到的同样丑陋的接缝。???

0 投票
1 回答
1461 浏览

android - OpenGL ES 纹理映射

我需要在我的 Android 应用程序中绘制圆圈。实际上这是一个吃豆人游戏,我需要画平板电脑。由于现场有很多平板电脑,我决定用一个多边形绘制每个平板电脑。

这是我的想法的说明:

http://www.advancedigital.ru/ideal_circle_with_only_one_polygon.jpg

顶点坐标:

顶点坐标是相对于圆心计算的,以便以后轻松放置圆。

问题出在纹理映射中,根据我的计算,UV应该是这样的

但负 V 值会导致应用程序仅显示黑屏。这就是为什么我认为我错过了什么或者我走错了路……</p>

我的问题是:是否可以以这种方式渲染纹理?如果不可能,画小点的最佳方法是什么?

PS:我在 Android 上使用 OpenGL ES 2.0。

在我看来,这家伙正在尝试做同样的事情。

0 投票
1 回答
1298 浏览

c# - Kinect 紫外线映射

对于一个项目,我需要从 Kinect 获取点云的 UV 贴图。Kinect SDK 中是否有一些功能允许我们这样做?如果没有,是否还有其他项目包含此功能?如果已经完成,我宁愿不要重新发明轮子并为此编写自己的代码。

(PS - 这必须是完全自动化的,所以我们不能使用 Blender 之类的)

0 投票
1 回答
727 浏览

c++ - 什么是用 C++ 编写的好的 UV 映射库?

我目前正在编写 Blender 脚本,但对于大型模型来说速度非常慢。

0 投票
1 回答
878 浏览

c++ - 我如何才能正确地将其转换为 UV 贴图?

好的,所以我有我的代码来使用 C++ 和 DirectX 绘制一个大景观。我用一种纹理对其进行纹理化,然后需要添加更多纹理。我看到人们在他们有 1 个纹理图像并且图像包含 2 个纹理的情​​况下这样做。这就是我制作的,它是 256x128 的图像。我现在的问题是,由于我的地形自动生成了 UV 贴图 1 纹理的坐标,现在它同时显示了两种纹理。我需要做到这一点,所以当世界的高度足够高时,它是 1 个纹理,而下面的一切都是另一个纹理。我的UV坐标代码,

顶点[y * WIDTH * x].U = x / 1.28;

顶点[y * WIDTH * x].V = y / 1.28;

这些是我的映射坐标,X 是它正在绘制的顶点的当前 X 值,Y 值是它当前的 y 位置。高度图是 128x128,所以我除以 1.28 以使每个多边形都有贴图 UV 贴图。高度也被计算出来,因为我正在加载一个高度图并且我试图得到它,所以当它足够高时,它会 UV 映射图像的一半,如果它是另一个,它会 UV 映射图像的另一侧。有人请帮忙!

0 投票
1 回答
1277 浏览

android - OpenGL ES2 Android - 将 2D 纹理映射到 GL_TRIANGLES 立方体

我正在尝试将 256*256 纹理映射到立方体上。当我这样做时,正面和背面如预期的那样,左右面在 z 方向上反转,顶面和底面被“弄脏”成重复的模糊。这个问题我之前已经介绍过,但是我能找到的唯一解决方案是使用四边形,这在 OpenGL ES2.0 的 Android 实现中不可用,或者创建一个包含所有面的顶点的顶点列表(而不仅仅是8 个顶点),然后用索引 0-23(而不是 0-7)引用它们。

我使用的代码给出了上面的结果,如下所示:

我认为将方形纹理映射到三角形的帖子中接受的答案几乎涵盖了我之后的内容,如果确实有可能以我期望的方式进行索引和纹理。

0 投票
2 回答
3785 浏览

webgl - 置换贴图UV贴图?

概括

我正在尝试将置换贴图(高度贴图)应用于一个相当简单的对象(六边形平面),但我得到了一些意想不到的结果。我正在使用灰度,因此,我的印象是我的高度图应该只影响我的网格的 Z 值。但是,我创建的置换贴图在 X 和 Y 平面上拉伸了网格。此外,它似乎没有使用我创建的所有其他纹理都成功应用到的 UV 映射。

模型和 UV 贴图

这是我的六边形网格及其在 Blender 中对应的 UV 贴图的参考图像。

六边形模型和 UV 贴图

漫反射和置换纹理

这些是我通过 Three.JS 应用到我的网格的漫反射和置换贴图纹理。

六边形漫反射和置换纹理

渲染

当我在没有置换贴图的情况下渲染平面时,您可以看到六边形平面保持在线条内。但是,当我添加置换贴图时,它显然会影响顶点的 X 和 Y 位置,而不是仅影响 Z,从而将平面很好地扩展到线条上。

六边形平面渲染——带和不带置换贴图

代码

这是相关的 Three.js 代码:

假设

我目前正在考虑为什么这可能会出错的三种可能性:

  1. UV 贴图不适用于我的置换贴图。
  2. 我错误地制作了置换贴图。
  3. 我错过了将位移锁定为仅 Z 的过程中的关键步骤。

当然,秘密选项#4 以上都不是,我真的不知道我在做什么。或上述的任何混合物。

现场示例

您可以在此处查看实时示例。

如果有对此主题有更多了解的人可以指导我,我将不胜感激!

编辑 1:根据建议,我已经注释掉computeFaceNormals()computeVertexNormals(). 虽然它确实略有改进,但网格仍在变形。

0 投票
0 回答
4312 浏览

opengl - 在一个简单的立方体上不正确的 UV 纹理映射

我的程序的目标是显示一个从 Blender 导出的简单立方体 UV 映射。但是我的 openGL 程序中的纹理映射不正确。我想准确地说我的 UV 贴图立方体的显示在 Blender 上是完美的。我的纹理由每个面的简单颜色(红色、绿色、蓝色、紫色、黄色和橙色)组成。我选择使用四边形将网格导出到 .obj 和 .mtl 文件中。这是我的 .obj 文件的内容(我添加了一些评论):

我打开的立方体看起来像一个十字架。这是我的 UV 纹理(我想明确指出 '3bis' 和 '4bis' 对应的 .obj 文件坐标错误。只有 1、2、5 和 6 面坐标是正确的):

在此处输入图像描述

这是我的 openGL 渲染示例:

在此处输入图像描述

您可以在 uv 纹理上看到“4bis”白脸。

因此,搅拌机生成的某些坐标似乎是错误的。为什么?问题是否来自蓝色四边形不接触图片的右侧,从而创建特定坐标的平移?也许我必须在 Blender 中导出之前精确一个特殊参数......有人可以帮助我吗?