@hatiolab/figure-model 0.1.56 → 0.1.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,52 @@
1
+ /*
2
+ * Figures authored in V3 terms, with the commands the modeller and the AI share -- examples, acceptance tests of the
3
+ * authoring language, and the seeds a new domain starts with. None is converted from V2.
4
+ */
5
+ import { applyV3Authoring, proposeV3Occupancy } from "./v3-authoring-actions.js";
6
+ import { addV3Primitive, createV3Asset } from "./v3-create.js";
7
+ const box = (id, width, height, depth, token = 'palette.primary') => ({ id, kind: 'box', dimensions: { width, height, depth }, position: { x: 0, y: 0, z: 0 }, material: { token, preset: 'metal' } });
8
+ const cylinder = (id, radius, length, token = 'palette.dark') => ({ id, kind: 'cylinder', dimensions: { radius, length }, position: { x: 0, y: 0, z: 0 }, material: { token, preset: 'metal' } });
9
+ /** The chain, from the floor up: each part's bottom on the top of the one before. */
10
+ export const ROBOT_ARM_CHAIN = [
11
+ { part: cylinder('base', 180, 120) },
12
+ { part: cylinder('turret', 150, 140), joint: { id: 'j1-base', axis: 'Y', min: -180, max: 180 } },
13
+ { part: box('shoulder', 220, 160, 220, 'palette.accent') },
14
+ { part: box('upper-arm', 140, 600, 140), joint: { id: 'j2-shoulder', axis: 'Z', min: -90, max: 90 } },
15
+ { part: box('elbow', 170, 140, 170, 'palette.accent') },
16
+ { part: box('forearm', 120, 520, 120), joint: { id: 'j3-elbow', axis: 'Z', min: -150, max: 150 } },
17
+ { part: cylinder('wrist-roll', 60, 90), joint: { id: 'j4-wrist-roll', axis: 'Y', min: -180, max: 180 } },
18
+ { part: box('wrist-pitch', 110, 110, 110, 'palette.accent'), joint: { id: 'j5-wrist-pitch', axis: 'Z', min: -120, max: 120 } },
19
+ { part: cylinder('flange', 50, 40, 'palette.neutral'), joint: { id: 'j6-tool-roll', axis: 'Y', min: -180, max: 180, continuous: true } },
20
+ { part: box('gripper', 150, 50, 70, 'palette.dark') }
21
+ ];
22
+ /**
23
+ * A six-axis arm: each link joined to the one before at a joint, which is the one relation the arm needs; every size is
24
+ * the part's own number. The room it takes is worked out.
25
+ */
26
+ export function robotArmV3() {
27
+ let asset = createV3Asset('6축 로봇암');
28
+ asset.palette = { 'palette.primary': '#477b9e', 'palette.dark': '#2b2b2b', 'palette.accent': '#f79c40', 'palette.neutral': '#9a9a9a' };
29
+ const run = (action) => (asset = applyV3Authoring(asset, action));
30
+ ROBOT_ARM_CHAIN.forEach(({ part }) => (asset = addV3Primitive(asset, part)));
31
+ run({ kind: 'set-joint', joint: { id: 'base', type: 'fixed', body0: { plane: 'mounting-plane' }, body1: { part: 'base', face: 'bottom' } } });
32
+ ROBOT_ARM_CHAIN.forEach(({ part, joint }, i) => {
33
+ if (i === 0)
34
+ return;
35
+ const hang = { body0: { part: ROBOT_ARM_CHAIN[i - 1].part.id, face: 'top' }, body1: { part: part.id, face: 'bottom' } };
36
+ if (!joint)
37
+ run({ kind: 'set-joint', joint: { id: part.id, type: 'fixed', ...hang } });
38
+ else if (joint.continuous)
39
+ run({ kind: 'set-joint', joint: { id: joint.id, type: 'revolute', ...hang, axis: joint.axis } });
40
+ else
41
+ run({ kind: 'set-joint', joint: { id: joint.id, type: 'revolute', ...hang, axis: joint.axis, lowerLimit: joint.min, upperLimit: joint.max } });
42
+ });
43
+ /* Two fingers on the gripper's top, at its two ends, closing towards each other from one value (0..45 mm): the right one mimics. */
44
+ asset = addV3Primitive(asset, box('finger-left', 20, 90, 40, 'palette.neutral'));
45
+ asset = addV3Primitive(asset, box('finger-right', 20, 90, 40, 'palette.neutral'));
46
+ run({ kind: 'set-joint', joint: { id: 'gripper', type: 'prismatic', body0: { part: 'gripper', face: 'top' }, body1: { part: 'finger-left', face: 'bottom' }, origin: { align: { x: 'min' } }, axis: 'X', lowerLimit: 0, upperLimit: 45 } });
47
+ run({ kind: 'set-joint', joint: { id: 'gripper-mirror', type: 'prismatic', body0: { part: 'gripper', face: 'top' }, body1: { part: 'finger-right', face: 'bottom' }, origin: { align: { x: 'max' } }, axis: 'X', mimic: { joint: 'gripper', multiplier: -1 } } });
48
+ run({ kind: 'set-detail-level', level: 'L' });
49
+ run({ kind: 'declare-occupancy', proposal: proposeV3Occupancy(asset, { over: 'range' }), placement: 'floor' });
50
+ return asset;
51
+ }
52
+ //# sourceMappingURL=v3-examples.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3-examples.js","sourceRoot":"","sources":["../src/v3-examples.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,5 @@
4
4
  * different result. Kept equal to package.json's version by `npm version` (the `version` script rewrites this file)
5
5
  * and by `v3-kernel-version.test.ts`.
6
6
  */
7
- export declare const V3_KERNEL_VERSION = "0.1.56";
7
+ export declare const V3_KERNEL_VERSION = "0.1.57";
8
8
  //# sourceMappingURL=v3-kernel-version.d.ts.map
@@ -7,5 +7,5 @@
7
7
  * different result. Kept equal to package.json's version by `npm version` (the `version` script rewrites this file)
8
8
  * and by `v3-kernel-version.test.ts`.
9
9
  */
10
- export const V3_KERNEL_VERSION = '0.1.56';
10
+ export const V3_KERNEL_VERSION = '0.1.57';
11
11
  //# sourceMappingURL=v3-kernel-version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"v3-part-edit.d.ts","sourceRoot":"","sources":["../src/v3-part-edit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAI9D,MAAM,MAAM,UAAU;AACpB;;;;GAIG;AACD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE;AAClG,oHAAoH;GAClH;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACzC,gIAAgI;GAC9H;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE;AAC/C;;;;GAIG;GACD;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AACxH,mHAAmH;GACjH;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE;AAChE;;;;;GAKG;GACD;IACE,IAAI,EAAE,YAAY,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC/C,aAAa,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AACH,6CAA6C;GAC3C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAC1C,oGAAoG;GAClG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE;AACtE;;;;GAIG;GACD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAC5C,6GAA6G;GAC3G;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE;AACnD;;;;GAIG;GACD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEzD,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAsMrE"}
