Maya 中有物体空间、世界空间、local matrix、world matrix 的定义,新手小白很容易搞混,这里将几个概念的定义进行整理,帮助大家理清。
文章目录
在 Maya 中,对 object 所做的所有变换都将保存在 transform 节点中,变换操作包括更改 object 的 position、size、orientation,不包括更改 object 本身的 shape。
object 的变换是相对于自身的 pivot 而言的。
如果对多个 object 进行打组,每个 object 会分别记录自己的变换信息,因此你可以更容易地制作层级动画。
Space 其实是一个坐标系系统,空间中的每个 object 都有其自身的 3D position 及 transformation。
世界空间是整个场景的坐标系。 它的原点在 scence 的中心。

物体空间是从 object 的视点出发的坐标系。 对象空间的原点位于对象的 pivot ,其轴随对象旋转。

和 物体空间 类似,但它是以 object 的父节点的原点及坐标轴。
当 object 本身没有 transformation,而其所在的组有 transformation 时是非常有用的。
pivot:枢轴点,是 object 进行旋转、缩放操作的坐标点,默认情况下是位于 object 中心的。
在 Maya 中,通常使用 matrix 来精确计算 3D 空间中点的 position、orientation 信息,这是 Maya 处理 transformation 的核心。
官方对于 Matrix 的解释是,它是一个 3×3 的矩阵,三行分别代表 translation、rotation、scaling 信息,每行都以在 (x, y, z) 上的分量记录为矩阵值;而具体到计算,其实是 4×4 的矩阵,其中第四列表示 shear 值,表示 object 的 pivot 在世界空间的 translation 信息。
通过变换矩阵,可以创建从坐标系 A 到坐标系 B 的映射。
矩阵可以“叠加”(实际上就是将矩阵相乘),你可以通过构建 worldMatrix 将 world space 中的一个 object 转换为 local space 中的一个等价 object。
一个 object 的 Matrix 属性是相对于 object 父节点(即其 local space)的 matrix。
World Matrix 是相对于 scence 的 matrix,是通过将该 object 的每个父节点的 local matrix 依次相乘计算得到。
在 Maya 中,这是一个可以直接访问该 object 直接父节点 worldMatrix 的快捷属性。
当有父子约束关系时,该属性代表 Constraint 节点和子物体中心的偏移矩阵,是 local 的。
如果一个 matrix 是将一个向量从一个 space 变换到另一个 space 的数学对象,那么同一个 matrix 的“逆”就是一个反向变换的矩阵。
【A 在 B obj 坐标系的坐标】 ×【B 的世界矩阵】 = 【A 在世界坐标系的坐标】
【A 在 B obj 坐标系的坐标】 = 【A 在世界坐标系的坐标】×【B 的世界矩阵】-1
【A 的 local 坐标】 × 【A 的 parentMatrix】 = 【A 在世界坐标系的坐标】
【A 在世界坐标系的坐标】 × 【B 的 parentMatrix】-1 = 【A 在 B 的 parent 坐标系的坐标】
【offsetMatrix】 = 【子物体的世界矩阵】× 【父物体的世界矩阵】-1
给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我正处于学习Ruby的阶段,我想查看一些小型库的源代码以了解它们是如何构建的。我不知道什么是小型图书馆,但希望SO能推荐一些易于理解的图书馆来学习。因此,如果有人知道一两个非常小的库,这是新手Rubyists学习的好例子,请推荐!我想使用Manveru'sInnatelib,因为它试图保持在2000LOC以下,但我还不熟悉其中经常使用的Ruby速记。也许大约100-5
由于匿名block和散列block看起来大致相同。我正在玩它。我做了一些严肃的观察,如下所示:{}.class#=>Hash好的,这很酷。空block被视为Hash。print{}.class#=>NilClassputs{}.class#=>NilClass为什么上面的代码和NilClass一样,下面的代码又显示了Hash?puts({}.class)#Hash#=>nilprint({}.class)#Hash=>nil谁能帮我理解上面发生了什么?我完全不同意@Lindydancer的观点你如何解释下面几行:print{}.class#NilClassprint[].class#A
我在我的rails应用程序中安装了来自github.com的acts_as_versioned插件,但有一段代码我不完全理解,我希望有人能帮我解决这个问题class_eval我知道block内的方法(或任何它是什么)被定义为类内的实例方法,但我在插件的任何地方都找不到定义为常量的CLASS_METHODS,而且我也不确定是什么here,并且有问题的代码从lib/acts_as_versioned.rb的第199行开始。如果有人愿意告诉我这里的内幕,我将不胜感激。谢谢-C 最佳答案 这是一个异端。http://en.wikipedia
我很难理解Ruby中sender和receiver的实际含义。它们一般是什么意思?到目前为止,我只是将它们理解为方法调用和获取其返回值的调用。但是,我知道我的理解还远远不够。谁能给我一个Ruby中发送者和接收者的具体解释? 最佳答案 面向对象中的一个核心概念是消息传递和早期概念化,这在很大程度上借鉴了计算的Actor模型。艾伦·凯(AlanKay)创造了面向对象一词并发明了最早的OO语言之一SmallTalk,他拥有voicedregretatusingatermwhichputthefocusonobjectsinsteadofo