mOffsetMatrix 在 Assimp 中实际上做了什么?

2024-01-15

我非常确定 mOffsetMatrix 将顶点从网格空间转换为骨骼空间,这一点已得到证实http://assimp.sourceforge.net/lib_html/structai_bone.html http://assimp.sourceforge.net/lib_html/structai_bone.html

但后来我看到了这个,它实际上将顶点从骨骼空间转换为网格空间。https://github.com/assimp/assimp/pull/1803 https://github.com/assimp/assimp/pull/1803

现在我很困惑。那么mOffsetMatrix到底是做什么的呢?


The 偏移矩阵骨头的该骨骼在绑定姿势下的全局变换的逆。换句话说,如果您遍历骨骼/节点层次结构,则应用局部变换(移动转型在 Assimp 中)将每个骨骼/节点分层到其子节点,我们得到每个骨骼/节点的全局变换。这inverse特定骨骼的该矩阵等于其偏移矩阵。正如此处所暗示的,它可以手动计算 - 不管怎样,它是恒定的,不应该每帧计算。

名称“offsetMatrix”,虽然有点令人困惑(类似于逆绑定会更清楚),可能来自它的使用。我们用于蒙皮的变换是(B_关键帧 * 偏移矩阵), 在哪里B_关键帧是骨骼在某个目标位置的全局变换,例如通过动画剪辑。这种复合变换实际上是offset,从绑定姿势(定义网格顶点的位置)到 B_keyframe。当应用于顶点时,(B_keyframe * offsetMatrix) 会将顶点从绑定位置“移动”到 B_keyframe 变换到的任何位置。
请注意,如果 B_keyframe 等于绑定变换,例如如上所述,根据骨架的 mTransformation:s 计算,则 (B_keyframe * offsetMatrix) 是恒等式,并且顶点不会从绑定姿势中的原始位置移动。

当谈到offsetMatrix时,我个人更喜欢“从网格空间到骨骼空间”的定义。为什么?因为 offsetMatrix 的逆 - (全局)骨骼变换(在绑定姿势) - 最直观地理解为从骨骼到网格/模型空间的转换。反转回来,offsetMatrix 变换从网格/模型空间到骨骼空间.
与渲染中的视图矩阵对比:它是相机世界变换(T*R)的逆矩阵,一般理解为从世界空间到视图空间的变换。

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

mOffsetMatrix 在 Assimp 中实际上做了什么? 的相关文章

  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现

