@hatiolab/things-scene 10.1.18 → 10.1.20
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.
- package/dist-types/figure/figure-blueprint.d.ts +4 -1
- package/dist-types/figure/figure-blueprint.d.ts.map +1 -1
- package/dist-types/figure/figure-capability.d.ts +9 -1
- package/dist-types/figure/figure-capability.d.ts.map +1 -1
- package/dist-types/figure/figure-clip.d.ts +17 -2
- package/dist-types/figure/figure-clip.d.ts.map +1 -1
- package/dist-types/figure/figure-real-object.d.ts +64 -1
- package/dist-types/figure/figure-real-object.d.ts.map +1 -1
- package/dist-types/figure/figure-sizing.d.ts +1 -1
- package/dist-types/figure/figure-sizing.d.ts.map +1 -1
- package/package.json +2 -2
- package/things-scene-min.js +11 -11
- package/things-scene-min.js.map +1 -1
- package/things-scene-transfer.mjs +3 -3
- package/things-scene.mjs +3 -3
- package/things-scene.mjs.map +1 -1
|
@@ -28,13 +28,16 @@
|
|
|
28
28
|
* `depth` 가 높이다. 환산은 `figure-real-object.ts` 의 `updateDimension` 한 곳에서만
|
|
29
29
|
* 한다 — 그 밖에서는 청사진의 축을 그대로 three 에 넘긴다(three 도 y 가 위다).
|
|
30
30
|
*/
|
|
31
|
-
import type { AnchorRule, AnimationChannel, AnimationClip, ChannelPath, BlueprintGroup, BlueprintLabel, BlueprintAnchor, BlueprintMember, BlueprintClip, BlueprintParameter, EmissiveSpec, FigureBlueprint as Blueprint, MaterialSlot, PartAnchor, PartMaterial, PartShape, PartTransform, PrimitiveKind, SizingRule, Vec3 } from '@hatiolab/figure-model';
|
|
31
|
+
import type { AnchorRule, AnimationChannel, AnimationClip, ChannelPath, BlueprintGroup, BlueprintLabel, BlueprintAnchor, BlueprintMember, BlueprintClip, BlueprintJoint, BlueprintParameter, JointChannel, PartChannel, EmissiveSpec, FigureBlueprint as Blueprint, MaterialSlot, PartAnchor, PartMaterial, PartShape, PartTransform, PrimitiveKind, SizingRule, Vec3 } from '@hatiolab/figure-model';
|
|
32
32
|
export type FigurePrimitiveKind = PrimitiveKind;
|
|
33
33
|
export type FigureMaterialSlot = MaterialSlot;
|
|
34
34
|
export type FigureSizingRule = SizingRule;
|
|
35
35
|
export type FigureAnchorRule = AnchorRule;
|
|
36
36
|
export type FigurePartAnchor = PartAnchor;
|
|
37
37
|
export type FigureAnimationChannel = AnimationChannel;
|
|
38
|
+
export type FigurePartChannel = PartChannel;
|
|
39
|
+
export type FigureJointChannel = JointChannel;
|
|
40
|
+
export type FigureBlueprintJoint = BlueprintJoint;
|
|
38
41
|
export type FigureAnimationClip = AnimationClip;
|
|
39
42
|
export type FigureChannelPath = ChannelPath;
|
|
40
43
|
export type FigureVec3 = Vec3;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figure-blueprint.d.ts","sourceRoot":"","sources":["../../src/figure/figure-blueprint.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,eAAe,IAAI,SAAS,EAC5B,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,EACb,UAAU,EACV,IAAI,EACL,MAAM,wBAAwB,CAAA;AAM/B,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAA;AAC/C,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAA;AAC7C,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAA;AACzC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAA;AACzC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAA;AACzC,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAA;AACrD,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAA;AAC/C,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAC3C,MAAM,MAAM,UAAU,GAAG,IAAI,CAAA;AAC7B,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAA;AAC/C,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAA;AAC7C,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAA;AAC7C,MAAM,MAAM,eAAe,GAAG,SAAS,CAAA;AACvC,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAA;AACnD,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAA;AACnD,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAA;AACjD,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAA;AAC/C,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,CAAA;AACzD,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAA;AACjD,MAAM,MAAM,eAAe,GAAG,SAAS,CAAA;AAOvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA"}
|
|
1
|
+
{"version":3,"file":"figure-blueprint.d.ts","sourceRoot":"","sources":["../../src/figure/figure-blueprint.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,EACf,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,eAAe,IAAI,SAAS,EAC5B,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,EACb,UAAU,EACV,IAAI,EACL,MAAM,wBAAwB,CAAA;AAM/B,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAA;AAC/C,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAA;AAC7C,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAA;AACzC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAA;AACzC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAA;AACzC,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAA;AACrD,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAC3C,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAA;AAC7C,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAA;AACjD,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAA;AAC/C,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAC3C,MAAM,MAAM,UAAU,GAAG,IAAI,CAAA;AAC7B,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAA;AAC/C,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAA;AAC7C,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAA;AAC7C,MAAM,MAAM,eAAe,GAAG,SAAS,CAAA;AACvC,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAA;AACnD,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAA;AACnD,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAA;AACjD,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAA;AAC/C,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,CAAA;AACzD,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAA;AACjD,MAAM,MAAM,eAAe,GAAG,SAAS,CAAA;AAOvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA"}
|
|
@@ -68,11 +68,19 @@ export declare function slotsFromAnchors(anchors: readonly FigureBlueprintAnchor
|
|
|
68
68
|
/**
|
|
69
69
|
* 청사진의 문을 씬의 `Port` 로. 자리와 달리 위치가 곧 뜻이므로 그대로 옮긴다.
|
|
70
70
|
*
|
|
71
|
+
* **관절에 달린 문은 그 관절을 따라간다**(ADR-0066 결정 4). 문의 자리는 부를 때마다 묻는
|
|
72
|
+
* 값이지 세울 때 쥐어 두는 값이 아니다 — `posed` 가 지금 어디인지를 답하고, 없으면 청사진의
|
|
73
|
+
* 휴지 자세다. 그래서 관절이 돌았다는 통지를 따로 낼 일이 없다.
|
|
74
|
+
*
|
|
71
75
|
* **한 부품이 자리와 문을 함께 맡을 수 있다.** AGV 의 상판이 그렇고, 그때 같은 이름이 자리
|
|
72
76
|
* 목록과 문 목록에 함께 나온다. 씬의 `SlotDef.id` 와 `Port.id` 는 서로 다른 이름 공간이므로
|
|
73
77
|
* 겹쳐도 문제가 없다.
|
|
74
78
|
*/
|
|
75
|
-
export declare function portsFromAnchors(anchors: readonly FigureBlueprintAnchor[], role: 'port-in' | 'port-out'
|
|
79
|
+
export declare function portsFromAnchors(anchors: readonly FigureBlueprintAnchor[], role: 'port-in' | 'port-out', posed?: (anchor: FigureBlueprintAnchor) => {
|
|
80
|
+
x: number;
|
|
81
|
+
y: number;
|
|
82
|
+
z: number;
|
|
83
|
+
} | undefined): Port[];
|
|
76
84
|
/**
|
|
77
85
|
* 선언한 능력으로 클래스를 조립한다. 같은 조합이면 같은 클래스를 돌려준다.
|
|
78
86
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figure-capability.d.ts","sourceRoot":"","sources":["../../src/figure/figure-capability.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAKlD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"figure-capability.d.ts","sourceRoot":"","sources":["../../src/figure/figure-capability.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAKlD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAEnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,KAAK,IAAI,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AAEjD;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,+DAAqB,CAAA;AAErD,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAA;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAM7G,CAAA;AAEJ,gDAAgD;AAChD,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAKjF,CAAA;AA4BF;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,qBAAqB,EAAE,EACzC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,EAAE,CAaX;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,qBAAqB,EAAE,EACzC,IAAI,EAAE,SAAS,GAAG,UAAU,EAC5B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACzF,IAAI,EAAE,CAIR;AAoED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,GAAE,SAAS,MAAM,EAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAqC/G;AA4DD,2BAA2B;AAC3B,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FigureAnimationChannel, FigureVec3 } from './figure-blueprint.js';
|
|
1
|
+
import type { FigureAnimationChannel, FigureJointChannel, FigurePartChannel, FigureVec3 } from './figure-blueprint.js';
|
|
2
2
|
/**
|
|
3
3
|
* 표집할 수 있는 것 — **채널 묶음이면 된다.**
|
|
4
4
|
*
|
|
@@ -31,7 +31,7 @@ export declare function durationOf(clip: Sampleable): number;
|
|
|
31
31
|
* `step` 은 다음 키 **직전까지** 앞 값을 유지한다. 계단이 그런 것이고, 그렇지 않으면
|
|
32
32
|
* 마지막 구간만 보간한 것처럼 보인다.
|
|
33
33
|
*/
|
|
34
|
-
export declare function sampleChannel(channel:
|
|
34
|
+
export declare function sampleChannel(channel: FigurePartChannel, at: number): FigureVec3;
|
|
35
35
|
/**
|
|
36
36
|
* clip 전체를 한 시각에서 읽는다. 부품 이름 → 그 부품이 받는 것.
|
|
37
37
|
*
|
|
@@ -39,6 +39,21 @@ export declare function sampleChannel(channel: FigureAnimationChannel, at: numbe
|
|
|
39
39
|
* 이고, 여기서 섞으면 저작자가 적은 것과 다른 값이 나온다.
|
|
40
40
|
*/
|
|
41
41
|
export declare function poseAt(clip: Sampleable, at: number): Map<string, PartPose>;
|
|
42
|
+
/** A channel that moves a part property, as opposed to one that drives a joint (ADR-0066). */
|
|
43
|
+
export declare function isPartChannel(channel: FigureAnimationChannel): channel is FigurePartChannel;
|
|
44
|
+
/**
|
|
45
|
+
* A joint channel read at one position: the joint coordinate, degrees or millimetres.
|
|
46
|
+
*
|
|
47
|
+
* Same rules as `sampleChannel`: outside the keys the end value holds, and `step` keeps the earlier key
|
|
48
|
+
* until the next one.
|
|
49
|
+
*/
|
|
50
|
+
export declare function sampleJoint(channel: FigureJointChannel, at: number): number;
|
|
51
|
+
/**
|
|
52
|
+
* Every joint a clip drives, read at one position: joint name → coordinate.
|
|
53
|
+
*
|
|
54
|
+
* Two channels on one joint in the same clip: the later one wins, as with part channels.
|
|
55
|
+
*/
|
|
56
|
+
export declare function jointValuesAt(clip: Sampleable, at: number): Map<string, number>;
|
|
42
57
|
/**
|
|
43
58
|
* 도는 clip 을 지금 어느 시각에서 읽나. **시각이 흐른다.**
|
|
44
59
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figure-clip.d.ts","sourceRoot":"","sources":["../../src/figure/figure-clip.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"figure-clip.d.ts","sourceRoot":"","sources":["../../src/figure/figure-clip.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,sBAAsB,EAEtB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACX,MAAM,uBAAuB,CAAA;AAE9B;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAA;CAC7C;AAED,uCAAuC;AACvC,MAAM,WAAW,QAAQ;IACvB,WAAW,CAAC,EAAE,UAAU,CAAA;IACxB,QAAQ,CAAC,EAAE,UAAU,CAAA;IACrB,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB;AAID;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAQnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,CA0BhF;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAkB1E;AAED,8FAA8F;AAC9F,wBAAgB,aAAa,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,IAAI,iBAAiB,CAE3F;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAiB3E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAO/E;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGlE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAK9F"}
|
|
@@ -3,7 +3,7 @@ import { RealObject } from '../threed/real-object.js';
|
|
|
3
3
|
import type { TopOutline } from '../interfaces/real-object.js';
|
|
4
4
|
import type { Properties } from '../interfaces/types.js';
|
|
5
5
|
import type { PreparedFigure } from './figure-registry.js';
|
|
6
|
-
import type { FigureBlueprintMember, FigureBlueprintParameter } from './figure-blueprint.js';
|
|
6
|
+
import type { FigureBlueprintAnchor, FigureBlueprintMember, FigureBlueprintParameter, FigureVec3 } from './figure-blueprint.js';
|
|
7
7
|
/**
|
|
8
8
|
* 저작한 Figure 의 3D 표현.
|
|
9
9
|
*
|
|
@@ -124,6 +124,16 @@ export declare class FigureRealObject extends RealObject {
|
|
|
124
124
|
*/
|
|
125
125
|
private _moved;
|
|
126
126
|
private _unsubscribeTick?;
|
|
127
|
+
/** Joint name → node. Empty for a figure without joints, which then builds exactly as before. */
|
|
128
|
+
private _joints;
|
|
129
|
+
/** Undoes the instance scale so joint nodes are rigid. Only exists when the figure has joints. */
|
|
130
|
+
private _rigid?;
|
|
131
|
+
/** Part name → the joint frame it moves in. */
|
|
132
|
+
private _frameByName;
|
|
133
|
+
/** Merged meshes that sit in a joint frame. Their position and scale follow the instance size. */
|
|
134
|
+
private _framedMeshes;
|
|
135
|
+
/** The instance scale the joint frames were last laid out for. */
|
|
136
|
+
private _jointScale;
|
|
127
137
|
get figure(): PreparedFigure | null;
|
|
128
138
|
/**
|
|
129
139
|
* 어느 램프가 켜져 있나. 부품 이름 → 켜짐.
|
|
@@ -185,6 +195,59 @@ export declare class FigureRealObject extends RealObject {
|
|
|
185
195
|
updateParameterDurations(): void;
|
|
186
196
|
onchange(after: Properties, before: Properties): void;
|
|
187
197
|
build(): void;
|
|
198
|
+
/**
|
|
199
|
+
* Builds a node per joint, parents first (the blueprint lists them that way), under a root that undoes
|
|
200
|
+
* the instance scale. Positions are laid out by `layoutJoints` whenever the instance size changes.
|
|
201
|
+
*/
|
|
202
|
+
private buildJoints;
|
|
203
|
+
/**
|
|
204
|
+
* Lays out the joint frames for an instance scale (ADR-0066 decision 3).
|
|
205
|
+
*
|
|
206
|
+
* Sizing is solved in the rest pose first: each origin moves with the part it is attached to
|
|
207
|
+
* (`jointOriginPosition`), and the nodes take those positions in unscaled millimetres. A merged mesh in a
|
|
208
|
+
* frame then carries the instance scale itself and is offset by the frame origin, so at joint value 0
|
|
209
|
+
* every vertex lands where it lands without joints.
|
|
210
|
+
*/
|
|
211
|
+
private layoutJoints;
|
|
212
|
+
/**
|
|
213
|
+
* Where an anchor sits **right now** -- a slot or a port follows the joint its part hangs from
|
|
214
|
+
* (ADR-0066 decision 4).
|
|
215
|
+
*
|
|
216
|
+
* The blueprint writes the rest position. When the anchor names a joint frame, the frame's nodes say
|
|
217
|
+
* where that point has travelled: the point enters the frame the way a framed mesh does (scaled by the
|
|
218
|
+
* instance, with the frame origin taken off), rides the chain of joint nodes, and comes back out in
|
|
219
|
+
* figure millimetres -- the same measure the blueprint uses, so the caller sees one unit either way.
|
|
220
|
+
*/
|
|
221
|
+
anchorPosition(anchor: FigureBlueprintAnchor): FigureVec3;
|
|
222
|
+
/**
|
|
223
|
+
* 물건이 이 자리에 매달릴 곳 — **관절 노드와 그 안에서의 자리**(ADR-0066 결정 4).
|
|
224
|
+
*
|
|
225
|
+
* 따라가게 하는 일은 장면 그래프가 한다. `handoverIn` 이 물건의 object3d 를 이 노드에
|
|
226
|
+
* 옮겨 달면 관절이 도는 대로 따라간다 — 프레임마다 좌표를 다시 셈하는 코드를 두지 않는다.
|
|
227
|
+
* 노드는 인스턴스 배율을 되돌린 뿌리 아래라, 매달린 물건이 figure 의 배율로 찌그러지지
|
|
228
|
+
* 않는다.
|
|
229
|
+
*
|
|
230
|
+
* 물건은 **anchor** 로 놓는다 — 닻의 자리에 앉힌다. 집힌 자리를 그대로 두는 `world-preserve`
|
|
231
|
+
* 도 있고 손으로 쓴 로봇팔이 그것을 쓰지만, 그것은 그 컴포넌트의 시각적 선택이다. 형식에서
|
|
232
|
+
* slot 은 물건이 앉는 정해진 곳이라, 물건이 닻 밖에 있으면 그 figure 의 자리 선언과 그림이
|
|
233
|
+
* 다른 말을 하게 된다. slot 의 뜻을 grip 과 seat 로 가르는 칸은 형식에 없다 — 그 구분이
|
|
234
|
+
* 실제로 필요한 figure 가 나오면 그때 세운다.
|
|
235
|
+
*
|
|
236
|
+
* 관절 틀 밖의 자리는 **없음**을 낸다 — 부르는 쪽이 지금까지 하던 대로 표면에 앉힌다.
|
|
237
|
+
*/
|
|
238
|
+
anchorAttachment(anchor: FigureBlueprintAnchor): {
|
|
239
|
+
attach: THREE.Object3D;
|
|
240
|
+
localPosition: FigureVec3;
|
|
241
|
+
} | undefined;
|
|
242
|
+
/**
|
|
243
|
+
* Sets every joint node to a joint value: degrees about the axis for revolute and continuous,
|
|
244
|
+
* millimetres along the axis for prismatic. A joint nobody drives is at 0, its rest pose.
|
|
245
|
+
*
|
|
246
|
+
* Prismatic travel scales with the instance per axis, the same as a part translation does, since that
|
|
247
|
+
* is added inside the instance-scaled frame. Two kinds of moving in one figure must not behave
|
|
248
|
+
* differently (ADR-0066 decision 3).
|
|
249
|
+
*/
|
|
250
|
+
private applyJoints;
|
|
188
251
|
/**
|
|
189
252
|
* 이 자산의 clip 들을 세운다. **`build()` 끝에서 한 번.**
|
|
190
253
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figure-real-object.d.ts","sourceRoot":"","sources":["../../src/figure/figure-real-object.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAMrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAGxD,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,sBAAsB,CAAA;AACzE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"figure-real-object.d.ts","sourceRoot":"","sources":["../../src/figure/figure-real-object.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { anchorOf, REPEAT_LIMIT, needsOwnMesh, repeatOffset, repeatPlan, rotatedExtent, sizingPosition, sizingScale, stretchAxis, type InstanceScale } from '@hatiolab/figure-model';
|
|
1
|
+
export { anchorOf, jointOriginPosition, REPEAT_LIMIT, needsOwnMesh, repeatOffset, repeatPlan, rotatedExtent, sizingPosition, sizingScale, stretchAxis, type InstanceScale } from '@hatiolab/figure-model';
|
|
2
2
|
export type { SizingAxis as FigureAxis } from '@hatiolab/figure-model';
|
|
3
3
|
//# sourceMappingURL=figure-sizing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figure-sizing.d.ts","sourceRoot":"","sources":["../../src/figure/figure-sizing.ts"],"names":[],"mappings":"AAuBA,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAA;AAE/B,YAAY,EAAE,UAAU,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAA"}
|
|
1
|
+
{"version":3,"file":"figure-sizing.d.ts","sourceRoot":"","sources":["../../src/figure/figure-sizing.ts"],"names":[],"mappings":"AAuBA,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAA;AAE/B,YAAY,EAAE,UAAU,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hatiolab/things-scene",
|
|
3
|
-
"version": "10.1.
|
|
3
|
+
"version": "10.1.20",
|
|
4
4
|
"description": "A high-performance 2D/3D scene graph library for building interactive visual editors, combining HTML5 Canvas and Three.js to enable facility visualization, data-driven animations, and real-time monitoring dashboards",
|
|
5
5
|
"main": "things-scene-min.js",
|
|
6
6
|
"module": "things-scene.mjs",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
},
|
|
91
91
|
"homepage": "https://github.com/hatiolab/things-scene#readme",
|
|
92
92
|
"dependencies": {
|
|
93
|
-
"@hatiolab/figure-model": "^0.1.
|
|
93
|
+
"@hatiolab/figure-model": "^0.1.23",
|
|
94
94
|
"@wizpanda/super-gif": "^0.0.6",
|
|
95
95
|
"dompurify": "^3.3.1",
|
|
96
96
|
"jsonata": "^1.8.6",
|