问题标签 [normals]

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 投票
2 回答
3024 浏览

directx - 在 DirectX 中计算顶点法线

作为学习经验,我正在编写一个即时模式管理的 DirectX 9 应用程序。

我正在手动计算场景中所有三角形的顶点法线,以实现平滑的 Gouraud 着色。

这按预期工作,但我猜这不是最有效的方法。是否可以让 GPU 为我执行此操作?

0 投票
2 回答
990 浏览

math - 在 3D 空间中任意变换的等边三角形的法线

我有一个问题,我似乎无法找到一个起点;我什至不确定我能不能很好地描述它以获得答案。

我需要在不事先知道三角形点的情况下在 3D 空间中找到等边三角形的法线。考虑从任何角度拍摄三角形“屈服”街道标志的照片,并从该照片中确定标志的朝外法线。(我没有这样做,确切地说,但类似 ​​- 所以我将从这里使用标志/照片隐喻)。

** 更新 **:在我问我的版本的前一天出现了同样的问题,你可以在这里查看。感谢 BlueRaja 将我指向那里。我认为那里的讨论会回答这个问题。但是,下面介绍了一种计算方法,该方法也非常有趣。

当我在代码中创建三角形时,我知道如何找到三角形的法线,但不确定如何将点映射到 3D 照片中的三角形。我知道每一边的长度,所以我知道这些点在任何方向上应该相距多远。我可以构建一个交互式工具,我可以覆盖一个三角形并将其旋转到某个位置并从中获取点,但我需要在没有交互的情况下执行此操作。这样做也无助于我弄清楚所涉及的数学。

我什至不确定我是否需要像找到正确的旋转矩阵一样确定点。

我只是不知道从哪里开始......搜索这个概念是空的,或者不是我想要做的(例如:它们是 2D 转换而不是 3D)

也有可能我把事情过于复杂了,并且有一个简单的变换方程可以在它的睡眠中做到这一点。

想法?提前致谢!

0 投票
1 回答
530 浏览

opengl - 从 OpenGL 渲染输出中获取法线信息

我会尽量保持简单。

我想要一种从帧缓冲区输出(或类似输出)访问场景正常信息的方法。同样的方式可以使用 glGetTexImage 和 GL_DEPTH_COMPONENT 访问深度缓冲区。

我知道我可以设置一个片段着色器,它在 RGB 颜色空间中输出法线信息,而这些信息又可以从渲染图像中读取。但是,我想知道是否有办法在 openGL API 中执行此操作。

我会根据要求尽可能澄清任何事情,谢谢

0 投票
2 回答
326 浏览

opengl-es - 多少个正常值?

如果您正在计算多边形的法线以在 WebGL 上渲染它,您是为索引数组中的每个索引还是为顶点数组中的每个顶点使用法线?

0 投票
2 回答
2493 浏览

iphone - 有人可以解释如何使用 glDrawElements (iPhone) 吗?

对不起,重复了,但我已经谷歌搜索了几个小时没有任何结果。

我有一个从转换器导出的简单立方体的(优化的)数据:

我设置了纹理,我想在屏幕上看到一些东西。我最近的绘图代码如下:

0 投票
1 回答
4841 浏览

opengl - glDrawElements 索引应用于顶点和法线

当您说 2 个数组(一个用于法线,一个用于顶点)并使用在顶点和法线之间交错的索引缓冲区时,是否可以使用 glDrawElements 方法。

示例:渲染 Cube

0 投票
2 回答
1727 浏览

3d - 计算两个 3D 三角形是否在同一平面上

对于我正在开发的 3D 游戏引擎,我需要计算两个 3D 三角形是否在同一平面上以相应地显示它。如何计算 3D 空间中三角形的角度?

计算表面法线并比较它们会给我两个等效的法线吗?

0 投票
5 回答
3693 浏览

3d - 切线、副法线和其他与着色器相关的东西

许多映射技术,包括法线凹凸贴图、视差贴图和其他技术,都需要特殊的逐顶点切线空间基础(切线、法线、副法线/双切线)。

这显然意味着我的模型不仅应该导出顶点位置纹理坐标近似的每个顶点法线,还应该导出切线空间基向量之一(通常tangent),因为另一个可以直接在着色器中使用cross(tangent, normal).

请注意,位置、法线、uv 和切线实际上以下列方式相互依赖(您必须了解有关顶点的所有其他信息才能准备切线基础)。

现在 - 现代 3D 游戏/渲染引擎如何处理这类事情?

它们实际上是否提供了每个顶点的法线切线uv 坐标,或者它们是否可以在运行时以某种方式计算?它们应该是模型数据的一部分还是应该是仅运行时的属性?

我也知道,当使用Direct3D10+几何着色器时,实际上可以在运行时准备法线和切线(显然,因为我们可以访问每个三角形中的顶点)——值得还是应该总是预先计算这些东西?

0 投票
1 回答
3776 浏览

opengl - 计算法线并将其应用于三角形网格

我有一个三角形网格,我正在尝试计算法线,以便在绘制网格时应用它们。我正在使用立即模式(当我有时间了解它们如何工作时,可能会更改为顶点数组)并使用 GL_TRIANGLE_STRIP 绘制网格。

我在计算顶点法线时遇到问题。更精确地决定在计算中使用哪些相邻顶点,然后决定何时设置这些法线。考虑一下:

我知道您必须计算属于一个平面的 2 个向量的叉积才能使平面正常。所以在那个例子中,顶部三角形的法线可以通过 (2-1)x(3-1) 计算,第二个三角形的法线可以通过 (2-4)x(3-4) 计算。在立即模式下绘制三角形条时如何应用法线?

我所做的是在设置 vtx 1 时设置第一个法线,在设置 vtx 4 时设置第二个法线,在设置 vtx 5 时设置第三个法线,等等。但这会产生问题,因为您显然最终会为每个法线设置不同的法线三角形的顶点(当它们都应该相同时)。例如,三角形 |2,3,4| 只会有具有正确法线的顶点 4(因为对于顶点 2 和 3,法线将是第一个三角形的那个)。

那么应该怎么做呢?有没有办法,或者我需要改变GL_TRIANGLES吗?(我现在不想停止使用即时模式,因为我没有时间)。

0 投票
2 回答
3528 浏览

android - 为什么这个 Android 镜面光照示例没有按预期工作?

为什么以下代码生成的二进制文件中没有出现镜面高光?

这是我从代码中看到的内容(只有一个镜面光照组件):http: //i.imgur.com/4kvIx.png

仅使用环境照明组件:http: //i.imgur.com/80Tjx.png

只有一个漫射照明组件:http: //i.imgur.com/r5PkO.png

可能有趣的是,我调用 glOrtho 中的 zNear/zFar 参数似乎没有剪裁任何东西。我是否正确设置了场景以查看镜面高光(我确实尝试将灯光定位在顶点附近)?