随机推荐

  • Kotlin - 使用 Array 或 DoubleArray

    这两者的主要区别是什么 val array Array
  • SSRS - OutOfMemoryException - 可以显示的行数是否有限制

    我创建了一个 rdl 文档 它指向一个返回 90 000 行的过程 但我遇到了内存不足的异常 报表项目可以处理的行数是否有限制 目前 我已经更改了驱动我的报告的过程 只选择前 90 000 行 我的规格是能够创建包含 120 000 行的报
  • 在Python底图中绘制曲线

    我想在底图地图上绘制曲线 弧线 我可以使用 map plot x y 绘制一条直线 但如何使其弯曲 有箭头 在 matplotlib 中 可以使用 annotate 来完成此操作 但 Basemap 没有此方法 有任何想法吗 这是一个非常古
  • 如何根据模型 JavaScript 数组属性正确显示 Backbone marionette 集合视图?

    UPDATE 请参阅下面最后一个代码块中的最终答案代码 Marionette 的 CollectionView 需要一个有效的 Backbone Collection 而不是一个简单的数组 将数组传递给视图时 您需要从数组创建一个 Back
  • Grails geb 从命令行获取参数

    我正在 grails 中使用 geb 编写 ui 测试 我想使用 Maven 从命令行开始测试 这很好用 我的命令 mvn Dtest CheckMenuLinks 测试 现在我想从命令行传递一些参数进行测试 这可能吗 我找到了解决方案 我
  • VS2008可以调试COM dll吗?

    这可能是一个非常愚蠢的问题 是否可以在 VS2008 中调试我没有源代码的 COM dll 我想要这样做的原因是我将一个数组传递给 COM 方法 并且我希望该数组由该方法填充 然而 该数组并未被填充 所以我想进入 COM 方法看看发生了什么
  • async/await 函数的返回值

    我对这个 async await 的工作原理有点困惑 我有一些像这样的功能 async getDataFromDB let response await fetch let data await response json return d
  • 在每个环境的 Symfony 中禁用 swiftmailer 假脱机

    我无法通过控制台命令使用 symfony2 发送批量电子邮件 我想禁用控制台正在运行的环境的邮件假脱机完成 但保持它在默认环境中工作 所以我在 config yml 中有这个 swiftmailer transport mailer tra
  • ModuleNotFoundError:安装频道后没有名为“win32api”的模块

    我正在使用 WebSockets 和 django 通道构建一个聊天应用程序 我运行 pip installchannels 它安装成功 然后我安装 asgi redis 这也被安装了 现在 当我尝试导入channels asgi时 它给了
  • Ruby 上的 difflib [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有类似Python的库difflib http docs python org library difflib html关于鲁比 特别
  • FBSDKSharing回调不返回结果

    在我的 iOS 应用程序中 我有一个 Facebook 共享按钮 它会打开一个 FBSDKShareDialog IBAction post id sender FBSDKShareLinkContent content FBSDKShar
  • 是否已准备好并推荐在 Xcode 4.2 生产中使用故事板? (参见以前的 XIB 方法)

    是否已准备好并推荐在 Xcode 4 2 生产中使用故事板 也就是说 使用过 Storyboard 的 iPhone iPad 开发人员会建议 对于本机 iPhone iPad 应用程序 一定要使用 Storyboard 吗 或者这个概念仍
  • 覆盖内置函数[重复]

    这个问题在这里已经有答案了 我有一大块使用 print 语句的代码 可以这么说 print foo and not print foo 我想改变输出 我可以在不更改所有打印行的情况下执行此操作吗 例如通过覆盖函数 语句 Python dir
  • .nil? 和 .blank? 之间的区别和.空? [复制]

    这个问题在这里已经有答案了 可能的重复 Ruby on Rails 中 nil v empty v blank 的简明解释 https stackoverflow com questions 885414 a concise explana
  • OpenCV 中 Android Yuv420sp 转 ARGB

    我正在尝试将预览回调中的原始图像从手机发送到 PC 然后电脑将处理该图像 我使用 OpenCV 库来进行图像处理 目前我只是在 PreviewCallback 中编写一个函数来将字节数组保存到文件中 并将文件复制到电脑 我编写了一个简单的程
  • WordPress 3.0 自定义帖子类型与上传

    有没有一种方法可以在自定义帖子类型编辑页面上插入一个 或多个 上传字段 我不想使用包含所有字段和内容的媒体库 这是一个相当基本的示例 但它应该可以帮助您上路 function my upload field echo
  • 如何将 Tensorflow 数据集转换为 2D numpy 数组

    我有一个 TensorFlow 数据集 其中包含近 15000 个分辨率为 168 84 的彩色图像 每个图像都有一个标签 它的类型和形状是这样的 lt ConcatenateDataset shapes 168 84 3 types tf
  • RxSwift:onDispose 在 Alamofire 返回数据之前激活

    我正在尝试使用 rxSwift 和 Alamofire 从 REST swift 2 3 获取 JSON 数据 这是我的代码 func getArticles articlesReq ArticlesReq gt Observable lt
  • 在ggplot2中使用for循环排列多个图表

    我想生成一个 pdf 文件 其中显示多个图表 每个图表一个NetworkTrackingPixelId 我有一个与此类似的数据框 gt head data NetworkTrackingPixelId Name Date Impressio
  • mOffsetMatrix 在 Assimp 中实际上做了什么?

    我非常确定 mOffsetMatrix 将顶点从网格空间转换为骨骼空间 这一点已得到证实http assimp sourceforge net lib html structai bone html http assimp sourcefo