@gjsify/example-dom-three-loader-ldraw 0.1.7 → 0.38.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 +78 -0
- package/dist/browser.js +8628 -33688
- package/dist/gjs.js +3967 -47953
- package/dist/gjs.node.mjs +4381 -0
- package/dist/index.html +1 -0
- package/dist/webgl.css +7 -32
- package/package.json +51 -21
- package/src/assets/models/ldraw/officialLibrary/CAlicense.txt +248 -0
- package/src/assets/models/ldraw/officialLibrary/CAreadme.txt +81 -0
- package/src/assets/models/ldraw/officialLibrary/Readme.txt +125 -0
- package/src/assets/models/ldraw/officialLibrary/models/10174-1-ImperialAT-ST-UCS.mpd_Packed.mpd +32672 -0
- package/src/assets/models/ldraw/officialLibrary/models/1621-1-LunarMPVVehicle.mpd_Packed.mpd +12465 -0
- package/src/assets/models/ldraw/officialLibrary/models/30023-1-Lighthouse.ldr_Packed.mpd +4364 -0
- package/src/assets/models/ldraw/officialLibrary/models/30051-1-X-wingFighter-Mini.mpd_Packed.mpd +4500 -0
- package/src/assets/models/ldraw/officialLibrary/models/30054-1-AT-ST-Mini.mpd_Packed.mpd +6449 -0
- package/src/assets/models/ldraw/officialLibrary/models/4489-1-AT-AT-Mini.mpd_Packed.mpd +7242 -0
- package/src/assets/models/ldraw/officialLibrary/models/4494-1-Imperial Shuttle-Mini.mpd_Packed.mpd +5530 -0
- package/src/assets/models/ldraw/officialLibrary/models/4838-1-MiniVehicles.mpd_Packed.mpd +4880 -0
- package/src/assets/models/ldraw/officialLibrary/models/4915-1-MiniConstruction.mpd_Packed.mpd +6481 -0
- package/src/assets/models/ldraw/officialLibrary/models/4918-1-MiniFlyers.mpd_Packed.mpd +5518 -0
- package/src/assets/models/ldraw/officialLibrary/models/5935-1-IslandHopper.mpd_Packed.mpd +17313 -0
- package/src/assets/models/ldraw/officialLibrary/models/6965-1-TIEIntercep_4h4MXk5.mpd_Packed.mpd +2839 -0
- package/src/assets/models/ldraw/officialLibrary/models/6966-1-JediStarfighter-Mini.mpd_Packed.mpd +4087 -0
- package/src/assets/models/ldraw/officialLibrary/models/7140-1-X-wingFighter.mpd_Packed.mpd +28548 -0
- package/src/assets/models/ldraw/officialLibrary/models/889-1-RadarTruck.mpd_Packed.mpd +8429 -0
- package/src/assets/models/ldraw/officialLibrary/models/car.ldr_Packed.mpd +5969 -0
- package/src/browser/browser-main.ts +4 -0
- package/src/browser/browser.ts +199 -0
- package/src/browser/index.html +11 -0
- package/src/browser/webgl.css +28 -0
- package/src/gjs/gjs.ts +31 -0
- package/src/gjs/ldraw-window.blp +87 -0
- package/src/gjs/ldraw-window.ts +132 -0
- package/src/models.ts +28 -0
- package/src/three-demo.ts +242 -0
- package/dist/adwaita-sans-400-VCQV646T.ttf +0 -0
- package/dist/browser.css +0 -10
package/README.md
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# @gjsify/example-dom-three-loader-ldraw
|
|
2
|
+
|
|
3
|
+
A three.js LDraw showcase running on GJS/GTK (via `@gjsify/webgl`'s `WebGLBridge` over `Gtk.GLArea`) and in the browser — from a shared `start(canvas)` entry point. Ported from [`three/examples/webgl_loader_ldraw`](https://threejs.org/examples/#webgl_loader_ldraw). The GJS variant renders inside a native Adwaita window; the browser variant uses `@gjsify/adwaita-web` components.
|
|
4
|
+
|
|
5
|
+
Sixteen LDraw models ship with the package; pick one from the sidebar and step through its building instructions.
|
|
6
|
+
|
|
7
|
+
Part of the [gjsify](https://github.com/gjsify/gjsify) project — Node.js and Web APIs for GJS (GNOME JavaScript).
|
|
8
|
+
|
|
9
|
+
## Targets
|
|
10
|
+
|
|
11
|
+
| Target | Bundle | Platform glue |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| GJS / GTK 4 | `dist/gjs.js` (`--app gjs`) | `@gjsify/webgl` `WebGLBridge` → `Gtk.GLArea` + libepoxy |
|
|
14
|
+
| Node · Bun · Deno | `dist/gjs.node.mjs` (`--app node`) | the same GTK window through the `@gjsify/node-gi` reverse bridge |
|
|
15
|
+
| Browser | `dist/browser.js` (`--app browser`) | a real `<canvas>` + `@gjsify/adwaita-web` |
|
|
16
|
+
|
|
17
|
+
Every target enters the same `start(canvas)` seam in `src/three-demo.ts` — only the shell around the canvas differs.
|
|
18
|
+
|
|
19
|
+
## Prerequisites
|
|
20
|
+
|
|
21
|
+
GJS ≥ 1.86 with GTK 4 and a working GL/GLES driver. `gjsify system-check` reports what is missing.
|
|
22
|
+
|
|
23
|
+
## Run
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Build first (gjs + node + browser bundles and the assets)
|
|
27
|
+
gjsify run build
|
|
28
|
+
|
|
29
|
+
# GJS / GTK4 native window (WebGL via Gtk.GLArea)
|
|
30
|
+
gjsify showcase three-loader-ldraw
|
|
31
|
+
# or: gjsify run start
|
|
32
|
+
|
|
33
|
+
# The same --app node bundle on Node.js / Bun / Deno
|
|
34
|
+
gjsify showcase three-loader-ldraw --runtime node # or: bun | deno
|
|
35
|
+
# or: gjsify run start:node
|
|
36
|
+
|
|
37
|
+
# Browser (serves dist/ on localhost:8080)
|
|
38
|
+
gjsify run start:browser
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## What it demonstrates
|
|
42
|
+
|
|
43
|
+
- WebGL rendering on GJS via `@gjsify/webgl` (Vala bridge over `Gtk.GLArea` + libepoxy)
|
|
44
|
+
- three.js (`THREE.WebGLRenderer`) running unmodified on GJS — `LDrawLoader`, `LDrawUtils`, `OrbitControls` and `LDrawConditionalLineMaterial` straight from `three/addons`
|
|
45
|
+
- **A scene that arrives from disk, not from code** — the first showcase here whose
|
|
46
|
+
geometry is fetched: `LDrawLoader` streams a packed `.mpd` through `fetch` and
|
|
47
|
+
`Response.body`, then parses ~250 KB of LDraw commands into 62 meshes and 124
|
|
48
|
+
line objects before the first frame
|
|
49
|
+
- Instanced drawing (`drawElementsInstanced`) and WebGL2 sized internal formats
|
|
50
|
+
- Shared `start(canvas)` pattern — identical entry for GJS, Node and browser
|
|
51
|
+
- Adwaita design language in both variants (native `Adw.*` widgets on GJS, `@gjsify/adwaita-web` in the browser)
|
|
52
|
+
- Live two-way controls over the running scene: model, flat colours, geometry merging, smooth normals, building step and the two line layers — `Adw.ComboRow` / `Adw.SwitchRow` / `Adw.SpinRow` in a sidebar on GJS, the same set as web components in the browser
|
|
53
|
+
- `gjsify build --app gjs`, `--app node` and `--app browser` from one source tree
|
|
54
|
+
|
|
55
|
+
## Layout
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
src/
|
|
59
|
+
three-demo.ts shared start(canvas) — the whole demo, platform-agnostic
|
|
60
|
+
models.ts the model catalog both shells read
|
|
61
|
+
gjs/ Adw.Application + ldraw-window.blp (Blueprint UI)
|
|
62
|
+
browser/ adwaita-web shell + index.html + webgl.css
|
|
63
|
+
assets/ packed LDraw models (LDraw Parts Library, CC BY 2.0)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
`src/assets/models/ldraw/officialLibrary/` carries the models' own `CAlicense.txt`
|
|
67
|
+
and `CAreadme.txt`; they are shipped as npm assets via `exports['./assets/*']`.
|
|
68
|
+
|
|
69
|
+
## Related
|
|
70
|
+
|
|
71
|
+
- [`@gjsify/webgl`](../../../packages/framework/webgl) — the `WebGLBridge` implementation this exercises
|
|
72
|
+
- [`@gjsify/fetch`](../../../packages/web/fetch) — where the model bytes come from
|
|
73
|
+
- [`@gjsify/adwaita-web`](../../../packages/web/adwaita-web) — the Adwaita web components of the browser variant
|
|
74
|
+
- [`three-geometry-teapot`](../three-geometry-teapot) — the same seam with geometry built in code instead of loaded
|
|
75
|
+
|
|
76
|
+
## License
|
|
77
|
+
|
|
78
|
+
MIT
|