未知轴的四元数变换问题从a到b以及从b到a
发布日期:2022-03-03 10:44:02
浏览次数:12
分类:技术文章
本文共 1408 字,大约阅读时间需要 4 分钟。
最近在做捏脸查了很多资料大概有思路了,已知animator改变骨骼的transform是在update阶段
故此留给我们的大概只有lateudpate中去修改骨骼的transform 。比如骨骼捏脸我们设置了一个旋转四元数,animator对骨骼施加了另外一个四元数 。那么我们要做的就是求出来模型静止的时候
ab变换的那个t四元数。怎么求t呢 t * a = b 利用这个公式。四元数和矩阵的运算类似
这里 t = b * a-1 (a-1是a的逆 ) 假设animatro将物体改变到c 那么我们最终的骨骼变换
应该就是 d = t * c
using System.Collections;
using System.Collections.Generic; using UnityEngine; using UnityEditor;[CustomEditor(typeof(TestOula))]
public class TestOulaEditor : Editor { public Quaternion a; public Quaternion b;public TestOula self
{ get { return target as TestOula; } } public override void OnInspectorGUI() { base.OnInspectorGUI(); if(GUILayout.Button("记录a四元数")) { a = self.transform.localRotation; } if(GUILayout.Button("计算变换四元素得到初始位置")) { var b = self.transform.localRotation; var t = b * Quaternion.Inverse(a); var reverseT = Quaternion.Inverse(t); self.transform.localRotation = reverseT * b; // } if (GUILayout.Button("记录b四元数")) { b = self.transform.localRotation; }if(GUILayout.Button("从a到b"))
{ var t = b * Quaternion.Inverse(a); var reverseT = Quaternion.Inverse(t); self.transform.localRotation = t * a; }if (GUILayout.Button("从b到a"))
{ var t = b * Quaternion.Inverse(a); var reverseT = Quaternion.Inverse(t); self.transform.localRotation = reverseT * b; }}
}public class TestOula : MonoBehaviour
{ // Start is called before the first frame update void Start() { }// Update is called once per frame
void Update() { } }转载地址:https://blog.csdn.net/yangjie6898862/article/details/122675238 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年03月29日 04时25分56秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java 图片旋转保存_Java 对图片90度旋转
2019-04-21
用java实现文学研究助手_数据结构文学研究助手 C语言代码实现(带源码+解析)...
2019-04-21
java gc的几种方式_GC 的三种基本实现方式
2019-04-21
babylonjs 设置面板位置_babylonjs 空间坐标转为屏幕坐标
2019-04-21
oracle 查询中用case,oracle case when 在查询时候的用法。
2019-04-21
oracle正在运行的程序包,ORACLE PL/SQL编程详解之程序包的创建与应用
2019-04-21
php局部页面滚动,在访问另一页面后保留浏览器滚动位置 - php
2019-04-21
linux服务器怎么添加站点,如何增加站点或虚拟主机及文件说明
2019-04-21
linux系统输入指令,Linux系统基础 - 基本操作命令
2019-04-21
linux设备管理命令,Linux命令(设备管理).doc
2019-04-21
linux 中文utf-8转gbk编码,Linux平台下 GBK编码转UTF-8编码
2019-04-21
linux安装软件在boot,在Linux系统上安装Spring boot应用的教程详解
2019-04-21
取消linux自动登录,linuxdeepin 如何取消自动登录啊?
2019-04-21
linux线程存储,Linux系统编程手册:线程:线程安全和每线程存储
2019-04-21
linux批处理模式,巧用linux-top的批处理模式
2019-04-21
linux信号量机制例题,第二章 信号量机制及几个经典例题
2019-04-21