@jfk-solutions/demo3d-file-format 1.7.0 → 1.9.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/README.md +289 -1
- package/dist/examples/export-embedded-viewer-standalone.html +193 -0
- package/dist/examples/three-render-smoke-standalone.html +4997 -0
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/model.d.ts +20 -3
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +89 -11
- package/dist/model.js.map +1 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +135 -9
- package/dist/parser.js.map +1 -1
- package/dist/raw3d-animation.d.ts +63 -0
- package/dist/raw3d-animation.d.ts.map +1 -0
- package/dist/raw3d-animation.js +200 -0
- package/dist/raw3d-animation.js.map +1 -0
- package/dist/raw3d-effects.d.ts +66 -0
- package/dist/raw3d-effects.d.ts.map +1 -0
- package/dist/raw3d-effects.js +172 -0
- package/dist/raw3d-effects.js.map +1 -0
- package/dist/raw3d-skinning.d.ts +8 -0
- package/dist/raw3d-skinning.d.ts.map +1 -0
- package/dist/raw3d-skinning.js +37 -0
- package/dist/raw3d-skinning.js.map +1 -0
- package/dist/raw3d.d.ts +84 -4
- package/dist/raw3d.d.ts.map +1 -1
- package/dist/raw3d.js +111 -9
- package/dist/raw3d.js.map +1 -1
- package/dist/rigid-interpolation.d.ts +16 -0
- package/dist/rigid-interpolation.d.ts.map +1 -0
- package/dist/rigid-interpolation.js +52 -0
- package/dist/rigid-interpolation.js.map +1 -0
- package/dist/three/backend.d.ts +13 -0
- package/dist/three/backend.d.ts.map +1 -0
- package/dist/three/backend.js +9 -0
- package/dist/three/backend.js.map +1 -0
- package/dist/three/effects.d.ts +7 -0
- package/dist/three/effects.d.ts.map +1 -0
- package/dist/three/effects.js +127 -0
- package/dist/three/effects.js.map +1 -0
- package/dist/three/index.d.ts +5 -1
- package/dist/three/index.d.ts.map +1 -1
- package/dist/three/index.js +35 -1
- package/dist/three/index.js.map +1 -1
- package/dist/three/native-lighting.d.ts +5 -0
- package/dist/three/native-lighting.d.ts.map +1 -0
- package/dist/three/native-lighting.js +86 -0
- package/dist/three/native-lighting.js.map +1 -0
- package/dist/three/parallax.d.ts +5 -0
- package/dist/three/parallax.d.ts.map +1 -0
- package/dist/three/parallax.js +63 -0
- package/dist/three/parallax.js.map +1 -0
- package/dist/three/presentation.d.ts +31 -0
- package/dist/three/presentation.d.ts.map +1 -0
- package/dist/three/presentation.js +137 -0
- package/dist/three/presentation.js.map +1 -0
- package/dist/three/raw3d.d.ts +27 -0
- package/dist/three/raw3d.d.ts.map +1 -1
- package/dist/three/raw3d.js +536 -25
- package/dist/three/raw3d.js.map +1 -1
- package/dist/three/renderer.d.ts.map +1 -1
- package/dist/three/renderer.js +3 -0
- package/dist/three/renderer.js.map +1 -1
- package/dist/three/skinning.d.ts +11 -0
- package/dist/three/skinning.d.ts.map +1 -0
- package/dist/three/skinning.js +92 -0
- package/dist/three/skinning.js.map +1 -0
- package/dist/three/tsl.d.ts +60 -0
- package/dist/three/tsl.d.ts.map +1 -0
- package/dist/three/tsl.js +3 -0
- package/dist/three/tsl.js.map +1 -0
- package/dist/three/webgpu-native.d.ts +3 -0
- package/dist/three/webgpu-native.d.ts.map +1 -0
- package/dist/three/webgpu-native.js +58 -0
- package/dist/three/webgpu-native.js.map +1 -0
- package/dist/three/webgpu-relief.d.ts +3 -0
- package/dist/three/webgpu-relief.d.ts.map +1 -0
- package/dist/three/webgpu-relief.js +61 -0
- package/dist/three/webgpu-relief.js.map +1 -0
- package/dist/xml.d.ts +4 -1
- package/dist/xml.d.ts.map +1 -1
- package/dist/xml.js +14 -3
- package/dist/xml.js.map +1 -1
- package/package.json +6 -2
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/** Decode the native per-bone vertex-index and float-weight buffers without a renderer. */
|
|
2
|
+
export function decodeRaw3DSkinInfluences(mesh, project) {
|
|
3
|
+
const vertexBuffer = project.vertexBuffers[mesh.vertexBufferIndex];
|
|
4
|
+
if (!vertexBuffer?.data || vertexBuffer.stride <= 0 || vertexBuffer.data.byteLength % vertexBuffer.stride)
|
|
5
|
+
throw new Error("Invalid RAW3D skinned vertex buffer.");
|
|
6
|
+
const count = vertexBuffer.data.byteLength / vertexBuffer.stride;
|
|
7
|
+
const result = Array.from({ length: count }, () => []);
|
|
8
|
+
mesh.bones.forEach((bone, boneIndex) => {
|
|
9
|
+
if (bone.skinIndexBuffer < 0 && bone.skinWeightsVertexBuffer < 0)
|
|
10
|
+
return;
|
|
11
|
+
const indices = project.indexBuffers[bone.skinIndexBuffer], weights = project.vertexBuffers[bone.skinWeightsVertexBuffer];
|
|
12
|
+
if (!indices?.data || !weights?.data)
|
|
13
|
+
throw new Error(`Missing RAW3D skin buffers for bone ${boneIndex}.`);
|
|
14
|
+
const elementSize = /32/i.test(indices.format) ? 4 : 2;
|
|
15
|
+
if (indices.data.byteLength % elementSize)
|
|
16
|
+
throw new Error(`Invalid RAW3D skin index buffer for bone ${boneIndex}.`);
|
|
17
|
+
const length = indices.data.byteLength / elementSize;
|
|
18
|
+
const stride = weights.data.byteLength === length * 4 ? 4 : weights.stride;
|
|
19
|
+
if (stride < 4 || weights.data.byteLength !== length * stride)
|
|
20
|
+
throw new Error(`Invalid RAW3D skin weight buffer for bone ${boneIndex}.`);
|
|
21
|
+
const indexView = new DataView(indices.data.buffer, indices.data.byteOffset, indices.data.byteLength);
|
|
22
|
+
const weightView = new DataView(weights.data.buffer, weights.data.byteOffset, weights.data.byteLength);
|
|
23
|
+
for (let index = 0; index < length; index++) {
|
|
24
|
+
const vertex = elementSize === 4 ? indexView.getUint32(index * 4, true) : indexView.getUint16(index * 2, true);
|
|
25
|
+
const weight = weightView.getFloat32(index * stride, true);
|
|
26
|
+
if (vertex >= count || !Number.isFinite(weight) || weight < 0)
|
|
27
|
+
throw new Error(`Invalid RAW3D skin influence for bone ${boneIndex}.`);
|
|
28
|
+
if (weight > 0)
|
|
29
|
+
result[vertex].push({ boneIndex, weight });
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
return result.map(influences => {
|
|
33
|
+
const sum = influences.reduce((total, influence) => total + influence.weight, 0);
|
|
34
|
+
return influences.map(influence => ({ boneIndex: influence.boneIndex, weight: influence.weight / sum }));
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=raw3d-skinning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw3d-skinning.js","sourceRoot":"","sources":["../src/raw3d-skinning.ts"],"names":[],"mappings":"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"}
|
package/dist/raw3d.d.ts
CHANGED
|
@@ -2,7 +2,11 @@ import { type Demo3DInput } from "./binary.js";
|
|
|
2
2
|
import { Demo3DResource } from "./model.js";
|
|
3
3
|
import { type Demo3DXmlElement, type ParseXmlDocument } from "./xml.js";
|
|
4
4
|
import { type ZipEntryInfo } from "./zip.js";
|
|
5
|
-
|
|
5
|
+
import { Raw3DAnimation, Raw3DInterpolationMode } from "./raw3d-animation.js";
|
|
6
|
+
import type { Raw3DAnimationOptions } from "./raw3d-effects.js";
|
|
7
|
+
export interface ParseRaw3DOptions extends Raw3DAnimationOptions {
|
|
8
|
+
/** Optional explicit resource loader; archive resources take precedence. No automatic network access. */
|
|
9
|
+
readonly resolveResource?: (path: string) => Promise<Uint8Array | undefined> | Uint8Array | undefined;
|
|
6
10
|
readonly parseXml?: ParseXmlDocument;
|
|
7
11
|
readonly xmlParser?: "fast" | "dom";
|
|
8
12
|
}
|
|
@@ -27,6 +31,14 @@ export declare class Raw3DNode {
|
|
|
27
31
|
readonly castsShadow: boolean;
|
|
28
32
|
readonly customAttributes: ReadonlyMap<string, string>;
|
|
29
33
|
readonly xml: Demo3DXmlElement;
|
|
34
|
+
get visible(): boolean;
|
|
35
|
+
get interpolationMode(): Raw3DInterpolationMode;
|
|
36
|
+
get highlight(): number;
|
|
37
|
+
get hasBeenOptimized(): boolean;
|
|
38
|
+
get userData(): string | undefined;
|
|
39
|
+
get clientOwner(): string | undefined;
|
|
40
|
+
get isDecal(): boolean;
|
|
41
|
+
get isBillboard(): boolean;
|
|
30
42
|
constructor(index: number, name: string, parentIndex: number | undefined, meshIndex: number | undefined, layerIndex: number | undefined, materialIndices: readonly number[], textIndex: number | undefined, interactionMode: number | undefined, location: readonly number[], rotation: readonly number[], scale: readonly number[], castsShadow: boolean, customAttributes: ReadonlyMap<string, string>, xml: Demo3DXmlElement);
|
|
31
43
|
}
|
|
32
44
|
export declare class Raw3DLayer {
|
|
@@ -47,6 +59,13 @@ export declare class Raw3DMaterial {
|
|
|
47
59
|
readonly scaleU: number;
|
|
48
60
|
readonly scaleV: number;
|
|
49
61
|
readonly xml: Demo3DXmlElement;
|
|
62
|
+
get streamableTextureIndex(): number;
|
|
63
|
+
get luminosity(): number;
|
|
64
|
+
get offsetU(): number;
|
|
65
|
+
get offsetV(): number;
|
|
66
|
+
get pointSize(): number;
|
|
67
|
+
get normalDepth(): number;
|
|
68
|
+
get shader(): string;
|
|
50
69
|
constructor(red: number, green: number, blue: number, transparency: number, reflectivity: number, textureIndex: number | undefined, normalTextureIndex: number | undefined, normalScale: number, scaleU: number, scaleV: number, xml: Demo3DXmlElement);
|
|
51
70
|
}
|
|
52
71
|
export declare class Raw3DTexture {
|
|
@@ -55,15 +74,27 @@ export declare class Raw3DTexture {
|
|
|
55
74
|
readonly xml: Demo3DXmlElement;
|
|
56
75
|
constructor(path: string, data: Uint8Array | undefined, xml: Demo3DXmlElement);
|
|
57
76
|
}
|
|
77
|
+
export declare class Raw3DStreamableTexture {
|
|
78
|
+
readonly xml: Demo3DXmlElement;
|
|
79
|
+
readonly index: number;
|
|
80
|
+
readonly data: Uint8Array | undefined;
|
|
81
|
+
constructor(xml: Demo3DXmlElement, index: number, data?: Uint8Array | undefined);
|
|
82
|
+
get name(): string;
|
|
83
|
+
get path(): string;
|
|
84
|
+
get id(): string | undefined;
|
|
85
|
+
get width(): number;
|
|
86
|
+
get height(): number;
|
|
87
|
+
}
|
|
58
88
|
export declare class Raw3DText {
|
|
59
89
|
readonly value: string;
|
|
60
90
|
readonly size: number;
|
|
91
|
+
readonly fontFamily: string;
|
|
61
92
|
readonly materialIndex: number | undefined;
|
|
62
93
|
readonly verticalAlign: number;
|
|
63
94
|
readonly startPosition: readonly number[];
|
|
64
95
|
readonly endPosition: readonly number[];
|
|
65
96
|
readonly xml: Demo3DXmlElement;
|
|
66
|
-
constructor(value: string, size: number, materialIndex: number | undefined, verticalAlign: number, startPosition: readonly number[], endPosition: readonly number[], xml: Demo3DXmlElement);
|
|
97
|
+
constructor(value: string, size: number, fontFamily: string, materialIndex: number | undefined, verticalAlign: number, startPosition: readonly number[], endPosition: readonly number[], xml: Demo3DXmlElement);
|
|
67
98
|
}
|
|
68
99
|
export declare class Raw3DLight {
|
|
69
100
|
readonly nodeIndex: number | undefined;
|
|
@@ -74,6 +105,12 @@ export declare class Raw3DLight {
|
|
|
74
105
|
readonly attenuationLinear: number;
|
|
75
106
|
readonly attenuationQuadratic: number;
|
|
76
107
|
readonly xml: Demo3DXmlElement;
|
|
108
|
+
get index(): number | undefined;
|
|
109
|
+
get attenuationRange(): number;
|
|
110
|
+
get spotlightFalloff(): number;
|
|
111
|
+
get spotlightInnerAngle(): number;
|
|
112
|
+
get spotlightOuterAngle(): number;
|
|
113
|
+
get castsShadows(): boolean;
|
|
77
114
|
constructor(nodeIndex: number | undefined, materialIndex: number | undefined, enabled: boolean, type: string, attenuationConstant: number, attenuationLinear: number, attenuationQuadratic: number, xml: Demo3DXmlElement);
|
|
78
115
|
}
|
|
79
116
|
export declare class Raw3DVertexAttribute {
|
|
@@ -99,11 +136,47 @@ export declare class Raw3DIndexBuffer {
|
|
|
99
136
|
readonly xml: Demo3DXmlElement;
|
|
100
137
|
constructor(path: string, format: string, data: Uint8Array | undefined, xml: Demo3DXmlElement);
|
|
101
138
|
}
|
|
139
|
+
export declare class Raw3DBone {
|
|
140
|
+
readonly xml: Demo3DXmlElement;
|
|
141
|
+
constructor(xml: Demo3DXmlElement);
|
|
142
|
+
get name(): string;
|
|
143
|
+
/** Scene node driving this bone; -1 denotes the mesh's coordinate frame. */
|
|
144
|
+
get parentIndex(): number;
|
|
145
|
+
get skinIndexBuffer(): number;
|
|
146
|
+
get skinWeightsVertexBuffer(): number;
|
|
147
|
+
get location(): readonly number[];
|
|
148
|
+
get rotation(): readonly number[];
|
|
149
|
+
}
|
|
150
|
+
export declare class Raw3DUIButton {
|
|
151
|
+
readonly xml: Demo3DXmlElement;
|
|
152
|
+
readonly index: number;
|
|
153
|
+
constructor(xml: Demo3DXmlElement, index: number);
|
|
154
|
+
get name(): string;
|
|
155
|
+
get id(): string | undefined;
|
|
156
|
+
get visible(): boolean;
|
|
157
|
+
get checked(): boolean;
|
|
158
|
+
}
|
|
102
159
|
export declare class Raw3DMesh {
|
|
103
160
|
readonly vertexBufferIndex: number;
|
|
104
161
|
readonly indexBufferIndices: readonly number[];
|
|
162
|
+
/** The primitive topology. Omitted by RAW3D means TriangleList. */
|
|
163
|
+
readonly meshType: string;
|
|
164
|
+
readonly xml: Demo3DXmlElement;
|
|
165
|
+
get bones(): readonly Raw3DBone[];
|
|
166
|
+
constructor(vertexBufferIndex: number, indexBufferIndices: readonly number[],
|
|
167
|
+
/** The primitive topology. Omitted by RAW3D means TriangleList. */
|
|
168
|
+
meshType: string, xml: Demo3DXmlElement);
|
|
169
|
+
}
|
|
170
|
+
export declare class Raw3DSceneProperties {
|
|
105
171
|
readonly xml: Demo3DXmlElement;
|
|
106
|
-
constructor(
|
|
172
|
+
constructor(xml: Demo3DXmlElement);
|
|
173
|
+
get showDefaultFloor(): boolean;
|
|
174
|
+
get allowTeleportOnDefaultFloor(): boolean;
|
|
175
|
+
get useDefaultLighting(): boolean;
|
|
176
|
+
get ambientLightColor(): readonly number[];
|
|
177
|
+
get floorOrigin(): readonly number[];
|
|
178
|
+
get floorNormal(): readonly number[];
|
|
179
|
+
get quality(): number | undefined;
|
|
107
180
|
}
|
|
108
181
|
export declare class Raw3DProject {
|
|
109
182
|
readonly root: Demo3DXmlElement;
|
|
@@ -118,7 +191,14 @@ export declare class Raw3DProject {
|
|
|
118
191
|
readonly meshes: readonly Raw3DMesh[];
|
|
119
192
|
readonly vertexBuffers: readonly Raw3DVertexBuffer[];
|
|
120
193
|
readonly indexBuffers: readonly Raw3DIndexBuffer[];
|
|
121
|
-
|
|
194
|
+
readonly animationOptions: Raw3DAnimationOptions;
|
|
195
|
+
readonly streamableTextures: readonly Raw3DStreamableTexture[];
|
|
196
|
+
private cachedAnimation?;
|
|
197
|
+
/** Parsed on demand; importing the parser never loads a renderer. */
|
|
198
|
+
get animation(): Raw3DAnimation;
|
|
199
|
+
get sceneProperties(): Raw3DSceneProperties | undefined;
|
|
200
|
+
get buttons(): readonly Raw3DUIButton[];
|
|
201
|
+
constructor(root: Demo3DXmlElement, origin: string | undefined, views: readonly Raw3DView[], nodes: readonly Raw3DNode[], layers: readonly Raw3DLayer[], materials: readonly Raw3DMaterial[], textures: readonly Raw3DTexture[], textObjects: readonly Raw3DText[], lights: readonly Raw3DLight[], meshes: readonly Raw3DMesh[], vertexBuffers: readonly Raw3DVertexBuffer[], indexBuffers: readonly Raw3DIndexBuffer[], animationOptions?: Raw3DAnimationOptions, streamableTextures?: readonly Raw3DStreamableTexture[]);
|
|
122
202
|
}
|
|
123
203
|
export declare class Raw3DPackage {
|
|
124
204
|
readonly entries: readonly ZipEntryInfo[];
|
package/dist/raw3d.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raw3d.d.ts","sourceRoot":"","sources":["../src/raw3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAGzE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAmB,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAwB,MAAM,UAAU,CAAC;AAC/G,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"raw3d.d.ts","sourceRoot":"","sources":["../src/raw3d.ts"],"names":[],"mappings":"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"}
|
package/dist/raw3d.js
CHANGED
|
@@ -4,6 +4,7 @@ import { parseDemo3DXmlFast } from "./fast-xml.js";
|
|
|
4
4
|
import { Demo3DResource } from "./model.js";
|
|
5
5
|
import { defaultParseXml, xmlDocumentToElement } from "./xml.js";
|
|
6
6
|
import { parseZip } from "./zip.js";
|
|
7
|
+
import { Raw3DAnimation, Raw3DInterpolationMode } from "./raw3d-animation.js";
|
|
7
8
|
export class Raw3DView {
|
|
8
9
|
name;
|
|
9
10
|
position;
|
|
@@ -29,6 +30,14 @@ export class Raw3DNode {
|
|
|
29
30
|
castsShadow;
|
|
30
31
|
customAttributes;
|
|
31
32
|
xml;
|
|
33
|
+
get visible() { return booleanAttribute(this.xml, "Visible", true); }
|
|
34
|
+
get interpolationMode() { return numberAttribute(this.xml, "InterpolationMode", 0); }
|
|
35
|
+
get highlight() { return numberAttribute(this.xml, "Highlight", -1); }
|
|
36
|
+
get hasBeenOptimized() { return booleanAttribute(this.xml, "HasBeenOptimized", false); }
|
|
37
|
+
get userData() { return attribute(this.xml, "UserData"); }
|
|
38
|
+
get clientOwner() { return attribute(this.xml, "ClientOwner"); }
|
|
39
|
+
get isDecal() { return booleanAttribute(this.xml, "IsDecal", false); }
|
|
40
|
+
get isBillboard() { return booleanAttribute(this.xml, "IsBillboard", false); }
|
|
32
41
|
constructor(index, name, parentIndex, meshIndex, layerIndex, materialIndices, textIndex, interactionMode, location, rotation, scale, castsShadow, customAttributes, xml) {
|
|
33
42
|
this.index = index;
|
|
34
43
|
this.name = name;
|
|
@@ -68,6 +77,13 @@ export class Raw3DMaterial {
|
|
|
68
77
|
scaleU;
|
|
69
78
|
scaleV;
|
|
70
79
|
xml;
|
|
80
|
+
get streamableTextureIndex() { return integerAttribute(this.xml, "StreamableTexture") ?? -1; }
|
|
81
|
+
get luminosity() { return numberAttribute(this.xml, "Luminosity", 0); }
|
|
82
|
+
get offsetU() { return numberAttribute(this.xml, "U", 0); }
|
|
83
|
+
get offsetV() { return numberAttribute(this.xml, "V", 0); }
|
|
84
|
+
get pointSize() { return numberAttribute(this.xml, "PointSize", 1); }
|
|
85
|
+
get normalDepth() { return numberAttribute(this.xml, "NormalDepth", 0); }
|
|
86
|
+
get shader() { return attribute(this.xml, "Shader") ?? "Default"; }
|
|
71
87
|
constructor(red, green, blue, transparency, reflectivity, textureIndex, normalTextureIndex, normalScale, scaleU, scaleV, xml) {
|
|
72
88
|
this.red = red;
|
|
73
89
|
this.green = green;
|
|
@@ -92,17 +108,34 @@ export class Raw3DTexture {
|
|
|
92
108
|
this.xml = xml;
|
|
93
109
|
}
|
|
94
110
|
}
|
|
111
|
+
export class Raw3DStreamableTexture {
|
|
112
|
+
xml;
|
|
113
|
+
index;
|
|
114
|
+
data;
|
|
115
|
+
constructor(xml, index, data = undefined) {
|
|
116
|
+
this.xml = xml;
|
|
117
|
+
this.index = index;
|
|
118
|
+
this.data = data;
|
|
119
|
+
}
|
|
120
|
+
get name() { return attribute(this.xml, "Name") ?? ""; }
|
|
121
|
+
get path() { return attribute(this.xml, "Path") ?? ""; }
|
|
122
|
+
get id() { return attribute(this.xml, "Id"); }
|
|
123
|
+
get width() { return integerAttribute(this.xml, "Width") ?? 0; }
|
|
124
|
+
get height() { return integerAttribute(this.xml, "Height") ?? 0; }
|
|
125
|
+
}
|
|
95
126
|
export class Raw3DText {
|
|
96
127
|
value;
|
|
97
128
|
size;
|
|
129
|
+
fontFamily;
|
|
98
130
|
materialIndex;
|
|
99
131
|
verticalAlign;
|
|
100
132
|
startPosition;
|
|
101
133
|
endPosition;
|
|
102
134
|
xml;
|
|
103
|
-
constructor(value, size, materialIndex, verticalAlign, startPosition, endPosition, xml) {
|
|
135
|
+
constructor(value, size, fontFamily, materialIndex, verticalAlign, startPosition, endPosition, xml) {
|
|
104
136
|
this.value = value;
|
|
105
137
|
this.size = size;
|
|
138
|
+
this.fontFamily = fontFamily;
|
|
106
139
|
this.materialIndex = materialIndex;
|
|
107
140
|
this.verticalAlign = verticalAlign;
|
|
108
141
|
this.startPosition = startPosition;
|
|
@@ -119,6 +152,12 @@ export class Raw3DLight {
|
|
|
119
152
|
attenuationLinear;
|
|
120
153
|
attenuationQuadratic;
|
|
121
154
|
xml;
|
|
155
|
+
get index() { return integerAttribute(this.xml, "Index"); }
|
|
156
|
+
get attenuationRange() { return numberAttribute(this.xml, "AttenuationRange", 0); }
|
|
157
|
+
get spotlightFalloff() { return numberAttribute(this.xml, "SpotlightFalloff", 0); }
|
|
158
|
+
get spotlightInnerAngle() { return numberAttribute(this.xml, "SpotlightInnerAngle", 0); }
|
|
159
|
+
get spotlightOuterAngle() { return numberAttribute(this.xml, "SpotlightOuterAngle", 0); }
|
|
160
|
+
get castsShadows() { return booleanAttribute(this.xml, "CastsShadows", false); }
|
|
122
161
|
constructor(nodeIndex, materialIndex, enabled, type, attenuationConstant, attenuationLinear, attenuationQuadratic, xml) {
|
|
123
162
|
this.nodeIndex = nodeIndex;
|
|
124
163
|
this.materialIndex = materialIndex;
|
|
@@ -170,16 +209,59 @@ export class Raw3DIndexBuffer {
|
|
|
170
209
|
this.xml = xml;
|
|
171
210
|
}
|
|
172
211
|
}
|
|
212
|
+
export class Raw3DBone {
|
|
213
|
+
xml;
|
|
214
|
+
constructor(xml) {
|
|
215
|
+
this.xml = xml;
|
|
216
|
+
}
|
|
217
|
+
get name() { return attribute(this.xml, "Name") ?? ""; }
|
|
218
|
+
/** Scene node driving this bone; -1 denotes the mesh's coordinate frame. */
|
|
219
|
+
get parentIndex() { return integerAttribute(this.xml, "Parent") ?? -1; }
|
|
220
|
+
get skinIndexBuffer() { return integerAttribute(this.xml, "SkinIndexBuffer") ?? -1; }
|
|
221
|
+
get skinWeightsVertexBuffer() { return integerAttribute(this.xml, "SkinWeightsVertexBuffer") ?? -1; }
|
|
222
|
+
get location() { return numberList(attribute(this.xml, "Location"), [0, 0, 0]); }
|
|
223
|
+
get rotation() { return numberList(attribute(this.xml, "Rotation"), [0, 0, 0]); }
|
|
224
|
+
}
|
|
225
|
+
export class Raw3DUIButton {
|
|
226
|
+
xml;
|
|
227
|
+
index;
|
|
228
|
+
constructor(xml, index) {
|
|
229
|
+
this.xml = xml;
|
|
230
|
+
this.index = index;
|
|
231
|
+
}
|
|
232
|
+
get name() { return attribute(this.xml, "Name") ?? ""; }
|
|
233
|
+
get id() { return attribute(this.xml, "Id"); }
|
|
234
|
+
get visible() { return booleanAttribute(this.xml, "IsVisible", true); }
|
|
235
|
+
get checked() { return booleanAttribute(this.xml, "IsChecked", false); }
|
|
236
|
+
}
|
|
173
237
|
export class Raw3DMesh {
|
|
174
238
|
vertexBufferIndex;
|
|
175
239
|
indexBufferIndices;
|
|
240
|
+
meshType;
|
|
176
241
|
xml;
|
|
177
|
-
|
|
242
|
+
get bones() { return (this.xml.child("Bones")?.childrenNamed("Bone") ?? []).map(xml => new Raw3DBone(xml)); }
|
|
243
|
+
constructor(vertexBufferIndex, indexBufferIndices,
|
|
244
|
+
/** The primitive topology. Omitted by RAW3D means TriangleList. */
|
|
245
|
+
meshType, xml) {
|
|
178
246
|
this.vertexBufferIndex = vertexBufferIndex;
|
|
179
247
|
this.indexBufferIndices = indexBufferIndices;
|
|
248
|
+
this.meshType = meshType;
|
|
180
249
|
this.xml = xml;
|
|
181
250
|
}
|
|
182
251
|
}
|
|
252
|
+
export class Raw3DSceneProperties {
|
|
253
|
+
xml;
|
|
254
|
+
constructor(xml) {
|
|
255
|
+
this.xml = xml;
|
|
256
|
+
}
|
|
257
|
+
get showDefaultFloor() { return booleanAttribute(this.xml, "ShowDefaultFloor", true); }
|
|
258
|
+
get allowTeleportOnDefaultFloor() { return booleanAttribute(this.xml, "AllowTeleportOnDefaultFloor", true); }
|
|
259
|
+
get useDefaultLighting() { return booleanAttribute(this.xml, "UseDefaultLighting", true); }
|
|
260
|
+
get ambientLightColor() { return numberList(attribute(this.xml, "AmbientLightColor")); }
|
|
261
|
+
get floorOrigin() { return numberList(attribute(this.xml, "FloorOrigin")); }
|
|
262
|
+
get floorNormal() { return numberList(attribute(this.xml, "FloorNormal")); }
|
|
263
|
+
get quality() { return integerAttribute(this.xml, "Quality"); }
|
|
264
|
+
}
|
|
183
265
|
export class Raw3DProject {
|
|
184
266
|
root;
|
|
185
267
|
origin;
|
|
@@ -193,7 +275,17 @@ export class Raw3DProject {
|
|
|
193
275
|
meshes;
|
|
194
276
|
vertexBuffers;
|
|
195
277
|
indexBuffers;
|
|
196
|
-
|
|
278
|
+
animationOptions;
|
|
279
|
+
streamableTextures;
|
|
280
|
+
cachedAnimation;
|
|
281
|
+
/** Parsed on demand; importing the parser never loads a renderer. */
|
|
282
|
+
get animation() { return this.cachedAnimation ??= new Raw3DAnimation(this); }
|
|
283
|
+
get sceneProperties() {
|
|
284
|
+
const xml = this.root.child("SceneProperties");
|
|
285
|
+
return xml ? new Raw3DSceneProperties(xml) : undefined;
|
|
286
|
+
}
|
|
287
|
+
get buttons() { return (this.root.child("Buttons")?.childrenNamed("UIButton") ?? []).map((xml, index) => new Raw3DUIButton(xml, integerAttribute(xml, "Index") ?? index)); }
|
|
288
|
+
constructor(root, origin, views, nodes, layers, materials, textures, textObjects, lights, meshes, vertexBuffers, indexBuffers, animationOptions = {}, streamableTextures = []) {
|
|
197
289
|
this.root = root;
|
|
198
290
|
this.origin = origin;
|
|
199
291
|
this.views = views;
|
|
@@ -206,6 +298,8 @@ export class Raw3DProject {
|
|
|
206
298
|
this.meshes = meshes;
|
|
207
299
|
this.vertexBuffers = vertexBuffers;
|
|
208
300
|
this.indexBuffers = indexBuffers;
|
|
301
|
+
this.animationOptions = animationOptions;
|
|
302
|
+
this.streamableTextures = streamableTextures;
|
|
209
303
|
}
|
|
210
304
|
}
|
|
211
305
|
export class Raw3DPackage {
|
|
@@ -242,10 +336,12 @@ export async function parseRaw3D(input, options = {}) {
|
|
|
242
336
|
throw new Demo3DUnsupportedError(`RAW3D Model.xml has unsupported root element "${root.name}".`, "RAW3D_MODEL_ROOT_UNSUPPORTED");
|
|
243
337
|
}
|
|
244
338
|
const loadData = async (path) => {
|
|
339
|
+
if (!path)
|
|
340
|
+
return undefined;
|
|
245
341
|
const entry = entryByPath.get(path.toLowerCase());
|
|
246
|
-
return entry ? entry.arrayBuffer() :
|
|
342
|
+
return entry ? entry.arrayBuffer() : options.resolveResource?.(path);
|
|
247
343
|
};
|
|
248
|
-
const model = await extractRaw3DProject(root, loadData);
|
|
344
|
+
const model = await extractRaw3DProject(root, loadData, options);
|
|
249
345
|
const thumbnailEntry = entryByPath.get("thumbnail.png");
|
|
250
346
|
const aspectsEntry = entryByPath.get("aspects.json");
|
|
251
347
|
const [thumbnail, aspects] = await Promise.all([
|
|
@@ -254,26 +350,28 @@ export async function parseRaw3D(input, options = {}) {
|
|
|
254
350
|
]);
|
|
255
351
|
return new Raw3DPackage(archive.entries.map(toEntryInfo), modelEntry.name, modelXml, model, thumbnail, aspects);
|
|
256
352
|
}
|
|
257
|
-
async function extractRaw3DProject(root, loadData) {
|
|
353
|
+
async function extractRaw3DProject(root, loadData, options) {
|
|
258
354
|
const textureElements = root.child("Textures")?.childrenNamed("Texture") ?? [];
|
|
259
355
|
const vertexBufferElements = root.child("VertexBuffers")?.childrenNamed("VertexBuffer") ?? [];
|
|
260
356
|
const indexBufferElements = root.child("IndexBuffers")?.childrenNamed("IndexBuffer") ?? [];
|
|
357
|
+
const streamElements = root.child("StreamableTextures")?.children ?? [];
|
|
358
|
+
const streams = await Promise.all(streamElements.map(async (xml, index) => new Raw3DStreamableTexture(xml, integerAttribute(xml, "Index") ?? index, await loadData(attribute(xml, "Path") ?? ""))));
|
|
261
359
|
const [textureData, vertexData, indexData] = await Promise.all([
|
|
262
360
|
Promise.all(textureElements.map((element) => loadData(attribute(element, "Path") ?? ""))),
|
|
263
361
|
Promise.all(vertexBufferElements.map((element) => loadData(attribute(element, "Path") ?? ""))),
|
|
264
362
|
Promise.all(indexBufferElements.map((element) => loadData(attribute(element, "Path") ?? "")))
|
|
265
363
|
]);
|
|
266
|
-
return new Raw3DProject(root, attribute(root, "Origin"), (root.child("Views")?.childrenNamed("View") ?? []).map((element) => new Raw3DView(attribute(element, "Name") ?? "", numberList(attribute(element, "Position")), numberList(attribute(element, "Target")))), (root.child("Nodes")?.childrenNamed("Node") ?? []).map((element, position) => new Raw3DNode(integerAttribute(element, "Index") ?? position, attribute(element, "Name") ?? "", integerAttribute(element, "Parent"), integerAttribute(element, "Mesh"), integerAttribute(element, "Layer"), integerList(attribute(element, "Materials")), integerAttribute(element, "Text"), integerAttribute(element, "InteractionMode"), numberList(attribute(element, "Location")), numberList(attribute(element, "Rotation")), numberList(attribute(element, "Scale"), [1, 1, 1]), booleanAttribute(element, "CastsShadow", true), parseCustomAttributes(attribute(element, "CustomAttributes")), element)), (root.child("Layers")?.childrenNamed("Layer") ?? []).map((element) => new Raw3DLayer(attribute(element, "Name") ?? "", integerAttribute(element, "Material"), element)), (root.child("Materials")?.childrenNamed("Material") ?? []).map((element) => new Raw3DMaterial(numberAttribute(element, "R", 0), numberAttribute(element, "G", 0), numberAttribute(element, "B", 0), numberAttribute(element, "A",
|
|
364
|
+
return new Raw3DProject(root, attribute(root, "Origin"), (root.child("Views")?.childrenNamed("View") ?? []).map((element) => new Raw3DView(attribute(element, "Name") ?? "", numberList(attribute(element, "Position")), numberList(attribute(element, "Target")))), (root.child("Nodes")?.childrenNamed("Node") ?? []).map((element, position) => new Raw3DNode(integerAttribute(element, "Index") ?? position, attribute(element, "Name") ?? "", integerAttribute(element, "Parent"), integerAttribute(element, "Mesh"), integerAttribute(element, "Layer"), integerList(attribute(element, "Materials")), integerAttribute(element, "Text"), integerAttribute(element, "InteractionMode"), numberList(attribute(element, "Location")), numberList(attribute(element, "Rotation")), numberList(attribute(element, "Scale"), [1, 1, 1]), booleanAttribute(element, "CastsShadow", true), parseCustomAttributes(attribute(element, "CustomAttributes")), element)), (root.child("Layers")?.childrenNamed("Layer") ?? []).map((element) => new Raw3DLayer(attribute(element, "Name") ?? "", integerAttribute(element, "Material"), element)), (root.child("Materials")?.childrenNamed("Material") ?? []).map((element) => new Raw3DMaterial(numberAttribute(element, "R", 0), numberAttribute(element, "G", 0), numberAttribute(element, "B", 0), 1 - numberAttribute(element, "A", 1), numberAttribute(element, "Reflectivity", 0), integerAttribute(element, "Texture"), integerAttribute(element, "NormalTexture"), numberAttribute(element, "NormalScale", 1), numberAttribute(element, "SU", 1), numberAttribute(element, "SV", 1), element)), textureElements.map((element, index) => new Raw3DTexture(attribute(element, "Path") ?? "", textureData[index], element)), (root.child("TextObjects")?.childrenNamed("Text") ?? []).map((element) => new Raw3DText(attribute(element, "Value") ?? "", numberAttribute(element, "Size", 0.1), attribute(element, "FontFamily") ?? "Arial", integerAttribute(element, "Material"), integerAttribute(element, "VerticalAlign") ?? 0, numberList(attribute(element, "StartPosition")), numberList(attribute(element, "EndPosition")), element)), (root.child("Lights")?.childrenNamed("Light") ?? []).map((element) => new Raw3DLight(integerAttribute(element, "Node"), integerAttribute(element, "Material"), booleanAttribute(element, "Enabled", true), attribute(element, "Type") ?? "Directional", numberAttribute(element, "AttenuationConstant", 1), numberAttribute(element, "AttenuationLinear", 0), numberAttribute(element, "AttenuationQuadratic", 0), element)), (root.child("Meshes")?.childrenNamed("Mesh") ?? []).map((element) => new Raw3DMesh(integerAttribute(element, "VertexBuffer") ?? -1, integerList(attribute(element, "IndexBuffers")), attribute(element, "MeshType") ?? "TriangleList", element)), vertexBufferElements.map((element, index) => {
|
|
267
365
|
let offset = 0;
|
|
268
366
|
const attributes = element.childrenNamed("Attribute").map((attributeElement) => {
|
|
269
367
|
const type = attribute(attributeElement, "Type") ?? "Vector3";
|
|
270
368
|
const componentCount = vectorComponentCount(type);
|
|
271
369
|
const result = new Raw3DVertexAttribute(attribute(attributeElement, "Usage") ?? "", type, componentCount, offset, attributeElement);
|
|
272
|
-
offset += componentCount * 4;
|
|
370
|
+
offset += /^(Color|Byte4|Short2|NormalizedShort2)$/i.test(type) ? 4 : /^(Short4|NormalizedShort4)$/i.test(type) ? 8 : componentCount * 4;
|
|
273
371
|
return result;
|
|
274
372
|
});
|
|
275
373
|
return new Raw3DVertexBuffer(attribute(element, "Path") ?? "", attributes, offset, vertexData[index], element);
|
|
276
|
-
}), indexBufferElements.map((element, index) => new Raw3DIndexBuffer(attribute(element, "Path") ?? "", attribute(element, "Format") ?? "UInt16", indexData[index], element)));
|
|
374
|
+
}), indexBufferElements.map((element, index) => new Raw3DIndexBuffer(attribute(element, "Path") ?? "", attribute(element, "Format") ?? "UInt16", indexData[index], element)), options, streams);
|
|
277
375
|
}
|
|
278
376
|
function attribute(element, name) {
|
|
279
377
|
return element.attributes.find((item) => item.localName === name)?.value;
|
|
@@ -300,6 +398,10 @@ function integerList(value) {
|
|
|
300
398
|
return numberList(value).map((item) => Math.trunc(item));
|
|
301
399
|
}
|
|
302
400
|
function vectorComponentCount(type) {
|
|
401
|
+
if (/^(Color|Byte4|Short4|NormalizedShort4)$/i.test(type))
|
|
402
|
+
return 4;
|
|
403
|
+
if (/^(Short2|NormalizedShort2)$/i.test(type))
|
|
404
|
+
return 2;
|
|
303
405
|
if (/^(Single|Float|Double|Half)$/i.test(type)) {
|
|
304
406
|
return 1;
|
|
305
407
|
}
|
package/dist/raw3d.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raw3d.js","sourceRoot":"","sources":["../src/raw3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAoB,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAgD,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC/G,OAAO,EAAE,QAAQ,EAAoC,MAAM,UAAU,CAAC;AAOtE,MAAM,OAAO,SAAS;IAEF,IAAI;IACJ,QAAQ;IACR,MAAM;IAHxB,YACkB,IAAY,EACZ,QAA2B,EAC3B,MAAyB;oBAFzB,IAAI;wBACJ,QAAQ;sBACR,MAAM;IACrB,CAAC;CACL;AAED,MAAM,OAAO,SAAS;IAEF,KAAK;IACL,IAAI;IACJ,WAAW;IACX,SAAS;IACT,UAAU;IACV,eAAe;IACf,SAAS;IACT,eAAe;IACf,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,WAAW;IACX,gBAAgB;IAChB,GAAG;IAdrB,YACkB,KAAa,EACb,IAAY,EACZ,WAA+B,EAC/B,SAA6B,EAC7B,UAA8B,EAC9B,eAAkC,EAClC,SAA6B,EAC7B,eAAmC,EACnC,QAA2B,EAC3B,QAA2B,EAC3B,KAAwB,EACxB,WAAoB,EACpB,gBAA6C,EAC7C,GAAqB;qBAbrB,KAAK;oBACL,IAAI;2BACJ,WAAW;yBACX,SAAS;0BACT,UAAU;+BACV,eAAe;yBACf,SAAS;+BACT,eAAe;wBACf,QAAQ;wBACR,QAAQ;qBACR,KAAK;2BACL,WAAW;gCACX,gBAAgB;mBAChB,GAAG;IAClB,CAAC;CACL;AAED,MAAM,OAAO,UAAU;IAEH,IAAI;IACJ,aAAa;IACb,GAAG;IAHrB,YACkB,IAAY,EACZ,aAAiC,EACjC,GAAqB;oBAFrB,IAAI;6BACJ,aAAa;mBACb,GAAG;IAClB,CAAC;CACL;AAED,MAAM,OAAO,aAAa;IAEN,GAAG;IACH,KAAK;IACL,IAAI;IACJ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,kBAAkB;IAClB,WAAW;IACX,MAAM;IACN,MAAM;IACN,GAAG;IAXrB,YACkB,GAAW,EACX,KAAa,EACb,IAAY,EACZ,YAAoB,EACpB,YAAoB,EACpB,YAAgC,EAChC,kBAAsC,EACtC,WAAmB,EACnB,MAAc,EACd,MAAc,EACd,GAAqB;mBAVrB,GAAG;qBACH,KAAK;oBACL,IAAI;4BACJ,YAAY;4BACZ,YAAY;4BACZ,YAAY;kCACZ,kBAAkB;2BAClB,WAAW;sBACX,MAAM;sBACN,MAAM;mBACN,GAAG;IAClB,CAAC;CACL;AAED,MAAM,OAAO,YAAY;IAEL,IAAI;IACJ,IAAI;IACJ,GAAG;IAHrB,YACkB,IAAY,EACZ,IAA4B,EAC5B,GAAqB;oBAFrB,IAAI;oBACJ,IAAI;mBACJ,GAAG;IAClB,CAAC;CACL;AAED,MAAM,OAAO,SAAS;IAEF,KAAK;IACL,IAAI;IACJ,aAAa;IACb,aAAa;IACb,aAAa;IACb,WAAW;IACX,GAAG;IAPrB,YACkB,KAAa,EACb,IAAY,EACZ,aAAiC,EACjC,aAAqB,EACrB,aAAgC,EAChC,WAA8B,EAC9B,GAAqB;qBANrB,KAAK;oBACL,IAAI;6BACJ,aAAa;6BACb,aAAa;6BACb,aAAa;2BACb,WAAW;mBACX,GAAG;IAClB,CAAC;CACL;AAED,MAAM,OAAO,UAAU;IAEH,SAAS;IACT,aAAa;IACb,OAAO;IACP,IAAI;IACJ,mBAAmB;IACnB,iBAAiB;IACjB,oBAAoB;IACpB,GAAG;IARrB,YACkB,SAA6B,EAC7B,aAAiC,EACjC,OAAgB,EAChB,IAAY,EACZ,mBAA2B,EAC3B,iBAAyB,EACzB,oBAA4B,EAC5B,GAAqB;yBAPrB,SAAS;6BACT,aAAa;uBACb,OAAO;oBACP,IAAI;mCACJ,mBAAmB;iCACnB,iBAAiB;oCACjB,oBAAoB;mBACpB,GAAG;IAClB,CAAC;CACL;AAED,MAAM,OAAO,oBAAoB;IAEb,KAAK;IACL,IAAI;IACJ,cAAc;IACd,MAAM;IACN,GAAG;IALrB,YACkB,KAAa,EACb,IAAY,EACZ,cAAsB,EACtB,MAAc,EACd,GAAqB;qBAJrB,KAAK;oBACL,IAAI;8BACJ,cAAc;sBACd,MAAM;mBACN,GAAG;IAClB,CAAC;CACL;AAED,MAAM,OAAO,iBAAiB;IAEV,IAAI;IACJ,UAAU;IACV,MAAM;IACN,IAAI;IACJ,GAAG;IALrB,YACkB,IAAY,EACZ,UAA2C,EAC3C,MAAc,EACd,IAA4B,EAC5B,GAAqB;oBAJrB,IAAI;0BACJ,UAAU;sBACV,MAAM;oBACN,IAAI;mBACJ,GAAG;IAClB,CAAC;CACL;AAED,MAAM,OAAO,gBAAgB;IAET,IAAI;IACJ,MAAM;IACN,IAAI;IACJ,GAAG;IAJrB,YACkB,IAAY,EACZ,MAAc,EACd,IAA4B,EAC5B,GAAqB;oBAHrB,IAAI;sBACJ,MAAM;oBACN,IAAI;mBACJ,GAAG;IAClB,CAAC;CACL;AAED,MAAM,OAAO,SAAS;IAEF,iBAAiB;IACjB,kBAAkB;IAClB,GAAG;IAHrB,YACkB,iBAAyB,EACzB,kBAAqC,EACrC,GAAqB;iCAFrB,iBAAiB;kCACjB,kBAAkB;mBAClB,GAAG;IAClB,CAAC;CACL;AAED,MAAM,OAAO,YAAY;IAEL,IAAI;IACJ,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,SAAS;IACT,QAAQ;IACR,WAAW;IACX,MAAM;IACN,MAAM;IACN,aAAa;IACb,YAAY;IAZ9B,YACkB,IAAsB,EACtB,MAA0B,EAC1B,KAA2B,EAC3B,KAA2B,EAC3B,MAA6B,EAC7B,SAAmC,EACnC,QAAiC,EACjC,WAAiC,EACjC,MAA6B,EAC7B,MAA4B,EAC5B,aAA2C,EAC3C,YAAyC;oBAXzC,IAAI;sBACJ,MAAM;qBACN,KAAK;qBACL,KAAK;sBACL,MAAM;yBACN,SAAS;wBACT,QAAQ;2BACR,WAAW;sBACX,MAAM;sBACN,MAAM;6BACN,aAAa;4BACb,YAAY;IAC3B,CAAC;CACL;AAED,MAAM,OAAO,YAAY;IAEL,OAAO;IACP,cAAc;IACd,QAAQ;IACR,KAAK;IACL,SAAS;IACT,OAAO;IANzB,YACkB,OAAgC,EAChC,cAAsB,EACtB,QAAgB,EAChB,KAAmB,EACnB,SAA0B,EAC1B,OAAwB;uBALxB,OAAO;8BACP,cAAc;wBACd,QAAQ;qBACR,KAAK;yBACL,SAAS;uBACT,OAAO;IACtB,CAAC;CACL;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAkB,EAAE,OAAO,GAAsB,EAAE;IAClF,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/F,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,cAAc,CAAC,4DAA4D,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,UAAU,CAAC,gBAAgB,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,sBAAsB,CAAC,yCAAyC,EAAE,mBAAmB,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,UAAU,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK;QAC1D,CAAC,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC;QACvE,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACjC,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QAC/B,MAAM,IAAI,sBAAsB,CAC9B,iDAAiD,IAAI,CAAC,IAAI,IAAI,EAC9D,8BAA8B,CAC/B,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAY,EAAmC,EAAE;QACvE,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACjD,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACrD,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7C,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS;QACvD,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;KACpD,CAAC,CAAC;IAEH,OAAO,IAAI,YAAY,CACrB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAChC,UAAU,CAAC,IAAI,EACf,QAAQ,EACR,KAAK,EACL,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,IAAsB,EACtB,QAA2D;IAE3D,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAC/E,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC9F,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC3F,MAAM,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9F,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KAC9F,CAAC,CAAC;IAEH,OAAO,IAAI,YAAY,CACrB,IAAI,EACJ,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,EACzB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,SAAS,CAC/E,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,EAChC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,EAC1C,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CACzC,CAAC,EACF,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,SAAS,CACzF,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,QAAQ,EAC9C,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,EAChC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,EACnC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EACjC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClC,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,EAC5C,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EACjC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAC5C,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,EAC1C,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,EAC1C,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAClD,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,EAC9C,qBAAqB,CAAC,SAAS,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,EAC7D,OAAO,CACR,CAAC,EACF,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,UAAU,CAClF,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,EAChC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,EACrC,OAAO,CACR,CAAC,EACF,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,aAAa,CAC3F,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAChC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAChC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAChC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAChC,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,EAC3C,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EACpC,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,EAC1C,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,EAC1C,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EACjC,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EACjC,OAAO,CACR,CAAC,EACF,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,YAAY,CACtD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,EAChC,WAAW,CAAC,KAAK,CAAC,EAClB,OAAO,CACR,CAAC,EACF,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,SAAS,CACrF,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,EACjC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EACrC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,EACrC,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,EAC/C,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,EAC/C,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,EAC7C,OAAO,CACR,CAAC,EACF,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,UAAU,CAClF,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EACjC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,EACrC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,EAC1C,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,aAAa,EAC3C,eAAe,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC,EAClD,eAAe,CAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC,EAChD,eAAe,CAAC,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC,EACnD,OAAO,CACR,CAAC,EACF,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,SAAS,CAChF,gBAAgB,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,EAC/C,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,EAC/C,OAAO,CACR,CAAC,EACF,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QAC1C,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE;YAC7E,MAAM,IAAI,GAAG,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,SAAS,CAAC;YAC9D,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,oBAAoB,CACrC,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,IAAI,EAAE,EAC1C,IAAI,EACJ,cAAc,EACd,MAAM,EACN,gBAAgB,CACjB,CAAC;YACF,MAAM,IAAI,cAAc,GAAG,CAAC,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,iBAAiB,CAC1B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,EAChC,UAAU,EACV,MAAM,EACN,UAAU,CAAC,KAAK,CAAC,EACjB,OAAO,CACR,CAAC;IACJ,CAAC,CAAC,EACF,mBAAmB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAC9D,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,EAChC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,QAAQ,EACxC,SAAS,CAAC,KAAK,CAAC,EAChB,OAAO,CACR,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,OAAyB,EAAE,IAAY;IACxD,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC;AAC3E,CAAC;AAED,SAAS,eAAe,CAAC,OAAyB,EAAE,IAAY,EAAE,QAAgB;IAChF,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrD,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAyB,EAAE,IAAY;IAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAyB,EAAE,IAAY,EAAE,QAAiB;IAClF,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;IACtD,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,GAAG,CAAC;AAC7E,CAAC;AAED,SAAS,UAAU,CAAC,KAAyB,EAAE,QAAQ,GAAsB,EAAE;IAC7E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,WAAW,CAAC,KAAyB;IAC5C,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,IAAI,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAyB;IACtD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,MAAM,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACtC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACjB,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAE,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,WAAW,CAAC,KAAmB;IACtC,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,KAAe;IACvC,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACvF,CAAC"}
|
|
1
|
+
{"version":3,"file":"raw3d.js","sourceRoot":"","sources":["../src/raw3d.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** Renderer-independent rigid transforms in native RAW3D coordinates. */
|
|
2
|
+
export type Raw3DVector3 = readonly [number, number, number];
|
|
3
|
+
export type Raw3DQuaternion = readonly [number, number, number, number];
|
|
4
|
+
export interface Raw3DRigidTransform {
|
|
5
|
+
readonly position: Raw3DVector3;
|
|
6
|
+
readonly quaternion: Raw3DQuaternion;
|
|
7
|
+
}
|
|
8
|
+
export declare function raw3DQuaternionFromRotation(rotation: readonly number[]): Raw3DQuaternion;
|
|
9
|
+
export declare function raw3DRotationFromQuaternion([x, y, z, w]: Raw3DQuaternion): Raw3DVector3;
|
|
10
|
+
/**
|
|
11
|
+
* Normalized dual-quaternion linear blending (DLB), independently implemented
|
|
12
|
+
* from Kavan et al., Dual Quaternions for Rigid Transformation Blending (2006).
|
|
13
|
+
* This follows a rigid screw path; unlike ScLERP its speed need not be constant.
|
|
14
|
+
*/
|
|
15
|
+
export declare function interpolateRaw3DDualQuaternion(start: Raw3DRigidTransform, end: Raw3DRigidTransform, fraction: number): Raw3DRigidTransform;
|
|
16
|
+
//# sourceMappingURL=rigid-interpolation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rigid-interpolation.d.ts","sourceRoot":"","sources":["../src/rigid-interpolation.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7D,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACxE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;CACtC;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,eAAe,CAOxF;AAED,wBAAgB,2BAA2B,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,eAAe,GAAG,YAAY,CAKpF;AASD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,GACrE,mBAAmB,CAsBrB"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export function raw3DQuaternionFromRotation(rotation) {
|
|
2
|
+
const [x, y, z] = [0, 1, 2].map(i => (rotation[i] ?? 0) / 2);
|
|
3
|
+
const a = Math.cos(x), b = Math.sin(x), c = Math.cos(y), d = Math.sin(y);
|
|
4
|
+
const e = Math.cos(z), f = Math.sin(z);
|
|
5
|
+
// Native yaw-pitch-roll corresponds to intrinsic YXZ.
|
|
6
|
+
return [b * c * e + a * d * f, a * d * e - b * c * f,
|
|
7
|
+
a * c * f - b * d * e, a * c * e + b * d * f];
|
|
8
|
+
}
|
|
9
|
+
export function raw3DRotationFromQuaternion([x, y, z, w]) {
|
|
10
|
+
const sine = Math.max(-1, Math.min(1, 2 * (x * w - y * z)));
|
|
11
|
+
return Math.abs(sine) < .9999999
|
|
12
|
+
? [Math.asin(sine), Math.atan2(2 * (x * z + y * w), 1 - 2 * (x * x + y * y)), Math.atan2(2 * (x * y + z * w), 1 - 2 * (x * x + z * z))]
|
|
13
|
+
: [Math.asin(sine), Math.atan2(2 * (y * w - x * z), 1 - 2 * (y * y + z * z)), 0];
|
|
14
|
+
}
|
|
15
|
+
function multiply(a, b) {
|
|
16
|
+
return [a[3] * b[0] + a[0] * b[3] + a[1] * b[2] - a[2] * b[1],
|
|
17
|
+
a[3] * b[1] - a[0] * b[2] + a[1] * b[3] + a[2] * b[0],
|
|
18
|
+
a[3] * b[2] + a[0] * b[1] - a[1] * b[0] + a[2] * b[3],
|
|
19
|
+
a[3] * b[3] - a[0] * b[0] - a[1] * b[1] - a[2] * b[2]];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Normalized dual-quaternion linear blending (DLB), independently implemented
|
|
23
|
+
* from Kavan et al., Dual Quaternions for Rigid Transformation Blending (2006).
|
|
24
|
+
* This follows a rigid screw path; unlike ScLERP its speed need not be constant.
|
|
25
|
+
*/
|
|
26
|
+
export function interpolateRaw3DDualQuaternion(start, end, fraction) {
|
|
27
|
+
if (!Number.isFinite(fraction))
|
|
28
|
+
throw new RangeError("Interpolation fraction must be finite.");
|
|
29
|
+
const t = Math.max(0, Math.min(1, fraction));
|
|
30
|
+
const normalize = (q) => {
|
|
31
|
+
const length = Math.hypot(...q);
|
|
32
|
+
if (!Number.isFinite(length) || length < 1e-12)
|
|
33
|
+
throw new RangeError("A rigid transform needs a finite nonzero quaternion.");
|
|
34
|
+
return q.map(v => v / length);
|
|
35
|
+
};
|
|
36
|
+
const a = normalize(start.quaternion), b = normalize(end.quaternion);
|
|
37
|
+
if (![...start.position, ...end.position].every(Number.isFinite))
|
|
38
|
+
throw new RangeError("Rigid transform positions must be finite.");
|
|
39
|
+
const ad = multiply([...start.position, 0], a), bd = multiply([...end.position, 0], b);
|
|
40
|
+
// q and -q describe the same pose. Align both real and dual parts together.
|
|
41
|
+
const sign = a.reduce((sum, value, i) => sum + value * b[i], 0) < 0 ? -1 : 1;
|
|
42
|
+
const real = a.map((value, i) => (1 - t) * value + t * sign * b[i]);
|
|
43
|
+
const dual = ad.map((value, i) => ((1 - t) * value + t * sign * bd[i]) / 2);
|
|
44
|
+
const length = Math.hypot(...real);
|
|
45
|
+
const q = real.map(v => v / length);
|
|
46
|
+
const d = dual.map(v => v / length);
|
|
47
|
+
const projection = q.reduce((sum, value, i) => sum + value * d[i], 0);
|
|
48
|
+
const orthogonal = d.map((value, i) => value - projection * q[i]);
|
|
49
|
+
const translation = multiply(orthogonal, [-q[0], -q[1], -q[2], q[3]]);
|
|
50
|
+
return { position: [2 * translation[0], 2 * translation[1], 2 * translation[2]], quaternion: q };
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=rigid-interpolation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rigid-interpolation.js","sourceRoot":"","sources":["../src/rigid-interpolation.ts"],"names":[],"mappings":"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"}
|