1
+ {"version":3,"file":"v3-part-edit.d.ts","sourceRoot":"","sources":["../src/v3-part-edit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAI9D,MAAM,MAAM,UAAU;AACpB;;;;GAIG;AACD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE;AAClG,oHAAoH;GAClH;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACzC,gIAAgI;GAC9H;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE;AAC/C;;;;GAIG;GACD;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AACxH,mHAAmH;GACjH;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE;AAChE;;;;;GAKG;GACD;IACE,IAAI,EAAE,YAAY,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC/C,aAAa,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AACH,6CAA6C;GAC3C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAC1C,oGAAoG;GAClG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE;AACtE;;;;GAIG;GACD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAC5C,6GAA6G;GAC3G;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE;AACnD;;;;GAIG;GACD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEzD,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAyNrE"}
@@ -38,9 +38,32 @@ export function editV3Part(source, edit) {
38
38
  throw new V3ContractError('STATE_INPUT', edit.input, 'the range runs from a smaller number to a larger one');
39
39
  if (edit.start !== undefined && !(Number.isFinite(edit.start) && edit.start >= min && edit.start <= max))
40
40
  throw new V3ContractError('STATE_INPUT', edit.input, `it starts inside its range, ${min} to ${max}`);
41
+ /*
42
+ A joint's value: its range is the joint record's limit, and the two are one (ADR-0093) -- changing only the
43
+ input would leave the record saying otherwise, and the asset would be refused the next time it is read.
44
+ */
45
+ const joint = (asset.joints ?? []).find(j => j.type !== 'fixed' && !j.mimic && (j.state?.id ?? j.id) === edit.input);
46
+ if (joint) {
47
+ const ranged = edit.min !== undefined || edit.max !== undefined;
48
+ const endless = joint.type === 'revolute' && joint.lowerLimit === undefined && joint.upperLimit === undefined;
49
+ if (endless && ranged)
50
+ throw new V3ContractError('STATE_INPUT', edit.input, 'a joint that turns without end has no range; its value is a phase, -180..180');
51
+ if (ranged && !(min <= 0 && 0 <= max))
52
+ throw new V3ContractError('STATE_INPUT', edit.input, 'the rest pose is the joint at 0, so its range holds 0');
53
+ if (!endless) {
54
+ joint.lowerLimit = min;
55
+ joint.upperLimit = max;
56
+ }
57
+ const { label: _label, sweep: _sweep, ...rest } = joint.state ?? {};
58
+ joint.state = { ...rest, ...policy };
59
+ if (!Object.keys(joint.state).length)
60
+ delete joint.state;
61
+ }
41
62
  input.min = min;
42
63
  input.max = max;
43
64
  asset.stateDefaults[edit.input] = edit.start ?? Math.min(Math.max(asset.stateDefaults[edit.input], min), max);
65
+ if (joint && (edit.start !== undefined || joint.state?.start !== undefined))
66
+ joint.state = { ...(joint.state ?? {}), start: asset.stateDefaults[edit.input] };
44
67
  asset.stateInputs = { ...(asset.stateInputs ?? {}) };
45
68
  if (Object.keys(policy).length)
46
69
  asset.stateInputs[edit.input] = policy;
@@ -1 +1 @@
1
- {"version":3,"file":"v3-part-edit.js","sourceRoot":"","sources":["../src/v3-part-edit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"v3-part-edit.js","sourceRoot":"","sources":["../src/v3-part-edit.ts"],"names":[],"mappings":"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"}
@@ -72,8 +72,9 @@ UI/AI는 동일 관계의 입력을 변경한다. 저수준 직접 정의로 바
72
72
  - c: provider 종류, template 선택 등 저작 변경으로만 바꾸는 구조.
73
73
 
74
74
  길이·각도·시간·무차원 비율·정수 개수·bool을 구별한다. 저장/실행 표준 단위는
75
- 길이 mm, 각도 rad, 시간 s로 정규화한다. UI는 deg/%를 변환한다.
76
- 실험 커널의 deg 숫자는 이 계약을 구현한 것이 아니다.
75
+ 길이 mm, 각도 deg, 시간 s로 정규화한다. UI는 deg/%를 변환한다.
76
+ (2026-09-25 개정: 사용자 결정 「USD를 따르도록 하자」 — 각도는 UsdPhysics 와 같이 도(deg)로 저장한다. 관절 레코드는 UsdPhysics 의 말을 쓴다: ADR-0093.)
77
+ 커널의 deg 숫자가 이 계약이다(개정 전에는 「실험 커널의 deg 숫자는 이 계약을 구현한 것이 아니다」였다).
77
78
 
78
79
  덧셈/비교는 같은 차원만, 곱셈/나눗셈은 차원 합성으로 타입을 결정한다.
79
80
  삼각함수는 각도→무차원, 나눗셈은 0 아닌 분모라는 정의역을 가진다.
@@ -0,0 +1,207 @@
1
+ # Figure V3 와 OpenUSD 검토
2
+
3
+ 상태: **문헌·소스 검토.** 구현이나 변환 실험은 하지 않았다. 2026-09-25 작성.
4
+ 범위: OpenUSD 를 Figure V3 의 개념 기반·이름 정렬 대상·교환 형식으로 쓸 수 있는지. 기준 문서는
5
+ [r3 핵심 의미론](v3-core-semantics.md), [선행 연구 검토](v3-research-review.md)(URDF·USD 는 다루지 않았다),
6
+ `operato-application/adr/ADR-0093.md`, 그리고 이미 들어간 레코드 `src/v3-authoring-actions.ts:52` `V3Joint`(커밋 `d15c0ba`, 미발행).
7
+
8
+ 근거 표기: 본문의 `[S#]` 는 맨 아래 출처 표의 번호다. **모든 URL 의 접근일은 2026-09-25 다.** 출처 표의 「근거」 열은
9
+ 원문(파일 원문을 직접 읽음) · 페이지 요약(웹 페이지를 요약 도구로 읽음) · 검색 요약(검색 결과 문단만 봄)으로 나눈다.
10
+ 확인하지 못한 것은 「확인 못 함」으로 적는다. `[짐작]` 은 근거 없이 추론한 문장이다.
11
+
12
+ ## 결론
13
+
14
+ 1. **(a) 개념 기반으로 삼지 않는다.** USD 는 평가가 끝난 값(숫자·time sample)을 합성한다. V3 정본의 중심인 「설계 입력의 식으로 정해지는 치수·pivot·반복 개수」, feature 기준 부착, occupancy, capability 를 담는 구조가 없다. 식을 계산하는 OpenExec 는 25.08 preview 이고 계산은 C++ 로 schema 에 등록해야 하며 장면 파일에 식을 적을 수 없다. 26.08 의 rig 기능도 "not yet ready for production use" 다 [S15][S20]. variable expression 은 asset path·variant 선택에만 쓰이고 산술이 없다 [S21].
15
+ 2. **(b) 이름·모양은 비용이 작은 곳에서 맞춘다.** V3 joint 레코드는 이미 UsdPhysics 의 양쪽 frame 구조와 같다(부모 feature+origin ↔ `body0`+`localPos0/localRot0`, 자식 feature ↔ `body1`+`localPos1/localRot1`). limit 필드 이름·각도 단위·축 토큰·mimic 부호 규약을 발행 전에 정한다(아래 ADR-0093 권고 R1–R7).
16
+ 3. **(c) USD 는 교환 형식으로 쓴다. export 먼저, import 는 URDF 뒤에.** export 는 설계 입력을 평가한 스냅샷을 `usda` 로 쓴다(UsdGeom + UsdPhysics + UsdPreviewSurface, `metersPerUnit = 0.001`, `upAxis = "Y"`). import 한 자산은 모든 치수가 상수인 V3 자산이 된다.
17
+ 4. **USD 가 담지 못하는 V3 의 것:** 설계 입력 식, 식을 따르는 joint pivot·travel, 길이를 채우는 반복의 개수 계산, 이름 있는 feature, occupancy, capability, 관계 검사(assertion). **V3 에 없고 USD 에 있는 것:** layer 합성과 비파괴 override, variantSet, payload, 교환 가능한 instancing(scenegraph instancing·PointInstancer), 질량·충돌·drive·articulation root, time sample, 표준 재질(UsdPreviewSurface·MaterialX), Omniverse·Isaac Sim·Siemens 등의 도구 생태계 [S1][S6].
18
+ 5. **표준 상태:** AOUSD Core Spec 1.0.1(2025-12-12)은 데이터 모델·합성·`usda/usdc/usdz` 만 규정하고 Geometry·Materials·Physics 는 별도 규격으로 작성 중이다 [S2][S3]. UsdPhysics 이름은 OpenUSD 코드(21.08 부터)가 기준이다. mimic 은 UsdPhysics 에 없고 PhysX·Newton 확장에 부호가 다른 식으로 있다 [S14][S16][S19].
19
+
20
+ ## 1. V3 개념 → USD 대응표
21
+
22
+ | Figure V3 개념 | USD 구성 (정확한 이름) | 맞음 |
23
+ |---|---|---|
24
+ | 설계 입력 d (mm 길이) | 해당 없음. 기록만 하려면 custom attribute(예 `figure:design:width`) 또는 `customData`. 평가하지 않는다 | 없음 |
25
+ | 상태 입력 q (joint 값) | UsdPhysics 에 joint 값 속성 없음. 자세는 body 의 `xformOp:*` 로 쓴다. PhysX 확장 `PhysicsJointStateAPI` 의 `state:angular:physics:position`/`state:linear:physics:position` [S16][S31] | 변환 필요 |
26
+ | 정적 선택 c (provider·template 선택) | `variantSets` + `variantSelection`. 각 variant 가 평가된 결과를 담는다 [S8] | 변환 필요 |
27
+ | 크기 프리셋 (유한 개) | `variantSet "size"` 의 variant 마다 평가된 형상. 연속 범위는 표현 불가 | 변환 필요 |
28
+ | box | `UsdGeomCube`(`size` 하나뿐) + `xformOp:scale`, 또는 `UsdGeomMesh` [S10][S18] | 변환 필요 |
29
+ | cylinder (Y 축, 원형) | `UsdGeomCylinder` `height`, `radius`, `axis = "Y"` [S10] | 그대로 |
30
+ | cylinder (타원 단면 `radiusX≠radiusZ`) | `UsdGeomCylinder` + `xformOp:scale`, 또는 Mesh | 변환 필요 |
31
+ | sphere (`radiusX/Y/Z`) | `UsdGeomSphere` `radius` (+ 서로 다르면 `xformOp:scale`) | 그대로 / 변환 필요 |
32
+ | frustum (원형 단면) | `UsdGeomCylinder_1` `radiusTop`, `radiusBottom`(23.11) 또는 `UsdGeomCone` [S10][S15] | 그대로 |
33
+ | rounded-box, hollow-box, portal, polygon 돌출 | `UsdGeomMesh` (`points`, `faceVertexCounts`, `faceVertexIndices`) — Figure 가 삼각형으로 풀어 쓴다 | 변환 필요 |
34
+ | part (형상 + 자식 part) | `UsdGeomXform` 아래에 Gprim 을 자식으로 둔다. Gprim 안에 Gprim 을 둘 수 없다 [S18] | 변환 필요 |
35
+ | 이름 있는 feature (면·축 끝점) | 해당 개념 없음. 필요하면 frame 용 자식 `Xform` prim(URDF "anchor point" 방식 [S18]) | 없음 |
36
+ | 연결(부착, fixed) | 부모 Xform 아래 중첩 + 계산된 `xformOp:translate`/`xformOp:orient`; 선택적으로 `UsdPhysicsFixedJoint`. 관계는 사라지고 결과 위치만 남는다 | 변환 필요 |
37
+ | joint (revolute·continuous·prismatic) | `UsdPhysicsRevoluteJoint`, `UsdPhysicsPrismaticJoint` (continuous 는 limit ±inf 인 Revolute) [S14][S18] | 변환 필요 (값은 평가 결과) |
38
+ | mimic | UsdPhysics 에 없음. `NewtonMimicAPI` 또는 `PhysxMimicJointAPI` [S16][S19] | 없음 (확장) |
39
+ | 반복 (강체 항목 n 개) | `UsdGeomPointInstancer` `prototypes`, `protoIndices`, `ids`, `positions`, `orientations` [S10] | 변환 필요 (개수·위치는 평가 결과) |
40
+ | 반복 항목 key (ordinal) | PointInstancer `ids` (int64) | 그대로 |
41
+ | 반복 안의 joint (롤러 회전) | PointInstancer 항목별 joint 없음 → 개별 prim 으로 풀어야 함 | 변환 필요 |
42
+ | occupancy (차지하는 공간) | 해당 개념 없음. `extent` 는 형상 bounds 이다 [S10] | 없음 |
43
+ | capability (seat·grip) | 해당 개념 없음. SimReady 의 "connection points" 표현 형식은 확인 못 함 [S7] | 없음 |
44
+ | appearance 팔레트 토큰 (`Record<token, color>`) | 토큰마다 `UsdShadeMaterial` + `UsdPreviewSurface` `diffuseColor`, `material:binding` [S22] | 변환 필요 |
45
+ | `appearance.visibility` (flag) | `UsdGeomImageable` `visibility` (`inherited`/`invisible`) — 평가한 값 | 변환 필요 |
46
+ | 보드에 같은 figure 여러 번 배치 | 배치 prim 에 `references` + `instanceable = true` [S8][S9] | 그대로 (조건 있음, §3) |
47
+ | 단위 mm, Y 위, 오른손 | `metersPerUnit = 0.001`, `upAxis = "Y"`; USD 도 오른손, Y 위가 기본 방향 [S10][S12] | 그대로 |
48
+ | 열벡터 `W = A·O·J·inv(B)` | USD 는 행벡터·행 우선: 점이 행렬 앞에 곱해진다 [S12] | 변환 필요 (전치) |
49
+ | id (`tool-grip` 등) | PrimName 은 `([XID_Start]/'_')[XID_Continue]*` — `-` 불가 [S3] | 변환 필요 |
50
+
51
+ ## 2. ADR-0093 joint 레코드 · UsdPhysics · URDF 필드 대조
52
+
53
+ V3 열은 ADR-0093 본문과 구현된 `V3Joint`(`src/v3-authoring-actions.ts:52-76`)를 함께 적었다.
54
+
55
+ | 뜻 | V3 (ADR-0093 / `V3Joint`) | UsdPhysics [S14] | URDF [S18] | 판정 |
56
+ |---|---|---|---|---|
57
+ | 이름 | `id: string` | prim 이름(경로) | `joint@name` | USD 이름 규칙 때문에 매핑 필요 (R6) |
58
+ | 종류 | `fixed·revolute·continuous·prismatic` | `PhysicsFixedJoint`, `PhysicsRevoluteJoint`, `PhysicsPrismaticJoint` (+ Spherical, Distance, D6=`PhysicsJoint`) | `fixed·revolute·continuous·prismatic` (+ floating, planar) | 그대로. continuous → Revolute, limit ±inf |
59
+ | 부모 | `parent: {part, face}` 또는 `{plane: 'mounting-plane'}` | `rel physics:body0` (비우면 world) | `<parent link>` | 그대로. mounting-plane → body0 비움 또는 defaultPrim [S18] |
60
+ | 자식 | `child: {part, face}` | `rel physics:body1` | `<child link>` | 그대로 |
61
+ | 부모 쪽 frame | 부모 face + `origin{facing, gap, align, turn}` (식) | `point3f physics:localPos0`, `quatf physics:localRot0` (body0 frame 기준) | `<origin xyz rpy>` | 변환 필요: 평가 후 숫자 |
62
+ | 자식 쪽 frame | 자식 face (joint frame 안에 놓임) | `point3f physics:localPos1`, `quatf physics:localRot1` (body1 frame 기준) | 없음: 자식 link frame = joint frame | USD 와 같은 구조. URDF export 는 자식 visual origin 에 `inv(B)` 를 접어 넣어야 함 (R7) |
63
+ | 축 | `axis?: Axis` = `x`, `y`, `z` (joint frame 기준) | `uniform token physics:axis` = `"X"`, `"Y"`, `"Z"` | `<axis xyz>` 임의 단위벡터 | USD 와 같음. URDF 임의 축은 import 불가 (R4) |
64
+ | 범위 | `limit?: {min, max}` (revolute deg, prismatic mm) | `physics:lowerLimit`, `physics:upperLimit` (revolute deg, prismatic 장면 단위) | `<limit lower upper effort velocity>` (rad, m) | 이름 변경 권고 (R1), 단위 결정 (R2) |
65
+ | 거리가 치수를 따름 | `travel{source, times, plus}` | 없음 | 없음 | V3 고유. export 때 limit 숫자로 평가 |
66
+ | 현재 값 | `state{id, label, start, sweep}` (상태 입력) | 없음. body 의 xformOp 가 자세. PhysX `state:*:physics:position` | 없음 (값 0 = origin 자세) | V3 고유. export 는 자세를 body xform 으로 |
67
+ | 따라 움직임 | `mimic{joint, multiplier, offset}` : 값 = 리더×multiplier + offset | 없음. Newton: `rel newton:mimicJoint`, `newton:mimicCoef1`, `newton:mimicCoef0` (값 = coef0 + coef1×리더). PhysX: `physxMimicJoint:<axis>:referenceJoint`, `:gearing`, `:offset` (q + gearing×q_ref + offset = 0) | `<mimic joint multiplier offset>` | URDF·Newton 과 같은 식. PhysX 는 부호 반대 (R5) |
68
+ | 구동 | 없음 | `PhysicsDriveAPI:<dof>` `physics:type`, `maxForce`, `targetPosition`, `targetVelocity`, `stiffness`, `damping` | `<limit effort velocity>`, `<dynamics>` | 범위 밖. 쓰지 않는다 |
69
+ | 기타 | 없음 | `physics:jointEnabled`, `physics:collisionEnabled`, `physics:excludeFromArticulation`, `physics:breakForce`, `physics:breakTorque`; `PhysicsArticulationRootAPI` | `calibration`, `safety_controller` | 범위 밖. export 기본값 사용 |
70
+
71
+ ### ADR-0093 발행 전 권고
72
+
73
+ - **R1. `limit: {min, max}` → `limit: {lower, upper}`.** URDF `lower/upper` 와 UsdPhysics `lowerLimit/upperLimit` 가 같은 낱말을 쓴다. 미발행이라 이름 변경 비용이 지금 가장 작다.
74
+ - **R2. 각도 단위를 ADR 에 명시하고 r3 와 맞춘다.** r3 §4 는 저장 단위를 rad 로 정했고 "실험 커널의 deg 숫자는 이 계약을 구현한 것이 아니다"라고 적었다. ADR-0093 과 `V3Joint` 는 `limit`·`origin.turn`·continuous 위상(−180..180)에 deg 를 쓴다. UsdPhysics 는 deg [S13], URDF 는 rad [S18]. 어느 쪽이든 export 는 곱셈 하나다. 권고는 r3 를 따라 rad 로 저장하는 것이다. deg 를 유지하려면 r3 §4 를 먼저 고친다.
75
+ - **R3. 축은 부호 없는 `X|Y|Z` 로 유지하고, 방향 반전은 `origin.turn` 으로 표현한다고 ADR 에 적는다.** UsdPhysics `physics:axis` 가 같은 토큰 셋이다. URDF export 는 `(1,0,0)` 같은 단위벡터로 쓴다.
76
+ - **R4. URDF/USD import 의 임의 회전을 어떻게 받을지 발행 전에 정한다.** `origin.turn` 은 quarter-turn 만 받는다. URDF `origin rpy` 와 `axis xyz` 는 임의 값이고 USD `localRot0/1` 도 임의 quaternion 이다. 둘 중 하나: (가) origin 에 일반 회전(각도 식 또는 quaternion)을 추가, (나) 축 정렬되지 않은 joint 는 이유를 밝히고 import 를 거절. ADR §5 가 URDF import 를 약속하므로 레코드 모양에 영향이 있다.
77
+ - **R5. mimic 은 `{joint, multiplier, offset}` 그대로 두고 세 가지를 ADR 에 적는다.** ① `offset` 단위는 따르는 joint 의 단위다(NewtonMimicAPI 와 같음 [S19]). ② 리더와 따르는 joint 는 같은 운동 종류여야 한다(Newton 은 같은 joint type 을 요구 [S19]; revolute·continuous 는 USD 에서 둘 다 Revolute). ③ PhysX export 는 `gearing = −multiplier`, `offset = −offset` 로 부호를 바꾸고, PhysX 는 mimic 에 쓰이는 joint 에 유한 limit 을 요구한다 [S16][S29].
78
+ - **R6. id → USD 이름 매핑 규칙을 ADR §5 에 적는다.** USD PrimName 은 `-` 를 허용하지 않는다 [S3]. export 에서 결정적 매핑(`-`→`_`, 충돌 시 거절)을 쓰고 id 규칙은 그대로 두기를 권고한다. 원래 id 는 `figure:id` custom attribute 로 남긴다.
79
+ - **R7. 「URDF's shape」 설명에 양쪽 frame 을 명시한다.** 레코드는 URDF 의 필드 이름에 UsdPhysics 의 양쪽 frame 을 쓴다. 자식 face frame B 가 `localPos1/localRot1` 에 해당하고, URDF export 는 자식 link frame 을 joint frame 에 두기 위해 자식 visual 의 origin 에 `inv(B)` 를 합성한다. r3 §7 의 `W = A·O·J(q)·inv(B)` 가 그대로 대응한다.
80
+
81
+ `state`·`travel`·`parent.plane` 은 바꾸지 않는다. USD 와 URDF 에 대응 필드가 없거나(state, travel) 대응이 정해져 있다(plane → body0 비움).
82
+
83
+ ## 3. 질문별 근거
84
+
85
+ ### 3.1 표준화 상태와 산업 채택
86
+
87
+ - AOUSD 는 2025-12-17 Core Specification 1.0 을 발표했다 [S1]. 공개 저장소의 판은 **Core 1.0.1, 2025-12-12**, 라이선스 CC-BY-ND-4.0 이다 [S2].
88
+ - Core Spec 은 데이터 모델, 경로, resource 해석, 합성, stage 구성, 값 해석, schema 확장, `usda`(text)·`usdc`(binary)·`usdz`(package) 형식을 규정한다 [S3 목차]. 서문에 Geometry·Materials·Physics 같은 domain 사용은 다루지 않고 별도 규격으로 낸다고 적혀 있다 [S3 Foreword].
89
+ - Core 1.1 은 2026 목표로 animation, 대형 장면 확장, 적합성 시험 지침을 추가한다고 발표했다 [S1]. 2026-09-25 현재 공개 저장소에는 1.0.1 만 있다 [S2]. 1.1 발행 여부는 확인 못 함.
90
+ - Materials·Geometry 작업반은 2024-03 출범 [S5, 검색 요약], Physics 작업반 헌장은 2024-12-16 승인, 첫 산출물은 기존 UsdPhysics 의 규범 규격이다 [S4, 검색 요약]. Physics 규격 발행 여부·일정은 확인 못 함.
91
+ - 제조 쪽 회원으로 Hexagon, PTC, Renault, Rockwell Automation, Schneider Electric, Siemens 가 명시돼 있다 [S1]. NVIDIA 는 2025-03-31 공장 디지털 트윈용 Mega blueprint 를 발표했고 Accenture·Schaeffler 가 설비 배치·물류 흐름·사람–로봇 협업 시뮬레이션에 쓴다고 적었다 [S6]. SimReady(NVIDIA 가 만든 자산 규격, 현재 정적 prop 중심)는 semantic label·강체·질량을 다룬다 [S7].
92
+ - 산업 트윈에서 USD 는 주로 NVIDIA Omniverse·Isaac Sim 계열의 시각화·시뮬레이션 교환에 쓰인다 [S6][S17]. 설비 모델을 치수로 다시 만드는 용도의 사례는 찾지 못했다 — 확인 못 함.
93
+
94
+ ### 3.2 합성: layer, references, payload, variantSet, inherits, specializes
95
+
96
+ - 강도 순서는 **LIVERPS**: Local, Inherits, VariantSets, Relocates, References, Payload, Specializes [S8]. sublayer 는 같은 layer stack 을 이루고, references·payload 는 다른 prim 을 가져오며 이름을 바꿀 수 있다. payload 는 지연 로드용이다 [S8].
97
+ - variantSet 은 prim 에 둔 상호 배타적 대안이다 [S8]. **크기·옵션 variant 로 쓸 수 있는 범위:** 유한 개의 프리셋(S/M/L, 옵션 있음/없음)과 V3 의 정적 선택 c. 각 variant 는 평가된 형상을 담는다. 연속 설계 입력(폭 1234 mm)은 variant 로 표현할 수 없다.
98
+ - 값 해석은 opinion 의 강도 순서로 정해지고, attribute connection(`connectionPaths`)의 해석과 평가는 schema domain 몫이며 값 해석에 포함되지 않는다 [S3 §connectionPaths]. 즉 USD 합성은 어떤 값도 다른 값에서 다시 계산하지 않는다. 폭을 바꾸면 롤러 개수·pivot 이 따라 바뀌는 V3 의 동작은 USD 쪽에 옮길 수 없다.
99
+ - inherits·specializes 는 class prim 의 공통 opinion 을 여러 prim 에 적용한다 [S8]. 보드 수준에서 「이 보드의 모든 컨베이어 색」 같은 일괄 override 에 쓸 수 있다 `[짐작]`.
100
+
101
+ ### 3.3 instancing: 한 figure 를 여러 번, 반복
102
+
103
+ - **scenegraph instancing:** `instanceable = true` 이고 직접 합성 arc 가 있는 prim 은 암시적 prototype 의 instance 가 된다 [S8]. 합성 arc·variant 선택 등이 같은 instance 끼리 prototype 을 공유한다 [S9]. instance 아래 prim 의 속성·metadata 는 override 할 수 없고 instance proxy 는 읽기 전용이다 [S9].
104
+ - 결과: **설계 입력 값이 같은 배치끼리만** prototype 을 공유한다. V3 의 형상 캐시 key(provider·해결된 형상 파라미터)와 같은 기준이다(r3 §12). 배치마다 자세(q)가 다른 로봇 팔은 figure 루트를 instance 로 만들 수 없다. Isaac Lab 은 같은 이유로 mesh prim 만 instanceable 로 만들고 link xform 은 instance 밖에 둔다 [S28, 검색 요약].
105
+ - **PointInstancer:** `rel prototypes`, `int[] protoIndices`, `int64[] ids`, `point3f[] positions`, `quath[] orientations`, `quatf[] orientationsf`, `float3[] scales`, `vector3f[] velocities`, `accelerations`, `angularVelocities`, `int64[] invisibleIds` [S10]. 강체 항목의 반복(롤러 줄, 선반 칸)에 맞는다. `ids` 에 V3 반복 항목 key(ordinal)를 쓰면 항목 정체성이 유지된다. 항목 안에 joint 가 있으면 항목별 physics joint 를 둘 수 없어 개별 prim 으로 풀어야 한다. PhysX 등이 PointInstancer 안의 강체를 어디까지 지원하는지는 확인 못 함.
106
+ - three.js `USDLoader` 는 PointInstancer 와 `instanceable` 을 처리하지 않는다(소스에 해당 처리 없음) [S24].
107
+
108
+ ### 3.4 UsdGeom primitive, xformOp, 단위
109
+
110
+ - 기본값(schema 원문) [S10]: `Cube.size = 2`; `Sphere.radius = 1`; `Cylinder.height = 2, radius = 1, axis = "Z"`; `Cone.height = 2, radius = 1, axis = "Z"`; `Capsule.height = 1, radius = 0.5, axis = "Z"`; `Cylinder_1`/`Capsule_1` 은 `radiusTop`, `radiusBottom`(23.11 도입 [S15]); `Plane.width = 2, length = 2, axis = "Z", doubleSided = true`. 모든 Gprim 에 `float3[] extent`.
111
+ - 너비·높이·깊이가 다른 상자 primitive 는 없다. `Cube` 는 한 변 `size` 뿐이다 [S10]. Newton 변환기는 `Cube` + `xformOp:scale` 을 권한다 [S18]. **r3 §6 은 frame 에 scale 을 다시 적용하지 않는다고 정했으므로**, export 는 scale 을 Gprim 에만 둔다. part Xform 에는 강체 변환만 쓰므로 자식 part 의 frame 도 강체 변환만 받는다.
112
+ - xformOp: `xformOp:translate`(`X/Y/Z` 단일축 포함), `xformOp:rotateX/Y/Z`, `rotateXYZ` 등 6 가지 Euler 순서(단위 deg), `xformOp:orient`(quaternion), `xformOp:scale`, `xformOp:transform`(4×4), 순서는 `xformOpOrder`, 역연산 접두 `!invert!`, 부모 변환 무시 `!resetXformStack!` [S11].
113
+ - 단위: `metersPerUnit`(fallback 0.01 = cm), `upAxis`(`"Y"` 또는 `"Z"`) 는 stage metadata [S10]. Figure 는 `metersPerUnit = 0.001`, `upAxis = "Y"` 로 쓰면 숫자를 바꾸지 않는다. UsdPhysics prismatic limit 도 장면 단위이므로 mm 그대로다 [S14].
114
+
115
+ ### 3.5 UsdPhysics: joint, articulation, mimic
116
+
117
+ - UsdPhysics 는 21.08 에 처음 들어갔다 [S15]. schema 원문 기준 이름은 §2 표와 같다 [S14]. joint 속성은 `rel physics:body0/body1`, `point3f physics:localPos0/localPos1`, `quatf physics:localRot0/localRot1`, `bool physics:jointEnabled`(true), `bool physics:collisionEnabled`(false), `uniform bool physics:excludeFromArticulation`, `float physics:breakForce/breakTorque`(inf).
118
+ - Revolute·Prismatic: `uniform token physics:axis`(`"X"|"Y"|"Z"`, 기본 `"X"`), `float physics:lowerLimit/upperLimit` (revolute 는 deg, prismatic 은 distance). Spherical: `physics:axis`, `physics:coneAngle0Limit`, `physics:coneAngle1Limit`. Distance: `physics:minDistance`, `physics:maxDistance`. 기본 `PhysicsJoint` 는 6 자유도 모두 풀린 D6 이다 [S14].
119
+ - `PhysicsLimitAPI:<dof>`(`physics:low`, `physics:high`)와 `PhysicsDriveAPI:<dof>`(`physics:type` = force|acceleration, `maxForce`, `targetPosition`, `targetVelocity`, `damping`, `stiffness`)는 multiple-apply 이고 dof 이름은 `transX, transY, transZ, rotX, rotY, rotZ, distance` [S14].
120
+ - frame: joint frame 은 두 body 각각에 대해 정의되며 world 에서 꼭 일치할 필요는 없다(시뮬레이터가 오차를 허용) [S13]. body 의 위치는 body prim 자신의 xformOp 가 정한다. Newton 문서는 URDF joint origin 을 「자식 link 의 xformOp」와 「joint 의 `localPos0/localRot0`」 두 곳에 쓰라고 한다 [S18]. **UsdPhysics joint 는 두 body 사이의 제약을 표현하고, 배치는 body 의 xform 이 정한다.** V3 export 는 평가한 자세로 body xform 을 쓰고, joint frame 을 그 자세와 일치하게 쓴다.
121
+ - articulation: `PhysicsArticulationRootAPI` 를 fixed base 는 world 와 잇는 fixed joint(또는 조상)에, floating base 는 루트 link 에 둔다. link 마다 들어오는 joint 는 하나, tree 여야 하며 폐루프는 한 joint 에 `excludeFromArticulation` 을 켠다 [S16]. 중첩 강체(body 안의 body)는 25.11 에 표준으로 들어왔다 [S15].
122
+ - **mimic:** UsdPhysics 에 없다 [S13][S18]. PhysX: `PhysxMimicJointAPI:<axis>` 의 `rel physxMimicJoint:<axis>:referenceJoint`, `physxMimicJoint:<axis>:referenceJointAxis`, `gearing`, `offset`, `naturalFrequency`, `dampingRatio`, 식 `q + gearing·q_ref + offset = 0`, articulation 안의 joint 에만 [S16][S17]. Newton(`newton-usd-schemas` v0.4.1, 2026-07-30): `NewtonMimicAPI` 의 `bool newton:mimicEnabled`, `rel newton:mimicJoint`, `float newton:mimicCoef0`(offset), `float newton:mimicCoef1`(배율), 식 `joint0 = coef0 + coef1·joint1`, 같은 joint type 끼리만 [S19]. Newton 변환기 문서는 관계 이름을 `newton:target` 으로 적었으나 schema 원문은 `newton:mimicJoint` 다 [S18][S19].
123
+
124
+ ### 3.6 값에서 값을 계산하는 기능 (출하 · 예정 구분)
125
+
126
+ | 기능 | 상태 | 할 수 있는 것 |
127
+ |---|---|---|
128
+ | attribute connection (`connectionPaths`) | 출하, Core Spec 포함 | 다른 속성을 가리키는 경로만 저장. 해석·평가는 schema domain 몫 [S3] |
129
+ | variable expression (`expressionVariables`) | 출하. 23.08 문자열 치환, 이후 int·bool·비교 함수 [S15] | asset path(sublayer·reference·payload·asset 속성)와 variant 선택에만. 산술 연산 없음 [S21] |
130
+ | OpenExec | **25.08 preview** [S15] | schema 에 C++ 로 등록한 계산을 평가·캐시. "Execution behaviors can currently only be registered in C++" [S20] |
131
+ | OpenExec attribute expression | 26.05 [S15] | schema 등록 코드 안에서 `self.AttributeExpression(...)` 로 등록. 식은 C++ 등록 코드 안에 있다 |
132
+ | OpenExec connection dataflow | 26.08, 연결 하나·같은 타입 속성만 [S15] | 연결된 속성의 값을 계산 입력으로 |
133
+ | OpenExec invertible rig (`IrFkController` 등) | 26.08, "not yet ready for production use" [S15] | FK 입력 → 자세, 역방향 |
134
+
135
+ 「링크 길이를 따라 pivot 이 움직임」을 USD 안에서 하려면 Figure 전용 schema 와 OpenExec C++ 계산을 만들고, 모든 소비자가 OpenExec 를 실행해야 한다. three.js 로더와 Isaac Sim 이 OpenExec 를 실행한다는 근거는 찾지 못했다 — 확인 못 함. 교환 파일에는 평가된 숫자를 쓴다.
136
+
137
+ ### 3.7 재질
138
+
139
+ - `UsdPreviewSurface` 규격 2.6. 입력: `diffuseColor`(0.18 회색), `emissiveColor`, `useSpecularWorkflow`, `specularColor`, `metallic`(0), `roughness`(0.5), `clearcoat`, `clearcoatRoughness`, `opacity`(1), `opacityMode`, `opacityThreshold`, `ior`(1.5), `normal`, `displacement`, `occlusion`. 목적은 플랫폼 간 교환용 기본 재질이다. geometry 와는 `material:binding` 관계로 묶는다 [S22].
140
+ - MaterialX 는 `UsdMtlx` 로 USD 에서 읽는다. USD 25.05 부터 MaterialX 1.39.3 이 기본이며 OpenPBR 을 쓸 수 있다 [S23, 검색 요약].
141
+ - 팔레트 대응: V3 `palette: Record<token, color>`(`src/v3-asset-types.ts:182`) → 쓰인 토큰마다 `/Looks/<token>` 의 `Material` + `UsdPreviewSurface`, `diffuseColor` 에 색, 나머지는 기본값. part 마다 `material:binding`. 토큰 이름도 PrimName 규칙을 따라야 한다(R6 과 같은 매핑).
142
+
143
+ ### 3.8 브라우저에서 USD 읽고 쓰기
144
+
145
+ | 도구 | 읽기 | 쓰기 | UsdPhysics | 조건 |
146
+ |---|---|---|---|---|
147
+ | three.js `USDLoader` (r183 부터 usdc [S24]) | usda·usdc·usdz; references·payload·variant 선택; `Cube/Sphere/Cylinder/Cone/Capsule`; xformOp(`translate`, `rotateX/Y/Z`, `rotateXYZ`, `orient`, `scale`, `transform`, `translate:pivot`); UsdPreviewSurface; UsdSkel | — | 읽지 않음 | `Plane`·`Cylinder_1`·PointInstancer·`instanceable` 처리 없음 [S24 소스]. things-scene 은 three `^0.185.1` 이다 (`things-scene/package.json`) |
148
+ | three.js `USDZExporter` | — | usdz(usda 내용). `MeshStandardMaterial` → UsdPreviewSurface, 카메라, 애니메이션을 xformOp time sample 로 | 쓰지 않음 | 헤더에 `metersPerUnit = 1`, `upAxis = "Y"` 고정 [S25] |
149
+ | `@needle-tools/usd` 1.1.2 (2026-07-17) | OpenUSD 26.05 wasm + Hydra → three.js. 합성·instancing·PointInstancer·MaterialX | 확인 못 함 | 확인 못 함 | **PolyForm-Noncommercial-1.0.0**, COOP/COEP 헤더 필요 [S26] |
150
+ | LightUSD (옛 TinyUSDZ, C++17) | usda·usdc·usdz, 합성 | 쓰기 지원 | UsdPhysics·mjcPhysics·Newton(`NewtonMimicAPI`) | Apache-2.0. v1.0 RC, wasm·npm 패키지 있음(`tinyusdz` 최신 0.9.1, rc 0.9.10) [S27] |
151
+ | OpenUSD 공식 wasm | 26.03 에 pxr/usd 라이브러리의 wasm32·wasm64 빌드와 `wasmFetchResolver` 예제 [S15] | — | — | 공식 JS 바인딩·npm 패키지는 찾지 못함 — 확인 못 함 |
152
+
153
+ - 형식: `usda` 는 text, `usdc` 는 binary(crate), `usdz` 는 Zip 6.3.9 을 따르는 package 이고 읽기 효율을 위한 제약이 있다 [S3 Core File Formats].
154
+ - Figure export 는 `usda` 문자열 생성으로 충분하다(`USDZExporter` 도 같은 방식 [S25]) `[짐작: 라이브러리 없이 가능]`. 브라우저에서 UsdPhysics joint 를 읽으려면 자체 usda 파서나 LightUSD wasm 이 필요하다.
155
+
156
+ ### 3.9 URDF ↔ USD 변환기
157
+
158
+ - Newton `urdf-usd-converter` 의 대응 문서(OpenUSD 25.05 기준) [S18]: link → `UsdGeomXform` + `UsdPhysicsRigidBodyAPI`; 루트 link 에 `UsdPhysicsArticulationRootAPI`; joint 는 `/Robot/Physics` 아래, 부모 → `body0`, 자식 → `body1`; origin → 자식 xformOp 와 `localPos0/localRot0`, `localPos1/localRot1` 은 항등; 임의 axis → `physics:axis` 토큰 + `localRot0/1` 회전; limit → `lowerLimit/upperLimit`(rad→deg); velocity·damping·friction → `NewtonJointAPI`; mimic → `NewtonMimicAPI`; `effort`, `calibration`, `safety_controller` 는 GAP. box → `Cube` + scale, cylinder → `Cylinder axis="Z"`. 단위는 `metersPerUnit = 1`, `upAxis = "Z"` 를 권한다. body 는 중첩(계층이 보임, 일부 도구 미지원)과 평면(호환성 높음) 두 방식.
159
+ - Isaac Sim URDF importer(`isaacsim.asset.importer.urdf`): fixed joint 병합, 충돌 형상 생성, joint drive 종류 선택 옵션 [S30]. mimic 옵션을 켜면 `PhysxMimicJointAPI` 를 붙이며, limit 이 없는 joint 는 오류가 난다 [S29, 검색 요약]. Isaac Sim 6.0 권장 구조는 `base.usda`(운동 계층)·`physics.usda`(엔진 중립)·`robot.usda`·`physx.usda`·`mujoco.usda` layer 로 나누고 엔진 설정을 variant 로 고른다 [S17]. importer 가 Newton 변환기를 쓰는지는 확인 못 함.
160
+ - Figure 에 주는 뜻: ADR-0093 의 URDF export 를 만들면 USD export 는 같은 평가 결과에 이름만 다르게 쓰는 일이다. 두 변환기 모두 Z 위·m 단위를 권하므로 Isaac 쪽 소비자를 위해 `upAxis`·`metersPerUnit` 을 선택 옵션으로 둘지 정해야 한다(남은 질문 3).
161
+
162
+ ## 4. 남은 질문
163
+
164
+ 1. **각도 단위 (R2).** joint 레코드를 r3 §4 대로 rad 로 바꿀지, r3 §4 를 deg 로 고칠지.
165
+ 2. **import 의 임의 회전 (R4).** origin 에 일반 회전을 넣을지, 축 정렬되지 않은 URDF/USD joint 는 거절할지. 거절하면 대부분의 로봇 팔 URDF 는 받을 수 있는지 표본 조사가 필요하다.
166
+ 3. **export 의 첫 소비자.** Omniverse·Isaac(Z 위, m, PhysX)인가, 브라우저 뷰어(Y 위)인가. 소비자에 따라 `upAxis`·`metersPerUnit`·mimic schema(PhysX, Newton, 둘 다) 선택이 달라진다.
167
+ 4. **설계 입력을 USD 에 남길지.** `figure:*` custom attribute 로 남기면 Figure 로 되읽을 때 원래 의도를 찾을 수 있다. 다른 도구는 무시한다. 식 자체(그래프)를 남길지, 입력 값만 남길지.
168
+ 5. **보드 export 의 prototype 수.** 크기가 다른 배치가 많으면 prototype 이 배치 수만큼 늘어난다. 크기 프리셋을 variantSet 으로 강제할지, 배치마다 평가 결과를 낼지.
169
+ 6. **반복 안의 joint.** 롤러가 도는 컨베이어를 USD 로 낼 때 PointInstancer 를 포기하고 항목마다 prim·joint 를 낼지, 회전은 시각 효과로 보고 강체 반복으로 낼지.
170
+ 7. **occupancy·capability 의 USD 표현.** Figure 전용 codeless applied API schema(예 `FigureOccupancyAPI`, `FigureSeatAPI`)를 정의·배포할지, custom attribute 로만 둘지. SimReady 의 connection point 형식은 확인하지 못했으니 먼저 확인할 것.
171
+ 8. **UsdPhysics 이름의 안정성.** AOUSD Physics 규격이 발행되면 이름이 바뀔 수 있다. 발행 일정은 확인 못 함.
172
+
173
+ ## 출처
174
+
175
+ | # | 출처 | 근거 |
176
+ |---|---|---|
177
+ | S1 | AOUSD, Core Spec 1.0 발표 (2025-12-17) https://aousd.org/news/core-spec-announcement/ | 페이지 요약 |
178
+ | S2 | AOUSD specifications-public README (Core 1.0.1, 2025-12-12, CC-BY-ND-4.0) https://github.com/aousd/specifications-public | 원문 |
179
+ | S3 | USD Core Specification 1.0.1 https://github.com/aousd/specifications-public/blob/main/core/1.0.1/core_spec.md (Foreword; `connectionPaths`; PrimName 문법; Core File Formats) | 원문 |
180
+ | S4 | AOUSD Physics WG 헌장 (2024-12-16) https://project.linuxfoundation.org/hubfs/AOUSD/Charters/24.12.16%20AOUSD%20Physics%20Working%20Group%20Charter%20-%20Approved.pdf | 검색 요약 |
181
+ | S5 | AOUSD Materials·Geometry WG 출범 https://www.linuxfoundation.org/press/aousd-launches-materials-geometry-working-groups | 검색 요약 |
182
+ | S6 | NVIDIA, Mega Omniverse Blueprint (2025-03-31) https://blogs.nvidia.com/blog/mega-omniverse-blueprint-industrial-digital-twins/ | 페이지 요약 |
183
+ | S7 | SimReady Specification https://docs.omniverse.nvidia.com/simready/latest/overview/simready-spec.html | 페이지 요약 |
184
+ | S8 | OpenUSD Glossary (LIVERPS, Instanceable, VariantSet 등) https://openusd.org/release/glossary.html | 원문 |
185
+ | S9 | Scenegraph Instancing https://openusd.org/release/api/_usd__page__scenegraph_instancing.html | 페이지 요약 |
186
+ | S10 | UsdGeom `schema.usda` https://github.com/PixarAnimationStudios/OpenUSD/blob/release/pxr/usd/usdGeom/schema.usda | 원문 |
187
+ | S11 | UsdGeomXformable https://openusd.org/release/api/class_usd_geom_xformable.html | 페이지 요약 |
188
+ | S12 | UsdGeom 개요 (Linear Algebra Basics) https://openusd.org/dev/api/usd_geom_page_front.html | 페이지 요약 |
189
+ | S13 | UsdPhysics 개요 https://openusd.org/release/api/usd_physics_page_front.html | 페이지 요약 |
190
+ | S14 | UsdPhysics `schema.usda` (dev) https://github.com/PixarAnimationStudios/OpenUSD/blob/dev/pxr/usd/usdPhysics/schema.usda | 원문 |
191
+ | S15 | OpenUSD CHANGELOG (21.08, 23.08, 23.11, 25.08, 25.11, 26.03, 26.05, 26.08 항목) https://github.com/PixarAnimationStudios/OpenUSD/blob/release/CHANGELOG.md | 원문 |
192
+ | S16 | Omni Physics, Articulations https://docs.omniverse.nvidia.com/kit/docs/omni_physics/latest/dev_guide/rigid_bodies_articulations/articulations.html | 페이지 요약 |
193
+ | S17 | Isaac Sim 6.0 Asset Structure https://docs.isaacsim.omniverse.nvidia.com/6.0.0/robot_setup/asset_structure.html | 페이지 요약 |
194
+ | S18 | Newton `urdf-usd-converter` concept mapping https://github.com/newton-physics/urdf-usd-converter/blob/main/docs/concept_mapping.md | 원문 |
195
+ | S19 | Newton USD Schemas `generatedSchema.usda` (v0.4.1, 2026-07-30) https://github.com/newton-physics/newton-usd-schemas | 원문 |
196
+ | S20 | Introduction to OpenExec https://openusd.org/dev/intro_to_openexec.html | 페이지 요약 |
197
+ | S21 | Variable Expressions https://openusd.org/release/user_guides/variable_expressions.html | 페이지 요약 |
198
+ | S22 | UsdPreviewSurface Specification https://openusd.org/release/spec_usdpreviewsurface.html | 페이지 요약 |
199
+ | S23 | UsdMtlx https://openusd.org/dev/api/usd_mtlx_page_front.html ; MaterialX 지원 표 https://materialx.org/ThirdPartySupport.html | 검색 요약 |
200
+ | S24 | three.js `USDLoader` 문서 https://threejs.org/docs/pages/USDLoader.html ; 소스 `examples/jsm/loaders/usd/USDComposer.js` (dev, 2026-09-25) 와 커밋 이력 (usdc 2026-01-13, r183 2026-02-20) https://github.com/mrdoob/three.js | 원문 |
201
+ | S25 | three.js `USDZExporter` 소스 https://github.com/mrdoob/three.js/blob/dev/examples/jsm/exporters/USDZExporter.js | 원문 |
202
+ | S26 | `@needle-tools/usd` npm registry https://registry.npmjs.org/@needle-tools/usd | 원문 |
203
+ | S27 | LightUSD / TinyUSDZ README, `doc/usd-physics.md` https://github.com/lighttransport/tinyusdz ; npm `tinyusdz` https://registry.npmjs.org/tinyusdz | 원문 |
204
+ | S28 | Isaac Sim, Instanceable Assets https://docs.isaacsim.omniverse.nvidia.com/5.0.0/isaac_lab_tutorials/tutorial_instanceable_assets.html | 검색 요약 |
205
+ | S29 | isaac-sim/IsaacSim issue #305 (mimic 에 유한 limit 필요) https://github.com/isaac-sim/IsaacSim/issues/305 | 검색 요약 |
206
+ | S30 | Isaac Sim, Import URDF https://docs.isaacsim.omniverse.nvidia.com/latest/importer_exporter/import_urdf.html | 페이지 요약 |
207
+ | S31 | PhysX Schema, `PhysicsJointStateAPI` https://docs.omniverse.nvidia.com/kit/docs/omni_physics/latest/dev_guide/schemas/physxschema.html | 검색 요약 |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hatiolab/figure-model",
3
- "version": "0.1.56",
3
+ "version": "0.1.57",
4
4
  "description": "Figure 저작 결과의 정본 형식과 검증 — 재질별로 병합되고 이름이 붙은 부품 그래프. 3D 로 저작한 형상 하나가 씬 컴포넌트로 서는 데 필요한 것을 담는다.",
5
5
  "keywords": [
6
6
  "figure",