@needle-tools/engine 4.4.0-alpha.3 → 4.4.0-alpha.5
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 +22 -1
- package/dist/gltf-progressive.js +54 -54
- package/dist/gltf-progressive.light.js +54 -54
- package/dist/gltf-progressive.light.min.js +7 -7
- package/dist/gltf-progressive.min.js +7 -7
- package/dist/needle-engine.bundle.js +9120 -8879
- package/dist/needle-engine.bundle.light.js +9124 -8883
- package/dist/needle-engine.bundle.light.min.js +155 -142
- package/dist/needle-engine.bundle.light.umd.cjs +125 -112
- package/dist/needle-engine.bundle.min.js +155 -142
- package/dist/needle-engine.bundle.umd.cjs +127 -114
- package/dist/needle-engine.d.ts +9 -9
- package/dist/needle-engine.js +544 -543
- package/dist/needle-engine.light.js +544 -543
- package/dist/needle-engine.light.min.js +1 -1
- package/dist/needle-engine.light.umd.cjs +1 -1
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/dist/postprocessing.js +38 -38
- package/dist/postprocessing.light.js +38 -38
- package/dist/postprocessing.light.min.js +2 -2
- package/dist/postprocessing.min.js +2 -2
- package/dist/three-examples.js +1205 -1205
- package/dist/three-examples.light.js +1205 -1205
- package/dist/three-examples.light.min.js +15 -15
- package/dist/three-examples.min.js +15 -15
- package/dist/three-mesh-ui.js +9 -9
- package/dist/three-mesh-ui.light.js +9 -9
- package/dist/three-mesh-ui.light.min.js +9 -9
- package/dist/three-mesh-ui.min.js +9 -9
- package/dist/three.js +239 -238
- package/dist/three.light.js +239 -238
- package/dist/three.light.min.js +27 -27
- package/dist/three.light.umd.cjs +15 -15
- package/dist/three.min.js +27 -27
- package/dist/three.umd.cjs +15 -15
- package/dist/vendor.js +24 -24
- package/dist/vendor.light.js +24 -24
- package/dist/vendor.light.min.js +2 -2
- package/dist/vendor.min.js +2 -2
- package/lib/engine/engine_input.d.ts +7 -0
- package/lib/engine/engine_input.js +12 -0
- package/lib/engine/engine_input.js.map +1 -1
- package/lib/engine/engine_serialization_decorator.js +4 -0
- package/lib/engine/engine_serialization_decorator.js.map +1 -1
- package/lib/engine/engine_three_utils.d.ts +26 -1
- package/lib/engine/engine_three_utils.js +43 -0
- package/lib/engine/engine_three_utils.js.map +1 -1
- package/lib/engine/engine_utils_format.js +11 -5
- package/lib/engine/engine_utils_format.js.map +1 -1
- package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +1 -0
- package/lib/engine/webcomponents/needle menu/needle-menu.js +3 -3
- package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
- package/lib/engine-components/Camera.d.ts +2 -2
- package/lib/engine-components/Camera.js +4 -6
- package/lib/engine-components/Camera.js.map +1 -1
- package/lib/engine-components/CameraUtils.js +32 -13
- package/lib/engine-components/CameraUtils.js.map +1 -1
- package/lib/engine-components/Component.d.ts +4 -1
- package/lib/engine-components/Component.js +4 -1
- package/lib/engine-components/Component.js.map +1 -1
- package/lib/engine-components/ContactShadows.js +8 -2
- package/lib/engine-components/ContactShadows.js.map +1 -1
- package/lib/engine-components/OrbitControls.d.ts +3 -0
- package/lib/engine-components/OrbitControls.js +34 -10
- package/lib/engine-components/OrbitControls.js.map +1 -1
- package/lib/engine-components/SyncedTransform.d.ts +3 -2
- package/lib/engine-components/SyncedTransform.js +28 -18
- package/lib/engine-components/SyncedTransform.js.map +1 -1
- package/lib/engine-components/postprocessing/PostProcessingHandler.js +6 -2
- package/lib/engine-components/postprocessing/PostProcessingHandler.js.map +1 -1
- package/lib/engine-components/utils/EnvironmentScene.d.ts +5 -0
- package/lib/engine-components/utils/EnvironmentScene.js +206 -0
- package/lib/engine-components/utils/EnvironmentScene.js.map +1 -0
- package/package.json +1 -1
- package/src/engine/engine_input.ts +13 -0
- package/src/engine/engine_serialization_decorator.ts +4 -0
- package/src/engine/engine_three_utils.ts +52 -1
- package/src/engine/engine_utils_format.ts +13 -5
- package/src/engine/webcomponents/needle menu/needle-menu.ts +3 -3
- package/src/engine-components/Camera.ts +9 -6
- package/src/engine-components/CameraUtils.ts +35 -13
- package/src/engine-components/Component.ts +5 -2
- package/src/engine-components/ContactShadows.ts +8 -2
- package/src/engine-components/OrbitControls.ts +35 -10
- package/src/engine-components/SyncedTransform.ts +37 -25
- package/src/engine-components/postprocessing/PostProcessingHandler.ts +7 -2
- package/src/engine-components/utils/EnvironmentScene.ts +246 -0
- package/src/engine/webcomponents/needle menu/dist/needle-menu.js +0 -662
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
// https://github.com/google/model-viewer/blob/c61dd1459b59cd74f539eb31658f943fd13c702e/packages/model-viewer/src/three-components/EnvironmentScene.ts#L198
|
|
2
|
+
|
|
3
|
+
/* @license
|
|
4
|
+
* Copyright 2021 Google LLC. All Rights Reserved.
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the 'License');
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an 'AS IS' BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import {BackSide, BoxGeometry, Mesh, MeshBasicMaterial, MeshStandardMaterial, PointLight, Scene} from 'three';
|
|
19
|
+
|
|
20
|
+
interface Box {
|
|
21
|
+
position: [number, number, number];
|
|
22
|
+
rotation: number;
|
|
23
|
+
scale: [number, number, number];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
interface Light {
|
|
27
|
+
intensity: number;
|
|
28
|
+
position: [number, number, number];
|
|
29
|
+
scale: [number, number, number];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
interface Env {
|
|
33
|
+
topLight: {
|
|
34
|
+
intensity: number,
|
|
35
|
+
position: [number, number, number],
|
|
36
|
+
};
|
|
37
|
+
room: {
|
|
38
|
+
position: [number, number, number],
|
|
39
|
+
scale: [number, number, number],
|
|
40
|
+
};
|
|
41
|
+
boxes: Box[];
|
|
42
|
+
lights: Light[];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const legacy = {
|
|
46
|
+
topLight: {
|
|
47
|
+
intensity: 500,
|
|
48
|
+
position: [0.418, 16.199, 0.300],
|
|
49
|
+
},
|
|
50
|
+
room: {
|
|
51
|
+
position: [-0.757, 13.219, 0.717],
|
|
52
|
+
scale: [31.713, 28.305, 28.591],
|
|
53
|
+
},
|
|
54
|
+
boxes: [
|
|
55
|
+
{
|
|
56
|
+
position: [-10.906, 2.009, 1.846],
|
|
57
|
+
rotation: -0.195,
|
|
58
|
+
scale: [2.328, 7.905, 4.651],
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
position: [-5.607, -0.754, -0.758],
|
|
62
|
+
rotation: 0.994,
|
|
63
|
+
scale: [1.970, 1.534, 3.955],
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
position: [6.167, 0.857, 7.803],
|
|
67
|
+
rotation: 0.561,
|
|
68
|
+
scale: [3.927, 6.285, 3.687],
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
position: [-2.017, 0.018, 6.124],
|
|
72
|
+
rotation: 0.333,
|
|
73
|
+
scale: [2.002, 4.566, 2.064],
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
position: [2.291, -0.756, -2.621],
|
|
77
|
+
rotation: -0.286,
|
|
78
|
+
scale: [1.546, 1.552, 1.496],
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
position: [-2.193, -0.369, -5.547],
|
|
82
|
+
rotation: 0.516,
|
|
83
|
+
scale: [3.875, 3.487, 2.986],
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
lights: [
|
|
87
|
+
{
|
|
88
|
+
intensity: 50,
|
|
89
|
+
position: [-16.116, 14.37, 8.208],
|
|
90
|
+
scale: [0.1, 2.428, 2.739],
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
intensity: 50,
|
|
94
|
+
position: [-16.109, 18.021, -8.207],
|
|
95
|
+
scale: [0.1, 2.425, 2.751],
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
intensity: 17,
|
|
99
|
+
position: [14.904, 12.198, -1.832],
|
|
100
|
+
scale: [0.15, 4.265, 6.331],
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
intensity: 43,
|
|
104
|
+
position: [-0.462, 8.89, 14.520],
|
|
105
|
+
scale: [4.38, 5.441, 0.088],
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
intensity: 20,
|
|
109
|
+
position: [3.235, 11.486, -12.541],
|
|
110
|
+
scale: [2.5, 2.0, 0.1],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
intensity: 100,
|
|
114
|
+
position: [0.0, 20.0, 0.0],
|
|
115
|
+
scale: [1.0, 0.1, 1.0],
|
|
116
|
+
},
|
|
117
|
+
]
|
|
118
|
+
} as Env;
|
|
119
|
+
|
|
120
|
+
const neutral = {
|
|
121
|
+
topLight: {
|
|
122
|
+
intensity: 400,
|
|
123
|
+
position: [0.5, 14.0, 0.5],
|
|
124
|
+
},
|
|
125
|
+
room: {
|
|
126
|
+
position: [0.0, 13.2, 0.0],
|
|
127
|
+
scale: [31.5, 28.5, 31.5],
|
|
128
|
+
},
|
|
129
|
+
boxes: [
|
|
130
|
+
{
|
|
131
|
+
position: [-10.906, -1.0, 1.846],
|
|
132
|
+
rotation: -0.195,
|
|
133
|
+
scale: [2.328, 7.905, 4.651],
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
position: [-5.607, -0.754, -0.758],
|
|
137
|
+
rotation: 0.994,
|
|
138
|
+
scale: [1.970, 1.534, 3.955],
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
position: [6.167, -0.16, 7.803],
|
|
142
|
+
rotation: 0.561,
|
|
143
|
+
scale: [3.927, 6.285, 3.687],
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
position: [-2.017, 0.018, 6.124],
|
|
147
|
+
rotation: 0.333,
|
|
148
|
+
scale: [2.002, 4.566, 2.064],
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
position: [2.291, -0.756, -2.621],
|
|
152
|
+
rotation: -0.286,
|
|
153
|
+
scale: [1.546, 1.552, 1.496],
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
position: [-2.193, -0.369, -5.547],
|
|
157
|
+
rotation: 0.516,
|
|
158
|
+
scale: [3.875, 3.487, 2.986],
|
|
159
|
+
},
|
|
160
|
+
],
|
|
161
|
+
lights: [
|
|
162
|
+
{
|
|
163
|
+
intensity: 80,
|
|
164
|
+
position: [-14.0, 10.0, 8.0],
|
|
165
|
+
scale: [0.1, 2.5, 2.5],
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
intensity: 80,
|
|
169
|
+
position: [-14.0, 14.0, -4.0],
|
|
170
|
+
scale: [0.1, 2.5, 2.5],
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
intensity: 23,
|
|
174
|
+
position: [14.0, 12.0, 0.0],
|
|
175
|
+
scale: [0.1, 5.0, 5.0],
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
intensity: 16,
|
|
179
|
+
position: [0.0, 9.0, 14.0],
|
|
180
|
+
scale: [5.0, 5.0, 0.1],
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
intensity: 80,
|
|
184
|
+
position: [7.0, 8.0, -14.0],
|
|
185
|
+
scale: [2.5, 2.5, 0.1],
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
intensity: 80,
|
|
189
|
+
position: [-7.0, 16.0, -14.0],
|
|
190
|
+
scale: [2.5, 2.5, 0.1],
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
intensity: 1,
|
|
194
|
+
position: [0.0, 20.0, 0.0],
|
|
195
|
+
scale: [0.1, 0.1, 0.1],
|
|
196
|
+
},
|
|
197
|
+
]
|
|
198
|
+
} as Env;
|
|
199
|
+
|
|
200
|
+
export default class EnvironmentScene extends Scene {
|
|
201
|
+
constructor(name: 'legacy'|'neutral') {
|
|
202
|
+
super();
|
|
203
|
+
|
|
204
|
+
this.position.y = -3.5;
|
|
205
|
+
|
|
206
|
+
const geometry = new BoxGeometry();
|
|
207
|
+
geometry.deleteAttribute('uv');
|
|
208
|
+
|
|
209
|
+
const roomMaterial =
|
|
210
|
+
new MeshStandardMaterial({metalness: 0, side: BackSide});
|
|
211
|
+
const boxMaterial = new MeshStandardMaterial({metalness: 0});
|
|
212
|
+
|
|
213
|
+
const data = name == 'legacy' ? legacy : neutral;
|
|
214
|
+
|
|
215
|
+
const mainLight = new PointLight(0xffffff, data.topLight.intensity, 28, 2);
|
|
216
|
+
mainLight.position.set(...data.topLight.position);
|
|
217
|
+
this.add(mainLight);
|
|
218
|
+
|
|
219
|
+
const room = new Mesh(geometry, roomMaterial);
|
|
220
|
+
room.position.set(...data.room.position);
|
|
221
|
+
room.scale.set(...data.room.scale);
|
|
222
|
+
this.add(room);
|
|
223
|
+
|
|
224
|
+
for (const box of data.boxes) {
|
|
225
|
+
const box1 = new Mesh(geometry, boxMaterial);
|
|
226
|
+
box1.position.set(...box.position);
|
|
227
|
+
box1.rotation.set(0, box.rotation, 0);
|
|
228
|
+
box1.scale.set(...box.scale);
|
|
229
|
+
this.add(box1);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
for (const light of data.lights) {
|
|
233
|
+
const light1 =
|
|
234
|
+
new Mesh(geometry, this.createAreaLightMaterial(light.intensity));
|
|
235
|
+
light1.position.set(...light.position);
|
|
236
|
+
light1.scale.set(...light.scale);
|
|
237
|
+
this.add(light1);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
createAreaLightMaterial(intensity: number): MeshBasicMaterial {
|
|
242
|
+
const material = new MeshBasicMaterial();
|
|
243
|
+
material.color.setScalar(intensity);
|
|
244
|
+
return material;
|
|
245
|
+
}
|
|
246
|
+
}
|