The running editor shows separate USD schema cards, UR10 articulation settings and the source asset window. 运行中的编辑器展示分开的 USD schema 卡片、UR10 关节体设置及源资产窗口。
Each USD schema on the selected cube (Collision, Mesh Collision, Rigid Body, Mass) now sits in its own card with its USD schema name.
The selected UR10 shows Translate, Rotate, Scale and Articulation Root settings in the running editor. / 运行中的编辑器展示 UR10 的平移、旋转、缩放及 Articulation Root 设置。
The source asset window shows a hierarchy, preview and Properties/Raw USD tabs. / 源资产窗口展示层级、预览及 Properties/Raw USD 标签。
Situation
Turing Sim is an experimental OpenUSD editor and robotics simulation workbench. Its Schemas tab lists every schema on the selected prim, including physics APIs, and every edit goes through the document's undo history. On September 28 the tab worked, but it was hard to read. A viewport tool section sat between the name and the Transform, schemas without properties printed "No additional properties", and the Rigid Body and Mass fields ran together with no visible boundary. Transform showed only the transform parts already stored in the file, so the UR10 showed Position but no Rotation or Scale.
Task
The goal was to make the tab read the way USD is structured, following the conventions of Isaac Sim's Property panel. Every property should clearly belong to one schema, Transform should own translate, rotation and scale, and the Articulation Root should expose settings such as self collision. The difficulty was doing this without hardcoding robot or schema names, which the project rules forbid, and without breaking undo.
A second problem appeared during testing. After moving the UR10 with the gizmo, the Transform section switched to "custom transform stack" and the position fields went stale.
Action
-
One card per schema. Each schema is now a bordered card. Its header shows a readable name on the left, the USD schema identifier (for example
PhysicsRigidBodyAPI) on the right, and a remove button for applied APIs. Removing a schema also clears its values in the current edit layer, as one undo step. Cards that are mostly arrays, such as mesh topology, start collapsed. -
Isaac Sim-style rows. Rows are two columns, label and value, and stack when the panel is narrow. Labels come from the schema's own
displayNamemetadata, such as "Center of Mass". A dot at the end of each row shows whether the value is authored: hollow for the schema default, blue when set in the current edit layer (click to revert), grey when set in another layer. Booleans are checkboxes, and physics fields whose USD default is infinity read as "Auto". -
Transform owns position, rotation and scale. Translate, Rotate (or Orient) and Scale always appear, named after their USD transform ops. Rotation switches between Euler degrees and a quaternion. Either input is converted to whichever form the prim already stores, so Isaac-style
orientquaternions stay quaternions. - The gizmo edits the real transform. The cause of the stale fields was that drags wrote a separate matrix op instead of changing the prim's own translate and rotate values. Drags now update those values directly. The matrix op remains only as a fallback for transforms that position/rotation/scale cannot represent. Older matrix ops are merged back on the next edit.
- Articulation Root settings. The card counts the rigid bodies and joints found under the root and offers the PhysX articulation settings: enabled, self collisions, solver iterations, and sleep and stabilization thresholds. Editing one writes the value and applies the PhysX articulation schema in the same undo step.
- Source asset editor. The separate editor for referenced assets now uses the same glass cards and segmented tabs as the main window. A user-provided screenshot of the native editor shows the revised layout; editing behavior in that window has not been checked in a headed session.
Regression tests cover each new edit path with undo and redo, plus a check of all six Euler axis orders against USD's own rotation ops. The full offscreen suite gave 525 passed, 3 failed and 6 skipped. The three failures were older tests still looking up the field by its previous name, "Position X". After updating them, the affected test files pass (61 tests). The whole suite has not been re-run since that fix. The three screenshots at the top show the running app after the changes: separate schema cards, the UR10 Transform and Articulation Root panels, and the source asset editor. They show visible layout and values, not an end-to-end edit or save. The other checks were headless, and today's changes are not yet committed.
Result
In the running editor, a cube with collision, rigid body and mass now shows four clearly separated cards, and each field sits under the schema that owns it. Gizmo moves now show up in the Transform fields, and the UR10's articulation settings can be edited in place.
Next steps are to commit and push these changes, re-run the full suite, test the gizmo against real robot assets in the native viewport, and check the Translate fields at narrow panel widths.
背景
Turing Sim 是一个实验性的 OpenUSD 编辑器和机器人仿真工作台。Schemas 页会列出所选 prim 上的所有 schema(包括物理 API),所有修改都进入文档的撤销历史。9 月 28 日时,这个页面能用,但很难读:视口工具区夹在名称和 Transform 之间;没有属性的 schema 显示“No additional properties”;刚体(Rigid Body)和质量(Mass)的字段之间没有边界,混在一起。Transform 只显示文件里已写入的部分,所以 UR10 只有位置,没有旋转和缩放。
目标与难点
目标是让这个页面按 USD 的结构来呈现,并参考 Isaac Sim 属性面板的做法:每个属性都明确属于一个 schema;Transform 负责位置、旋转和缩放;Articulation Root 能设置自碰撞等参数。难点在于不能硬编码机器人或 schema 名称(项目规则禁止),也不能破坏撤销。
测试时又发现一个问题:用 gizmo 移动 UR10 后,Transform 变成“custom transform stack”,位置数值不再更新。
解决思路与行动
-
每个 schema 一张卡片。 每个 schema 现在是一张带边框的卡片。标题栏左边是易读的名称,右边是 USD schema 标识(例如
PhysicsRigidBodyAPI),已应用的 API 还有删除按钮。删除 schema 时会一并清除它在当前编辑层的数值,整体是一步撤销。以数组为主的卡片(如网格拓扑)默认折叠。 -
Isaac Sim 风格的属性行。 每行左边是标签、右边是数值,面板较窄时自动上下排列。标签来自 schema 自带的
displayName元数据,例如“Center of Mass”。行尾的圆点表示数值是否已写入:空心是 schema 默认值;蓝色表示已写入当前编辑层(点击可恢复默认);灰色表示写在其他层。布尔值改为复选框;USD 默认值为无穷大的物理字段显示为“Auto”。 -
Transform 负责位置、旋转和缩放。 Translate、Rotate(或 Orient)和 Scale 始终显示,名称与 USD 变换操作一致。旋转可在欧拉角和四元数之间切换,任一种输入都会转换成 prim 原本使用的形式,因此 Isaac 风格的
orient四元数仍保持为四元数。 - gizmo 直接修改真实变换。 数值不更新的原因是:拖动时写入的是一个额外的矩阵操作,而不是修改 prim 自身的平移和旋转值。现在拖动直接更新这些值。只有位置/旋转/缩放无法表示的变换才保留矩阵操作作为后备;旧的矩阵操作会在下次编辑时合并回去。
- Articulation Root 设置。 卡片会统计根节点下找到的刚体和关节数量,并提供 PhysX 关节体设置:启用、自碰撞、求解器迭代次数、休眠阈值和稳定阈值。修改其中一项时,会在同一步撤销里写入数值并应用 PhysX 关节体 schema。
- 源资产编辑器。 引用资产的独立编辑器改用与主窗口相同的玻璃卡片和分段标签。用户提供的原生编辑器截图展示了新版布局;该窗口中的编辑操作尚未经过有界面验证。
每条新的编辑路径都有带撤销/重做的回归测试,另外还用 USD 自身的旋转操作验证了全部六种欧拉轴顺序。完整的离屏测试结果为 525 项通过、3 项失败、6 项跳过。3 项失败都是旧测试仍按原名称“Position X”查找字段;更新后,相关测试文件(61 项)全部通过,但此后尚未重新运行整套测试。文章顶部的三张截图均展示改动后运行中的应用:分开的 schema 卡片、UR10 的 Transform 与 Articulation Root 面板,以及源资产编辑器。它们证明的是可见布局与数值,并不能证明完整的编辑或保存流程。其余检查均为无界面运行,今天的改动也还没有提交。
结果与下一步
在运行中的编辑器里,一个带碰撞、刚体和质量的立方体现在显示为四张清晰分开的卡片,每个字段都在它所属的 schema 下面。gizmo 的移动会直接反映在 Transform 字段里,UR10 的关节体设置也可以直接编辑。
下一步:提交并推送这些改动,重新运行整套测试,在原生视口中用真实机器人资产测试 gizmo,并检查窄面板下的 Translate 字段。



Top comments (0)