Threejs 变换矩阵排序

2024-03-21

我想知道 Threejs 如何对多个矩阵进行排序?

例如 ,

......
var mesh = new THREE.Mesh( geometry, material );
mesh.position.set( 0, 20, 0 ); // T , transform matrix
mesh.rotation.set( 0, Math.PI, 0 );//R , rotation matrix
mesh.scale.set( 1, 1, 10 );//S , scale matrix

那么,twojs如何组合三个矩阵呢?它将根据我设置的值顺序(在我的示例中,它是 TRS ,所以最终矩阵应该 T*R*S )或固定顺序(例如,它始终使用 SRT 排序,最终矩阵是 S*R*T ) ?


只要网格属性“matrixAutoUpdate”为 true,并且您只希望按比例、旋转和平移(典型)顺序排列,您就可以像之前那样指定参数。

如果您需要更复杂的东西,例如一系列特定的平移和旋转,那么您应该将matrixAutoUpdate设置为false并自己计算矩阵。

重要提示:使用矩阵乘法函数时,必须按“相反”顺序执行。例如,如果您想定位肢体,那么从逻辑上讲您会:

1)进行局部旋转(例如手臂上/下)

2)相对于其偏移移动肢体(将其放在其关节处)

3)随着身体旋转而旋转

4)移动到身体偏移

实际操作将相反进行:

arm_mesh.matrixAutoUpdate = false;

var mat4: THREE.Matrix4 = new THREE.Matrix4();
var arm_matrix = arm_mesh.matrix;

arm_matrix.identity();  // reset

arm_matrix.multiply(mat4.makeTranslation(body_pos.x, body_pos.y, body_pos.z));
arm_matrix.multiply(mat4.makeRotationFromQuaternion(body_rotation));
arm_matrix.multiply(mat4.makeTranslation(arm_offset.x, arm_offset.y, arm_offset.z));
arm_matrix.multiply(mat4.makeRotationFromEuler(new THREE.Euler(arm_angle, 0, 0)));

当然,这并没有利用或解释父母/孩子的关系。

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

