当前位置: 首页 > web >正文

问题四、如何解决模型轴配置问题

问题描述:
举一个简单的例子

资产位置:

  • 未装配叉车:Samples>Rigging>Forklift>forklift_b_unrigged_cm.usd
  • 装配叉车:Samples>Rigging>Forklift>forklift_b_rigged_cm.usd

用openfile打开为配置的forklift_b_unrigged_cm.usd文件
在这里插入图片描述## 1 识别关节
装配机器人的第一步是识别机器人上的关节,包括驱动关节和非驱动关节。关节决定了所有网格组件的组织方式,识别关节类型及其自由度 (DOF) 是确保机器人装配后按预期运动的关键。

对于叉车来说一共有7个关节:

  • 叉车前方有4个较小的滚轮。它们具有非驱动的旋转关节,每个关节都有一个绕单轴旋转的自由度。
    在这里插入图片描述
  • 当叉车的叉子上下移动以拾取堆放的物体时,叉子相对于叉车主体具有线性运动,这意味着叉子和主体之间有一个线性驱动关节。

在这里插入图片描述

  • 后端较大的车轮负责推动叉车并使其转向。与该车轮相关的驱动有两个:
    • 旋转接头使车轮绕其中心轴旋转,从而提供向前和向后的运动。
    • 车轮和叉车车身之间的旋转接头,提供叉车的转动。
      在这里插入图片描述

2 层次结构配置

初始状态查看右侧树结构处于完全被打乱的情况:
在这里插入图片描述
我们将这些mesh归类,放到几个大节点中,方便理解及移动。
分别建立名为bodyliftback_wheelback_wheel_swivelroller_front_rightroller_back_leftroller_back_rightroller_front_left 8个大的Xform类型的节点。每个节点包含的mesh如下:

  • bodyLooks节点到SM_Forklift_BodyGlass_B01_01节点的所有Mesh

  • liftLooks节点之前的所有Mesh

  • back_wheelSM_Forklift_BackWheel_B01_01

  • back_wheel_swivelSM_Forklift_BackWheelbase_B01_01

  • roller_front_rightSM_Forklift_LeadWheelsFrontRight_B01_01

  • roller_back_leftSM_Forklift_LeadWheelsBackLeft_B01_01

  • roller_back_rightSM_Forklift_LeadWheelsBackRight_B01_01

  • roller_front_leftSM_Forklift_LeadWheelsFrontLeft_B01_01
    在这里插入图片描述重点:

  • Translate

    • 表示物体相对于其父级坐标系的位置偏移。
    • 例如:若父级坐标系原点在 (0,0,0),Translate=(1,0,0) 表示物体位于父级坐标系的 (1,0,0) 处。
  • Translate:pivot

    • 定义物体的 局部变换中心(Pivot),即旋转、缩放的基准点。
    • 例如:若 Translate:pivot=(0,0,1),物体将绕其局部坐标的 (0,0,1) 点旋转。
  • Xform 的作用

    • Xform 是一个变换节点,可以组合多个变换操作(平移、旋转、缩放)。
    • 通过创建新的 Xform 并设置其变换,可以重新定义物体的坐标系层级。

所以假设车轮网格(Mesh)的初始属性为:

	Translate = T = (x1, y1, z1)Translate:pivot = P = (x2, y2, z2)

步骤 1:合并 Translate 和 Translate:pivot 到新 Xform
新建一个 Xform,其变换应设为 T + P,即:

new_Xform.transform = T + P = (x1+x2, y1+y2, z1+z2)

步骤 2:重置车轮网格的 Translate
将车轮网格的 Translate 设为 -P(即 Translate:pivot 的逆):

mesh.Translate = -P = (-x2, -y2, -z2)

这一步的目的是 抵消 Translate:pivot 的影响,确保车轮几何体的顶点坐标相对于新 Xform 的原点正确。
注:第一步完成后实际上会发现Xform下的网格位置变化,第二步之后网格又回到原来的位置,这样建立joint的时候xform下的所有mesh网格会根据Xform的坐标进行旋转。

http://www.xdnf.cn/news/2547.html

相关文章:

  • 高功率无人机动力方案首选:CKESC ROCK 220A-H CAN 电调工程性能实测
  • 开发一个LabVIEW软件需要多少钱
  • 2025通信会丨以创新技术赋能新型电力系统 锐捷知识大脑推动效率提升
  • rabbitmq常用命令
  • 代码随想录算法训练营Day37
  • Diamond软件的使用--(6)访问FPGA的专用SPI接口
  • 关于百度模型迭代个人见解:技术竞速下的应用价值守恒定律
  • Vue3项目目录结构规范建议
  • 【测控系统】测控仪器技术概述与专业选择
  • 【项目实训个人博客】multi-agent调研(1)
  • XMOS直播声卡——可支持实时音频DSP处理的低延迟音频方案
  • Web前渗透
  • JavaScript基础(七)之web APIs
  • 开源项目实战学习之YOLO11:ultralytics-cfg-datasets-VOC、xView.yaml文件(八)
  • 设计模式--桥接模式详解
  • 【C++贪心 滑动窗口】P7990 [USACO21DEC] Closest Cow Wins S|省选-
  • UE5 在旋转A的基础上执行旋转B
  • 复杂背景下无人机影像小目标检测:MPE-YOLO抗遮挡与抗背景干扰设计
  • 深度学习算法:开启智能时代的钥匙
  • FastAPI中的依赖注入详解与示例
  • 假设检验学习总结
  • SQL优化,关联查询非常慢,前台页面控件卡顿
  • 使用 Playwright 构建高效爬虫:原理、实战与最佳实践
  • 大模型应用实战:深入理解模型上下文协议 MCP
  • Linux-UDP套接字编程
  • 小结: DHCP
  • 【SpringMVC】概念引入与连接
  • Spark-Streaming2
  • 深入解析Vue.js:构建现代Web应用的高效之道
  • BIOES 标签的含义