Three.js - 将网格速度转换为网格旋转

2023-11-30

假设我有一个 Three.js 网格和一个速度向量 3。

速度在其他地方发生改变,然后每帧添加到网格位置。

我想要的是 mesh.rotation 与速度相对应,即网格是一个始终指向其前进方向的箭头。

这是我尝试过的两种方法 - 使网格旋转,是的,但只是以错误的角度和向后旋转等等。

//this doesn't work
mesh.rot.x = Math.atan2( vel.y, vel.z );
mesh.rot.y = -Math.atan2( vel.x, vel.z );
mesh.rot.z = Math.atan2( vel.x, vel.y );

//got this from a semi-related stackoverflow question; also doesn't work
mesh.rot.y = Math.asin( vel.z );
mesh.rot.z = Math.atan2( vel.y, vel.x );

var bankVec = new Vector3( -vel.y, vel.x, 0 );
var upVec = new Vector3( dot( bankVec, vel ) );

mesh.rot.x = Math.atan2(dot(bankVec, vel) / dot(upVec, vel),abs(bankVec)*abs(upVec));

我不太懂向量数学。

我现在正处于这样一个阶段:我只是随意改变标志并交换观点,希望得到最好的结果。因此,任何关于我应该如何做的解释都将非常感激。

并不是真正在寻找代码,只是寻找点积、叉积、atan2 等的相关方程。


您可以根据归一化速度向量构造旋转矩阵。归一化后的矢量为 1 个轴。然后你以某种方式选择第二个轴。然后进行叉积来找到第三个轴。最后在第一个和第三个轴之间进行叉积以获得最终的第二个轴。

然后你从 3 个向量构造一个 3x3 矩阵(我现在不记得它们的顺序,但类似于 [x1,y1,z1,x2,y2,z2,x3,y3,z3])。

另一种方法是四元数类:

.setFromUnitVectors ( vFrom, vTo )

将此四元数设置为将方向向量 From 旋转到方向向量 vTo 所需的旋转。改编自http://lolengine.net/blog/2013/09/18/beautiful-maths-quaternion-from-vectors。假定 From 和 To 已标准化。

http://twojs.org/docs/#Reference/Math/Quaternion