Threejs 变换矩阵排序 的相关文章

  • Typescript:按值检查对象是否存在于数组中

    我有这个数据 roles roleId 69801 role ADMIN roleId 69806 role SUPER ADMIN roleId 69805 role RB roleId 69804 role PILOTE roleId
  • ReferenceError:找不到变量:需要

    我在加载时遇到问题node modules到我的网页之一 我已经安装了 npm node js 并且我想使用require 函数在我的网站上初始化 Firebase 我不知道为什么 但它抛出引用错误 ReferenceError 找不到变量
  • 请解释与 Google Chrome 扩展程序的后台通信

    我已经阅读并重新阅读了此页面 并运行了示例 http code google com chrome extensions background pages html http code google com chrome extension
  • 如何使用键盘和鼠标控制相机 - Three.js

    我在 WEB GL 中有一个带有 Three js 的 3D 环境 并且我曾经使用 Orbitcontrols js http codepen io nireno pen cAoGI http codepen io nireno pen c
  • 如何向 jQuery Tokeninput 添加占位符?

    如何将占位符添加到 jQuery Tokeninput 字段 一个正常的placeholder属性在这里不起作用 对于这样的输入
  • 在浏览器中语音聊天? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们正在寻求建立一个小组 voice 使用服务器上的node js 在浏览器中聊天 这可能吗 如果您希望您的解决方案是基于服务器端和客
  • 何时不使用承诺[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在阅读了数十篇关于 es6 Promise 有多伟大以及为什么我们应该实现它们的文章之后 我有这样的感觉 ALL我的 不平凡的 JavaScri
  • 如何在 React Native 中渲染自定义 3D 对象

    我已经成功使用 Three js expo Three 和 expo gl 在 React Native 中配置了红色立方体的 3D 渲染 但我想让用户渲染他们自己可能拥有的自定义 3D 对象 obj 或 mtl 扩展名 但我不确定如何让他
  • Ember.JS - 如何在同一页面中使用多个模型、控制器和视图?

    我主要了解 Ember JS 的基础知识 大多数示例实际上只处理单个控制器和模型以在页面上显示某些内容 我真的很想用 Ember 构建一个完整的 Web 应用程序 所以有人能告诉我如何组织和连接多个控制器 模型和视图到一个页面中吗 例如 如
  • 将 OpenCV Mat 转换为数组(可能是 NSArray)

    我的 C C 技能很生疏 OpenCV 的文档也相当晦涩难懂 有没有办法获得cv Mat data属性转换为数组 NSArray 我想将其序列化为 JSON 我知道我可以使用 FileStorage 实用程序转换为 YAML XML 但这不
  • JavaScript 动画平滑滚动

    默认情况下 当您有这样的片段链接时 a href some url some fragment some text a 浏览器立即向下滚动到该片段 我该如何编程才能使用标准 JS 顺利地向下移动到该片段 这是一个例子 Example htt
  • 使react-leaflet能够离线使用

    我一直在使用反应传单 https github com PaulLeCam react leaflet图书馆 到目前为止运作良好 现在我希望网站预加载尽可能多的图块 以便网络应用程序 也是 PWA 可以在没有互联网的情况下使用 我找到了一些
  • 使用 jquery 将字符串数组转换为整数

    我正在尝试将 jquery 中的字符串数组转换为整数数组 这是我的尝试 var cdata data values split each cdata function i l l parseInt l 我认为在这种情况下你不需要使用 Jqu
  • 如何从顺序键盘导航中删除 Vuetify 附加图标

    在带有 Vuetify 的 Vue js 应用程序中 我有一组用v text field并且其中有一个append icon为了切换文本可见性 如下所示
  • 如何访问另一个 mobx 商店中的 mobx 商店?

    假设以下结构 stores RouterStore js UserStore js index js each of Store jsfiles 是一个 mobx 存储类 包含 observable and action index js只
  • Keycloak javascript 适配器 `keycloak.init` 加载 404 iframe

    我正在尝试使用 javascript 适配器将 Keycloak 集成到我的客户端应用程序keycloak js 但是 我似乎无法让它发挥作用 这是我的代码 const keycloak new Keycloak realm my real
  • Jquery,清除/清空 tbody 元素的所有内容?

    我认为这会相当简单 但似乎空方法无法清除我拥有的 tbody 如果有人知道执行此操作的正确方法 我将不胜感激 我只想删除 tbody 中包含的所有内容 到目前为止我正在尝试 tbodyid empty HTML table tbody tr
  • ng-model 和值组合不适用于输入文本框

    我有两个输入文本框 我需要组合在两个文本框中输入的值并将其显示在第三个文本框中 如果我只使用value在第三个文本框中 Box 1
  • 如何获取使用 .map 渲染的第一个元素的 ref?

    我需要在几行中显示视频 卡片 的缩略图 并重点关注第一个缩略图 我使用嵌套地图进行了显示 该代码基本上迭代视频数组并返回多行视频 我们如何关注第一个渲染的元素 我认为我们需要获得第一个要聚焦的元素的引用 但是我们如何在这里设置 ref 并在
  • 在 javascript 中使用 xPath 解析具有默认命名空间的 XML

    我需要创建一个 XML xPath 解析器 所有解析都必须在客户端进行 使用 JavaScript 我创建了一个 javascript 来执行此操作 在默认名称空间发挥作用之前 一切看起来都正常 我根本无法查询具有默认命名空间的 XML 我

随机推荐

  • 当servlet抛出运行时异常时,如何在浏览器中显示用户友好的错误页面?

    我正在使用 JSF 开发 Web 应用程序 我尽可能地对其进行了测试 但有时会抛出运行时异常 那么 如何在每次抛出异常时将用户重定向到特殊的错误页面 而不是显示 500 错误并显示完整的 tomcat 日志 只需声明一个
  • 如何将ListView放入PageView并垂直滚动它们?

    正如标题所说 我们想将垂直的 ListView 放入垂直的 PageView 中并使它们滚动 顺利 我们将实现这样的目标 这个概念 当用户滚动列表时 如果他们到达底部并再次向同一方向滚动 我们希望页面滚动到下一个而不是列表 反之亦然 为了实
  • eclipse indigo/juno RCP 出现“安装新软件错误”

    我尝试在 eclipse RCP 中更新软件 但出现此错误 The Error log says that some of the feature xml files are missing I opened one of the erro
  • 从完全限定域名中提取主机名的正则表达式

    我对正则表达式非常生疏 需要从完全限定的域名 FQDN 中提取主机名 这是我所拥有的一个示例 myhostname somewhere env com myotherhostname somewhereelse insomeotherpla
  • 使用 Jest 和 Enzyme 进行测试时设置 URL 参数

    我的组件有 class Search extends Component constructor props super props this state searchTerm typeof this props match params
  • 完整的 Magento/Wordpress 集成

    任何人都可以提供有关最佳方法的任何建议fully将 WordPress 博客集成到 Magento 商店中 我见过许多不同的集成方法 lazzymonkeys sonassi 等 但似乎没有一个能够完全集成整个博客 即帖子 类别 档案 搜索
  • 左调整 (hjust = 0) 带有自由刻度的面上的垂直 x 轴标签

    我决定重新表述这个问题 https stackoverflow com questions 60677990 ggplot facet grid x axis stepped 编辑会花费更多时间 而且在我看来也不会对OP有帮助 如何向左调整
  • (jQuery) 将 div 样式“display:none”切换为“display:inline”

    我有 2 个 div 我希望能够在单击按钮时在它们之间切换 当前使用 toggle 页面上显示的div是div1 该 div 的样式为 display inline 我的另一个 div div2 以样式 display none 开头 当d
  • 从 FFI 返回的切片创建 OsStr(ing) 的正确方法是什么?

    我有一个函数接受带参数的回调data const u8 length usize 代表一些路径 由此创建 OsStr ing 的正确方法是什么 There s from byte slice in OsStrExt 但似乎它没有检查数据是否
  • CasperJS click() 不加载新的 html

    我正在尝试使用 CasperJS click 点击在当前屏幕上生成模式的链接 当我查询正确的选择器并使用浏览器控制台中单击它时document querySelector click 它有效 但即使当我casper evaluate 这不起
  • Internet Explorer 10 和 11 中的边框半径显示问题[重复]

    这个问题在这里已经有答案了 我有一个带有边框半径的 div 它在 IE 10 和 IE11 中显示为某种片段 原因是什么 我们该如何解决这个问题 使用IE10或IE11访问本站查看效果 http css3pie com demos bord
  • 从主 Web 应用程序自动登录到另一个 ASP.NET 应用程序

    我正在主 Web 应用程序下的文件夹中运行 YetAnotherForum 的最新版本 该子文件夹在 IIS 中配置为应用程序 导航到该文件夹 并登录效果非常好 YAF 通过会员提供商进行设置并使用表单身份验证 我现在想做的是从主网站自动将
  • 布尔值是否有现有的 I18N 翻译?

    我需要根据表达式是真还是假以各种语言显示 是 或 否 目前我正在这样做 fr yml fr yes Oui no Non 一个辅助方法 def t boolean expression expression t yes t no end e
  • 多个项目共享一个 jenkinsfile

    我有多个具有类似构建步骤的项目 并且我正在考虑在这些项目中重用 Jenkinsfile 管道 我很难找到有关如何实现此类标准 据我看来 设置的文档 这是我的要求 1 Jenkinsfile存储在repo中 在多个项目之间共享 2 每个项目都
  • Spring Security 令牌身份验证 - RESTful JSON 服务

    我希望将 Spring Security 用于 Spring MVC 应用程序 该应用程序严格来说是一个 JSON Web 服务 我做了一些研究并阅读了一些文章 但还没有真正找到完整的内容 我希望应用程序完全无状态并使用基于令牌的身份验证
  • Azure 持久编排功能触发两次

    我正在尝试实现 Azure Durable Function 工作流程 每隔 6 分钟 我就会有一个 Azure TimerTrigger 函数调用一个 Azure Orchestration Function OrchestrationT
  • 在 CodeIgniter 中发送数据和重定向

    我有一个简单的 C CRUD 函数 我想发送一条消息 错误或成功 以及来自我编写的 插入 函数的重定向 有没有办法通过重定向来附加 POST 字段 在伪代码中我有 function view all set up some initial
  • python读取大型二进制文件最有效的方法是什么

    我有一个大 21 GB 文件 我想将其读入内存 然后传递给一个子例程 该子例程对我透明地处理数据 我在 Centos 6 5 上使用 python 2 6 6 因此无法升级操作系统或 python 目前 我正在使用 f open image
  • Git 克隆中的 Ansible 和 Git 权限被拒绝(公钥)

    我有一本剧本 我试图从私人存储库 GIT 克隆到服务器 我已经设置了 ssh 转发 当我 ssh 进入服务器并尝试从同一存储库手动克隆时 它成功工作 但是 当我使用 ansible 将存储库克隆到服务器时 它失败并显示 权限被拒绝公钥 这是
  • Threejs 变换矩阵排序

    我想知道 Threejs 如何对多个矩阵进行排序 例如 var mesh new THREE Mesh geometry material mesh position set 0 20 0 T transform matrix mesh r