问题标签 [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 回答
165 浏览

java - Java vbo in opengl, indexing texture coordinates, is it possable?

image showing my uv mapping problem

As shown by the picture above, one vertex needs to map to two different uv coordinates. I know that I can index verities with another buffer by binding it to GL_ELEMENT_ARRAY_BUFFER, but this binds the the uv in the same index. I can't find any documentations or article showing how to index uv's. I think that there is a way to do this, because it seems like something that people would find useful. How do I do it ?

0 投票
1 回答
3303 浏览

javascript - 三.js平面缓冲几何uvs

我正在尝试创建一个缓冲几何平面,但我在使用 uv 坐标时遇到了问题。我试图跟随正确的 UV 映射 Three.js,但没有得到正确的结果。

紫外线代码如下。我还将整个缓冲几何代码保存在http://jsfiddle.net/94xaL/

我非常感谢提示我在这里做错了什么!

谢谢!

0 投票
1 回答
272 浏览

texture-mapping - 在所有顶点处用已知 uv 从三角剖分中找到等曲线

我有一个 3D 三角网格,它类似于一张弯曲的纸,因为它有 4 个边并且存在于 3 维空间中。边缘可能有不同的长度和不同的曲线,但理论上它可以不断变形,看起来像一张纸。每个顶点都分配了一个 uv 坐标,u 和 v 的范围在 0 到 1 之间。有些顶点显然在边界上。对于底部边界,u 在 [0,1] 范围内,v 为 0。顶部边界顶点的 u 在 [0,1] 范围内且 v = 1。左右边界的 u = 0 或 u = 1(分别) 且 v 在 [0,1] 内。

现在想想 u = 0.5 的“等曲线”。这将是从表面“中间”的底部到顶部的“线”(或线段的集合?)。我将如何找到它?

或者,假设我想找到对应于 uv 坐标 (0.2,0.7) 的 3D 坐标。我怎么去那里?

不想通过将数据放入渲染器(OpenGL 等)来实现这一点。我确信必须有一个标准的方法。感觉就像纹理映射函数的倒数。

0 投票
1 回答
781 浏览

java - 如何在 jME3 中定位球体上的纹理?

我想将 JPEG 纹理贴图放在球体上。它对我有用,但我想将纹理旋转 180 度。即我希望图像不是从零 UV 坐标开始,而是从更早开始。

在此处输入图像描述

更新

我试图重新分配球体的纹理坐标。纹理坐标是浮动的,我希望它们不会被限制在 [0..1] 的范围内。否则它应该将我的图像放置在 [0..1 x 0..1] 的区域中。

它做了类似后者的事情,但并不精确:

在此处输入图像描述

即整个图像被放入一个球体的小区域。但是,它所在的这个确切区域对应于 的负值U,即在相同的经度上,图像边缘在之前的实验中(顶部球体)。

为什么?

图片在这里:https ://en.wikipedia.org/wiki/File:Equirectangular_projection_SW.jpg

代码如下:

0 投票
0 回答
354 浏览

directx-11 - 几何着色器四边形后处理

使用directx 11,我正在开发一个图形效果系统,该系统使用几何着色器在世界空间中构建四边形。然后这些四边形使用片段着色器,其中主要纹理是渲染的场景纹理。有效地在 qorld 空间四边形上产生后期处理效果。其中最简单的是色调效果。

顶点着色器仅将数据传递给几何着色器。

几何着色器根据法线计算额外的顶点。使用叉积,我找到 x 和 z 轴,并在原始位置的每个对角线方向上附加 4 个新顶点的三流(从给定的位置和大小生成四边形)。

像素着色器(色调效果)只是将场景纹理颜色与颜色变量集相乘。

四边形生成并正确显示在屏幕上。然而;

我面临的问题是 uv 坐标的映射无法与后台缓冲区上的图像对齐。也就是说,当使用半 alpha 作为给定颜色的 tint shader 时,您可以看到显示在四边形上的图像不会完美地覆盖后台缓冲区上的图像,除非四边形面向相机。四边形法线与相机 y 轴越接近,图像越偏斜。

我目前正在使用下面的公式来计算 uv 坐标:

我还使用了下面的公式,这导致(IMO)在 uv 中没有考虑到考虑因素。

问题: 如何根据几何着色器中生成的顶点位置获取屏幕空间 uv 坐标?

如果您想让我详细说明任何要点,请询问,我会尽力而为:)

提前致谢。

0 投票
1 回答
2210 浏览

three.js - 用于挤出边缘测量的自定义 UV 生成器 Three.js

我想在我的挤压几何体的表面上使用纹理。我一直在研究自定义 UV 生成器,并发现了这些相关问题: 1.)如何将纹理应用于 THREE.ExtrudeGeometry? 2.)加载的纹理看起来很模糊,或者像单一颜色。如何使纹理清晰锐利