由于 Three.js 内部喜欢使用四元数,因此这可能是一个很好的方法。如果您的箭头是向上的箭头,您可能需要 vFrom=[0,1,0], vTo=velocityVector.normalize();

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Three.js - 将网格速度转换为网格旋转 的相关文章

  • 为什么 useReducer 调度会导致重新渲染?

    假设我实现一个简单的全局加载状态 如下所示 hooks useLoading js import React createContext useContext useReducer from react const Context crea
  • 节点遗留 url.parse 已弃用,用什么代替?

    require url parse someurl com page 已被仅弃用 并且我们严格的 linter 对此不满意 我尝试用互联网建议的内容替换我们的代码中的它new URL someurl com page 在大多数情况下都有效
  • Mozilla WebExtension API 存储 - 使用和不使用断点进行调试会导致不同的输出

    大家好 我正在尝试为 Mozilla Firefox 浏览器实现一个附加组件 以下脚本显示了我已经成功集成的一个后台脚本 它使用 Mozilla WebExtension API 存储 它被执行了 但浏览器控制台上的日志让我感到惊讶 我交替
  • React Native 无法访问 Cloud Firestore 后端

    我之前使用的是 firebase 实时数据库 但现在想切换到 Cloud Firestore 但即使经过身份验证 也会收到以下错误 我目前正在使用 Android Simulator 尝试禁用我的实时数据库 但找不到解决方案 Firebas
  • 用更好的模式替换开关(Javascript)

    我必须升级我的应用程序以根据用户类型和角色属性显示页面 目前 我使用一个简单的 switch 语句来根据用户类型来执行此操作 例如 switch type case a return CONSTANT ONE case b return C
  • 从 puppeteer PDF 中删除分页符?

    我目前正在尝试查看是否有一种方法可以删除我的 puppeteer PDF 中的分页符 因为我当前的 PDF 设置中的一些分页符正在以一种奇怪的方式切断文本 我正在谈论的内容的屏幕截图 我的傀儡代码 app get companyId pdf
  • 如何在 Windows 网络中的 Intranet Web 应用程序中获取用户的用户名

    我内部有一个简单的 HTML 页面 它只显示一个表单并要求用户填写 我想自动捕获Windows域用户名和机器名 并将其与表单中收集的数据一起提交 我可以在客户端这样做吗 HTML JavaScript 或者我被迫在服务器端执行此操作 我还不
  • 指定 HTML5 输入类型 = 日期的值输出?

    我想将本机日期选择器添加到我的应用程序中 该应用程序当前使用遗留的本地系统 日期输入支持尚未广泛普及 但如果我可以基于兼容性提供这两种实现 那就太理想了 有没有办法指定 HTML 日期选择器给出的值的输出 歌剧的默认设置是yyyy mm d
  • 仅从功能区打开一个对话框

    我有一个带有登录按钮的功能区 可打开登录对话框 我想将对话框的数量限制为一个 我正在使用函数 displayDialogAsync startAddress options callback https learn microsoft co
  • 为什么Promise中的代码会同步执行? [复制]

    这个问题在这里已经有答案了 在我的项目中 我有一个很长时间运行的操作 所以我决定将其放入Promise因为我认为这样我就可以在里面的代码继续执行其他操作Promise正在跑步 调试的时候发现外面的代码Promise仅当里面的代码执行Prom
  • 公开闭包内的方法

    当我们在闭包内创建一个方法时 该方法将成为该闭包的私有方法 并且在我们以某种方式公开它之前无法访问它 怎么可能暴露呢 您可以返回对它的引用 var a function var b function I m private alert go
  • 如何将焦点设置在 BootStrap 中的第一个输入字段上? [复制]

    这个问题在这里已经有答案了 可能的重复 如何将焦点设置到独立于 id 的 HTML 表单中的第一个输入元素 https stackoverflow com questions 277544 how to set the focus to t
  • JS:修改 JS 对象中的值/对

    我正在尝试找出修改对象的最佳方法 而无需三次写出类似的对象 所以我有这三个对象 var object1 start start end end type 1 var object2 start start end end type 2 va
  • 将默认搜索文本添加到搜索框 html

    我正在努力将 搜索 文本添加到搜索框 我正在努力实现 onfocus 消失文本 And onblur 重新出现文本 到目前为止 我已经实现了这一点 但我必须将其硬编码为 html eg
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • JavaScript setTimeout 和更改系统时间会导致问题

    我注意到如果我设置setTimeout未来1分钟 然后将我的系统时间更改为过去5分钟 setTimeout功能将在 6 分钟后触发 我这样做是因为我想看看夏令时系统时钟更改期间会发生什么 我的 JavaScript 网页使用setTimeo
  • Firebase 身份验证和实时应用程序数据库如何保护自身安全?

    从一般开发的角度来看 我很好奇如何保护在线资源的访问 我们使用以下 Firebase 配置参数初始化 Web 应用程序 apikey authdomain projectid databaseurl messagesenderid 服务器如
  • 如何计算一行中Flexbox项目的数量?

    网格是使用 CSS flexbox 实现的 Example http jsbin com jumosicasi edit html css js output 本示例中的行数为 4 因为我出于演示目的固定了容器宽度 但是 实际上 它可以根据
  • 加载 Angular 库时,IE9 和 IE10 中出现 Angular JS“SCRIPT5007:预期对象”错误

    我正在开发一个 AngularJS 应用程序 该应用程序应在 Firefox IE 9 和 IE 10 上运行 我使用最新版本的 angularjs 库 现在是 1 3 15 服务器端是在JavaEE平台上用Java编写的 服务器运行在Gl
  • 在引导程序中以编程方式更改选项卡窗格选项卡

    我使用的选项卡窗格定义为 ul class nav nav tabs li a href personal Personal Information a li li class active a href contact Contact a

