LookAt函数
2016-7-25 5:31:12
收藏:0
阅读:106
评论:1
该页面https://goocreate.com/learn/everything-you-always-wanted-to-know-about-rotation/介绍了一种名为 LookAt 的功能,能够旋转一个三维对象以面向另一个对象。LookAt 函数的内部操作被描述为(但没有列出代码):
函数的工作方式是获取实体和目标位置并相减,以获取一个背向量。然后它计算上向量和背向量之间的叉乘,以获取正确向量。然后计算正确向量和背向量之间的叉积,以获取一个与方向向量和正确向量均正交的上向量,并将所有三个向量归一化后分别存储在我们的旋转 Matrix3x3 中的各自行内。
我正在尝试在没有3D函数库帮助的情况下复制这个功能。我有3D向量减法、矩阵乘法、点积和叉积函数。(我在编写 Lua 代码。)
我无法弄清楚如何使一个对象面向与另一个对象相同的方向(并且希望方向相同)。
我读到过这只是基于角度创建旋转矩阵的问题,但我发现所有关于3D角度的内容最终都会返回一个角度 - 我认为每个平面都应有3个角度。
如何构建这个旋转矩阵?我不知道我的对象面向哪个方向,这就是计算对象当前的x、y、z角度的问题。我认为我需要一个确定对象当前三维角度的函数以及一种将其转换为另一个对象的旋转矩阵的方法。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
首先:
如果对象没有方向,你就不能将其转换成特定的方向。因此,你要么必须知道定义对象方向的向量,要么必须自己定义一个。
这不是真的。他们链接了一个FAQ,其中包含可能会在阅读文章时涉及的问题。(仔细阅读!)
他们为你提供以下信息:
LookAt函数内部的算法是什么: 简写算法如下: z.set(back_direction).normalize(); x.set(up).cross(z).normalize(); y.set(z).cross(x); m[0] = x[0]; m[1] = x[1]; m[2] = x[2]; m[3] = y[0]; m[4] = y[1]; m[5] = y[2]; m[6] = z[0]; m[7] = z[1]; m[8] = z[2];关于你所遇到的关于角度数量的问题:
如果你绕三个轴旋转,例如x、y、z,你只需要3个角度。但你可以绕任意轴旋转。然后当然只需要一个角度。
获取一本线性代数教材或浏览网络上的教程和例子。确保你了解自己在做什么。它会帮助你不用例子代码就能解决未来的问题。这是简单的数学 :)