- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理一个涉及一些锥体网格的场景,这些网格将用作延迟渲染器中的聚光灯。我需要缩放、旋转和平移这些锥体网格,以便它们指向正确的方向。根据我的一位讲师的说法,我可以旋转锥体以与方向 vector 对齐,并通过将其模型矩阵与由此返回的矩阵相乘将它们移动到正确的位置,
glm::inverse(glm::lookAt(spot_light_direction, spot_light_position, up));
但这似乎不起作用,这样做会导致所有圆锥体都放置在世界原点上。如果我随后使用另一个矩阵手动平移锥体,那么锥体似乎甚至没有朝向正确的方向。
有没有更好的方法来旋转对象,使其面向特定方向?
这是我当前为每个锥体执行的代码,
//Move the cone to the correct place
glm::mat4 model = glm::mat4(1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
spot_light_position.x, spot_light_position.y, spot_light_position.z, 1);
// Calculate rotation matrix
model *= glm::inverse(glm::lookAt(spot_light_direction, spot_light_position, up));
float missing_angle = 180 - (spot_light_angle / 2 + 90);
float scale = (spot_light_range * sin(missing_angle)) / sin(spot_light_angle / 2);
// Scale the cone to the correct dimensions
model *= glm::mat4(scale, 0, 0, 0,
0, scale, 0, 0,
0, 0, spot_light_range, 0,
0, 0, 0, 1);
// The origin of the cones is at the flat end, offset their position so that they rotate around the point.
model *= glm::mat4(1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, -1, 1);
我已经在评论中注意到了这一点,但我会再次提到锥体原点位于锥体平端的中心,我不知道这是否会有所不同,我只是想我' d 提出来。
最佳答案
您的矩阵顺序似乎是正确的,但 lookAt 函数期望:
glm::mat4 lookAt ( glm::vec3 eye, glm::vec3 center, glm::vec3 up )
这里的眼睛是相机的位置,中心是你正在看的物体的位置(在你的情况下,如果你没有那个位置,你可以使用spot_light_direction + spot_light_position )。
所以只是改变
glm::lookAt(spot_light_direction, spot_light_position, up)
到
glm::lookAt(spot_light_position, spot_light_direction + spot_light_position, up)
关于c++ - 如何使用 glm::lookAt() 旋转对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41104820/
如何将 glm::vec4 转换为 glm::vec3? 仅需要 x、y、z - 可以删除 w 组件。 在 GLSL 中,这可以通过 .xyz[1] 完成,但在 glm 中,这会导致编译错误: err
我正在使用 R 中的 h2o 包通过 h2o.glm() 函数来适应 GLM。在具有 l1 正则化惩罚的 GLM 中评估特征重要性的一种合理方法是监视参数进入线性预测器(即模型)的顺序,因为 l1 惩
我在从最新版本的 R 中的 glm 计算 OR 置信区间时遇到问题,但我以前没有遇到过这个问题。与任何 glm 在哪里 family="binomial" ,无论模型多么简单,我都可以轻松提取摘要和
我需要在我的 glm 图上添加 95% 的置信区间。 当我执行 multiline=T 时(因为我需要在同一个地 block 上进行 2 次处理,所以我这样做了),间隔消失了。我怎样才能让他们回来?
对于上下文,我一直在学习 OpenGL,并且学习了透视投影。花了整整一个小时试图弄清楚为什么我的三角金字塔没有正确显示,直到我注意到我的一个矩阵乘法(使用 operator* for glm::mat
你能告诉我 返回了什么吗? glm$残差和 残留物(glm)其中 glm 是一个准泊松对象。例如我将如何使用 glm$y 和 glm$linear.predictors 创建它们。 glm$残差
这是关于理解 glm 源码的。我想知道 glm 是否对它的类进行了零初始化并进行了尝试。是的,glm::vec3 和 glm::mat4 被初始化,即使没有提供构造函数值。然后我想了解它是如何完成的并
我正在尝试使用 probit 模型重现其他人的工作。不幸的是,我没有太多关于他们方法的信息,只有他们的起始数据和他们的模型图。 当我在 ggplot 中绘制数据并使用 geom_smooth(meth
我有一个 ModelMatrix 类,其中我有一个 glm::vec3 定义为 glm::vec3 *position = nullptr; 然后我得到了一个setter方法 void ModelMa
我想标准化生物数据集的变量。我需要使用不同的响应变量运行 glm、glm.nb 和 lm。 该数据集包含按地块划分的给定树种的数量(所有地块大小相同)和一系列定性变量:植被类型、土壤类型和牛的存在/不
我正在使用著名的 OpenGL 框架创建一个漂亮的图形引擎,但突然遇到了一个意想不到的问题(就像所有问题一样)。 我必须创建一个函数来修改 glm::mat3 中的特定值。为此,我创建了一个简单的函数
其他答案似乎有一些相关信息,但没有解决我遇到的问题。 从我在 Xcode 中的项目中,我选择了“将文件添加到项目”并选择了整个 glm 子文件夹(我被告知这是使用 glm 所需的全部)。然后,在我的
像下面这样计算四元数时, 你能解释一下 1.0f means.. 是什么意思吗? 我认为它可能是 x 轴的 90 度。 glm::angleAxis(3.141592... / 2, glm::dv
这可能真的很简单,但我已经下载了 glm 的正确软件包 glm-0.9.9-a2,但我不知道如何安装。说明要么太复杂,要么太简单。 我无法通过使用包管理器或将存储库添加到 aptitude 或 Ana
我无法理解使用 glm 的效果编码。举个例子: data('mpg') mpg$trans = as.factor(mpg$trans) levels(mpg$trans) [1] "auto(av)
我正在尝试在 R 中重现二项式 glm 的结果。 考虑来自此处的数据 http://www.ats.ucla.edu/stat/r/dae/logit.htm mydata <- read.csv("
ChatGPT已经火了一段时间了,国内也出现了一些平替,其中比较容易使用的是ChatGLM-6B: https://github.com/THUDM/ChatGLM-6B ,主要是能够让我们基于
我一直在阅读code R 使用它来拟合广义线性模型 (GLM),因为 R 的源代码是免费提供的。使用的算法称为迭代重新加权最小二乘法 (IRLS),这是一种有据可查的算法。对于每次迭代,都会调用 Fo
我读过 glmnet 可以在没有正则化的情况下使用,即它可以用作常规 glm。我正在写一篇论文并试图避免使用许多不同的包,因此使用 glmnet 进行常规的 glm 逻辑回归拟合会很方便。谁能帮我?
我正在尝试使用 glm( family='binomial') 来拟合逻辑回归. 这是模型: model<-glm(f_ocur~altitud+UTM_X+UTM_Y+j_sin+j_cos+tem
我是一名优秀的程序员,十分优秀!