feat(assets): fünf Waffen aus dem Pack als GLB mit WebP und meshopt
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e97ef14f78
commit
2a60f92539
8 files changed
+152
-1
No files matched your search
@@ -0,0 +1,26 @@
|
||||
// three.js' FBXLoader läuft auch in Node, braucht dafür aber Browser-Platzhalter: `self` und `window` für den
|
||||
// Loader-Code, `document.createElementNS` für die Bilder, die sein TextureLoader zu referenzierten Texturen anlegt.
|
||||
// Diese Bilder laden nie, das schadet nicht: tools/assets/weapons.mjs baut die Materialien selbst.
|
||||
// Nur die Umbau-Skripte importieren diese Datei, und zwar erst in main() — Tests sollen die Platzhalter nie sehen.
|
||||
import { readFile } from "node:fs/promises";
|
||||
|
||||
globalThis.self ??= globalThis;
|
||||
globalThis.window ??= globalThis;
|
||||
globalThis.document ??= {
|
||||
createElementNS: () => ({ style: {}, setAttribute() {}, addEventListener() {}, removeEventListener() {} }),
|
||||
};
|
||||
const { FBXLoader } = await import("three/examples/jsm/loaders/FBXLoader.js");
|
||||
|
||||
/** Liest eine FBX-Datei. Die Warnung zu den orthografischen Producer-Kameras von MotionBuilder wird verschluckt. */
|
||||
export async function loadFbx(path) {
|
||||
const bytes = await readFile(path);
|
||||
const warn = console.warn;
|
||||
console.warn = (...args) => {
|
||||
if (!String(args[0]).includes("Orthographic cameras")) warn(...args);
|
||||
};
|
||||
try {
|
||||
return new FBXLoader().parse(bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength), "");
|
||||
} finally {
|
||||
console.warn = warn;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user