但是,建议将我的几何点除以 1000 的方法mesh.scale.set(1000,1000,1)不起作用,因为我的几何不再位于正确的位置。我更愿意指定 UV 映射。一个答案说要根据源代码实现自定义 uvgenerator,但我被卡住了,不知道该怎么做。

这是我创建的几何图形,材质为 512x512px,如何将纹理映射到顶部?:

0 投票
1 回答
1723 浏览

opengl - Blender - 使用标准化 UV 坐标导出 .obj

我想从 Blender 导出 .obj 文件。我用法线和 UV 坐标导出它们。然后我将它们导入 OpenGL 应用程序。在 UV 编辑器中,我能够显示归一化的光标坐标。我的问题是我需要将它们标准化导出,因为 OpenGL 需要它们。有没有可能做到这一点,还是我必须编写和手动转换它们的应用程序?

0 投票
1 回答
6340 浏览

three.js - THREE.js 中的 UV 映射

我正在尝试在 THREE.js 中使用 SDF 字体,它们带有一个 PNG 字符映射和一些字符数据,例如每个字母 x 偏移量、y 偏移量、宽度、高度等。

在我开始使用带有偏移量和宽度以及每个字符的东西的字符数据之前,我只是想简单地尝试仅映射来自three.js/examples 的示例UV 纹理之一的一部分。

JSFiddle:http: //jsfiddle.net/b2zegeht/3/

四边形上的 uv 映射

所以上面的图像被渲染到一个四边形上,下面的代码来自一个循环:

现在要在四边形上显示部分纹理,我假设我需要调整 UV 坐标。问题是,他们中的一些人做到了我的期望,而他们中的一些人则没有。例如,要将纹理移动三倍,使其显示从 0.3 到 1 可以按预期工作:

在此处输入图像描述

然后我想将四边形的顶部两个角向下移动 2 到 0.8,

在此处输入图像描述

但这不起作用,它似乎实际上影响了 U/X 坐标并将纹理的上半部分向左移动。faceVertexUvs 似乎没有表现出与 X,Y 坐标相同的属性,谁能解释我在这里遗漏了什么?以及如何显示单个正方形,例如 0.7、0.7 处的正方形?

一旦我弄清楚了这一点,我就可以从这样的纹理在四边形上渲染一个字母:

在此处输入图像描述

0 投票
0 回答
496 浏览

uv-mapping - 计算程序生成的多边形的 uv 纹理坐标

我有这样的形状:

原始顶点

并且点的坐标可用(顶点具有 x 和 y 分量)

我的质地是:

紫外线

一个简单的平面 UV 映射给了我:

不需要的 UV 映射

我想要的是:

正确的 UV 映射

如何计算顶点位置以获得所需的映射?请注意,这是一道数学题。

另外,我可以忍受拉伸,只要顶点落在草地上。

0 投票
0 回答
2337 浏览

c++ - OpenGL纹理和UV映射问题

我目前正在尝试在 OpenGL 中制作一个小游戏,以尝试学习如何使用 API。我已经到了可以在简单场景周围移动相机的地步,我可以渲染模型并使用简单的 phong 模型着色器对它们进行着色。

我现在正在处理场景中的模型纹理,所以我得到了一份 Maya 的副本,并制作了一个带有纹理的正方形(费了很大力气),并在 Maya 中制作了 UV 贴图。

当我渲染场景时,纹理被应用,但远非正确。我使用自己编写的解析器将模型读取为 .obj 文件,并使用我不久前在网上找到的函数读取纹理。

我不确定如何足够详细地描述问题,也不确定在代码中寻找什么,但这里有一些我怀疑包含问题的代码片段。

读取纹理

在渲染网格之前设置纹理

顶点着色器

片段着色器

我知道有些东西写得很奇怪,但在这一点上,我开始尝试任何事情来让它工作。

有人对如何解决这个奇怪的 UV 贴图有什么建议吗?

编辑:

对象加载

我已经让 obj 加载器打印所有顶点属性,并将这些属性与 .obj 文件中的索引进行比较。看起来 verecies、法线和 UV 以正确的顺序显示。

截屏

场景看起来像这样,仅使用简单的 reg 到绿色渐变作为纹理图像。

(根据我的理解,正方形应该显示纹理的渐变?不仅仅是一种颜色)

对齐听起来像是一个可能的缺陷,我该如何纠正这个问题?

http://imageshack.com/a/img674/9927/y0bJ51.png

解决方案

我犯了一个非常简单且容易忽略的错误。在我写的顶点着色器的顶部

所以我猜当我将法线数据发送到位置 1 时,我将纹理坐标设置为法线数据,因此 UV 坐标从未到达片段着色器。

更改为以下内容即可解决问题,无需进一步更改。