zincjs 1.12.4 → 1.13.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/build/zinc.frontend.js +1 -1
- package/build/zinc.js +26 -15
- package/build/zinc.js.map +1 -1
- package/package.json +1 -1
- package/src/primitives/textureSlides.js +26 -52
- package/src/scene.js +117 -12
- package/src/shaders/textureSlide.js +1 -5
- package/src/texture/textureArray.js +1 -2
package/package.json
CHANGED
|
@@ -19,7 +19,6 @@ const TextureSlides = function (textureIn) {
|
|
|
19
19
|
this.morph = new THREE.Group();
|
|
20
20
|
this.group = this.morph;
|
|
21
21
|
this.morph.userData = this;
|
|
22
|
-
let edgesLine = undefined;
|
|
23
22
|
let flipY = true;
|
|
24
23
|
|
|
25
24
|
/**
|
|
@@ -60,7 +59,7 @@ const TextureSlides = function (textureIn) {
|
|
|
60
59
|
mesh.position.z = 0;
|
|
61
60
|
switch (settings.direction) {
|
|
62
61
|
case "x":
|
|
63
|
-
const rotation = -Math.PI / 2;
|
|
62
|
+
const rotation = flipY ? -Math.PI / 2 : Math.PI / 2;
|
|
64
63
|
mesh.rotation.y = rotation;
|
|
65
64
|
uniforms.direction.value = 1;
|
|
66
65
|
uniforms.slide.value.set(settings.value, 0, 0);
|
|
@@ -226,32 +225,30 @@ const TextureSlides = function (textureIn) {
|
|
|
226
225
|
|
|
227
226
|
//Expand the boundingbox with slide settings
|
|
228
227
|
const expandBoxWithSettings = (box, settings, vector) => {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
break;
|
|
254
|
-
}
|
|
228
|
+
switch (settings.direction.value) {
|
|
229
|
+
case 1:
|
|
230
|
+
vector.copy(settings.slide.value);
|
|
231
|
+
box.expandByPoint(vector);
|
|
232
|
+
vector.setY(1.0);
|
|
233
|
+
vector.setZ(1.0);
|
|
234
|
+
box.expandByPoint(vector);
|
|
235
|
+
break;
|
|
236
|
+
case 2:
|
|
237
|
+
vector.copy(settings.slide.value);
|
|
238
|
+
box.expandByPoint(vector);
|
|
239
|
+
vector.setX(1.0);
|
|
240
|
+
vector.setZ(1.0);
|
|
241
|
+
box.expandByPoint(vector);
|
|
242
|
+
break;
|
|
243
|
+
case 3:
|
|
244
|
+
vector.copy(settings.slide.value);
|
|
245
|
+
box.expandByPoint(vector);
|
|
246
|
+
vector.setX(1.0);
|
|
247
|
+
vector.setY(1.0);
|
|
248
|
+
box.expandByPoint(vector);
|
|
249
|
+
break;
|
|
250
|
+
default:
|
|
251
|
+
break;
|
|
255
252
|
}
|
|
256
253
|
}
|
|
257
254
|
|
|
@@ -306,13 +303,9 @@ const TextureSlides = function (textureIn) {
|
|
|
306
303
|
this.boundingBoxUpdateRequired = true;
|
|
307
304
|
}
|
|
308
305
|
|
|
309
|
-
this.setRenderOrder = (order) => {
|
|
310
|
-
//multiilayers
|
|
311
|
-
this.morph.renderOrder = order;
|
|
312
|
-
}
|
|
313
|
-
|
|
314
306
|
this.initialise = (textureData, finishCallback) => {
|
|
315
307
|
if (textureData) {
|
|
308
|
+
|
|
316
309
|
const locations = textureData.locations;
|
|
317
310
|
if (locations && locations.length > 0) {
|
|
318
311
|
this.applyTransformation(locations[0].orientation,
|
|
@@ -327,25 +320,6 @@ const TextureSlides = function (textureIn) {
|
|
|
327
320
|
}
|
|
328
321
|
}
|
|
329
322
|
}
|
|
330
|
-
|
|
331
|
-
this.showEdges = (color) => {
|
|
332
|
-
if (!edgesLine) {
|
|
333
|
-
const geometry = new THREE.BoxGeometry( 1, 1, 1 );
|
|
334
|
-
geometry.translate(0.5, 0.5, 0.5);
|
|
335
|
-
const edges = new THREE.EdgesGeometry( geometry );
|
|
336
|
-
edgesLine = new THREE.LineSegments(edges, new THREE.LineBasicMaterial( { color } ) );
|
|
337
|
-
this.group.add( edgesLine );
|
|
338
|
-
} else {
|
|
339
|
-
edgesLine.material.color = color;
|
|
340
|
-
}
|
|
341
|
-
edgesLine.visible = true;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
this.hideEdges = () => {
|
|
345
|
-
if (edgesLine) {
|
|
346
|
-
edgesLine.visible = false;
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
323
|
}
|
|
350
324
|
|
|
351
325
|
TextureSlides.prototype = Object.create((require('./texturePrimitive').TexturePrimitive).prototype);
|
package/src/scene.js
CHANGED
|
@@ -5,6 +5,7 @@ const SceneExporter = require('./sceneExporter').SceneExporter;
|
|
|
5
5
|
const Viewport = require('./controls').Viewport;
|
|
6
6
|
const createBufferGeometry = require('./utilities').createBufferGeometry;
|
|
7
7
|
const getCircularTexture = require('./utilities').getCircularTexture;
|
|
8
|
+
const createNewSpriteText = require('./utilities').createNewSpriteText;
|
|
8
9
|
let uniqueiId = 0;
|
|
9
10
|
|
|
10
11
|
const getUniqueId = function () {
|
|
@@ -42,6 +43,7 @@ exports.Scene = function (containerIn, rendererIn) {
|
|
|
42
43
|
let zincObjectRemovedCallbacks = {};
|
|
43
44
|
let zincObjectRemovedCallbacks_id = 0;
|
|
44
45
|
const scene = new THREE.Scene();
|
|
46
|
+
const miniAxesScene = new THREE.Scene();
|
|
45
47
|
const rootRegion = new (require('./region').Region)(undefined, this);
|
|
46
48
|
scene.add(rootRegion.getGroup());
|
|
47
49
|
const tempGroup = new THREE.Group();
|
|
@@ -63,12 +65,13 @@ exports.Scene = function (containerIn, rendererIn) {
|
|
|
63
65
|
this.autoClearFlag = true;
|
|
64
66
|
this.displayMarkers = false;
|
|
65
67
|
this.displayMinimap = false;
|
|
68
|
+
this.displayMiniAxes = false;
|
|
66
69
|
this.minimapScissor = {
|
|
67
70
|
x_offset: 16,
|
|
68
71
|
y_offset: 16,
|
|
69
72
|
width: 128,
|
|
70
73
|
height: 128,
|
|
71
|
-
align: "top-
|
|
74
|
+
align: "top-right",
|
|
72
75
|
updateRequired: true
|
|
73
76
|
};
|
|
74
77
|
let scissor = {x: 0, y: 0};
|
|
@@ -80,6 +83,11 @@ exports.Scene = function (containerIn, rendererIn) {
|
|
|
80
83
|
let markerCluster = new MarkerCluster(this);
|
|
81
84
|
markerCluster.disable();
|
|
82
85
|
scene.add(markerCluster.group);
|
|
86
|
+
let axisDisplay = {
|
|
87
|
+
main: [],
|
|
88
|
+
mini: [],
|
|
89
|
+
}
|
|
90
|
+
const _v3 = new THREE.Vector3( 0, 0, 0 );
|
|
83
91
|
|
|
84
92
|
const getDrawingWidth = () => {
|
|
85
93
|
if (container)
|
|
@@ -668,7 +676,7 @@ exports.Scene = function (containerIn, rendererIn) {
|
|
|
668
676
|
}
|
|
669
677
|
|
|
670
678
|
const renderMinimap = renderer => {
|
|
671
|
-
if (this.displayMinimap
|
|
679
|
+
if (this.displayMinimap || this.displayMiniAxes) {
|
|
672
680
|
renderer.setScissorTest(true);
|
|
673
681
|
renderer.getSize(_markerTarget);
|
|
674
682
|
if (this.minimapScissor.updateRequired) {
|
|
@@ -691,9 +699,13 @@ exports.Scene = function (containerIn, rendererIn) {
|
|
|
691
699
|
this.minimapScissor.width,
|
|
692
700
|
this.minimapScissor.height);
|
|
693
701
|
minimap.updateCamera();
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
702
|
+
if (this.displayMiniAxes) {
|
|
703
|
+
renderer.render(miniAxesScene, minimap.camera);
|
|
704
|
+
} else {
|
|
705
|
+
scene.add(minimap.mask);
|
|
706
|
+
renderer.render(scene, minimap.camera);
|
|
707
|
+
scene.remove(minimap.mask);
|
|
708
|
+
}
|
|
697
709
|
renderer.setScissorTest(false);
|
|
698
710
|
renderer.setViewport(0, 0, _markerTarget.x, _markerTarget.y);
|
|
699
711
|
}
|
|
@@ -799,8 +811,7 @@ exports.Scene = function (containerIn, rendererIn) {
|
|
|
799
811
|
*/
|
|
800
812
|
this.alignBoundingBoxToCameraView = (boundingBox, transitionTime) => {
|
|
801
813
|
if (boundingBox) {
|
|
802
|
-
|
|
803
|
-
boundingBox.getCenter(center);
|
|
814
|
+
boundingBox.getCenter(_v3);
|
|
804
815
|
const viewport = this.getZincCameraControls().getCurrentViewport();
|
|
805
816
|
const target = new THREE.Vector3(viewport.targetPosition[0],
|
|
806
817
|
viewport.targetPosition[1], viewport.targetPosition[2]);
|
|
@@ -867,10 +878,9 @@ exports.Scene = function (containerIn, rendererIn) {
|
|
|
867
878
|
*/
|
|
868
879
|
this.setCameraTargetToObject = zincObject => {
|
|
869
880
|
if (this.objectIsInScene(zincObject)) {
|
|
870
|
-
const center = new THREE.Vector3();
|
|
871
881
|
const boundingBox = zincObject.getBoundingBox();
|
|
872
882
|
const viewport = this.getZincCameraControls().getCurrentViewport();
|
|
873
|
-
boundingBox.getCenter(
|
|
883
|
+
boundingBox.getCenter(_v3);
|
|
874
884
|
const target = new THREE.Vector3(viewport.targetPosition[0],
|
|
875
885
|
viewport.targetPosition[1], viewport.targetPosition[2]);
|
|
876
886
|
const eyePosition = new THREE.Vector3(viewport.eyePosition[0],
|
|
@@ -1274,7 +1284,8 @@ exports.Scene = function (containerIn, rendererIn) {
|
|
|
1274
1284
|
region = rootRegion.createChildFromPath(regionPath);
|
|
1275
1285
|
}
|
|
1276
1286
|
const box = boundingBox ? boundingBox : this.getBoundingBox();
|
|
1277
|
-
|
|
1287
|
+
_v3.set(0.0, 0.0, 0.0);
|
|
1288
|
+
const dim = _v3.subVectors(box.max, box.min);
|
|
1278
1289
|
const boxGeo = new THREE.BoxGeometry(dim.x, dim.y, dim.z);
|
|
1279
1290
|
const primitive = region.createGeometryFromThreeJSGeometry(
|
|
1280
1291
|
group, boxGeo, colour, opacity, visibility, 10000);
|
|
@@ -1296,7 +1307,8 @@ exports.Scene = function (containerIn, rendererIn) {
|
|
|
1296
1307
|
region = rootRegion.createChildFromPath(regionPath);
|
|
1297
1308
|
}
|
|
1298
1309
|
const box = boundingBox ? boundingBox : this.getBoundingBox();
|
|
1299
|
-
|
|
1310
|
+
_v3.set(0.0, 0.0, 0.0);
|
|
1311
|
+
const dim = _v3.subVectors(box.max, box.min);
|
|
1300
1312
|
const directions = ["x", "y", "z"];
|
|
1301
1313
|
const primitives = [];
|
|
1302
1314
|
let index = 0;
|
|
@@ -1350,6 +1362,99 @@ exports.Scene = function (containerIn, rendererIn) {
|
|
|
1350
1362
|
}
|
|
1351
1363
|
this.forcePickableObjectsUpdate = true;
|
|
1352
1364
|
}
|
|
1353
|
-
}
|
|
1354
1365
|
|
|
1366
|
+
/*
|
|
1367
|
+
* Destory static axis display object
|
|
1368
|
+
*/
|
|
1369
|
+
this.destroyAxisDisplay = () => {
|
|
1370
|
+
this.displayMiniAxes = false;
|
|
1371
|
+
if (axisDisplay.main) {
|
|
1372
|
+
this.enableAxisDisplay(false, false);
|
|
1373
|
+
axisDisplay.main.forEach(axis => {
|
|
1374
|
+
if (axis.dispose) {
|
|
1375
|
+
axis.dispose();
|
|
1376
|
+
}
|
|
1377
|
+
});
|
|
1378
|
+
}
|
|
1379
|
+
if (axisDisplay.mini) {
|
|
1380
|
+
this.enableAxisDisplay(false, true);
|
|
1381
|
+
axisDisplay.mini.forEach(axis => {
|
|
1382
|
+
if (axis.dispose) {
|
|
1383
|
+
axis.dispose();
|
|
1384
|
+
}
|
|
1385
|
+
});
|
|
1386
|
+
}
|
|
1387
|
+
axisDisplay = {
|
|
1388
|
+
main: [],
|
|
1389
|
+
mini: [],
|
|
1390
|
+
};
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1393
|
+
/*
|
|
1394
|
+
* Create static axis display object
|
|
1395
|
+
*/
|
|
1396
|
+
this.createAxisDisplay = (fitBoundingBox = false) => {
|
|
1397
|
+
this.destroyAxisDisplay();
|
|
1398
|
+
const XYZ = [
|
|
1399
|
+
{
|
|
1400
|
+
name: "x",
|
|
1401
|
+
dir: new THREE.Vector3(1, 0, 0),
|
|
1402
|
+
colour: "red",
|
|
1403
|
+
hex: 0xFF5555
|
|
1404
|
+
},
|
|
1405
|
+
{
|
|
1406
|
+
name: "y",
|
|
1407
|
+
dir: new THREE.Vector3(0, 1, 0),
|
|
1408
|
+
colour: "green",
|
|
1409
|
+
hex: 0x55FF55
|
|
1410
|
+
},
|
|
1411
|
+
{
|
|
1412
|
+
name: "z",
|
|
1413
|
+
dir: new THREE.Vector3(0, 0, 1),
|
|
1414
|
+
colour: "blue",
|
|
1415
|
+
hex: 0x5555FF
|
|
1416
|
+
}
|
|
1417
|
+
];
|
|
1418
|
+
const boundingBox = this.getBoundingBox();
|
|
1419
|
+
const size = boundingBox.min.distanceTo(boundingBox.max);
|
|
1420
|
+
let origin = new THREE.Vector3(0, 0, 0);
|
|
1421
|
+
if (fitBoundingBox) {
|
|
1422
|
+
origin.copy(boundingBox.min);
|
|
1423
|
+
}
|
|
1424
|
+
XYZ.forEach((xyzObj) => {
|
|
1425
|
+
const arrowHelper = new THREE.ArrowHelper(xyzObj.dir, origin, size, xyzObj.hex);
|
|
1426
|
+
axisDisplay.main.push(arrowHelper);
|
|
1427
|
+
const miniArrowHelper = new THREE.ArrowHelper(xyzObj.dir, boundingBox.getCenter(_v3), size / 2, xyzObj.hex);
|
|
1428
|
+
axisDisplay.mini.push(miniArrowHelper);
|
|
1429
|
+
|
|
1430
|
+
/*
|
|
1431
|
+
const miniLabel = createNewSpriteText(xyzObj.name, 0.1, xyzObj.colour, "Asap", 120, 400);
|
|
1432
|
+
const miniPosition = xyzObj.dir.clone().multiplyScalar(size/2).add(_v3[xyzObj.name]);
|
|
1433
|
+
miniLabel.position.set(miniPosition.x, miniPosition.y, miniPosition.z);
|
|
1434
|
+
axisDisplay.mini.push(miniLabel);
|
|
1435
|
+
*/
|
|
1436
|
+
|
|
1437
|
+
const axesLabel = createNewSpriteText(xyzObj.name, 0.036, xyzObj.colour, "Asap", 120, 700);
|
|
1438
|
+
const position = xyzObj.dir.clone().multiplyScalar(size).add(origin);
|
|
1439
|
+
axesLabel.position.set(position.x, position.y, position.z);
|
|
1440
|
+
axisDisplay.main.push(axesLabel);
|
|
1441
|
+
})
|
|
1442
|
+
}
|
|
1355
1443
|
|
|
1444
|
+
/*
|
|
1445
|
+
* Enable static axis display, createAxisDisplay must be called
|
|
1446
|
+
* before the axis can be display.
|
|
1447
|
+
*/
|
|
1448
|
+
this.enableAxisDisplay = (enable, miniaxes = false) => {
|
|
1449
|
+
if (miniaxes && axisDisplay?.mini?.length) {
|
|
1450
|
+
this.displayMiniAxes = enable;
|
|
1451
|
+
axisDisplay.mini.forEach(axis => {
|
|
1452
|
+
enable ? miniAxesScene.add(axis) : miniAxesScene.remove(axis);
|
|
1453
|
+
});
|
|
1454
|
+
} else if (!miniaxes && axisDisplay.main) {
|
|
1455
|
+
axisDisplay.main.forEach(axis => {
|
|
1456
|
+
enable ? scene.add(axis) : scene.remove(axis);
|
|
1457
|
+
});
|
|
1458
|
+
}
|
|
1459
|
+
}
|
|
1460
|
+
}
|
|
@@ -9,7 +9,6 @@ precision highp int;
|
|
|
9
9
|
precision highp sampler2DArray;
|
|
10
10
|
|
|
11
11
|
uniform sampler2DArray diffuse;
|
|
12
|
-
uniform bool discardAlpha;
|
|
13
12
|
in vec3 vUw;
|
|
14
13
|
|
|
15
14
|
out vec4 outColor;
|
|
@@ -19,9 +18,7 @@ void main() {
|
|
|
19
18
|
vec4 color = texture( diffuse, vUw );
|
|
20
19
|
|
|
21
20
|
// lighten a bit
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
outColor = vec4( color.rgba );
|
|
21
|
+
outColor = vec4( color.rgb + .2, 1.0 );
|
|
25
22
|
|
|
26
23
|
}
|
|
27
24
|
`;
|
|
@@ -61,7 +58,6 @@ const getUniforms = function() {
|
|
|
61
58
|
slide: { value: new THREE.Vector3( 0, 0, 1 ) },
|
|
62
59
|
direction: {value: 1},
|
|
63
60
|
flipY: { value: true},
|
|
64
|
-
discardAlpha: {value: true},
|
|
65
61
|
};
|
|
66
62
|
}
|
|
67
63
|
|
|
@@ -78,9 +78,8 @@ const TextureArray = function () {
|
|
|
78
78
|
if (options) {
|
|
79
79
|
if (options.vs && options.fs) {
|
|
80
80
|
let transparent = true;
|
|
81
|
-
if (
|
|
81
|
+
if (options.transparent)
|
|
82
82
|
transparent = options.transparent;
|
|
83
|
-
}
|
|
84
83
|
let side = THREE.FrontSide;
|
|
85
84
|
if (options.side)
|
|
86
85
|
side = options.side;
|