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

three.js - 使用 three.js 将场景渲染到自定义网格上

在搞砸了 Three.js 将场景渲染为纹理的演示之后,我成功地在我的项目中复制了它的本质:在我的主场景中,有一个 now 球体,并且通过THREE.WebGLRenderTarget缓冲区在其上绘制了一个次要场景。

不过,我真的不需要球体,而这就是我碰到一堵巨大的砖墙的地方。尝试将缓冲区映射到我的简单自定义网格时,我收到以下错误的无限流:

我的几何形状近似环形,是使用此代码创建的。我已经canvas通过传递{map: new THREE.Texture(canvas)}到材质选项成功地将一个 UV 映射到它上面,但是如果我使用{map: myWebGLRenderTarget}我会得到上面的错误。

粗略地看一下调用堆栈,看起来three.js 假设texture.image属性存在myWebGLRenderTarget并尝试调用clampToMaxSize它。

这是three.js中的一个错误还是我只是做错了什么?因为我只需要平面渲染(使用MeshBasicMaterial),所以我在调整上面的渲染到纹理演示时做的第一件事就是删除所有着色器的痕迹,它只适用于球体。我是否需要这些着色器才能使用 UV 映射和自定义网格?

0 投票
0 回答
4607 浏览

three.js - THREE.JS UV Mapping on ExtrudeGeometry

我需要在 ExtrudeGeometry 对象上应用纹理。

形状是圆形,拉伸路径由 2 个向量组成:

  • 一为顶。
  • 一个用于底部。

我没有选择 cylinderGeometry,因为我需要将几何图形的顶部/底部部分放置在精确的位置,而且创建的几何图形并不总是完全垂直的(例如斜圆柱)。

这是一个部分的图片(一个顶部矢量,一个底部矢量和这两个矢量之间的挤压形状)。

部分

以及我正在尝试应用的纹理图片。

部分

我想要做的就是将这张图片包裹在我的对象的垂直边上一次。

这是我的代码:

现在,如您所见,映射根本不正确。

在过去的 3 天里,我已经阅读了很多关于这个问题的信息。但是由于我是 THREE.JS 的新手,所以我的选择已经不多了。

我想我必须重新定义 UV 坐标,但我不知道该怎么做。

在 THREE.JS 中,将纹理包裹在类似圆柱体的对象上似乎绝非易事。

有人可以帮我解决这个问题吗?

0 投票
2 回答
470 浏览

c++ - 在 CPU 上模拟 OpenGL 纹理映射以进行重投影

我正在尝试使用 UV gBuffer 编写纹理重投影(这是一个纹理,其中包含用于在该像素处映射的 UV 所需值)

我认为这应该很容易通过看到这张照片来理解(我不能附加由于低声誉): http ://www.andvfx.com/wp-content/uploads/2012/12/3-objectes.jpg

第一个图像(黑色/黄色/红色/绿色)是 UV gBuffer,它代表 uv 值,第二个是漫反射通道,第三个是所需的结果。

在 OpenGL 上实现这一点非常简单。

绘制一个简单的矩形并将此伪代码用作分段着色器:

float2 newUV=texture(UVgbufferTex,gl_TexCoord[0]).xy; float3 finalcolor=texture(DIFFgbufferTex,newUV);

返回 float4(finalcolor,0);

OpenGL 负责选择 mipmap 级别、各向异性过滤等,同时如果我在常规 CPU 进程上进行此操作,我会得到一个用于 finalcolor 的像素,所以我的结果很清晰。

这里有什么建议吗?我想知道手动计算一种mipmaps并通过检查连续像素来选择级别,但不确定这是否是正确的方法,我也怀疑如何处理它,因为它可能在水平方向上快速变化但在垂直方向上变慢或反之亦然。

事实上,我不知道这是如何在 OpenGL/DirectX 内部计算的,因为我使用这种代码很长时间,但从未考虑过内部结构。

0 投票
1 回答
2116 浏览

c# - 统一确定动态生成网格的 uv 坐标

我有一个代表球体表面部分的网格,但在确定顶点的 UV 坐标时遇到了一些麻烦。

鉴于 verts 的生成代码,有人可以解释/提供我如何确定 uv 坐标的示例吗?

