问题标签 [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.
math - 如何找到两个相反的法线或两个线段?
我有两段AB 和 CD(红色)。这两个部分彼此面对。它们并不完全平行,但也永远不会相互垂直。
由此,我需要找到这些段的两条法线(蓝色),它们彼此相对(即两条法线在 ABCD 之外)。我知道如何计算线段的法线,但显然每个线段都有两个法线,我无法弄清楚如何以编程方式选择我需要的法线。有什么建议吗?
objective-c - 不寻常的照明效果 - 随机多边形着色
我正在创建一个用于 iOS 的对象加载器,我已经设法从 OBJ 文件加载顶点、法线和面数据,然后将这些数据放入数组中以重建对象。但是我遇到了照明问题,底部是我的程序模拟的视频 - 这是在以下位置的照明:
这在每帧的渲染方法和设置视图方法中都指定,该方法在设置时调用一次。
这里有各种其他的照明细节,这些在设置过程中被调用一次:
该问题的视频可以在这里找到:
谢谢,
保罗
[编辑]
有关更多信息,法线也由以下代码提供,它们目前位于大型法线数组或 XYZ XYZ XYZ 等...
opengl - 四边形的法线向量
我用 glBegin 和 glEnd 绘制了一个简单的四边形。通过 for 循环,我创建了四边形的副本并在 3D 空间中围绕我的 y 轴旋转它。现在的问题是我只看到前面的四边形。后面的这些不显示。我假设问题出在法线向量内,即朝向我的方向。是否有可能为一个四边形定义两个法线向量。
c++ - OpenGL 光照问题
当我在 OpenGL 中启用光照时,我无法看到我创建的对象。我有一个从 3D Max 导入的对象,该对象的照明可以正常工作,但我的场景的其余部分却不能。我知道我需要指定法线,但这似乎没有帮助。虽然如果我在 display() 函数中创建一个可以正常工作的简单多边形,但是在类的方法中创建并在 display() 函数中调用的其他多边形没有显示出来
这是我的照明代码
这是我的类方法,它正在创造我的海洋
然后在我的 display() 函数中调用它,如下所示
知道为什么我看不到这些吗?
更新:
如果我禁用纹理,我可以看到我的大海。如何修复它以便我可以使用纹理和照明?
更新 2:
已将纹理更改为 GL_MODULATE 但我还必须删除混合以使其工作。我需要启用混合吗?
c++ - 计算顶点法线OpenGL
我正在尝试计算波的顶点法线,但我得到的是方格效果而不是所需的平滑阴影。
我不确定我是否将正确的向量传递给calcNormal()
函数,或者是否有其他问题。
这是我的波形代码
这是calcNormal()
功能
这就是crossProduct()
功能
有任何想法吗?
opengl - 我将如何使用 GLSL 以 RGB 数据(法线映射)生成具有帧中每个片段的所有眼睛空间法线的纹理?
我需要以某种方式渲染纹理,例如场景的屏幕截图,除了存储法线而不是每个片段后面的点的颜色数据。它会生成一个看起来有点像法线贴图的纹理(例如this)。我做了很多研究(收效甚微),但我的直觉告诉我,最简单的方法是使用 GLSL 着色器。
那么是否有任何可能的方法来实现这一点,GLSL 或其他方式?
opengl - 使用 GLSL 着色器 + 光照/法线
我有这个不再那么小的基于图块的游戏,这是我的第一个真正的 OpenGL 项目。我想将每个图块渲染为 3D 对象。所以一开始我创建了一些对象,比如一个立方体和一个球体,为它们提供了顶点法线,并在即时模式下用平面着色渲染它们。但是由于我每个级别有 10.000 个对象,所以速度有点慢。所以我将顶点和法线放入 VBO。
那就是我遇到第一个问题的地方:在使用 VBO 之前,我只是为每个对象push()
编辑和编辑矩阵,并使用/将它们放置在我的场景中。但是当我对 VBO 做同样的事情时,灯光开始表现得很奇怪。而不是相机后面的固定照明位置,灯光似乎随着我的物体旋转。当绕着它们转 180 度时,我只能看到一个影子。pop()
glTranslate
glRotate
所以我做了一些研究。我找不到针对我的具体问题的任何答案,但我读到,应该实现着色器并为它们提供统一矩阵,而不是使用glTranslate
/ 。glRotate
我想“也许这也可以解决我的问题”并实现了第一个小型顶点着色器程序,它只会稍微拉伸我的对象,只是想看看我是否可以在关注细节之前让着色器工作。
好吧,我的对象被拉伸了——但现在 OpenGL 的平面着色被破坏了。我只是得到白色的阴影。而且我找不到任何有用的信息。所以我有几个问题:
我一次只能使用一个着色器,而当使用我自己的着色器时,OpenGL 的平面着色被关闭了吗?那么我必须自己实现平面阴影吗?
我的向量法线呢?我在某处读到,有一些类似于正常矩阵的东西。也许我在修改顶点时也必须对我的法线应用操作?
java - 如何将法线转换为度数?
我正在开发一款游戏,并且正在编写一个Entity
基类。由于许多实体的行为类似于粒子(2D),我想使用法线而不是旋转度数。但是,由于我使用的是 OpenGL,因此我需要旋转法线的度数。从法线转换为度数的最快方法是什么,反之亦然。我知道我可以使用诸如 etc 之类的三角函数atan2
sin
cos
,但我很确定有更快的方法。任何帮助或方向将不胜感激。
c++ - OpenGL 计算法线(四边形)
我的问题是关于 OpenGL 和 Normals,我了解它们背后的数学原理,并且取得了一些成功。
我在下面附加的函数接受一个交错的顶点数组,并计算每 4 个顶点的法线。这些代表具有相同方向的QUADS。据我了解,这 4 个顶点应该共享相同的法线。只要他们面对同样的方式。
我遇到的问题是我的 QUADS 使用对角渐变进行渲染,就像这样:灯光效果- 除了阴影在中间,灯光在角落。
我以一致的方式绘制我的 QUADS。TopLeft、TopRight、BottomRight、BottomLeft,我用来计算法线的顶点是 TopRight - TopLeft 和 BottomRight - TopLeft。
希望有人能看到我犯了错误的事情,但我已经在这几个小时没有占上风。
为了记录,我渲染了一个立方体,我的对象旁边有一个茶壶来检查我的照明是否正常工作,所以我相当确定没有关于灯光位置的问题。
3d - 如何解压 DEC3N 和 UDEC3 格式?
我有一个小工具可以用来转换一些网格文件。网格文件以 DEC3N 或 UDEC3 格式存储法线。如何将其解压缩到三个常规浮点 cpu 端?