AIGC笔记--关节点6D位姿按比例融合

1--核心代码

        6D位姿一般指平移向量和旋转向量,Maya软件中关节点的6D位姿指的是相对平移向量欧拉旋转向量

        为了按比例融合两个Pose,首先需要将欧拉旋转向量转换为旋转矩阵,在将旋转矩阵转换为四元数,利用球面线性插值实现Pose的融合,融合后的四元数需要重新转换为欧拉旋转向量,整个流程如下:欧拉旋转向量→旋转矩阵→四元数→球面线性插值→旋转矩阵→欧拉旋转向量

'''
@File    :   fusion6DPose.py
@Time    :   2024/03/14 17:08:00
@Author  :   Jinfu Liu
@Version :   1.0 
@Desc    :   fusion 6DPose between two motion
'''
import numpy as np
from scipy.spatial.transform import Rotation
from pyquaternion import Quaterniondef fusion6DPose(pose1:np.ndarray, pose2:np.ndarray, rate:float) -> np.ndarray:'''按比例融合平移向量和欧拉旋转向量'''assert pose1.shape[0] == pose2.shape[0]return_pose = np.zeros_like(pose1) # [num_joint, 6]for joint_idx in range(pose1.shape[0]): # 遍历处理所有关节点T1 = pose1[joint_idx][:3] # 平移向量R1 = pose1[joint_idx][3:] # 欧拉旋转T2 = pose2[joint_idx][:3] # 平移向量R2 = pose2[joint_idx][3:] # 欧拉旋转R1 = Rotation.from_euler('xyz', list(R1), degrees=True).as_matrix() # 欧拉角->旋转矩阵R2 = Rotation.from_euler('xyz', list(R2), degrees=True).as_matrix()T3 = rate * T1 + (1 - rate) * T2Q1 = Rotation.from_matrix(R1).as_quat() # 旋转矩阵->四元数Q2 = Rotation.from_matrix(R2).as_quat()Q3 = Quaternion.slerp(Quaternion(Q1), Quaternion(Q2), 1-rate) # 球面线性插值R3 = Rotation.from_quat(Q3.elements).as_matrix() # 四元数->旋转矩阵R3 = Rotation.from_matrix(R3).as_euler('xyz', degrees = True) # 旋转矩阵->欧拉角return_pose[joint_idx][:3] = T3return_pose[joint_idx][3:] = R3return return_poseif __name__ == "__main__":# 关节点的6D位姿pose1 = np.array([[1.208, -1.038, 95.552, 142.537, -84.184, -136.806]]) # Tx, Ty, Tz, Rx, Ry, Rz# 关节点的6D位姿pose2 = np.array([[0, -0.764, 95.771, -71.97, -97.655, 42.773]]) # Tx, Ty, Tz, Rx, Ry, Rz# 融合比例alpha = 0.5# 计算融合后的刚体C的6D位姿# Pose3 = rate * pose1 + (1 - rate) * Pose2Pose3 = fusion6DPose(pose1, pose2, alpha) # 这里只用一个关节点进行测试# 融合后print("PoseC: ", Pose3) # [[0.604, -0.901, 95.6615, 124.11717241, -83.2593501, -135.84186147]]print("All done!")

2--Maya验证

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/276317.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react native常用插件

react-native-async-storage/async-storage 说明:AsyncStorage 是一个在 react-native 中轻量存储的库;跟 localStorage 类似,API 也几乎一样;存储的时候需要将存储内容转成字符串存储。 react-navigation/material-bottom-tabs …

如何在WordPress网站上设置多语言展示

在今天的全球化世界中,拥有多语言网站对于吸引更广泛的受众至关重要。前不就我们遇到Hostease的客户咨询我们的在线客服,他想要对他的wordpress网站支持多语言。我们提供给客户可以尝试以下的插件来支持多语言。 在本教程中,我们将逐步介绍如…

教你三指针拿捏链表翻转

