@needle-tools/gltf-progressive 1.2.14 → 1.2.15
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/CHANGELOG.md +166 -163
- package/README.md +131 -133
- package/examples/modelviewer-multiple.html +124 -124
- package/examples/modelviewer.html +32 -32
- package/examples/react-three-fiber/.prettierrc +9 -9
- package/examples/react-three-fiber/index.html +23 -23
- package/examples/react-three-fiber/package-lock.json +4023 -4023
- package/examples/react-three-fiber/package.json +34 -34
- package/examples/react-three-fiber/tsconfig.json +21 -21
- package/examples/react-three-fiber/vite.config.js +38 -38
- package/examples/threejs/index.html +50 -50
- package/examples/threejs/main.js +181 -181
- package/gltf-progressive.js +2 -0
- package/gltf-progressive.min.js +1 -1
- package/gltf-progressive.umd.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/loaders.d.ts +2 -2
- package/lib/utils.internal.js +2 -0
- package/lib/version.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,164 +1,167 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
All notable changes to this package will be documented in this file.
|
|
3
|
-
|
|
4
|
-
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
|
5
|
-
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
6
|
-
|
|
7
|
-
## [1.2.
|
|
8
|
-
-
|
|
9
|
-
|
|
10
|
-
## [1.2.
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
## [1.2.
|
|
18
|
-
- Fix:
|
|
19
|
-
|
|
20
|
-
## [1.2.
|
|
21
|
-
- Fix:
|
|
22
|
-
|
|
23
|
-
## [1.2.
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
## [1.2.
|
|
27
|
-
-
|
|
28
|
-
|
|
29
|
-
## [1.2.
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
## [1.2.5
|
|
33
|
-
-
|
|
34
|
-
|
|
35
|
-
## [1.2.
|
|
36
|
-
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
## [1.2.
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
## [1.2.3-
|
|
46
|
-
- Add:
|
|
47
|
-
|
|
48
|
-
## [1.2.3-alpha.
|
|
49
|
-
-
|
|
50
|
-
|
|
51
|
-
## [1.2.3-alpha.
|
|
52
|
-
-
|
|
53
|
-
|
|
54
|
-
## [1.2.3-alpha] - 2023-06-
|
|
55
|
-
-
|
|
56
|
-
|
|
57
|
-
## [1.2.
|
|
58
|
-
-
|
|
59
|
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
## [1.2.1-alpha.
|
|
68
|
-
-
|
|
69
|
-
|
|
70
|
-
## [1.2.1-alpha.
|
|
71
|
-
-
|
|
72
|
-
|
|
73
|
-
-
|
|
74
|
-
- fix:
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
- fix:
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
- fix:
|
|
82
|
-
|
|
83
|
-
## [1.2.0-alpha.
|
|
84
|
-
- fix:
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
//
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
- fix:
|
|
110
|
-
|
|
111
|
-
## [1.1.0-alpha] - 2023-06-
|
|
112
|
-
-
|
|
113
|
-
|
|
114
|
-
-
|
|
115
|
-
-
|
|
116
|
-
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
-
|
|
120
|
-
|
|
121
|
-
## [1.0.0-alpha.
|
|
122
|
-
-
|
|
123
|
-
|
|
124
|
-
## [1.0.0-alpha.
|
|
125
|
-
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
-
|
|
130
|
-
|
|
131
|
-
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
-
|
|
135
|
-
|
|
136
|
-
## [1.0.0-alpha.13] - 2023-05-24
|
|
137
|
-
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
- fix:
|
|
142
|
-
|
|
143
|
-
## [1.0.0-alpha.
|
|
144
|
-
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
- fix:
|
|
149
|
-
|
|
150
|
-
## [1.0.0-alpha.
|
|
151
|
-
- fix:
|
|
152
|
-
|
|
153
|
-
## [1.0.0-alpha.
|
|
154
|
-
- fix: handle
|
|
155
|
-
|
|
156
|
-
## [1.0.0-alpha.
|
|
157
|
-
- fix:
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
-
|
|
162
|
-
|
|
163
|
-
## [1.0.0-alpha.
|
|
1
|
+
# Changelog
|
|
2
|
+
All notable changes to this package will be documented in this file.
|
|
3
|
+
|
|
4
|
+
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
|
5
|
+
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
## [1.2.15] - 2024-10-21
|
|
8
|
+
- Fix: internal window parameter access causing issue with SSR
|
|
9
|
+
|
|
10
|
+
## [1.2.13] - 2024-10-06
|
|
11
|
+
- Update README
|
|
12
|
+
|
|
13
|
+
## [1.2.12] - 2024-09-23
|
|
14
|
+
- Add: `assignTextureLOD` now also accepts mesh as parameter
|
|
15
|
+
- Change: improved `assignTextureLOD` typing
|
|
16
|
+
|
|
17
|
+
## [1.2.11] - 2024-09-11
|
|
18
|
+
- Fix: draco and KTX decoder path handling when gstatic can not be reached and user set path
|
|
19
|
+
|
|
20
|
+
## [1.2.10] - 2024-09-10
|
|
21
|
+
- Fix: loading and assigning texture LOD for ShaderMaterial and RawShaderMaterial
|
|
22
|
+
|
|
23
|
+
## [1.2.9] - 2024-07-29
|
|
24
|
+
- Fix: server side rendering fixes
|
|
25
|
+
|
|
26
|
+
## [1.2.8] - 2023-07-19
|
|
27
|
+
- Add: repository url
|
|
28
|
+
|
|
29
|
+
## [1.2.7] - 2023-07-18
|
|
30
|
+
- Fix: include `type: module`
|
|
31
|
+
|
|
32
|
+
## [1.2.5] - 2023-07-16
|
|
33
|
+
- Remove: Frustum cull check because we're already operating on the latest renderlist
|
|
34
|
+
|
|
35
|
+
## [1.2.5-beta] - 2023-07-09
|
|
36
|
+
- Change: Update skinned mesh bounding box every 30 frames using the lowres mesh version
|
|
37
|
+
|
|
38
|
+
## [1.2.4-beta.1] - 2023-07-09
|
|
39
|
+
- Add: LODsManager `manual` property which can be used to manually update the LODs in the scene by calling `LODsManager.update(scene, camera)`
|
|
40
|
+
- Fix: updating LODs in WebXR
|
|
41
|
+
|
|
42
|
+
## [1.2.4-beta] - 2023-07-05
|
|
43
|
+
- Change: `createLoaders` now returns created loaders and decoders to be re-used
|
|
44
|
+
|
|
45
|
+
## [1.2.3-beta] - 2023-07-04
|
|
46
|
+
- Add: support for transmissive objects
|
|
47
|
+
|
|
48
|
+
## [1.2.3-alpha.3] - 2023-07-01
|
|
49
|
+
- Add: prevent loading highres textures when user has enabled data-save mode
|
|
50
|
+
|
|
51
|
+
## [1.2.3-alpha.2] - 2023-06-27
|
|
52
|
+
- Fix: error caused by parser associations containing `undefined` value
|
|
53
|
+
|
|
54
|
+
## [1.2.3-alpha.1] - 2023-06-25
|
|
55
|
+
- Internal: rename `setRaycastMesh` to `registerRaycastMesh`
|
|
56
|
+
|
|
57
|
+
## [1.2.3-alpha] - 2023-06-24
|
|
58
|
+
- Change: automatically change LOD update interval based on framerate
|
|
59
|
+
|
|
60
|
+
## [1.2.2-alpha.4] - 2023-06-20
|
|
61
|
+
- Add: Register version in global "GLTF_PROGRESSIVE_VERSION" variable
|
|
62
|
+
- Add: `<model-viewer>` elements added document at any time are now properly registered
|
|
63
|
+
- Fix: LOD updates for multiple `<model-viewer>` elements
|
|
64
|
+
- Fix: Initial render tick for a few frames for `<model-viewer>` to trigger LOD updates when the model-viewer element is not animated or interacted with
|
|
65
|
+
- Change: `<model-viewer>` elements will fetch a slightly higher texture LOD
|
|
66
|
+
|
|
67
|
+
## [1.2.1-alpha.4] - 2023-06-19
|
|
68
|
+
- Fix: SkinnedMesh bounds calculation
|
|
69
|
+
|
|
70
|
+
## [1.2.1-alpha.3] - 2023-06-15
|
|
71
|
+
- update the README
|
|
72
|
+
|
|
73
|
+
## [1.2.1-alpha.2] - 2023-06-15
|
|
74
|
+
- fix: Ortographic camera causing LODs being falsely updated
|
|
75
|
+
- fix: regression introduced in 1.2.1-alpha
|
|
76
|
+
- fix: error when trying to load a LOD glTF directly
|
|
77
|
+
- fix: issues caused by instanceof in local development environments
|
|
78
|
+
|
|
79
|
+
## [1.2.0-alpha.9] - 2023-06-13
|
|
80
|
+
- fix: issue where skinned mesh matrix was falsely applied to calculate screen size
|
|
81
|
+
- fix: use bounding box from SkinnedMesh object
|
|
82
|
+
|
|
83
|
+
## [1.2.0-alpha.6] - 2023-06-12
|
|
84
|
+
- fix: minor bug where opened glTF has `NEEDLE_progressive` extension but no lods array because the glTF is a LOD variant
|
|
85
|
+
|
|
86
|
+
## [1.2.0-alpha.5] - 2023-06-10
|
|
87
|
+
- fix: safeguard when `registerMesh` or `registerTexture` are being called with invalid data
|
|
88
|
+
- examples: update vanilla threejs example
|
|
89
|
+
|
|
90
|
+
## [1.2.0-alpha.4] - 2023-06-07
|
|
91
|
+
- add: `useRaycastMeshes` method:
|
|
92
|
+
```ts
|
|
93
|
+
// call to enable raycasting with low poly raycast meshes
|
|
94
|
+
// this can be done once in your project
|
|
95
|
+
useRaycastMeshes(true);
|
|
96
|
+
|
|
97
|
+
// then use the raycaster as usual
|
|
98
|
+
const raycaster = new Raycaster();
|
|
99
|
+
raycaster.setFromCamera(mouse, camera);
|
|
100
|
+
const intersects = raycaster.intersectObjects(scene.children, true);
|
|
101
|
+
|
|
102
|
+
// call to disable raycasting with low polwy meshes
|
|
103
|
+
useRaycastMeshes(false);
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## [1.2.0-alpha.3] - 2023-06-06
|
|
107
|
+
- add: automatically load the highest LOD first to show a slightly better quality level as soon as possible
|
|
108
|
+
- fix: improve Texture LOD selection by taking LOD level height into account
|
|
109
|
+
- fix: correctly assign LOD level information to initially loaded texture
|
|
110
|
+
|
|
111
|
+
## [1.1.0-alpha.2] - 2023-06-05
|
|
112
|
+
- fix: register LOD information for meshes that don't have associations
|
|
113
|
+
|
|
114
|
+
## [1.1.0-alpha] - 2023-06-03
|
|
115
|
+
- add: loading of multiple texture LOD levels
|
|
116
|
+
- fix: issue where material LODs where not updated when the material was cloned
|
|
117
|
+
- change: clamp screen coverage when near plane intersects with the object bounds
|
|
118
|
+
- change: skip CubeCamera setup
|
|
119
|
+
- change: handle cases where an object has only texture LODs
|
|
120
|
+
|
|
121
|
+
## [1.0.0-alpha.19] - 2023-05-31
|
|
122
|
+
- add `LODsManager.plugins` getter
|
|
123
|
+
|
|
124
|
+
## [1.0.0-alpha.18] - 2023-05-30
|
|
125
|
+
- update README
|
|
126
|
+
|
|
127
|
+
## [1.0.0-alpha.16] - 2023-05-29
|
|
128
|
+
- fix: LODs manager now clamps to LOD 0 if the near plane is inside the bounds
|
|
129
|
+
- change: Ignore certain material in lods update loop
|
|
130
|
+
|
|
131
|
+
## [1.0.0-alpha.15] - 2023-05-25
|
|
132
|
+
- add: `getRaycastMesh` method
|
|
133
|
+
- add: LODsManager does now expose `targetTriangleDensity`. The target triangle density is the desired max amount of triangles on screen when the mesh is filling the screen.
|
|
134
|
+
- change: create LODsManager via `LODsManager.get(renderer)`
|
|
135
|
+
|
|
136
|
+
## [1.0.0-alpha.13] - 2023-05-24
|
|
137
|
+
- fix: modelviewer error when trying to access undefined texture extensions
|
|
138
|
+
|
|
139
|
+
## [1.0.0-alpha.13] - 2023-05-24
|
|
140
|
+
- add: vanilla three.js example
|
|
141
|
+
- fix: texture LODs losing filter setting
|
|
142
|
+
|
|
143
|
+
## [1.0.0-alpha.12] - 2023-05-19
|
|
144
|
+
- fix: update LODs when using postprocessing
|
|
145
|
+
|
|
146
|
+
## [1.0.0-alpha.11] - 2023-05-17
|
|
147
|
+
- add: expose `setDracoDecoderLocation` and `setKTX2TranscoderLocation`
|
|
148
|
+
- fix: allow using draco decoder and ktx2 transcoder from local filepath
|
|
149
|
+
|
|
150
|
+
## [1.0.0-alpha.10] - 2023-05-07
|
|
151
|
+
- fix: progressive assets are now only updated during the main canvas render call and not e.g. when rendering to a texture
|
|
152
|
+
|
|
153
|
+
## [1.0.0-alpha.9] - 2023-05-03
|
|
154
|
+
- fix: handle loading of ShaderMaterial for VRM progressive textures
|
|
155
|
+
|
|
156
|
+
## [1.0.0-alpha.8] - 2023-05-03
|
|
157
|
+
- fix: handle transparent materials
|
|
158
|
+
|
|
159
|
+
## [1.0.0-alpha.7] - 2023-05-01
|
|
160
|
+
- fix: Handle modelviewer `src` set as property but not as attribute
|
|
161
|
+
- change: Remove sourcemap
|
|
162
|
+
|
|
163
|
+
## [1.0.0-alpha.6] - 2023-05-01
|
|
164
|
+
- fix: LOD mesh assignment for multi-material meshes (meshes with multiple primitives)
|
|
165
|
+
|
|
166
|
+
## [1.0.0-alpha.5] - 2023-04-30
|
|
164
167
|
- initial version
|
package/README.md
CHANGED
|
@@ -1,133 +1,131 @@
|
|
|
1
|
-
# glTF progressive
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## Features
|
|
6
|
-
- One line integration in any three.js based engine/project
|
|
7
|
-
- Mesh LOD support
|
|
8
|
-
- Texture LOD support
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
- [
|
|
21
|
-
- \<model-viewer
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
<
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
"three": "https://cdn.jsdelivr.net/npm/three@latest/
|
|
66
|
-
"
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
<
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
<!-- Include
|
|
109
|
-
<script type="module" src="https://
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
<
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
[
|
|
131
|
-
|
|
132
|
-
[Forum](https://forum.needle.tools)
|
|
133
|
-
|
|
1
|
+
# glTF progressive
|
|
2
|
+
|
|
3
|
+
LODs on steroids for glTF, GLB or VRM files with density based loading for meshes or texture for any three.js based project.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
- One line integration in any three.js based engine/project
|
|
7
|
+
- Mesh LOD support
|
|
8
|
+
- Texture LOD support
|
|
9
|
+
- LOD levels are loaded on demand based on mesh screen density
|
|
10
|
+
- Low poly LOD meshes can easily be used for raycasting for smooth interactions with high-poly meshes
|
|
11
|
+
- Cloud generation and loading support via [cloud.needle.tools](https://cloud.needle.tools) for glTF, GLB & VRM assets
|
|
12
|
+
|
|
13
|
+
## Examples
|
|
14
|
+
|
|
15
|
+
Examples are in the `/examples` directory. Live versions can be found in the links below.
|
|
16
|
+
|
|
17
|
+
- [Vanilla three.js](https://engine.needle.tools/demos/gltf-progressive/threejs/) - multiple models and animations
|
|
18
|
+
- [React Three Fiber](https://engine.needle.tools/demos/gltf-progressive/r3f/)
|
|
19
|
+
- \<model-viewer\>
|
|
20
|
+
- [single \<model-viewer> element](https://engine.needle.tools/demos/gltf-progressive/modelviewer)
|
|
21
|
+
- [multiple \<model-viewer> elements](https://engine.needle.tools/demos/gltf-progressive/modelviewer-multiple)
|
|
22
|
+
- [Needle Engine](https://stackblitz.com/edit/needle-engine-gltf-progressive?file=src%2Fmain.ts)
|
|
23
|
+
- [Progressive VRM 14 MB to 1 MB](https://cloud.needle.tools/view/91b4450/262927895)
|
|
24
|
+
|
|
25
|
+
**Interactive Examples**:
|
|
26
|
+
- [Stackblitz](https://stackblitz.com/@marwie/collections/gltf-progressive)
|
|
27
|
+
- [Codesandbox](https://codesandbox.io/dashboard/sandboxes/gltf-progressive)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
<br/>
|
|
31
|
+
<video width="320" controls autoplay src="https://engine.needle.tools/demos/gltf-progressive/video.mp4">
|
|
32
|
+
<source src="https://engine.needle.tools/demos/gltf-progressive/video.mp4" type="video/mp4">
|
|
33
|
+
</video>
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
## Usage
|
|
37
|
+
|
|
38
|
+
### react three fiber
|
|
39
|
+
|
|
40
|
+
Full example in `examples/react-three-fiber`
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
function ChurchModel() {
|
|
44
|
+
const { gl } = useThree()
|
|
45
|
+
const url = 'https://engine.needle.tools/demos/gltf-progressive/assets/church/model.glb'
|
|
46
|
+
const { scene } = useGLTF(url, false, false, (loader) => {
|
|
47
|
+
useNeedleProgressive(url, gl, loader as any)
|
|
48
|
+
})
|
|
49
|
+
return <primitive object={scene} />
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### threejs (CDN, no bundler)
|
|
54
|
+
|
|
55
|
+
The full example can be found at `examples/threejs`
|
|
56
|
+
|
|
57
|
+
```html
|
|
58
|
+
<head>
|
|
59
|
+
<!-- Add the threejs import map to your HTML head section -->
|
|
60
|
+
<script type="importmap">
|
|
61
|
+
{
|
|
62
|
+
"imports": {
|
|
63
|
+
"three": "https://cdn.jsdelivr.net/npm/three@latest/build/three.module.js",
|
|
64
|
+
"three/addons/": "https://cdn.jsdelivr.net/npm/three@latest/examples/jsm/",
|
|
65
|
+
"three/examples/": "https://cdn.jsdelivr.net/npm/three@latest/examples/",
|
|
66
|
+
"@needle-engine/gltf-progressive": "https://www.unpkg.com/@needle-tools/gltf-progressive@latest"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
</script>
|
|
70
|
+
</head>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
In your script:
|
|
74
|
+
```ts
|
|
75
|
+
const gltfLoader = new GLTFLoader();
|
|
76
|
+
|
|
77
|
+
const url = "https://engine.needle.tools/demos/gltf-progressive/assets/church/model.glb";
|
|
78
|
+
|
|
79
|
+
// register the progressive loader
|
|
80
|
+
useNeedleProgressive(url, renderer, gltfLoader)
|
|
81
|
+
|
|
82
|
+
// just call the load method as usual
|
|
83
|
+
gltfLoader.load(url, gltf => {
|
|
84
|
+
console.log(gltf)
|
|
85
|
+
scene.add(gltf.scene)
|
|
86
|
+
gltf.scene.position.y += .95;
|
|
87
|
+
})
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
### \<model-viewer\>
|
|
92
|
+
|
|
93
|
+
The example can be found in `examples/modelviewer.html`
|
|
94
|
+
|
|
95
|
+
```html
|
|
96
|
+
<head>
|
|
97
|
+
<!-- Include threejs import map -->
|
|
98
|
+
<script type="importmap">
|
|
99
|
+
{
|
|
100
|
+
"imports": {
|
|
101
|
+
"three": "https://unpkg.com/three/build/three.module.js",
|
|
102
|
+
"three/": "https://unpkg.com/three/"
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
</script>
|
|
106
|
+
<!-- Include gltf-progressive -->
|
|
107
|
+
<script type="module" src="https://www.unpkg.com/@needle-tools/gltf-progressive@latest"></script>
|
|
108
|
+
<!-- Include model-viewer -->
|
|
109
|
+
<script type="module" src="https://ajax.googleapis.com/ajax/libs/model-viewer/3.4.0/model-viewer.min.js"></script>
|
|
110
|
+
</head>
|
|
111
|
+
<body>
|
|
112
|
+
|
|
113
|
+
<model-viewer src="https://engine.needle.tools/demos/gltf-progressive/assets/church/model.glb" camera-controls auto-rotate></model-viewer>
|
|
114
|
+
|
|
115
|
+
</body>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Needle Engine
|
|
119
|
+
|
|
120
|
+
[Needle Engine](https://needle.tools) natively supports progressive loading of these glTF files! See [docs.needle.tools](https://docs.needle.tools) for more information.
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
Use [cloud.needle.tools](https://cloud.needle.tools) to generate LODs for your assets now.
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
# Contact ✒️
|
|
127
|
+
<b>[🌵 needle — tools for creators](https://needle.tools)</b> •
|
|
128
|
+
[Twitter](https://twitter.com/NeedleTools) •
|
|
129
|
+
[Discord](https://discord.needle.tools) •
|
|
130
|
+
[Forum](https://forum.needle.tools)
|
|
131
|
+
|