问题标签 [glm-math]
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.
opengl - glm 使用什么编译/链接机制?
我目前正在使用 OpenGL 使用 glm 库,我看到每个头文件 (*.hpp) 都有自己的实现文件 (*.inl),但是每次编译项目时它如何自动编译(或链接)glm?例如:
但是编译的时候没有报错!
c++ - OpenGL 3.2 设置矩阵的麻烦
我正在使用 GLM 来管理我的矩阵,但我遇到了一些对我来说毫无意义的问题。当我将投影矩阵设置为单位矩阵以外的任何东西时,我看不到我要绘制的正方形。如果它是一个身份,它将起作用。我的视图矩阵发生了类似的事情。如果我尝试翻译过去 -1 或 +1,方块就会消失,否则它似乎没有效果。
没有 OpenGL 错误、GLSL 链接器/编译器错误,并且 glGetUniformLocation 返回一个有效位置。着色器程序也被正确使用。
我还测试了着色器以查看它是否将正确的值传递给每个矩阵(如果值正确,则通过更改正方形的颜色)。
这是我设置投影矩阵的方法:
这是我的绘图功能:
}
这是shader.vert
这是shader.frag
抱歉忘了我在画什么:
像这样设置我的矩阵不会在屏幕上绘制任何内容。就像我说的,如果我将投影和视图矩阵设置为一个身份,它将起作用。modelMatrix 上的缩放似乎也总是有效。
java - OpenGL ES 中的 GLM 库
我已经 3 年没有用 Java 编程了,因此我对它有点笨拙。
问题是我必须使用 OpenGL ES 开发一个 Android 应用程序。现在我想知道我应该如何做我的 3D 数学。在我的 C++ 游戏中,我总是使用 glm ( glm.g-truc.net ),但这是一个 C 库。
我看过一些关于这个话题的帖子,上面说 glm 在 OpenGL ES 中使用也很好。但这就是重点。我可能听起来很笨,但我不知道如何在用 JAVA 实现的 OpenGL ES 应用程序中使用 glm。我必须使用 JNI 才能使用该库吗?
c++ - 如何正确旋转 GLM 四元数?
我想在我的游戏中将我的车向左旋转 90 度。
当我使用此代码时:
汽车发生了奇怪的旋转。
然而,以下代码根本不会改变汽车的旋转(正如我所期望的,只是为了确保 GLM 与游戏中的 quats 兼容):
每当我尝试这个来检查旋转是否随它改变时:
汽车旋转在游戏中设置为 0,0,0,0 旋转。我希望这段代码不会改变旋转,因为我希望下面的代码将汽车向左旋转 90 度:
但这不是我想要的方式。它只是设置旋转,而不是将其添加到“rot”。
我究竟做错了什么?
c++ - glm::unProject 将鼠标位置转换为 3 个坐标
我正在为我的矩阵数学使用 OpenGL 3.2 + GLM。下面是我的代码:
winZ
是正确的。当我点击模型时,它是 1.0 (zfar),当我点击模型时,它看起来与我预期的相似。但是,返回的值pos.z
不是我所期望的。当鼠标在背景上时:如果它朝向中心,则pos.z
变小,当它在屏幕边缘时pos.z
是 zfar。谁能解释一下?
我遇到的实际问题是,pos.x
并pos.y
没有返回我期望的以太。我的模型是 4.88 单位宽,但unProject
说它大约是 20 单位宽?(如果我添加悬停在左侧和右侧的值)。
哦,屏幕中心是 0,0,正如预期的那样。
编辑:我还应该注意,返回pos.z
取决于鼠标从屏幕中心的位置。当它位于模型顶部时,它确实会变为更高的数字。如果光标的 Y 位置在屏幕中心上方,pos.z
则为正。如果 Y-pos 低于,pos.z
则为负。看起来真的很奇怪。
c++ - 用 GLM 确定四元数前面的位置?
有没有办法计算四元数(XYZW)旋转前的 XYZ 位置,最好使用GLM?
我知道 Quat 旋转和我想计算前面位置的对象的位置。
我知道如何计算旋转矩阵前面的位置,其中你有一个前向量、上向量和右向量,但在这种情况下,我只有 XYZW 值(其中 W 始终为 0,我从未看到它变为 1.. ?)
简而言之:我拥有的数据:Quat (X Y Z W)
并且Position(X Y Z)
我想计算PositionInFront(Position, Quat, Distance, &X, &Y, &Z)
如何实现这个目标?
我尝试转换为 3x3matrix 并执行 Up,Right,Front(因为 3x3 矩阵转换是这些值,对吗?)计算,但它们没有返回正确的位置。
或者是否可以确定物体的 Z 角?(仅围绕世界 Z / 高度轴旋转)
opengl - 如何在 glm 中创建广告牌矩阵
如何使用 glm 从空间中的一个点创建广告牌平移矩阵?
opengl - 平移和旋转后调整相机视图
我正在尝试在房间里制作“步行相机”的场景。
目前,我什么都看不到,更不用说旋转和平移了,我也不知道为什么。
请注意,在我使用查看功能之前,我可以看到我应该看到的所有内容,
但是平移和旋转是错误的,因为我总是按照定义的轴移动,
而不是我应该的相机轴。
这是我现在的代码:
透视和看——
按下某些键后的平移和旋转:
现在定义的顶点:
我连接它们的原因:
一些缓冲:
关于如何根据需要定义相机并使用平移和旋转来配合相机的任何想法?
c++ - OpenGL,GLM 四元数旋转
我正在更新一个旧的 OpenGL 项目,并且正在为矩阵和四元数切换所有(已弃用的)glMatrix()函数,并且无法使旋转正常工作。
我的画是这样的:
我现在要做的是围绕特定点(如对象的中心)对对象应用旋转。我试过了:
但这会导致对象围绕它的一个边缘旋转,而不是它的中心。
我想知道如何应用四元数来围绕我作为参数传递的任何点旋转对象。
我对矩阵没有经验,因为我避免使用它们是因为我之前可以使用glMatrix()函数,所以我不太了解空间位置与它们之间的关系,并且尝试将它们更新为四元数看起来更多复杂。
从技术上讲,我已经阅读了四元数的逻辑以及如何使用它们,但我不明白它们的值从何而来。
例如:
我读了这个,我不知道这些值是什么。轴是单位向量...什么?fAngle我假设它是我想要旋转的角度,但是由于四元数使用任意轴,我如何获得每个 XYZ 轴的值,以及如何在四元数中指定它?
所以,我正在寻找四元数的任何实际示例/教程,所以我可以理解发生了什么。
当我想旋转一个对象时,我拥有的唯一信息是我想旋转的轴(x、y 或 z,不是全部,而是它们在最终结果中的组合),以及一个以度为单位的值。我不是一个数学人,所以任何不使用快捷方式的教程都受到高度赞赏。
opengl - OpenGL中的相机翻译
我正在尝试上一门课程来在 OpenGL 中穿越世界,但我遇到了数学问题。我的想法是使用 glm 中的函数 lookAt 将观察者设置在我想要的位置,然后只使用我传递给函数的点进行操作。我认为我所做的旋转功能是正确的,但是 walk 方法中的平移部分似乎是错误的,当我尝试在世界中行走时,如果我只是平移或旋转,事情就正常了,但是当我做这两件事只是搞砸了。
这是到目前为止的课程:
所以在我开始绘制之前,我在程序的其他部分设置了这个类的视图矩阵。谁能告诉我我的数学是否正确?