问题标签 [bump-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 投票
0 回答
1707 浏览

three.js - threejs 凹凸地图比例/平铺

我正在尝试使用 Three.js 将凹凸贴图应用于在运行时导入的网格。

我实际上可以应用凹凸贴图,但我需要指定地图的垂直和水平缩放比例(有人称之为平铺)。我看到对于bumpMapping,比例只有一个值,而不是我想的Vector2。

我看到有 bumpMap.repeat 属性,但我认为这不是我需要的。

有人可以给我一些建议吗?

非常感谢

我刚刚注意到我不能发布快照,因为我是新来的。如果有人有兴趣,请让我知道如何发送图像。

0 投票
1 回答
749 浏览

java - 如何从高度图扰动表面法线

我正在自己的 3D 跟踪器中实现凹凸贴图。真的很短 - 我想要这个结果:

想要的结果

我一直在阅读关于凹凸贴图、高度贴图、法线贴图等的页面和页面,我想我理解了大部分主题,以及以上所有内容之间的区别等等。(我得到了 perlin-bumpmapping 的工作 -结果)唯一我不明白的是如何从给定纹理图像的对象中实际扰动表面法线。大多数论文和页面在该主题上都非常模糊。

首先,我认为您只需向对象添加图像纹理,对于给定的像素,您将根据纹理计算 rgb 颜色,然后根据 rgb 值计算亮度因子(类似于灰度值,... ) 并在添加灯光效果之前用它扰乱法线。- 我想(ed)即时计算法线。

问题:如果上述情况甚至可能:在给定亮度因子的情况下如何扰动法线?如果我在这里错了,任何可以帮助我达到给定结果的提示/链接将不胜感激。

问题 2:如果以上对于任何给定的 rgb 图像都不可能,任何人都可以解释如何在给定高度图的情况下扰动图像?就像维基百科上的第一张图片 非常感谢。

PS:我正在/必须用 Java 实现。

0 投票
1 回答
1271 浏览

opengl - OpenGL 和 GLSL 中的凹凸贴图

我正在尝试使用 OpenGL 和 GLSL 在多维数据集上实现凹凸映射。然而,当我旋转我的立方体时,只出现了朝左的正方形和朝右的正方形(即在负 x 和正 x 方向上),立方体的其他四个面(顶部、底部、前、后) 是黑色的。这是一个例子:

在此处输入图像描述

我的网格类由 indexList 和 vertexList 组成(Vertex 类包含 x、y、z 等)。我正在使用这个简单的 cube.ply 模型,它包含 s,t 纹理坐标。借用这个例子,我计算切向量如下:

如果我输出每个三角形的切线向量的值,我会得到这些值:
1, 0, 0
1, 0, 0
0, 0, -1
0, 0, -1
0, 0, 1
0, 0, 1
-1, 0, 0
-1, 0, 0,
1, 0, 0
1, 0, 0
1, 0, 0
1, 0, 0

如果这些都是正确的,那么问题很可能出在着色器中。我的着色器如下(主要取自一本书):

垂直:

碎片:

编辑:更改背景以更清楚地看到黑色面孔。另外,我错误地指出了哪些面孔实际上是之前出现的。

编辑 2:我发现片段着色器中 max(dot(normalDelta, lightDirection), 0.0) 的值对于这些面返回 0。但是,我仍然不知道为什么。

编辑 3:嗯,问题原来是我在我的 Vertex 类中传递了错误的切向量索引。也就是说,我在这一行中有 10 个而不是 9 个:

0 投票
0 回答
2178 浏览

three.js - ThreeJS:Phong 材质的凹凸贴图是否使用 UV 贴图?

我疯狂地尝试在 ThreeJS (r61) 中处理 PhongMaterial 的 bumpMap。漫反射和法线工作正常。这是我的代码:

我尝试将bumpScale修改到任何极端,根本没有改变。

凹凸贴图是否默认使用我的对象加载的 uv 贴图?我只能找到使用平面或球体等原始几何形状的示例。

纹理对象的 UVMapping 属性有什么用?

任何提示表示赞赏!谢谢。

0 投票
1 回答
716 浏览

opengl - 使用 GLSL 进行凹凸映射

我正在尝试实现凹凸贴图,但我不知道问题出在哪里,着色器似乎没问题。我很确定法线、切线和双切线计算得很好,问题出在着色器中,但如果有人想在这里查看代码的其他部分,那就是:

https://github.com/CarlosCarrera/OpenglElements

顶点着色器.vsh

片段着色器.fsh

我得到的结果是这样的:

https://dl.dropboxusercontent.com/u/1015014/Captura%20de%20pantalla%202013-12-04%20a%20la%28s%29%2001.16.08.png

0 投票
1 回答
460 浏览

java - glsl,JOGL中的顶点世界位置

所以我一直在尝试实现凹凸映射一段时间,并且我让它以某种方式工作。因此它可以正确渲染纹理和阴影,但不会随着光源的移动而变化 如何确定着色器中片段的世界位置?我现在有点卡住了,任何帮助将不胜感激。

--顶点着色器

--片段着色器

--jogl,连接着色器的java代码

亲切的问候约翰德

0 投票
1 回答
1846 浏览

c++ - 切线空间,切线/副法线计算

我有以下代码来计算切线,双切线。而且我可以使用法线贴图成功渲染一些网格示例。

我有一个特定网格的问题,它计算法线的切线共线。

任何帮助将不胜感激,以确定原因。

这个例子是这样的:

v0: (-9.860292,6.589309,-8.947665) v1: (-9.860292,0.000000,-8.947665), v2 (-8.068345,0.000000,-8.947665)

uv0: (-0.073677,-0.141450) uv1: (-0.074518,-0.140732), uv2 (-0.074243,-0.140732)

deltaPos1: (0.000000,-6.589309,0.000000) deltaPos2: (1.791947,-6.589309,0.000000)

deltaUV1: (-0.000841,0.000718) deltaUV2: (-0.000566,0.000718)

正常:(1.000000,0.000000,0.000000) 切线:(6516.150391,-0.000000,-0.000000),双切线 (7632.445312,-9177.340820,-0.000000)

0 投票
2 回答
895 浏览

opengl - SDL OpenGL 法线映射

在 SDL 中将法线贴图应用于带纹理的四顶点多边形的最简单方法是什么?你必须创建一个着色器还是有更简单的方法?我在这里有我的代码,它创建了一个带有旋转卫星灯的带纹理的旋转立方体。

如果我还想将生成的纹理(tex_Norm = generateTexture())用作法线贴图,我需要对我的代码做哪些补充?

0 投票
1 回答
1942 浏览

android - libgdx 和预建着色器?

我来自 XNA 背景,重用其他人制作的着色器真的很酷。有一个非常酷的绽放着色器,它可用且易于重用。是否有官方或非官方的可重用着色器集合,用于水、法线贴图或其他很酷的效果?

0 投票
1 回答
235 浏览

c++ - 法线映射问题

我正在我的 OpenGL 应用程序中实现切线空间法线映射,我有几个问题。

1)我知道,自然地,TBN 矩阵并不总是正交的,因为纹理坐标可能有倾斜。我知道您可以使用 Gramm-Schmidt 过程对其进行重新正交化。我的问题是——Gramm-Schmidt 过程是否会引入可见的伪影?通过使用纯未修改的法线/切线/双切线,我会获得最佳的视觉质量吗?

2)我注意到在很多教程中,他们在切线空间而不是视图空间中进行照明计算。为什么是这样?我打算使用延迟渲染器,所以我的法线必须保存到缓冲区中,我是否正确,因为它们在保存时应该在视图空间中?在计算中使用视图空间而不是切线空间会错过什么?如果我使用视图空间,是否需要 TBN 矩阵的逆矩阵?

3)在片段着色器中,切线和副切线是否必须重新归一化?在乘以传入(归一化)凹凸贴图法线之后,是否必须重新归一化?正交性(见问题 1)会影响这个吗?在片段着色器中哪些向量需要或不需要重新规范化?