第六章、Isaacsim中的资产:usda文件详解(1)
第六章、Isaacsim中的资产:usda文件详解(1)
0 前言
官方网站:https://docs.isaacsim.omniverse.nvidia.com/latest/omniverse_usd/intro_to_usd.html
1 将isaac sim 中的机械狗a1保存为usda
打开Isaac sim,点击下方资产Isaac Sim Assests[Beta]->ROBOTS->UNITREE->a1
,随后点击Open File
在stage中打开资产。
点击
File->Save As
输入文件名(File name)并将usd换成usda点击save
保存。
在保存好的文件夹下可以发现有一个usda文件。
1 机械狗a1的usda解析:头部说明
#usda 1.0
(
customLayerData = {
dictionary audioSettings = {
double dopplerLimit = 2
double dopplerScale = 1
string enableDistanceDelay = "off"
string enableDoppler = "off"
string enableInterauralDelay = "off"
double nonSpatialTimeScale = 1
double spatialTimeScale = 1
double speedOfSound = 340
}
dictionary cameraSettings = {
dictionary Front = {
double3 position = (50000.000000000015, -1.1102230246251565e-11, 0)
double radius = 500
}
dictionary Perspective = {
double3 position = (-0.002586823802268228, 1.424646790514281, 0.47104273025473203)
double3 target = (-8.825344033434185e-7, -8.825346318186433e-7, 0.000001765068980363882)
}
dictionary Right = {
double3 position = (0, -50000, -1.1102230246251565e-11)
double radius = 500
}
dictionary Top = {
double3 position = (0, 0, 50000)
double radius = 500
}
string boundCamera = "/OmniverseKit_Persp"
}
dictionary omni_layer = {
string authoring_layer = "./a1.usd"
dictionary locked = {
}
dictionary muteness = {
}
}
dictionary renderSettings = {
}
}
defaultPrim = "a1_description"
doc = """Generated from Composed Stage of root layer
"""
metersPerUnit = 1
timeCodesPerSecond = 60
upAxis = "Z"
)
1 文件基础说明
#usda 1.0
声明此文件遵循 USD 格式的 1.0 版本规范
2 全局元数据块
(
customLayerData = { ... }
defaultPrim = "a1_description" # 当该 USD 文件被其他场景引用时,如果没有指定具体 Prim 路径,将自动指向此 Prim
doc = """Generated from Composed Stage of root layer """ # 记录该 USD 文件的生成方式(此处指明由根层组合生成)
metersPerUnit = 1 # 1 USD 单位 = 1 米;指定单位
timeCodesPerSecond = 60 # 时间系统配置:关键帧间隔1/60秒
upAxis = "Z" # 默认z轴朝上
)
关键参数详解:
customLayerData
:存储应用专属元数据(非 USD 标准部分)
audioSettings
:3D 空间音频参数
dictionary audioSettings = {
double dopplerLimit = 2 # 多普勒效应最大频率偏移倍数
double dopplerScale = 1 # 多普勒强度缩放因子
string enableDistanceDelay = "off" # 是否启用基于距离的音频延迟
string enableDoppler = "off" # 是否启用多普勒效应
string enableInterauralDelay = "off" # 禁用双耳时间差效果
double nonSpatialTimeScale = 1 # 非空间化音频播放速率
double spatialTimeScale = 1 # 空间化音频播放速率
double speedOfSound = 340 # 声速(米/秒,真实世界值)
}
cameraSettings
:预设摄像机配置
dictionary cameraSettings = {
dictionary Front = {
# Front 正交视图摄像机,Y轴向前,Z轴向上,X轴向右的右手坐标系
double3 position = (50000.000000000015, -1.1102230246251565e-11, 0)
# 摄像机空间位置(大致上是从x轴的正方向看)
# X = ~50,000 单位(因 metersPerUnit=1,即 50公里)
# Y ≈ -1.11e-11(接近0,可视为浮点数精度误差)
# Z = 0(与场景平面对齐)
double radius = 500 # 摄像机观察半径(单位:米),控制视图剪裁平面范围,500米外的物体不可见
}
dictionary Perspective = {
# 透视摄像机,构成一个从斜上方看向原点的视角。
double3 position = (-0.002586823802268228, 1.424646790514281, 0.47104273025473203) # 摄像机三维坐标
double3 target = (-8.825344033434185e-7, -8.825346318186433e-7, 0.000001765068980363882) #焦点坐标
}
dictionary Right = {
# Right 正交视图摄像机
double3 position = (0, -50000, -1.1102230246251565e-11)
# X = 0(正右侧视图)
# Y = -50,000(沿Y轴负方向50公里)
# Z ≈ 0(水平对齐)
double radius = 500 # 摄像机观察半径(单位:米),控制视图剪裁平面范围,500米外的物体不可见
}
dictionary Top = {
# Top 正交视图摄像机,正上方
double3 position = (0, 0, 50000)
# X = 0
# Y = 0
# Z = 50,000(正上方50公里处)
double radius = 500
}
string boundCamera = "/OmniverseKit_Persp" # 绑定摄像机
# 指定默认激活的摄像机 Prim 路径,控制用户进入场景时的初始视角
}
- 层级组合关系
dictionary omni_layer = {
string authoring_layer = "./a1.usd"
# 定义当前层(layer)的基础创作层路径
dictionary locked = {
} # 锁定状态记录,记录被锁定的 Prim 或属性路径,防止意外修改关键内容(如角色骨骼、摄像机路径)。
dictionary muteness = {
} # 静音状态记录
}
- 场景渲染
dictionary renderSettings = {}
# 存储与场景渲染相关的全局配置参数,空字典表示未显式配置渲染设置,使用系统/应用默认值。
剩余的usda部分将在后面几节中进行详解。