@jfk-solutions/demo3d-file-format 1.10.0 → 1.11.0
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/binary.d.ts.map +1 -1
- package/dist/binary.js +2 -0
- package/dist/binary.js.map +1 -1
- package/dist/examples/export-embedded-viewer-standalone.html +1 -1
- package/dist/examples/three-render-smoke-standalone.html +54 -54
- package/dist/raw3d-animation.d.ts +4 -0
- package/dist/raw3d-animation.d.ts.map +1 -1
- package/dist/raw3d-animation.js +21 -6
- package/dist/raw3d-animation.js.map +1 -1
- package/dist/three/raw3d.d.ts.map +1 -1
- package/dist/three/raw3d.js +105 -34
- package/dist/three/raw3d.js.map +1 -1
- package/package.json +1 -1
|
@@ -51,6 +51,10 @@ export declare class Raw3DAnimation {
|
|
|
51
51
|
readonly duration: number;
|
|
52
52
|
readonly effects: Raw3DEffects;
|
|
53
53
|
private readonly byNode;
|
|
54
|
+
private readonly baseQuaternions;
|
|
55
|
+
private readonly rotating;
|
|
56
|
+
private readonly interpolationTracks;
|
|
57
|
+
private readonly rigidTracks;
|
|
54
58
|
private readonly rigidTimes;
|
|
55
59
|
private readonly nodes;
|
|
56
60
|
constructor(project: Raw3DProject);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raw3d-animation.d.ts","sourceRoot":"","sources":["../src/raw3d-animation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,YAAY,EAAwB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC/F,OAAO,EAA4F,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE1J,+DAA+D;AAC/D,oBAAY,sBAAsB;IAAG,OAAO,IAAI;IAAE,IAAI,IAAI;IAAE,MAAM,IAAI;IAAE,cAAc,IAAI;CAAE;AAC5F,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,OAAO,CAAC;AACnD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAChD,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;CAChC;AACD,MAAM,WAAW,qBAAqB;IAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAA;CAAE;AAC1H,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,UAAU,EAAE,eAAe,CAAC;IAC5B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,sBAAsB,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrE;AASD,qFAAqF;AACrF,qBAAa,cAAc;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;IACnE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwC;IACnE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqD;IAE3E,YAAY,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"raw3d-animation.d.ts","sourceRoot":"","sources":["../src/raw3d-animation.ts"],"names":[],"mappings":"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"}
|
package/dist/raw3d-animation.js
CHANGED
|
@@ -22,11 +22,17 @@ export class Raw3DAnimation {
|
|
|
22
22
|
duration;
|
|
23
23
|
effects;
|
|
24
24
|
byNode = new Map();
|
|
25
|
+
baseQuaternions = new Map();
|
|
26
|
+
rotating = new Set();
|
|
27
|
+
interpolationTracks = new Map();
|
|
28
|
+
rigidTracks = new Map();
|
|
25
29
|
rigidTimes = new Map();
|
|
26
30
|
nodes;
|
|
27
31
|
constructor(project) {
|
|
28
32
|
this.effects = new Raw3DEffects(project, project.animationOptions);
|
|
29
33
|
this.nodes = new Map(project.nodes.map(node => [node.index, node]));
|
|
34
|
+
for (const node of project.nodes)
|
|
35
|
+
this.baseQuaternions.set(node.index, raw3DQuaternionFromRotation(node.rotation));
|
|
30
36
|
const tracks = [], warnings = [];
|
|
31
37
|
let duration = 0;
|
|
32
38
|
for (const xml of project.root.child("Updates")?.children ?? []) {
|
|
@@ -76,7 +82,12 @@ export class Raw3DAnimation {
|
|
|
76
82
|
this.byNode.set(nodeIndex, group);
|
|
77
83
|
}
|
|
78
84
|
for (const [node, group] of this.byNode) {
|
|
79
|
-
|
|
85
|
+
if (group.some(track => ["RX", "RY", "RZ"].includes(track.kind)))
|
|
86
|
+
this.rotating.add(node);
|
|
87
|
+
this.interpolationTracks.set(node, group.filter(track => track.kind === "InterpolationMode"));
|
|
88
|
+
const rigid = group.filter(track => ["X", "Y", "Z", "RX", "RY", "RZ"].includes(track.kind));
|
|
89
|
+
this.rigidTracks.set(node, rigid);
|
|
90
|
+
this.rigidTimes.set(node, [...new Set(rigid.flatMap(track => [...track.times]))].sort((a, b) => a - b));
|
|
80
91
|
}
|
|
81
92
|
this.tracks = tracks;
|
|
82
93
|
this.warnings = [...warnings, ...this.effects.warnings];
|
|
@@ -85,7 +96,10 @@ export class Raw3DAnimation {
|
|
|
85
96
|
sample(time) {
|
|
86
97
|
if (!Number.isFinite(time))
|
|
87
98
|
throw new RangeError("Animation time must be finite.");
|
|
88
|
-
|
|
99
|
+
const states = new Map();
|
|
100
|
+
for (const index of this.nodes.keys())
|
|
101
|
+
states.set(index, this.sampleNode(index, Math.max(0, time)));
|
|
102
|
+
return states;
|
|
89
103
|
}
|
|
90
104
|
sampleFrame(time) {
|
|
91
105
|
return { nodes: this.sample(time), ...this.effects.sample(time) };
|
|
@@ -100,14 +114,14 @@ export class Raw3DAnimation {
|
|
|
100
114
|
const tracks = this.byNode.get(nodeIndex) ?? [];
|
|
101
115
|
const state = {
|
|
102
116
|
location: triple(node.location, 0), rotation: triple(node.rotation, 0), scale: triple(node.scale, 1),
|
|
103
|
-
quaternion:
|
|
117
|
+
quaternion: [...this.baseQuaternions.get(nodeIndex)], visible: node.visible, deleted: false,
|
|
104
118
|
parentIndex: node.parentIndex, meshIndex: node.meshIndex, layerIndex: node.layerIndex,
|
|
105
119
|
interpolationMode: node.interpolationMode, interactionMode: node.interactionMode,
|
|
106
120
|
highlight: node.highlight, hasBeenOptimized: node.hasBeenOptimized, materialProperties: {},
|
|
107
121
|
userData: node.userData, clientOwner: node.clientOwner, isBillboard: node.isBillboard, isDecal: node.isDecal
|
|
108
122
|
};
|
|
109
123
|
Object.assign(state, this.effects.sampleNode(nodeIndex, time));
|
|
110
|
-
for (const track of
|
|
124
|
+
for (const track of this.interpolationTracks.get(nodeIndex) ?? []) {
|
|
111
125
|
state.interpolationMode = (sampleTrack(track, time, false) ?? state.interpolationMode);
|
|
112
126
|
}
|
|
113
127
|
for (const track of tracks) {
|
|
@@ -152,9 +166,10 @@ export class Raw3DAnimation {
|
|
|
152
166
|
break;
|
|
153
167
|
}
|
|
154
168
|
}
|
|
155
|
-
|
|
169
|
+
if (this.rotating.has(nodeIndex))
|
|
170
|
+
state.quaternion = raw3DQuaternionFromRotation(state.rotation);
|
|
156
171
|
if (state.interpolationMode === Raw3DInterpolationMode.DualQuaternion) {
|
|
157
|
-
const rigidTracks =
|
|
172
|
+
const rigidTracks = this.rigidTracks.get(nodeIndex) ?? [];
|
|
158
173
|
const times = this.rigidTimes.get(nodeIndex) ?? [];
|
|
159
174
|
const rightIndex = times.findIndex(value => value > time);
|
|
160
175
|
const left = times[rightIndex < 0 ? times.length - 1 : rightIndex - 1], right = times[rightIndex];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raw3d-animation.js","sourceRoot":"","sources":["../src/raw3d-animation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"raw3d-animation.js","sourceRoot":"","sources":["../src/raw3d-animation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAyB,MAAM,oBAAoB,CAAC;AAC/F,OAAO,EAAE,8BAA8B,EAAE,2BAA2B,EAAE,2BAA2B,EAAwB,MAAM,0BAA0B,CAAC;AAE1J,+DAA+D;AAC/D,MAAM,CAAN,IAAY,sBAAgF;AAA5F,WAAY,sBAAsB;IAAG,yEAAW,CAAA;IAAE,mEAAQ,CAAA;IAAE,uEAAU,CAAA;IAAE,uFAAkB,CAAA;AAAC,CAAC,EAAhF,sBAAsB,KAAtB,sBAAsB,QAA0D;AAgC5F,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAChF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC;AACpJ,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACrO,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACtH,MAAM,SAAS,GAAG,CAAC,GAAqB,EAAE,IAAY,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC;AACjH,MAAM,MAAM,GAAG,CAAC,IAAwB,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAC7F,MAAM,MAAM,GAAG,CAAC,MAAyB,EAAE,QAAgB,EAA4B,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC;AAEhK,qFAAqF;AACrF,MAAM,OAAO,cAAc;IAChB,MAAM,CAAiC;IACvC,QAAQ,CAAmC;IAC3C,QAAQ,CAAS;IACjB,OAAO,CAAe;IACd,MAAM,GAAG,IAAI,GAAG,EAAiC,CAAC;IAClD,eAAe,GAAG,IAAI,GAAG,EAAwC,CAAC;IAClE,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7B,mBAAmB,GAAG,IAAI,GAAG,EAAiC,CAAC;IAC/D,WAAW,GAAG,IAAI,GAAG,EAAiC,CAAC;IACvD,UAAU,GAAG,IAAI,GAAG,EAA6B,CAAC;IAClD,KAAK,CAAqD;IAE3E,YAAY,OAAqB;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACpE,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK;YAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnH,MAAM,MAAM,GAA0B,EAAE,EAAE,QAAQ,GAA4B,EAAE,CAAC;QACjF,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;YAChE,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACzD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,GAAC,CAAC,CAAE,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,SAAS,aAAa,CAAC,CAAC;YAC/J,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC1D,IAAI,oBAAoB,CAAC,IAAI,CAAC;gBAAE,SAAS;YACzC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACjH,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qCAAqC,EAAE,OAAO,EAAE,uCAAuC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBACtJ,SAAS;YACX,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YACxD,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,eAAe,SAAS,GAAG,CAAC,CAAC;YAClI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC3G,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,kBAAkB,CAAC;YACvF,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACzD,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC;wBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,WAAW,CAAC,CAAC;oBAC1F,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnC,CAAC;gBACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC;wBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;oBAChG,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxD,CAAC;gBACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,cAAc,CAAC,CAAC;YACxL,IAAI,IAAI,KAAK,mBAAmB,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YACvL,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtN,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,CAAC;YAC1L,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YAC3E,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1F,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC;YAC9F,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5F,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC;QACvG,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACxG,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,gCAAgC,CAAC,CAAC;QACnF,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;QACjD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAAE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACpG,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACpE,CAAC;IAED,UAAU,CAAC,SAAiB,EAAE,IAAY;QACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,gCAAgC,CAAC,CAAC;QACnF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,UAAU,CAAC,cAAc,SAAS,cAAc,CAAC,CAAC;QACvE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAChD,MAAM,KAAK,GAAmB;YAC5B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACpG,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK;YAC5F,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU;YACrF,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe;YAChF,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,EAAE;YAC1F,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO;SAC7G,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/D,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YAClE,KAAK,CAAC,iBAAiB,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAA2B,CAAC;QACnH,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,iBAAiB,KAAK,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAChG,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YAClC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;YACxE,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC;gBAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;iBACpE,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;gBAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;iBAC5E,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;gBAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;;gBACzE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;oBACxB,KAAK,SAAS;wBAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;wBAAA,MAAM;oBACrD,KAAK,QAAQ;wBAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;wBAAA,MAAM;oBACpD,KAAK,QAAQ;wBAAE,KAAK,CAAC,WAAW,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;wBAAA,MAAM;oBAC3E,KAAK,MAAM;wBAAE,KAAK,CAAC,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;wBAAA,MAAM;oBACvE,KAAK,OAAO;wBAAE,KAAK,CAAC,UAAU,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;wBAAA,MAAM;oBACzE,KAAK,iBAAiB;wBAAE,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC;wBAAA,MAAM;oBAC9D,KAAK,WAAW;wBAAE,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC;wBAAA,MAAM;oBAClD,KAAK,kBAAkB;wBAAE,KAAK,CAAC,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;wBAAA,MAAM;oBACvE,KAAK,UAAU;wBAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAK,CAAC,GAAG,OAAO,CAAC;wBAAA,MAAM;gBACvG,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,KAAK,CAAC,UAAU,GAAG,2BAA2B,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjG,IAAI,KAAK,CAAC,iBAAiB,KAAK,sBAAsB,CAAC,cAAc,EAAE,CAAC;YACtE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACnD,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;YAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAC,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;YAC9F,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC9C,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE;oBAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;oBAC/E,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;wBAChC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;wBAC3C,IAAI,KAAK,KAAK,SAAS;4BAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;oBACjI,CAAC;oBACD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,2BAA2B,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzE,CAAC,CAAC;gBACF,MAAM,MAAM,GAAG,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,GAAC,IAAI,CAAC,GAAC,CAAC,KAAK,GAAC,IAAI,CAAC,CAAC,CAAC;gBACjG,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAAA,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;gBAC3E,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,2BAA2B,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,SAAS,WAAW,CAAC,KAA0B,EAAE,IAAY,EAAE,WAAoB;IACjF,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;IACvC,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;QAAC,MAAM,MAAM,GAAG,CAAC,GAAG,GAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAA,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAE,IAAI,IAAI;YAAE,GAAG,GAAG,MAAM,GAAC,CAAC,CAAC;;YAAK,IAAI,GAAG,MAAM,CAAC;IAAC,CAAC;IAC3H,MAAM,KAAK,GAAG,GAAG,GAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC;IAClD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC,IAAK,CAAC,CAAC,CAAC;IACzH,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,GAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5E,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,GAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACrF,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,GAAC,CAAC,IAAI,GAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,GAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAE,GAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,CAAC;AACtG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raw3d.d.ts","sourceRoot":"","sources":["../../src/three/raw3d.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"raw3d.d.ts","sourceRoot":"","sources":["../../src/three/raw3d.ts"],"names":[],"mappings":"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"}
|
package/dist/three/raw3d.js
CHANGED
|
@@ -238,6 +238,7 @@ export async function createRaw3DThreePlayback(parsed, options = {}) {
|
|
|
238
238
|
options.onWarning?.(item);
|
|
239
239
|
}
|
|
240
240
|
const variants = new Map();
|
|
241
|
+
const topologyAppearance = new WeakMap();
|
|
241
242
|
const archivedStreams = new Map([...resources.textures].filter(([key]) => key.startsWith("stream:")));
|
|
242
243
|
const streamRevisions = new Map();
|
|
243
244
|
const streamWarnings = new Set();
|
|
@@ -305,23 +306,30 @@ export async function createRaw3DThreePlayback(parsed, options = {}) {
|
|
|
305
306
|
}
|
|
306
307
|
const material = entry.material;
|
|
307
308
|
const wasTransparent = material.transparent;
|
|
308
|
-
|
|
309
|
+
const appearanceKey = `${values.Diffuse}:${values.Transparency}:${values.Reflectivity}:${values.Luminosity}:${values.NormalScale}:${values.NormalDepth}`;
|
|
310
|
+
if (entry.appearanceKey !== appearanceKey) {
|
|
311
|
+
material.copy(base);
|
|
312
|
+
if (values.Diffuse !== undefined) {
|
|
313
|
+
material.color.setHex(values.Diffuse & 0xffffff, three.SRGBColorSpace);
|
|
314
|
+
material.opacity = (values.Diffuse >>> 24) / 255;
|
|
315
|
+
}
|
|
316
|
+
if (values.Transparency !== undefined)
|
|
317
|
+
material.opacity = 1 - values.Transparency;
|
|
318
|
+
if (values.Reflectivity !== undefined)
|
|
319
|
+
material.roughness = .9 - clamp01(values.Reflectivity) * .75;
|
|
320
|
+
if (values.Luminosity !== undefined && material.emissive)
|
|
321
|
+
material.emissive.copy(material.color).multiplyScalar(values.Luminosity);
|
|
322
|
+
if (values.NormalScale !== undefined && material.normalScale)
|
|
323
|
+
material.normalScale.setScalar(values.NormalScale);
|
|
324
|
+
if (values.NormalDepth !== undefined)
|
|
325
|
+
material.userData.raw3dNormalDepth = values.NormalDepth;
|
|
326
|
+
entry.appearanceKey = appearanceKey;
|
|
327
|
+
// Hosts can apply display-color conversion once per sampled appearance,
|
|
328
|
+
// without repeating it when only texture coordinates advance.
|
|
329
|
+
material.userData.raw3dAppearanceRevision = entry.appearanceRevision = (entry.appearanceRevision ?? 0) + 1;
|
|
330
|
+
}
|
|
309
331
|
material.map = entry.map ?? null;
|
|
310
332
|
material.normalMap = entry.normalMap ?? null;
|
|
311
|
-
if (values.Diffuse !== undefined) {
|
|
312
|
-
material.color.setHex(values.Diffuse & 0xffffff, three.SRGBColorSpace);
|
|
313
|
-
material.opacity = (values.Diffuse >>> 24) / 255;
|
|
314
|
-
}
|
|
315
|
-
if (values.Transparency !== undefined)
|
|
316
|
-
material.opacity = 1 - values.Transparency;
|
|
317
|
-
if (values.Reflectivity !== undefined)
|
|
318
|
-
material.roughness = .9 - clamp01(values.Reflectivity) * .75;
|
|
319
|
-
if (values.Luminosity !== undefined && material.emissive)
|
|
320
|
-
material.emissive.copy(material.color).multiplyScalar(values.Luminosity);
|
|
321
|
-
if (values.NormalScale !== undefined && material.normalScale)
|
|
322
|
-
material.normalScale.setScalar(values.NormalScale);
|
|
323
|
-
if (values.NormalDepth !== undefined)
|
|
324
|
-
material.userData.raw3dNormalDepth = values.NormalDepth;
|
|
325
333
|
for (const texture of [material.map, material.normalMap]) {
|
|
326
334
|
if (!texture)
|
|
327
335
|
continue;
|
|
@@ -345,20 +353,47 @@ export async function createRaw3DThreePlayback(parsed, options = {}) {
|
|
|
345
353
|
return material;
|
|
346
354
|
});
|
|
347
355
|
};
|
|
356
|
+
const animatedNodes = new Set(animation.tracks.map(track => track.nodeIndex));
|
|
357
|
+
for (const track of animation.effects.tracks)
|
|
358
|
+
if (track.target === "node")
|
|
359
|
+
animatedNodes.add(track.index);
|
|
360
|
+
const staticDrawables = new Map();
|
|
361
|
+
const staticTexts = new Map();
|
|
362
|
+
// Stream frames can replace maps even when the node has no native update track.
|
|
363
|
+
const hasStreamFrames = project.streamableTextures.length > 0 || !!options.resolveStreamTexture;
|
|
364
|
+
let initialized = false;
|
|
348
365
|
let seekRevision = 0, pendingFrames;
|
|
349
366
|
const apply = (time) => {
|
|
350
367
|
if (disposed)
|
|
351
368
|
throw new Error("RAW3D playback has been disposed.");
|
|
352
369
|
frame = animation.sampleFrame(time);
|
|
353
370
|
const states = frame.nodes;
|
|
354
|
-
// Detach
|
|
355
|
-
|
|
356
|
-
|
|
371
|
+
// Detach only changed edges before reparenting, so valid hierarchy changes
|
|
372
|
+
// remain independent of node order without rebuilding an unchanged scene.
|
|
373
|
+
for (const node of project.nodes) {
|
|
374
|
+
const object = objects.get(node.index), parentIndex = states.get(node.index).parentIndex;
|
|
375
|
+
const parent = parentIndex === undefined ? group : objects.get(parentIndex);
|
|
376
|
+
if (object.parent !== parent && object.parent !== group)
|
|
377
|
+
group.add(object);
|
|
378
|
+
}
|
|
357
379
|
for (const node of project.nodes) {
|
|
358
380
|
const object = objects.get(node.index), state = states.get(node.index);
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
381
|
+
const [x, y, nativeZ] = state.location, z = -nativeZ;
|
|
382
|
+
const [nativeQx, nativeQy, qz, qw] = state.quaternion, qx = -nativeQx, qy = -nativeQy;
|
|
383
|
+
const [sx, sy, sz] = state.scale;
|
|
384
|
+
const changed = object.position.x !== x || object.position.y !== y || object.position.z !== z
|
|
385
|
+
|| object.quaternion.x !== qx || object.quaternion.y !== qy || object.quaternion.z !== qz || object.quaternion.w !== qw
|
|
386
|
+
|| object.scale.x !== sx || object.scale.y !== sy || object.scale.z !== sz;
|
|
387
|
+
if (changed) {
|
|
388
|
+
object.position.set(x, y, z);
|
|
389
|
+
object.quaternion.set(qx, qy, qz, qw);
|
|
390
|
+
object.scale.set(sx, sy, sz);
|
|
391
|
+
}
|
|
392
|
+
// Playback owns node transforms. Compose only changed local matrices;
|
|
393
|
+
// world matrices still follow animated parents and remain ready after seek.
|
|
394
|
+
if (changed || object.matrixAutoUpdate)
|
|
395
|
+
object.updateMatrix();
|
|
396
|
+
object.matrixAutoUpdate = false;
|
|
362
397
|
object.visible = !state.deleted;
|
|
363
398
|
object.userData.raw3d.layerIndex = state.layerIndex;
|
|
364
399
|
object.userData.raw3d.interactionMode = state.interactionMode;
|
|
@@ -367,10 +402,26 @@ export async function createRaw3DThreePlayback(parsed, options = {}) {
|
|
|
367
402
|
object.userData.raw3d.clientOwner = state.clientOwner;
|
|
368
403
|
object.userData.raw3d.hasBeenOptimized = state.hasBeenOptimized;
|
|
369
404
|
const parent = state.parentIndex === undefined ? undefined : objects.get(state.parentIndex);
|
|
370
|
-
if (parent && parent !== object
|
|
371
|
-
|
|
405
|
+
if (parent && parent !== object) {
|
|
406
|
+
if (object.parent !== parent) {
|
|
407
|
+
if (isDescendantOf(parent, object))
|
|
408
|
+
throw new Error(`Invalid animated parent ${state.parentIndex} for RAW3D node ${node.index}.`);
|
|
409
|
+
parent.add(object);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
372
412
|
else if (state.parentIndex !== undefined)
|
|
373
413
|
throw new Error(`Invalid animated parent ${state.parentIndex} for RAW3D node ${node.index}.`);
|
|
414
|
+
const fixed = staticDrawables.get(node.index);
|
|
415
|
+
if (initialized && !hasStreamFrames && !animatedNodes.has(node.index) && fixed
|
|
416
|
+
&& fixed.object.parent === object && fixed.object.geometry === fixed.geometry && fixed.object.material === fixed.material) {
|
|
417
|
+
fixed.object.visible = state.visible && !object.userData.raw3d.annotationHidden;
|
|
418
|
+
fixed.object.userData.raw3d.sourceVisible = fixed.object.visible;
|
|
419
|
+
for (const text of staticTexts.get(node.index) ?? []) {
|
|
420
|
+
text.visible = state.visible && !object.userData.raw3d.annotationHidden;
|
|
421
|
+
text.userData.raw3d.sourceVisible = text.visible;
|
|
422
|
+
}
|
|
423
|
+
continue;
|
|
424
|
+
}
|
|
374
425
|
let drawable = object.children.find(child => ["mesh", "lines", "points"].includes(child.userData.raw3d?.kind));
|
|
375
426
|
const mesh = state.meshIndex === undefined ? undefined : project.meshes[state.meshIndex];
|
|
376
427
|
if (state.meshIndex !== undefined && !mesh)
|
|
@@ -410,11 +461,18 @@ export async function createRaw3DThreePlayback(parsed, options = {}) {
|
|
|
410
461
|
const material = current[slot] ?? (drawable instanceof three.Points ? toPointMaterial(source, three) : toLineMaterial(source, three));
|
|
411
462
|
ownedMaterials.add(material);
|
|
412
463
|
const target = material, original = source;
|
|
413
|
-
target.
|
|
464
|
+
const wasTransparent = target.transparent, revision = original.userData.raw3dAppearanceRevision;
|
|
465
|
+
const previous = topologyAppearance.get(material);
|
|
466
|
+
if (revision === undefined || previous?.source !== source || previous.revision !== revision) {
|
|
467
|
+
target.color.copy(original.color);
|
|
468
|
+
target.userData.raw3dAppearanceRevision = Number(target.userData.raw3dAppearanceRevision ?? 0) + 1;
|
|
469
|
+
topologyAppearance.set(material, { source, revision });
|
|
470
|
+
}
|
|
414
471
|
target.opacity = original.opacity;
|
|
415
472
|
target.transparent = original.transparent;
|
|
416
473
|
target.depthWrite = original.depthWrite;
|
|
417
|
-
target.
|
|
474
|
+
if (target.transparent !== wasTransparent)
|
|
475
|
+
target.needsUpdate = true;
|
|
418
476
|
if (drawable instanceof three.Points)
|
|
419
477
|
target.size = state.materialProperties[slot]?.PointSize ?? project.materials[node.materialIndices[slot] ?? node.materialIndices[0] ?? (state.layerIndex === undefined ? -1 : project.layers[state.layerIndex]?.materialIndex ?? -1)]?.pointSize ?? 1;
|
|
420
478
|
return material;
|
|
@@ -427,6 +485,10 @@ export async function createRaw3DThreePlayback(parsed, options = {}) {
|
|
|
427
485
|
drawable.visible = state.visible && !!mesh && !object.userData.raw3d.annotationHidden;
|
|
428
486
|
drawable.userData.raw3d.sourceVisible = drawable.visible;
|
|
429
487
|
}
|
|
488
|
+
if (!hasStreamFrames && !animatedNodes.has(node.index) && drawable) {
|
|
489
|
+
staticDrawables.set(node.index, { object: drawable, geometry: drawable.geometry, material: drawable.material });
|
|
490
|
+
staticTexts.set(node.index, object.children.filter(child => child.userData.raw3d?.kind === "text"));
|
|
491
|
+
}
|
|
430
492
|
for (const child of object.children)
|
|
431
493
|
if (child.userData.raw3d?.kind === "text") {
|
|
432
494
|
child.visible = state.visible && !object.userData.raw3d.annotationHidden;
|
|
@@ -440,10 +502,14 @@ export async function createRaw3DThreePlayback(parsed, options = {}) {
|
|
|
440
502
|
geometry.dispose();
|
|
441
503
|
geometryCache.delete(index);
|
|
442
504
|
}
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
binding.
|
|
505
|
+
if (skinBindings.size) {
|
|
506
|
+
group.updateMatrixWorld(true);
|
|
507
|
+
for (const binding of skinBindings.values())
|
|
508
|
+
binding.update();
|
|
509
|
+
}
|
|
510
|
+
// Effects finish with a world-matrix update, including newly created lights/floors.
|
|
446
511
|
applyRaw3DThreeEffects(group, frame, project, three);
|
|
512
|
+
initialized = true;
|
|
447
513
|
};
|
|
448
514
|
const seek = (time) => { seekRevision++; pendingFrames?.abort(); apply(time); };
|
|
449
515
|
const seekAsync = async (time) => {
|
|
@@ -519,6 +585,8 @@ export async function createRaw3DThreePlayback(parsed, options = {}) {
|
|
|
519
585
|
group.clear();
|
|
520
586
|
variants.clear();
|
|
521
587
|
geometryCache.clear();
|
|
588
|
+
staticDrawables.clear();
|
|
589
|
+
staticTexts.clear();
|
|
522
590
|
};
|
|
523
591
|
try {
|
|
524
592
|
await seekAsync(0);
|
|
@@ -546,24 +614,27 @@ export function decodeRaw3DThreeGeometry(mesh, project, three) {
|
|
|
546
614
|
continue;
|
|
547
615
|
}
|
|
548
616
|
const values = new Float32Array(vertexCount * sourceAttribute.componentCount);
|
|
617
|
+
const color = /^Color$/i.test(sourceAttribute.type), byte = /^Byte4$/i.test(sourceAttribute.type);
|
|
618
|
+
const short = /^(?:Normalized)?Short[24]$/i.test(sourceAttribute.type), normalized = /^Normalized/i.test(sourceAttribute.type);
|
|
619
|
+
const reflected = name === "position" || name === "normal" || name === "tangent";
|
|
549
620
|
for (let vertex = 0; vertex < vertexCount; vertex += 1) {
|
|
550
621
|
const base = vertex * vertexBuffer.stride + sourceAttribute.offset;
|
|
622
|
+
const packed = color ? view.getUint32(base, true) : 0;
|
|
551
623
|
for (let component = 0; component < sourceAttribute.componentCount; component += 1) {
|
|
552
624
|
let value;
|
|
553
|
-
if (
|
|
554
|
-
const packed = view.getUint32(base, true);
|
|
625
|
+
if (color) {
|
|
555
626
|
value = ((packed >>> [16, 8, 0, 24][component]) & 255) / 255;
|
|
556
627
|
}
|
|
557
|
-
else if (
|
|
628
|
+
else if (byte)
|
|
558
629
|
value = view.getUint8(base + component);
|
|
559
|
-
else if (
|
|
630
|
+
else if (short) {
|
|
560
631
|
value = view.getInt16(base + component * 2, true);
|
|
561
|
-
if (
|
|
632
|
+
if (normalized)
|
|
562
633
|
value = Math.max(-1, value / 32767);
|
|
563
634
|
}
|
|
564
635
|
else
|
|
565
636
|
value = view.getFloat32(base + component * 4, true);
|
|
566
|
-
if (
|
|
637
|
+
if (reflected && component === 2) {
|
|
567
638
|
value = -value;
|
|
568
639
|
}
|
|
569
640
|
if (name === "tangent" && component === 3)
|