@jfk-solutions/demo3d-file-format 1.8.0 → 1.10.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 +225 -0
- package/dist/examples/export-embedded-viewer-standalone.html +1 -1
- package/dist/examples/three-render-smoke-standalone.html +295 -231
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/model.d.ts +1 -0
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +6 -0
- package/dist/model.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 +77 -2
- package/dist/raw3d.d.ts.map +1 -1
- package/dist/raw3d.js +103 -7
- 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 +2 -1
- package/dist/three/index.d.ts.map +1 -1
- package/dist/three/index.js +72 -14
- 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/raw3d.d.ts +25 -0
- package/dist/three/raw3d.d.ts.map +1 -1
- package/dist/three/raw3d.js +404 -16
- 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/package.json +1 -1
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
const mappings = {
|
|
2
|
+
UserData: ["node", "userData", "string"], ClientOwner: ["node", "clientOwner", "string"],
|
|
3
|
+
IsBillboard: ["node", "isBillboard", "boolean"], IsDecal: ["node", "isDecal", "boolean"],
|
|
4
|
+
H: ["node", "highlight", "integer"], Optimized: ["node", "hasBeenOptimized", "boolean"],
|
|
5
|
+
LightType: ["light", "type", "integer"], LightEnabled: ["light", "enabled", "boolean"],
|
|
6
|
+
LightAR: ["light", "attenuationRange", "number"], LightAC: ["light", "attenuationConstant", "number"],
|
|
7
|
+
LightAL: ["light", "attenuationLinear", "number"], LightAQ: ["light", "attenuationQuadratic", "number"],
|
|
8
|
+
LightSF: ["light", "spotlightFalloff", "number"], LightSIA: ["light", "spotlightInnerAngle", "number"],
|
|
9
|
+
LightSOA: ["light", "spotlightOuterAngle", "number"], LightCS: ["light", "castsShadows", "boolean"],
|
|
10
|
+
LightMaterial: ["light", "material:Diffuse", "hex"],
|
|
11
|
+
SceneShowDefaultFloor: ["scene", "showDefaultFloor", "boolean"],
|
|
12
|
+
SceneAllowTeleportOnDefaultFloor: ["scene", "allowTeleportOnDefaultFloor", "boolean"],
|
|
13
|
+
SceneUseDefaultLighting: ["scene", "useDefaultLighting", "boolean"],
|
|
14
|
+
ALR: ["scene", "ambient:0", "number"], ALG: ["scene", "ambient:1", "number"], ALB: ["scene", "ambient:2", "number"],
|
|
15
|
+
UIVisible: ["ui", "visible", "boolean"], UIChecked: ["ui", "checked", "boolean"],
|
|
16
|
+
UpdateUIVisible: ["ui", "visible", "boolean"], UpdateUIChecked: ["ui", "checked", "boolean"]
|
|
17
|
+
};
|
|
18
|
+
export const isRaw3DEffectChannel = (kind) => kind in mappings;
|
|
19
|
+
const attribute = (xml, name) => xml.attributes.find(a => a.localName === name)?.value;
|
|
20
|
+
const tokens = (value) => value.trim().split(/\s+/).filter(Boolean);
|
|
21
|
+
/** Native non-transform updates, independent of presentation and interaction. */
|
|
22
|
+
export class Raw3DEffects {
|
|
23
|
+
project;
|
|
24
|
+
tracks;
|
|
25
|
+
warnings;
|
|
26
|
+
constructor(project, options = {}) {
|
|
27
|
+
this.project = project;
|
|
28
|
+
const tracks = [], warnings = [];
|
|
29
|
+
const targets = {
|
|
30
|
+
node: new Set(project.nodes.map(node => node.index)),
|
|
31
|
+
light: new Set(project.lights.map((light, index) => light.index ?? index)),
|
|
32
|
+
ui: new Set(project.buttons.map(button => button.index)), scene: new Set([0])
|
|
33
|
+
};
|
|
34
|
+
for (const xml of project.root.child("Updates")?.children ?? []) {
|
|
35
|
+
const mapping = mappings[xml.localName];
|
|
36
|
+
if (!mapping)
|
|
37
|
+
continue;
|
|
38
|
+
const [target, initialProperty, format] = mapping;
|
|
39
|
+
const index = target === "scene" ? 0 : Number(attribute(xml, { node: "Node", light: "Light", ui: "UIButton" }[target]) ?? NaN);
|
|
40
|
+
if (!Number.isInteger(index) || !targets[target].has(index))
|
|
41
|
+
throw new Error(`Invalid RAW3D ${xml.localName} target ${index}.`);
|
|
42
|
+
const times = tokens(attribute(xml, "Time") ?? "").map(Number);
|
|
43
|
+
if (!times.length || times.some((time, i) => !Number.isFinite(time) || time < 0 || (i > 0 && time < times[i - 1])))
|
|
44
|
+
throw new Error(`Invalid RAW3D ${xml.localName} times.`);
|
|
45
|
+
const encoded = attribute(xml, "Value") ?? "";
|
|
46
|
+
let raw = format === "string" && times.length === 1 ? [encoded] : tokens(encoded);
|
|
47
|
+
if (format === "string") {
|
|
48
|
+
const explicit = xml.child("Values")?.childrenNamed("Value").map(value => value.text);
|
|
49
|
+
let resolved = explicit ?? options.resolveStringKeys?.({ xml, nodeIndex: index, property: initialProperty, times, encoded });
|
|
50
|
+
if (attribute(xml, "ValueEncoding") === "json" && !explicit && !resolved)
|
|
51
|
+
resolved = JSON.parse(encoded);
|
|
52
|
+
if (resolved !== undefined) {
|
|
53
|
+
if (!Array.isArray(resolved) || resolved.length !== times.length || !resolved.every(value => typeof value === "string"))
|
|
54
|
+
throw new Error(`Invalid resolved RAW3D ${xml.localName} string keys.`);
|
|
55
|
+
raw = resolved;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (format === "string" && raw.length !== times.length) {
|
|
59
|
+
warnings.push({ code: "RAW3D_STRING_KEYS_AMBIGUOUS", message: `RAW3D ${xml.localName} string boundaries cannot be recovered from the native space-separated Value attribute.`, xml });
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
const values = raw.map(value => {
|
|
63
|
+
if (format === "string")
|
|
64
|
+
return value;
|
|
65
|
+
if (format === "boolean") {
|
|
66
|
+
if (!/^(true|false|0|1)$/i.test(value))
|
|
67
|
+
throw new Error(`Invalid RAW3D ${xml.localName} boolean.`);
|
|
68
|
+
return /^(true|1)$/i.test(value);
|
|
69
|
+
}
|
|
70
|
+
if (format === "hex" && !/^(?:0x)?[a-f\d]{1,8}$/i.test(value))
|
|
71
|
+
throw new Error(`Invalid RAW3D ${xml.localName} ARGB value.`);
|
|
72
|
+
const number = format === "hex" ? Number.parseInt(value.replace(/^0x/i, ""), 16) : Number(value);
|
|
73
|
+
if (!Number.isFinite(number) || (format === "integer" && !Number.isInteger(number)))
|
|
74
|
+
throw new Error(`Invalid RAW3D ${xml.localName} value.`);
|
|
75
|
+
return number;
|
|
76
|
+
});
|
|
77
|
+
if (values.length !== times.length)
|
|
78
|
+
throw new Error(`Invalid RAW3D ${xml.localName} value count.`);
|
|
79
|
+
tracks.push({ kind: xml.localName, target, index, property: initialProperty, times, values, xml });
|
|
80
|
+
}
|
|
81
|
+
this.tracks = tracks;
|
|
82
|
+
this.warnings = warnings;
|
|
83
|
+
}
|
|
84
|
+
sampleNode(index, time) {
|
|
85
|
+
const state = {};
|
|
86
|
+
for (const track of this.tracks)
|
|
87
|
+
if (track.target === "node" && track.index === index) {
|
|
88
|
+
const value = sample(track, time);
|
|
89
|
+
if (value !== undefined)
|
|
90
|
+
state[track.property] = value;
|
|
91
|
+
}
|
|
92
|
+
return state;
|
|
93
|
+
}
|
|
94
|
+
sample(time) {
|
|
95
|
+
if (!Number.isFinite(time))
|
|
96
|
+
throw new RangeError("Animation time must be finite.");
|
|
97
|
+
time = Math.max(0, time);
|
|
98
|
+
const lights = new Map(this.project.lights.map((light, index) => [light.index ?? index, {
|
|
99
|
+
enabled: light.enabled, type: { ambient: 0, point: 1, spot: 2, directional: 3 }[light.type.toLowerCase()] ?? Number(light.type),
|
|
100
|
+
attenuationRange: light.attenuationRange, attenuationConstant: light.attenuationConstant,
|
|
101
|
+
attenuationLinear: light.attenuationLinear, attenuationQuadratic: light.attenuationQuadratic,
|
|
102
|
+
spotlightFalloff: light.spotlightFalloff, spotlightInnerAngle: light.spotlightInnerAngle, spotlightOuterAngle: light.spotlightOuterAngle,
|
|
103
|
+
castsShadows: light.castsShadows, materialProperties: {}
|
|
104
|
+
}]));
|
|
105
|
+
const buttons = new Map(this.project.buttons.map(button => [button.index, { name: button.name, id: button.id, visible: button.visible, checked: button.checked }]));
|
|
106
|
+
const properties = this.project.sceneProperties;
|
|
107
|
+
const scene = {
|
|
108
|
+
showDefaultFloor: properties?.showDefaultFloor ?? true,
|
|
109
|
+
allowTeleportOnDefaultFloor: properties?.allowTeleportOnDefaultFloor ?? true,
|
|
110
|
+
useDefaultLighting: properties?.useDefaultLighting ?? true,
|
|
111
|
+
ambientLightColor: [0, 1, 2].map(i => properties?.ambientLightColor[i] ?? 0)
|
|
112
|
+
};
|
|
113
|
+
for (const track of this.tracks) {
|
|
114
|
+
if (track.target === "node")
|
|
115
|
+
continue;
|
|
116
|
+
const value = sample(track, time);
|
|
117
|
+
if (value === undefined)
|
|
118
|
+
continue;
|
|
119
|
+
if (track.target === "light") {
|
|
120
|
+
const state = lights.get(track.index);
|
|
121
|
+
if (track.property.startsWith("material:"))
|
|
122
|
+
state.materialProperties[track.property.slice(9)] = Number(value);
|
|
123
|
+
else
|
|
124
|
+
Object.assign(state, { [track.property]: value });
|
|
125
|
+
}
|
|
126
|
+
else if (track.target === "ui")
|
|
127
|
+
Object.assign(buttons.get(track.index), { [track.property]: value });
|
|
128
|
+
else if (track.property.startsWith("ambient:"))
|
|
129
|
+
scene.ambientLightColor[Number(track.property.slice(8))] = Number(value);
|
|
130
|
+
else
|
|
131
|
+
Object.assign(scene, { [track.property]: value });
|
|
132
|
+
}
|
|
133
|
+
return { lights, buttons, scene };
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/** Native distance/cone attenuation, usable by renderers other than Three.js. */
|
|
137
|
+
export function evaluateRaw3DLightAttenuation(light, distance, cosine = 1) {
|
|
138
|
+
if (!Number.isFinite(distance) || distance < 0 || !Number.isFinite(cosine))
|
|
139
|
+
throw new RangeError("Light distance and cone cosine must be finite.");
|
|
140
|
+
if (light.type === 3 || light.type === 0)
|
|
141
|
+
return 1;
|
|
142
|
+
if (light.attenuationRange > 0 && distance > light.attenuationRange)
|
|
143
|
+
return 0;
|
|
144
|
+
let attenuation = 1 / Math.max(.000001, light.attenuationConstant + distance * light.attenuationLinear + distance * distance * light.attenuationQuadratic);
|
|
145
|
+
if (light.type === 2) {
|
|
146
|
+
const inner = Math.cos(light.spotlightInnerAngle / 2), outer = Math.cos(light.spotlightOuterAngle / 2);
|
|
147
|
+
if (cosine < outer)
|
|
148
|
+
return 0;
|
|
149
|
+
const factor = inner - outer > .000001 ? Math.max(0, Math.min(1, (cosine - outer) / (inner - outer))) : cosine >= outer ? 1 : 0;
|
|
150
|
+
attenuation *= Math.pow(factor, Math.max(.000001, light.spotlightFalloff));
|
|
151
|
+
}
|
|
152
|
+
return attenuation;
|
|
153
|
+
}
|
|
154
|
+
function sample(track, time) {
|
|
155
|
+
if (time < track.times[0])
|
|
156
|
+
return undefined;
|
|
157
|
+
let low = 0, high = track.times.length;
|
|
158
|
+
while (low < high) {
|
|
159
|
+
const middle = (low + high) >>> 1;
|
|
160
|
+
if (track.times[middle] <= time)
|
|
161
|
+
low = middle + 1;
|
|
162
|
+
else
|
|
163
|
+
high = middle;
|
|
164
|
+
}
|
|
165
|
+
const i = low - 1, current = track.values[i];
|
|
166
|
+
const next = track.values[i + 1];
|
|
167
|
+
if (typeof current === "number" && typeof next === "number" && (track.property.startsWith("attenuation") || track.property.startsWith("spotlight") || track.property.startsWith("ambient:"))) {
|
|
168
|
+
return current + (next - current) * (time - track.times[i]) / (track.times[i + 1] - track.times[i]);
|
|
169
|
+
}
|
|
170
|
+
return current;
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=raw3d-effects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw3d-effects.js","sourceRoot":"","sources":["../src/raw3d-effects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Raw3DMesh, Raw3DProject } from "./raw3d.js";
|
|
2
|
+
export interface Raw3DSkinInfluence {
|
|
3
|
+
readonly boneIndex: number;
|
|
4
|
+
readonly weight: number;
|
|
5
|
+
}
|
|
6
|
+
/** Decode the native per-bone vertex-index and float-weight buffers without a renderer. */
|
|
7
|
+
export declare function decodeRaw3DSkinInfluences(mesh: Raw3DMesh, project: Raw3DProject): readonly (readonly Raw3DSkinInfluence[])[];
|
|
8
|
+
//# sourceMappingURL=raw3d-skinning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw3d-skinning.d.ts","sourceRoot":"","sources":["../src/raw3d-skinning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IAAG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAE3F,2FAA2F;AAC3F,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,GAAG,SAAS,CAAC,SAAS,kBAAkB,EAAE,CAAC,EAAE,CA2B5H"}
|
|
@@ -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,6 +74,17 @@ 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;
|
|
@@ -75,6 +105,12 @@ export declare class Raw3DLight {
|
|
|
75
105
|
readonly attenuationLinear: number;
|
|
76
106
|
readonly attenuationQuadratic: number;
|
|
77
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;
|
|
78
114
|
constructor(nodeIndex: number | undefined, materialIndex: number | undefined, enabled: boolean, type: string, attenuationConstant: number, attenuationLinear: number, attenuationQuadratic: number, xml: Demo3DXmlElement);
|
|
79
115
|
}
|
|
80
116
|
export declare class Raw3DVertexAttribute {
|
|
@@ -100,16 +136,48 @@ export declare class Raw3DIndexBuffer {
|
|
|
100
136
|
readonly xml: Demo3DXmlElement;
|
|
101
137
|
constructor(path: string, format: string, data: Uint8Array | undefined, xml: Demo3DXmlElement);
|
|
102
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
|
+
}
|
|
103
159
|
export declare class Raw3DMesh {
|
|
104
160
|
readonly vertexBufferIndex: number;
|
|
105
161
|
readonly indexBufferIndices: readonly number[];
|
|
106
162
|
/** The primitive topology. Omitted by RAW3D means TriangleList. */
|
|
107
163
|
readonly meshType: string;
|
|
108
164
|
readonly xml: Demo3DXmlElement;
|
|
165
|
+
get bones(): readonly Raw3DBone[];
|
|
109
166
|
constructor(vertexBufferIndex: number, indexBufferIndices: readonly number[],
|
|
110
167
|
/** The primitive topology. Omitted by RAW3D means TriangleList. */
|
|
111
168
|
meshType: string, xml: Demo3DXmlElement);
|
|
112
169
|
}
|
|
170
|
+
export declare class Raw3DSceneProperties {
|
|
171
|
+
readonly xml: Demo3DXmlElement;
|
|
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;
|
|
180
|
+
}
|
|
113
181
|
export declare class Raw3DProject {
|
|
114
182
|
readonly root: Demo3DXmlElement;
|
|
115
183
|
readonly origin: string | undefined;
|
|
@@ -123,7 +191,14 @@ export declare class Raw3DProject {
|
|
|
123
191
|
readonly meshes: readonly Raw3DMesh[];
|
|
124
192
|
readonly vertexBuffers: readonly Raw3DVertexBuffer[];
|
|
125
193
|
readonly indexBuffers: readonly Raw3DIndexBuffer[];
|
|
126
|
-
|
|
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[]);
|
|
127
202
|
}
|
|
128
203
|
export declare class Raw3DPackage {
|
|
129
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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"}
|