问题标签 [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.

0 投票
1 回答
2320 浏览

c++ - 在 Eclipse 中找不到 -lgml - GLM

我正在尝试在我的 C++ 项目中使用 GLM。我通过突触安装了库。然后我将 glm 添加到 GCC C++ 链接器的库部分中:

项目 -> 属性 -> C/C++ 构建 -> 设置 -> 工具设置。

不幸的是,当我尝试使用 #include 包含 glm 时,会出现错误 /usr/bin/ld: cannot find -lglm 。

当我卸载glm时,错误变为致命错误:glm/glm.hpp:没有这样的文件或目录。

现在,我怀疑我需要安装除 libglm-dev 之外的其他东西,或者软件包安装在错误的位置,但后者听起来不太可能。

0 投票
4 回答
25700 浏览

math - What glm::normalize does?

I trying to write an MD5 loader in Java from C++ source but I cannot find out what is this line doing:

where the animatedJoint.m_Orient is vec4. What does it do?

0 投票
2 回答
3693 浏览

c++ - C / C++ 矩阵乘法顺序

在数学中,如果将三个矩阵“A”、“B”和“C”相乘,得到第四个矩阵“D = A * B * C”,则必须从右到左计算顺序。用括号来说明,前面的语句完全等价于下面的语句;'D = (A * (B * C))'。

您可以看到这如何适用于表达式 '{ M = A * B * C * D } == { M = (A * (B * (C * (D)))) }',这是另一个示例。

在 C、C++ 中,我使用除法进行了测试,以检查在 C 和 C++ 中执行操作的顺序。

但是,我编译汇编代码可能有更好的方法来执行此操作:

这给出了输出:

这向我表明,如果我要创建一个类来表示矩阵,那么乘法的顺序将是从左到右,这与所需的相反,因为具有浮点运算和除法的示例是从左到右评估的这三个操作具有相同的优先级。

在 OpenGL 数学库 GLM 中,矩阵运算以正确的顺序计算,不需要括号。

如何使 operator*() 以这种方式运行?

编辑

呃,是的,所以它实际上并不重要,因为它已经向我指出了。在这种情况下,我的问题变成“是否可以更改订单”?(也许我困了?)

0 投票
1 回答
1237 浏览

c++ - 将 glm::mat4 转换为 XMFLOAT4X4

我想从方向四元数和位置向量创建一个初始变换矩阵。

我的初始矩阵是 glm 格式,但我想将 glm 矩阵转换为 XMFLOAT4X4 矩阵。

那么如何将 glm_mWorld 的内容加载到 XMFLOAT4X4 中呢?

更新:所以在建议我使用 memcpy 之后,我想出了以下内容:

这会导致错误:

此外,关于列主矩阵/行主矩阵,glm 使用列主矩阵,而 XMFLOAT4X4 使用行主矩阵,这就是我在尝试转换 glm 矩阵之前转置它的原因。

0 投票
2 回答
2250 浏览

c++ - 如何在任何单轴上否定 GLM 四元数旋转?

我有一个从传感器派生的四元数,它在 OpenGL ES 场景中旋转“相机”。此外,我将此四元数的逆应用于场景中的某些对象,因此它们“面向”“相机” - 这可以按预期工作。问题是我需要否定这些对象在 Z 轴上的旋转。我如何想出一个在 Z 分量内没有旋转的四元数?

我的测试:我试图提取欧拉角,创建一个否定的四元数并通过两个四元数的乘法为这些对象构建旋转矩阵 - 结果不正确。

0 投票
1 回答
5479 浏览

c++ - 当 z <= 0 时 glm::lookAt 垂直相机翻转

我正在开发一个 FPS 风格的相机来使用 OpenGL 在我的 3D 场景中飞行。我将 GLM 用于数学,并使用鼠标移动在 x 轴和 y 轴上使用 glm::rotate 计算方向向量。我有一个静态的向上向量,因为我可以在水平轴上扫射并且不需要任何滚动。

但是,当我朝负 z 方向前进并最终到达场景的中心点 (z=0) 时,垂直相机翻转(y 方向)。向下移动鼠标现在将导致向上运动。方向向量的计算方式应该如此,所以我猜它与 glm::lookAt 如何计算其视图矩阵有关?

以下是相关代码:

0 投票
3 回答
35829 浏览

visual-studio - 如何在 Visual Studio 2012 中设置 GLM 库

如何在 Visual Studio 2012 中设置GLM 库?

首先,我尝试将 glm 库目录提取到我的 VS 2012 项目目录(包含 glm 库的目录名为 glm-0.9.4.4)。然后我尝试将 glm-0.9.4.4 添加到

项目 -> 属性 -> VC++ 目录 -> 包含目录

然后当我尝试#include <glm/glm.hpp>在我的代码中使用包含时,我收到以下错误:

致命错误 C1083:无法打开包含文件:'glm/glm.hpp':没有这样的文件或目录

如何正确设置 GLM 库以在我的代码中工作?

0 投票
1 回答
788 浏览

c++ - 在 Mac OS X 上使用 CUDA 5.5 时出现内核失败错误

我正在写一个 CUDA Raytracer,似乎遇到了一个奇怪的问题。我在我的 Mac OS X 上使用 CUDA 5.5 和 GCC4.2.1,并且正在使用 GLM 0.9.4.4。每当我调用我的 raycastFromCameraKernel 函数时,我都会收到此错误:

Cuda 错误:内核失败!:操作系统调用失败或此操作系统不支持操作。

经过一些调试,我想我已经将问题缩小到glm::normalize(temp)功能上。如果我通过编写自己的 normalize 函数来代替它,则代码可以正常工作。有趣的是,当我使用 glm::normalize 编写示例程序以查看它是否正常工作时,它编译并正常运行!

这是有问题的函数的代码:

有人可以帮忙吗?

0 投票
2 回答
5344 浏览

opengl - Opengl 广告牌矩阵

我正在为 OpenGL 中的专有网格和动画格式编写查看器。

在渲染过程中,会为每个骨骼(节点)创建一个变换矩阵,并将其应用于骨骼所连接的顶点。

骨头可能会被标记为“Billboarded”,众所周知,这意味着它应该始终面向相机。

所以这个想法是为那个骨骼生成一个矩阵,当它用于转换它所连接的顶点时,会导致顶点被广告牌。

在我的测试模型上,它应该如下所示:

在此处输入图像描述

但是目前它看起来像这样:

在此处输入图像描述

请注意,尽管它的方向不正确,但它是广告牌。无论相机朝哪个方向看,这些顶点总是在那个方向上面向那个方向。

我为标记为广告牌的骨骼生成矩阵的代码是:

我正在使用 GLM 进行相关的数学运算。

尽管这部分代码基于此处的教程,但代码的其他部分基于类似于我正在构建的开源程序。然而,该程序是为 DirectX 编写的,我没有太多运气直接转换。用于广告牌的(工作)directX 代码如下所示:

请注意,结果存储在 directX 版本的 baseMatrix 中。

EDIT2:这是我根据 datenwolf 的建议尝试修改代码时提出的代码。我很确定我仍然犯了一些错误。这种尝试会产生严重扭曲的结果,对象的一端直接位于相机中。

0 投票
1 回答
1588 浏览

c++ - FPS风格的相机

我是 GLM 的新手,正在尝试编写一个 fps 风格的相机类

移动鼠标时是否需要重新计算向上矢量?

但是,在我更改向上矢量后,一切看起来都很奇怪

尽管如此,当我维护向上向量时,我的程序看起来还是有问题

文件:fpscamera.cpp

您可以在此处下载源代码和二进制文件

https://docs.google.com/file/d/0B9givuJvSet8ekRReWtRM29ldzg/edit?usp=sharing

mingw-built64 g++4.8(C++11) glfw3 GLM(MathHelper Library) 需要

g++ -std=c++0x -Wall main.cpp mesh.cpp fpscamera.cpp -lglfw3 -lopengl32 -lglu32 -lgdi32

向目标移动……W

左转/右转.... Q/E

向左/向右移动.... A/D

=====================2013/8/6 编辑我编辑我的相机类并添加偏航俯仰滚动功能

我用偏航和俯仰实现鼠标相机控制

问题依然存在......

最初的

沿着圆形路径移动鼠标几次后......

最终的