随机推荐

  • 在 Delphi XE5/Android 平台上播放声音警报/蜂鸣声

    有没有办法在Delphi XE5 Android平台上播放声音警报 蜂鸣声 我想要实现的是如何使用 Beep 功能像 Windows 应用程序一样播放系统警报 蜂鸣声 或者至少找到系统音频文件的路径 以便我可以根据事件运行特定的音频文件 我
  • Kafka Connect-在写入接收器之前修改记录

    我已经使用 confluence 4 0 0 安装了 Kafka connect 使用 hdfs 连接器 我可以将从 Kafka 主题收到的 Avro 记录保存到配置单元 我想知道在写入hdfs接收器之前是否有任何方法可以修改记录 我的要求
  • 如何从 Javascript 提示框获取值并将其传递到 PHP 变量以便能够保存在 SQL 中?

    这是我的问题 我希望我的脚本能够做到这一点 在用户拒绝条目 服务器端 之前 系统必须提示文本框询问拒绝的原因 然后将他们输入的原因保存到MySQL服务器 JavaScript 函数 function MyReason var reason
  • C++ 哈希弃用警告

    我对 C 和一般编程非常陌生 目前正在阅读 Bjarne Stroustrup 的编程 使用 C 的原理和实践 我一直收到以下错误 严重性代码 说明 项目文件行错误 C2338 是 已弃用并将被删除 请使用 你可以 定义 SILENCE S
  • PHP日期格式 /Date(1365004652303-0500)/

    我正在从获取日期的地方调用 API Date 1365004652303 0500 我不明白这是什么格式 这种日期格式怎么称呼 我不知道该用谷歌搜索什么来找到这种类型的格式 谁能帮我输入这个日期Y m d H i s format 我调用的
  • CalendarView android 中的小数字

    我的应用程序需要 CalendarView 但天数很少 如何让它们变大 如果有人仍然感兴趣 这是我的解决方案 基于 Phil 的帖子中提供的信息和 XSJoJo 的报告 正如那里提到的 问题的存在是因为mDateTextSize没有分配给m
  • jquery - 读取文本文件?

    我有一个 html 文件 我想打开并读取它 但我不完全确定如何做到这一点 基本上 它是一个相当大的文件 big html 并且在一个单独的文件中 Titles html 我有一些 jquery 代码 我想用它们来查找某些元素 即 h2 标签
  • Cron 表达式在该月的最后一天不起作用

    我想安排一个任务在每月最后一天上午 10 10 运行 cron 表达式是0 10 10 L 现在的问题是CronSequenceGenerator正在投掷NumberFormatException为 L 值 这意味着春天的CronSeque
  • WPF DataGrid 单元格文本换行 - 设置为 NoWrap (False)

    如何将 WPF DataGrid 中每个单元格的 TextWrapping 设置为 NoWrap 我知道单元格本身没有 TextWrapping 属性 但我想在单元格内的控件上设置该属性 我正在使用的 DataGrid 没有显式定义的列 它
  • C# 类可以从其自己的实现中调用接口的默认接口方法吗?

    如果我有一个像这样的默认接口方法 public interface IGreeter void SayHello string name gt System Console WriteLine Hello name 我可以让我的具体实现调用
  • 删除标签但保留文本

    所以我有这个 a xml 文件中的标记 a href www somethinggggg com Something 123 a 我想要的结果是使用 Nokogiri 并完全删除它的标签 这样它就不再是可点击的链接 例如 Something
  • mysql 说:无法连接:设置无效。克安普

    我更改了 root 密码进 行测试 现在我无法登录 XAMPP 中的 phpMyAdmin 页面 我寻求帮助here and here这基本上说改变了配置文件 inc php文件输入XAMPP PHPMYADMIN folder Authe
  • 如何使用 Html.BeginForm() 将 QueryString 值放入 RouteValueDictionary 中?

    我发现Html BeginForm 自动使用 RawUrl 即 QueryStringParamters 填充routeValueDictionary 但是我需要指定一个 HtmlAttribute 所以我需要使用覆盖 public sta
  • 如何动态更改applicationID

    我正在尝试通过将原始 id 附加到 GIT 分支的分支名称来更改我的 applicationId 剧本重命名ID sh完成重命名applicationID的工作 虽然我可以在运行构建时成功重命名ApplicationID 但我希望在构建后恢
  • 用概念检查属性类型

    我想检查结构 类的属性是否符合我的概念需求 但编译器抱怨 Example struct N char value auto Get return value struct M int value auto Get return value
  • 动物园管理员合奏没有出现

    我正在尝试配置 3 个节点的集合文档 它们都在 Linux Ubuntu 上 在所有三个节点上 配置文件如下所示 ZOOKEEPER HOME conf 下的zoo cfg tickTime 2000 dataDir home zkuser
  • 如何使用 jest/react-testing-library 模拟 socket.io-client

    我正在构建一个聊天应用程序 并想使用编写集成测试react testing library并且不知道如何嘲笑socket io client s socket on socket emit etc 我尝试按照这个article并尝试使用模拟
  • PHP 在按钮单击时执行 Python 脚本

    我正在使用 php 有一个按钮刷新 python 脚本 这样做的目的是当存在某个输入并按下按钮时 运行 python 脚本 如果没有用户输入 则有一个默认值 input val 万一 我一直在尝试测试这个的方法是在我的 python 文件中
  • 将 div 动画至 100% 高度

    我试图将 div 动画化为其内容的 100 但它只是闪烁 而不是为 div 动画化 背景在动画结束时消失 我很困惑 因为当我输入高度数字而不是百分比时它会起作用 artbutton click function event event pr
  • Three.js - 将网格速度转换为网格旋转

    假设我有一个 Three js 网格和一个速度向量 3 速度在其他地方发生改变 然后每帧添加到网格位置 我想要的是 mesh rotation 与速度相对应 即网格是一个始终指向其前进方向的箭头 这是我尝试过的两种方法 使网格旋转 是的 但