问题标签 [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.
three.js - threejs 凹凸地图比例/平铺
我正在尝试使用 Three.js 将凹凸贴图应用于在运行时导入的网格。
我实际上可以应用凹凸贴图,但我需要指定地图的垂直和水平缩放比例(有人称之为平铺)。我看到对于bumpMapping,比例只有一个值,而不是我想的Vector2。
我看到有 bumpMap.repeat 属性,但我认为这不是我需要的。
有人可以给我一些建议吗?
非常感谢
我刚刚注意到我不能发布快照,因为我是新来的。如果有人有兴趣,请让我知道如何发送图像。
java - 如何从高度图扰动表面法线
我正在自己的 3D 跟踪器中实现凹凸贴图。真的很短 - 我想要这个结果:
我一直在阅读关于凹凸贴图、高度贴图、法线贴图等的页面和页面,我想我理解了大部分主题,以及以上所有内容之间的区别等等。(我得到了 perlin-bumpmapping 的工作 -结果)唯一我不明白的是如何从给定纹理图像的对象中实际扰动表面法线。大多数论文和页面在该主题上都非常模糊。
首先,我认为您只需向对象添加图像纹理,对于给定的像素,您将根据纹理计算 rgb 颜色,然后根据 rgb 值计算亮度因子(类似于灰度值,... ) 并在添加灯光效果之前用它扰乱法线。- 我想(ed)即时计算法线。
问题:如果上述情况甚至可能:在给定亮度因子的情况下如何扰动法线?如果我在这里错了,任何可以帮助我达到给定结果的提示/链接将不胜感激。
问题 2:如果以上对于任何给定的 rgb 图像都不可能,任何人都可以解释如何在给定高度图的情况下扰动图像?就像维基百科上的第一张图片 非常感谢。
PS:我正在/必须用 Java 实现。
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 个:
three.js - ThreeJS:Phong 材质的凹凸贴图是否使用 UV 贴图?
我疯狂地尝试在 ThreeJS (r61) 中处理 PhongMaterial 的 bumpMap。漫反射和法线工作正常。这是我的代码:
我尝试将bumpScale修改到任何极端,根本没有改变。
凹凸贴图是否默认使用我的对象加载的 uv 贴图?我只能找到使用平面或球体等原始几何形状的示例。
纹理对象的 UVMapping 属性有什么用?
任何提示表示赞赏!谢谢。
opengl - 使用 GLSL 进行凹凸映射
我正在尝试实现凹凸贴图,但我不知道问题出在哪里,着色器似乎没问题。我很确定法线、切线和双切线计算得很好,问题出在着色器中,但如果有人想在这里查看代码的其他部分,那就是:
(https://github.com/CarlosCarrera/OpenglElements)
顶点着色器.vsh
片段着色器.fsh
我得到的结果是这样的:
java - glsl,JOGL中的顶点世界位置
所以我一直在尝试实现凹凸映射一段时间,并且我让它以某种方式工作。因此它可以正确渲染纹理和阴影,但不会随着光源的移动而变化 如何确定着色器中片段的世界位置?我现在有点卡住了,任何帮助将不胜感激。
--顶点着色器
--片段着色器
--jogl,连接着色器的java代码
亲切的问候约翰德
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)
opengl - SDL OpenGL 法线映射
在 SDL 中将法线贴图应用于带纹理的四顶点多边形的最简单方法是什么?你必须创建一个着色器还是有更简单的方法?我在这里有我的代码,它创建了一个带有旋转卫星灯的带纹理的旋转立方体。
如果我还想将生成的纹理(tex_Norm = generateTexture())用作法线贴图,我需要对我的代码做哪些补充?
android - libgdx 和预建着色器?
我来自 XNA 背景,重用其他人制作的着色器真的很酷。有一个非常酷的绽放着色器,它可用且易于重用。是否有官方或非官方的可重用着色器集合,用于水、法线贴图或其他很酷的效果?
c++ - 法线映射问题
我正在我的 OpenGL 应用程序中实现切线空间法线映射,我有几个问题。
1)我知道,自然地,TBN 矩阵并不总是正交的,因为纹理坐标可能有倾斜。我知道您可以使用 Gramm-Schmidt 过程对其进行重新正交化。我的问题是——Gramm-Schmidt 过程是否会引入可见的伪影?通过使用纯未修改的法线/切线/双切线,我会获得最佳的视觉质量吗?
2)我注意到在很多教程中,他们在切线空间而不是视图空间中进行照明计算。为什么是这样?我打算使用延迟渲染器,所以我的法线必须保存到缓冲区中,我是否正确,因为它们在保存时应该在视图空间中?在计算中使用视图空间而不是切线空间会错过什么?如果我使用视图空间,是否需要 TBN 矩阵的逆矩阵?
3)在片段着色器中,切线和副切线是否必须重新归一化?在乘以传入(归一化)凹凸贴图法线之后,是否必须重新归一化?正交性(见问题 1)会影响这个吗?在片段着色器中哪些向量需要或不需要重新规范化?