传入的“区域”包含北、南、东、西的度数。该代码将值转换为弧度,并确定在水平和垂直方向上所需的顶点数的步进量。

这么多工作正常。

对于这个“区域”,会生成球体表面的一部分,我想在该部分放置纹理,其中纹理的角也是网格的角。

换句话说,我如何在下面的代码中执行“待办事项”...

0 投票
2 回答
1947 浏览

opengl - GLSL UV (vec2) coords 优化输出

我正在使用 OpenGL 4.3 和 GLSL 编写应用程序,我需要着色器来进行基本的 UV 映射。问题是 GLSL 编译器似乎正在优化 UV 坐标。我无法从应用程序方面访问它们。

顶点着色器:

顶点着色器:

顶点和片段着色器都编译和链接没有错误,但是当我使用以下代码调用属性时:

我得到 0position和 -1 uvCoord,所以我只能假设uvCoord已经被优化,即使我使用它将它从顶点着色器传递到片段着色器。

结果是显示几何图形,但仅以黑色显示,没有纹理映射。

我在 Direct3D 和 HLSL 中编写了类似的应用程序,没有属性被优化的问题。我在想这是一件简单的事情,我忘记了或没有做,但还没有发现。

0 投票
1 回答
34 浏览

c# - 使用 UV 布局,我怎样才能最好地修改这个函数来访问我的纹理的任何部分?

我一直在尝试减少在我的体素/平面地形生成器中使用的代码,并编写了这个函数以便在每次我需要添加一组新的 UV 时调用 - 代表纹理贴图中的四个顶点:

但是,我似乎无法确定要在修饰符中写入的确切位置,它们似乎每次都会扔掉东西。我目前在 1024 文件中有一行 128x 纹理。目前的 UV 布局似乎是准确的,除了乘法。删除它,它完美地显示了第一个纹理。有哪些方法可以改进?我的目标是让它可以用于任何四个顶点平面。

0 投票
1 回答
924 浏览

three.js - 如何在 ThreeJS 精灵 R71 上进行 UV 映射

我能找到的所有示例都在网格上使用 UV 映射。是否有 UV 映射精灵的示例?我正在尝试将四分之一的纹理图像映射到 Sprite 上。

0 投票
1 回答
1830 浏览

three.js - 如何从面或 3d 点获取 UV 和纹理坐标?

我有一个球体几何体,其基本材料由纹理映射:

并单击鼠标:

这给了我一个相交对象的数组。
现在我怎样才能找到相交点的UV坐标,然后得到球体纹理的纹理像素(像素范围)?

0 投票
0 回答
1366 浏览

c++ - 如何计算此网格的正确 UV?

我目前正在使用 UE4 开发一个项目,并编写了一个高度图生成器并将他与一个 delaunay-triangulator 结合起来。然后我必须从输出文件中读取三角形/顶点。但是我有紫外线的问题。每个顶点都想定义一个 U 和一个 V 变量,但我不知道如何计算它们。基本上,我放在最终网格上的纹理应该看起来像一个大纹理。我唯一得到的工作(只是使用 0-1 范围内的值)是每个三角形都有一个显示的纹理,但没有与所有其他三角形对齐,所以它看起来像核电站爆炸。

这是我从两个文件中读取所有顶点并随机指定UV类型的代码。

谢谢你的帮助!

线框: 线框

指定材料: 有材质

编辑:

好的,我添加了以下代码:

现在它看起来不再像核事故了,但是纹理围绕整个网格拉伸,而不是重复,并且仍然略微扭曲。

0 投票
1 回答
1151 浏览

blender - 展开时,搅拌机中的 UV 映射未正确显示

我正在尝试在搅拌机 2.74 中对立方体进行 uv 映射,但即使所有六个面都放置在左侧的图像上,但实际上只有两个面显示在右侧的立方体上。我尝试以不同的方式展开并移动左侧的正方形,但仍然只有两侧显示图像。

当我尝试更复杂的形状(一棵树)时,无论我如何展开,都没有显示纹理。

但是,当我导出为 .obj 文件并使用 opengl 绘制它时,所有边都被纹理化,纹理坐标位于我将它们映射到的位置。所以我的问题是,在我实际导出文件之前,我不知道它会是什么样子。

在进行映射时,如何让对象的所有面都显示纹理?

在此处输入图像描述