类似上图,其实步骤很简单,用三个指针pre,cur,temp,看英文也知道具体含义,前向,当前,和用于保存剩余的链表 ,具体看下图,很清晰 class Solution { public:List…

AI-逻辑回归模型

😆😆😆感谢大家的支持~😆😆😆 逻辑回归的应用场景 逻辑回归(Logistic Regression)是机器学习中的 一种分类模型 ,逻辑回归是一种分类算法,虽然名字中带有回…

Java代码基础算法练习---2024.3.14

其实这就是从我学校的资源,都比较基础的算法题,先尽量每天都做1-2题,练手感。毕竟离我真正去尝试入职好的公司(我指的就是中大厂,但是任重道远啊),仍有一定的时间,至少要等我升本之后…

LarkXR上新了 | Apollo多终端与XR体验的优化创新

作为领先的数字平行世界产品技术提供方,「Paraverse平行云」一直致力于为企业和开发者提供企业级实时云渲染解决方案。其多终端接入产品LarkXR Apollo,基于底层Runtime技术,实现了在Windows、Linux、MacOS、Android、iOS等多种操作系统下&…

机器硬件命令

一、查看机器核数 有以下几种方法 1、lscpu命令 lscpu命令可以显示关于CPU的信息,包括核数、线程数等。在终端中输入以下命令即可查看CPU核数:该命令会输出CPU每个物理插槽的核数。 lscpu | grep "Core(s) per socket" | awk {print $NF} …

[iOS]高版本MacOS运行低版本Xcode

Xcode 版本支持文档 目的: 在MacOS Sonoma 系统上安装 Xcode14.3.1 第一步 先在Xcode下载一个Xcode14.3.1的压缩包 第二步 本地解压Xcode,将外层目录名变更为Xcode_14.3.1,将文件拷贝到 /Applications目录下。 第三步 变更xcode-sel…

案例分析篇06:数据库设计相关28个考点(17~22)(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

中国金融统计年鉴、中国保险统计年鉴、中国人口与就业统计年鉴、国民经济和社会发展公报、中国劳动统计年鉴

数据下载链接:百度云下载链接 统计年鉴是指以统计图表和分析说明为主,通过高度密集的统计数据来全面、系统、连续地记录年度经济、社会等各方面发展情况的大型工具书来获取统计数据资料。 统计年鉴是进行各项经济、社会研究的必要前提。而借助于统计年…

案例分析篇01:软件架构设计考点架构风格及质量属性(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

JavaScript数组排序sort自定义函数不生效

背景 刷LeetCode时,遇到一道简单的数组排序题: 问题 想着直接用js的数组sort自定义排序即可,奈何测试用例运行总是不通过,返回的一直都是原数组。 代码排查 复制代码到Firefox浏览器控制台运行,结果输出的是正确结果&a…

【矩阵】240. 搜索二维矩阵 II【中等】

搜索二维矩阵 II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1: 输入:matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22…

Python爬虫实战入门:豆瓣电影Top250(保你会,不会来打我)

文章目录 需求所需第三方库requests模块lxml模块了解 lxml模块和xpath语法xpath语法-基础节点选择语法 实战教程完整代码 需求 目标网站: https://movie.douban.com/top250 需求: 爬取电影中文名、英文名、电影详情页链接、导演、主演、上映年份、国籍、类型、评分、评分人数, …

StarRocks——滴滴的极速多维分析实践

背景 滴滴集团作为生活服务领域的头部企业,其中橙心优选经过一年多的数据体系建设,逐渐将一部分需要实时交互查询,即席查询的多维数据分析需求由ClickHouse迁移到了StarRocks中,接下来以StarRocks实现的漏斗分析为例介绍StarRocks…

扫雷小游戏制作教程:用HTML5和JavaScript打造经典游戏

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

RocketMQ学习笔记四(黑马)

课程地址: 1.Rocket第二章内容介绍_哔哩哔哩_bilibili (视频35~88,搭建了一个电商项目) 待学,待完善。

以题为例浅谈SSRF

什么是ssrf SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。 一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连…

Kafka-生产者报错javax.management.InstanceAlreadyExistsException

生产者发送消息到 kafka 中,然后控制台报错 然后根据日志查看 kafka 的源码发现了问题原因 说的是MBean已经注册了,然后报异常了,这样就会导致生产者的kafka注册失败, 原因是项目上生产者没有配置clientId,默认都是空导致的, 多个生产者(项目)注册到kafka集群中的 id 都相同。 …

C++——类和对象(2)

1. 类的6个默认成员函数 当一个类中什么都没有&#xff0c;编译器会帮类自动生成6个默认成员函数例如&#xff1a; class Date {}; 此篇文章主要围绕构造函数与析构函数进行讲解。 2. 构造函数 2.1 概念 #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> usi…