@webviz/subsurface-viewer 0.0.1-alpha.1 → 0.0.2-alpha.2
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/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/package.json +5 -2
- package/package.json +6 -3
- package/dist/DashSubsurfaceViewer.d.ts +0 -56
- package/dist/DashSubsurfaceViewer.js +0 -160
- package/dist/DashSubsurfaceViewer.js.map +0 -1
- package/src/DashSubsurfaceViewer.tsx +0 -270
- package/src/SubsurfaceViewer.stories.tsx +0 -449
- package/src/SubsurfaceViewer.test.tsx +0 -98
- package/src/SubsurfaceViewer.tsx +0 -356
- package/src/__snapshots__/SubsurfaceViewer.test.tsx.snap +0 -178
- package/src/assets/glTF/north_arrow/scene.bin +0 -0
- package/src/assets/glTF/north_arrow/scene.gltf +0 -315
- package/src/assets/glTF/north_arrow/textures/Arrow5_baseColor.png +0 -0
- package/src/assets/glTF/north_arrow/textures/Arrow5_metallicRoughness.png +0 -0
- package/src/assets/glTF/north_arrow/textures/Arrow5_normal.png +0 -0
- package/src/components/ColorLegend.test.tsx +0 -32
- package/src/components/ColorLegend.tsx +0 -80
- package/src/components/ColorLegends.test.tsx +0 -97
- package/src/components/ColorLegends.tsx +0 -46
- package/src/components/DistanceScale.stories.tsx +0 -28
- package/src/components/DistanceScale.test.tsx +0 -36
- package/src/components/DistanceScale.tsx +0 -84
- package/src/components/InfoCard.test.tsx +0 -110
- package/src/components/InfoCard.tsx +0 -263
- package/src/components/Map.test.tsx +0 -142
- package/src/components/Map.tsx +0 -1435
- package/src/components/StatusIndicator.test.tsx +0 -14
- package/src/components/StatusIndicator.tsx +0 -38
- package/src/components/ViewAnnotation.tsx +0 -16
- package/src/components/ViewFooter.test.tsx +0 -12
- package/src/components/ViewFooter.tsx +0 -30
- package/src/components/__snapshots__/ColorLegends.test.tsx.snap +0 -15
- package/src/components/__snapshots__/DistanceScale.test.tsx.snap +0 -33
- package/src/components/__snapshots__/InfoCard.test.tsx.snap +0 -561
- package/src/components/__snapshots__/Map.test.tsx.snap +0 -119
- package/src/components/__snapshots__/StatusIndicator.test.tsx.snap +0 -3
- package/src/components/__snapshots__/ViewFooter.test.tsx.snap +0 -7
- package/src/components/settings/DrawModeSelector.test.tsx +0 -45
- package/src/components/settings/DrawModeSelector.tsx +0 -58
- package/src/components/settings/DrawModeSelector_performance.test.tsx +0 -35
- package/src/components/settings/LayerProperty.test.tsx +0 -35
- package/src/components/settings/LayerProperty.tsx +0 -153
- package/src/components/settings/LayerProperty_performance.test.tsx +0 -39
- package/src/components/settings/LayerSettingsButton.test.tsx +0 -133
- package/src/components/settings/LayerSettingsButton.tsx +0 -95
- package/src/components/settings/LayersButton.test.tsx +0 -102
- package/src/components/settings/LayersButton.tsx +0 -97
- package/src/components/settings/NumericInput.test.tsx +0 -25
- package/src/components/settings/NumericInput.tsx +0 -67
- package/src/components/settings/Settings.tsx +0 -71
- package/src/components/settings/SliderInput.test.tsx +0 -28
- package/src/components/settings/SliderInput.tsx +0 -71
- package/src/components/settings/ToggleButton.test.tsx +0 -25
- package/src/components/settings/ToggleButton.tsx +0 -53
- package/src/components/settings/__snapshots__/DrawModeSelector.test.tsx.snap +0 -124
- package/src/components/settings/__snapshots__/LayerProperty.test.tsx.snap +0 -124
- package/src/components/settings/__snapshots__/LayerSettingsButton.test.tsx.snap +0 -36
- package/src/components/settings/__snapshots__/LayersButton.test.tsx.snap +0 -83
- package/src/components/settings/__snapshots__/NumericInput.test.tsx.snap +0 -123
- package/src/components/settings/__snapshots__/SliderInput.test.tsx.snap +0 -244
- package/src/components/settings/__snapshots__/ToggleButton.test.tsx.snap +0 -182
- package/src/custom.d.ts +0 -9
- package/src/index.ts +0 -5
- package/src/inputSchema/ColorTables.json +0 -51
- package/src/inputSchema/FaultPolygons.json +0 -80
- package/src/inputSchema/Grid.json +0 -39
- package/src/inputSchema/PieChart.json +0 -72
- package/src/inputSchema/WellLog.json +0 -126
- package/src/inputSchema/WellLogTemplate.json +0 -136
- package/src/inputSchema/WellLogs.json +0 -5
- package/src/inputSchema/Wells.json +0 -106
- package/src/inputSchema/schemaValidationUtil.tsx +0 -55
- package/src/inputSchema/validator.tsx +0 -72
- package/src/inputSchema/wellCompletions.json +0 -108
- package/src/layers/BoxSelectionLayer/boxSelectionLayer.stories.tsx +0 -172
- package/src/layers/BoxSelectionLayer/boxSelectionLayer.tsx +0 -136
- package/src/layers/axes/axes-fragment.glsl.ts +0 -15
- package/src/layers/axes/axesLayer.stories.tsx +0 -87
- package/src/layers/axes/axesLayer.ts +0 -692
- package/src/layers/axes/boxLayer.ts +0 -71
- package/src/layers/axes/grid-vertex.glsl.ts +0 -14
- package/src/layers/axes2d/axes2DLayer.stories.tsx +0 -150
- package/src/layers/axes2d/axes2DLayer.ts +0 -841
- package/src/layers/axes2d/font-atlas.png +0 -0
- package/src/layers/axes2d/label-fragment.glsl.js +0 -37
- package/src/layers/axes2d/label-vertex.glsl.js +0 -20
- package/src/layers/axes2d/line-fragment.glsl.js +0 -14
- package/src/layers/axes2d/line-vertex.glsl.js +0 -13
- package/src/layers/colormap/colormap.fs.glsl.ts +0 -42
- package/src/layers/colormap/colormapLayer.ts +0 -247
- package/src/layers/drawing/drawingLayer.tsx +0 -256
- package/src/layers/fault_polygons/faultPolygonsLayer.ts +0 -54
- package/src/layers/grid3d/fragment.fs.glsl.ts +0 -109
- package/src/layers/grid3d/fragment_lines.glsl.ts +0 -21
- package/src/layers/grid3d/grid3dLayer.stories.tsx +0 -172
- package/src/layers/grid3d/grid3dLayer.ts +0 -248
- package/src/layers/grid3d/privateLayer.ts +0 -292
- package/src/layers/grid3d/vertex.glsl.ts +0 -43
- package/src/layers/grid3d/vertex_lines.glsl.ts +0 -15
- package/src/layers/grid3d/webworker.ts +0 -173
- package/src/layers/hillshading2d/hillshading2d.fs.glsl.ts +0 -62
- package/src/layers/hillshading2d/hillshading2dLayer.ts +0 -172
- package/src/layers/index.ts +0 -35
- package/src/layers/intersection/intersectionView.stories.tsx +0 -294
- package/src/layers/intersection/unfoldedGeoJsonLayer.ts +0 -92
- package/src/layers/map/fragment.fs.glsl.ts +0 -127
- package/src/layers/map/fragment_lines.glsl.ts +0 -21
- package/src/layers/map/mapLayer.stories.tsx +0 -1369
- package/src/layers/map/mapLayer.ts +0 -470
- package/src/layers/map/privateMapLayer.ts +0 -317
- package/src/layers/map/vertex.glsl.ts +0 -45
- package/src/layers/map/vertex_lines.glsl.ts +0 -15
- package/src/layers/map/webworker.ts +0 -479
- package/src/layers/northarrow/northArrow.stories.tsx +0 -108
- package/src/layers/northarrow/northArrow3DLayer.ts +0 -204
- package/src/layers/northarrow/northarrow-fragment.glsl.js +0 -14
- package/src/layers/northarrow/northarrow-vertex.glsl.js +0 -13
- package/src/layers/piechart/fragment.glsl.js +0 -42
- package/src/layers/piechart/pieChartLayer.ts +0 -246
- package/src/layers/piechart/vertex.glsl.js +0 -42
- package/src/layers/points/pointsLayer.stories.tsx +0 -141
- package/src/layers/points/pointsLayer.ts +0 -143
- package/src/layers/polylines/polylinesLayer.stories.tsx +0 -144
- package/src/layers/polylines/polylinesLayer.ts +0 -263
- package/src/layers/selectable_geojson/selectableGeoJsonLayer.ts +0 -25
- package/src/layers/shader_modules/decoder.fs.glsl.ts +0 -41
- package/src/layers/shader_modules/decoder.ts +0 -46
- package/src/layers/shader_modules/index.ts +0 -1
- package/src/layers/terrain/map3DLayer.stories.tsx +0 -340
- package/src/layers/terrain/map3DLayer.ts +0 -556
- package/src/layers/terrain/terrainMapLayer.ts +0 -334
- package/src/layers/terrain/terrainmap.fs.glsl.ts +0 -134
- package/src/layers/triangle/fragment.fs.glsl.ts +0 -126
- package/src/layers/triangle/fragment_lines.glsl.ts +0 -21
- package/src/layers/triangle/privateTriangleLayer.ts +0 -203
- package/src/layers/triangle/test_data/surfacePoints.ts +0 -4344
- package/src/layers/triangle/test_data/surfaceTriangles.ts +0 -7392
- package/src/layers/triangle/triangleLayer.stories.tsx +0 -191
- package/src/layers/triangle/triangleLayer.ts +0 -273
- package/src/layers/triangle/vertex.glsl.ts +0 -35
- package/src/layers/triangle/vertex_lines.glsl.ts +0 -15
- package/src/layers/triangle/webworker.ts +0 -165
- package/src/layers/utils/glsl.d.ts +0 -4
- package/src/layers/utils/layerTools.ts +0 -182
- package/src/layers/utils/propertyMapTools.ts +0 -43
- package/src/layers/wells/utils/spline.ts +0 -318
- package/src/layers/wells/wellsLayer.stories.tsx +0 -625
- package/src/layers/wells/wellsLayer.ts +0 -1377
- package/src/redux/actions.ts +0 -8
- package/src/redux/reducer.ts +0 -43
- package/src/redux/store.ts +0 -15
- package/src/redux/types.ts +0 -114
- package/src/storybook/SubsurfaceViewer.stories.jsx +0 -644
- package/src/storybook/components/InfoCard.stories.jsx +0 -39
- package/src/storybook/components/colorLegends/ContinuousLegend.stories.jsx +0 -32
- package/src/storybook/components/colorLegends/DiscreteLegend.stories.jsx +0 -33
- package/src/storybook/components/colorLegends/IndividualScaleForMap.stories.jsx +0 -99
- package/src/storybook/components/colorLegends/SingleScaleForMap.stories.jsx +0 -120
- package/src/storybook/components/settings/LayerSettingsButton.stories.jsx +0 -34
- package/src/storybook/components/settings/NumericInput.stories.jsx +0 -17
- package/src/storybook/components/settings/ToggleButton.stories.jsx +0 -16
- package/src/storybook/schemaValidation/sampleData.js +0 -177
- package/src/storybook/schemaValidation/schemaValidation.stories.jsx +0 -91
- package/src/test/TestWrapper.tsx +0 -13
- package/src/utils/configuration.ts +0 -61
- package/src/utils/fit-bounds.js +0 -85
- package/src/utils/measurement.ts +0 -61
- package/src/utils/northArrow.ts +0 -4
- package/src/utils/specExtractor.ts +0 -36
- package/src/viewports/index.js +0 -1
- package/src/viewports/intersectionViewport.ts +0 -137
- package/src/views/index.js +0 -1
- package/src/views/intersectionView.ts +0 -38
- package/tsconfig.json +0 -7
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
const fsShader = `#version 300 es
|
|
2
|
-
#define SHADER_NAME terrainmap-shader
|
|
3
|
-
|
|
4
|
-
precision highp float;
|
|
5
|
-
|
|
6
|
-
in vec2 vTexCoord;
|
|
7
|
-
in vec3 cameraPosition;
|
|
8
|
-
//in vec3 normals_commonspace;
|
|
9
|
-
in vec4 position_commonspace;
|
|
10
|
-
in vec4 vColor;
|
|
11
|
-
|
|
12
|
-
flat in int vertex_indexs_;
|
|
13
|
-
|
|
14
|
-
out vec4 fragColor;
|
|
15
|
-
|
|
16
|
-
in vec3 worldPos;
|
|
17
|
-
in float property;
|
|
18
|
-
|
|
19
|
-
uniform sampler2D colormap;
|
|
20
|
-
|
|
21
|
-
uniform float valueRangeMin;
|
|
22
|
-
uniform float valueRangeMax;
|
|
23
|
-
uniform float colorMapRangeMin;
|
|
24
|
-
uniform float colorMapRangeMax;
|
|
25
|
-
|
|
26
|
-
uniform vec3 colorMapClampColor;
|
|
27
|
-
uniform bool isClampColor;
|
|
28
|
-
uniform bool isColorMapClampColorTransparent;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
void main(void) {
|
|
33
|
-
geometry.uv = vTexCoord;
|
|
34
|
-
|
|
35
|
-
vec3 normal = vec3(0.0, 0.0, 1.0);
|
|
36
|
-
bool nomals_available = false;
|
|
37
|
-
if (!nomals_available) {
|
|
38
|
-
normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));
|
|
39
|
-
}
|
|
40
|
-
// else {
|
|
41
|
-
// normal = normals_commonspace;
|
|
42
|
-
// }
|
|
43
|
-
|
|
44
|
-
// // Discard transparent pixels. KEEP
|
|
45
|
-
// if (!picking_uActive && isnan(propertyValue)) {
|
|
46
|
-
// discard;
|
|
47
|
-
// return;
|
|
48
|
-
// }
|
|
49
|
-
|
|
50
|
-
//Picking pass.
|
|
51
|
-
if (picking_uActive) {
|
|
52
|
-
// Express triangle index in 255 system.
|
|
53
|
-
float r = 0.0;
|
|
54
|
-
float g = 0.0;
|
|
55
|
-
float b = 0.0;
|
|
56
|
-
|
|
57
|
-
int idx = vertex_indexs_;
|
|
58
|
-
|
|
59
|
-
if (idx >= (256 * 256) - 1) {
|
|
60
|
-
r = floor(float(idx) / (256.0 * 256.0));
|
|
61
|
-
idx -= int(r * (256.0 * 256.0));
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (idx >= 256 - 1) {
|
|
65
|
-
g = floor(float(idx) / 256.0);
|
|
66
|
-
idx -= int(g * 256.0);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
b = float(idx);
|
|
70
|
-
|
|
71
|
-
fragColor = vec4(r / 255.0, g / 255.0, b / 255.0, 1.0);
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// Calculate color from propertyValue using colormap.
|
|
76
|
-
vec4 color = vec4(1.0, 1.0, 1.0, 1.0);;
|
|
77
|
-
float propertyValue = property;
|
|
78
|
-
float x = (propertyValue - colorMapRangeMin) / (colorMapRangeMax - colorMapRangeMin);
|
|
79
|
-
if (x < 0.0 || x > 1.0) {
|
|
80
|
-
// Out of range. Use clampcolor.
|
|
81
|
-
if (isClampColor) {
|
|
82
|
-
color = vec4(colorMapClampColor.rgb, 1.0);
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
else if (isColorMapClampColorTransparent) {
|
|
86
|
-
discard;
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
// Use min/max color to clamp.
|
|
91
|
-
x = max(0.0, x);
|
|
92
|
-
x = min(1.0, x);
|
|
93
|
-
|
|
94
|
-
color = texture2D(colormap, vec2(x, 0.5));
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
color = texture2D(colormap, vec2(x, 0.5));
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// Use normal lighting. This has no effect if "material" property is not set.
|
|
102
|
-
vec3 lightColor = lighting_getLightColor(color.rgb, cameraPosition, position_commonspace.xyz, normal);
|
|
103
|
-
fragColor = vec4(lightColor, 1.0);
|
|
104
|
-
|
|
105
|
-
DECKGL_FILTER_COLOR(fragColor, geometry);
|
|
106
|
-
}
|
|
107
|
-
`;
|
|
108
|
-
|
|
109
|
-
export default fsShader;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
const fragmentShader = `\
|
|
2
|
-
#version 300 es
|
|
3
|
-
#define SHADER_NAME graph-layer-fragment-shader
|
|
4
|
-
|
|
5
|
-
precision highp float;
|
|
6
|
-
|
|
7
|
-
out vec4 fragColor;
|
|
8
|
-
|
|
9
|
-
void main(void) {
|
|
10
|
-
|
|
11
|
-
// Picking pass.
|
|
12
|
-
if (picking_uActive) {
|
|
13
|
-
discard;
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
fragColor = vec4(0.0, 0.0, 0.0, 1.0);
|
|
18
|
-
}
|
|
19
|
-
`;
|
|
20
|
-
|
|
21
|
-
export default fragmentShader;
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { ComponentStory, ComponentMeta } from "@storybook/react";
|
|
3
|
-
import SubsurfaceViewer from "../../SubsurfaceViewer";
|
|
4
|
-
|
|
5
|
-
export default {
|
|
6
|
-
component: SubsurfaceViewer,
|
|
7
|
-
title: "SubsurfaceViewer/Experimental Grid3D",
|
|
8
|
-
} as ComponentMeta<typeof SubsurfaceViewer>;
|
|
9
|
-
|
|
10
|
-
type NumberQuad = [number, number, number, number];
|
|
11
|
-
|
|
12
|
-
const Template: ComponentStory<typeof SubsurfaceViewer> = (args) => (
|
|
13
|
-
<SubsurfaceViewer {...args} />
|
|
14
|
-
);
|
|
15
|
-
|
|
16
|
-
const defaultProps = {
|
|
17
|
-
bounds: [456150, 5925800, 467400, 5939500] as NumberQuad,
|
|
18
|
-
views: {
|
|
19
|
-
layout: [1, 1] as [number, number],
|
|
20
|
-
viewports: [
|
|
21
|
-
{
|
|
22
|
-
id: "view_1",
|
|
23
|
-
show3D: true,
|
|
24
|
-
},
|
|
25
|
-
],
|
|
26
|
-
},
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
// Grid 3d story
|
|
30
|
-
const grid3dLayer = {
|
|
31
|
-
"@@type": "Grid3DLayer",
|
|
32
|
-
id: "Grid3DLayer",
|
|
33
|
-
material: true,
|
|
34
|
-
colorMapName: "Rainbow",
|
|
35
|
-
ZIncreasingDownwards: false,
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
const axes = {
|
|
39
|
-
"@@type": "AxesLayer",
|
|
40
|
-
id: "axes-layer2",
|
|
41
|
-
bounds: [453150, 5925800, 0, 469400, 5939500, 2000],
|
|
42
|
-
};
|
|
43
|
-
const parameters = {
|
|
44
|
-
docs: {
|
|
45
|
-
description: {
|
|
46
|
-
story: "Simgrid.",
|
|
47
|
-
},
|
|
48
|
-
inlineStories: false,
|
|
49
|
-
iframeHeight: 500,
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
export const Simgrid = Template.bind({});
|
|
54
|
-
Simgrid.args = {
|
|
55
|
-
...defaultProps,
|
|
56
|
-
id: "grid-3d",
|
|
57
|
-
layers: [
|
|
58
|
-
axes,
|
|
59
|
-
{
|
|
60
|
-
...grid3dLayer,
|
|
61
|
-
pointsData: "vtk-grid/Simgrid_points.json",
|
|
62
|
-
polysData: "vtk-grid/Simgrid_polys.json",
|
|
63
|
-
propertiesData: "vtk-grid/Simgrid_scalar.json",
|
|
64
|
-
},
|
|
65
|
-
],
|
|
66
|
-
};
|
|
67
|
-
Simgrid.parameters = parameters;
|
|
68
|
-
|
|
69
|
-
export const SimgridArrayInput = Template.bind({});
|
|
70
|
-
SimgridArrayInput.args = {
|
|
71
|
-
...defaultProps,
|
|
72
|
-
id: "grid-3darray",
|
|
73
|
-
layers: [
|
|
74
|
-
axes,
|
|
75
|
-
{
|
|
76
|
-
...grid3dLayer,
|
|
77
|
-
pointsData: [
|
|
78
|
-
456063, 5935991, -1729, 456063, 5935991, -1731, 456138,
|
|
79
|
-
5935861.518843642, -1727.820068359375, 456138.5, 5935861.5,
|
|
80
|
-
-1726.3526611328125, 456193.90625, 5936066, -1730.7259521484375,
|
|
81
|
-
456193.8825946293, 5936065.981075703, -1732.200439453125,
|
|
82
|
-
456268.9375, 5935936.5, -1726.6915283203125,
|
|
83
|
-
],
|
|
84
|
-
polysData: [4, 0, 1, 2, 3, 4, 0, 4, 5, 1, 4, 0, 3, 6, 4],
|
|
85
|
-
propertiesData: [0.2, 0.6, 0.8],
|
|
86
|
-
},
|
|
87
|
-
],
|
|
88
|
-
};
|
|
89
|
-
SimgridArrayInput.parameters = parameters;
|
|
90
|
-
|
|
91
|
-
export const Simgrid2x = Template.bind({});
|
|
92
|
-
Simgrid2x.args = {
|
|
93
|
-
...defaultProps,
|
|
94
|
-
id: "grid-3d",
|
|
95
|
-
layers: [
|
|
96
|
-
axes,
|
|
97
|
-
{
|
|
98
|
-
...grid3dLayer,
|
|
99
|
-
pointsData: "vtk-grid/Simgrid2x_points.json",
|
|
100
|
-
polysData: "vtk-grid/Simgrid2x_polys.json",
|
|
101
|
-
propertiesData: "vtk-grid/Simgrid2x_scalar.json",
|
|
102
|
-
},
|
|
103
|
-
],
|
|
104
|
-
};
|
|
105
|
-
Simgrid2x.parameters = parameters;
|
|
106
|
-
|
|
107
|
-
export const Simgrid4x = Template.bind({});
|
|
108
|
-
Simgrid4x.args = {
|
|
109
|
-
...defaultProps,
|
|
110
|
-
id: "grid-3d",
|
|
111
|
-
layers: [
|
|
112
|
-
axes,
|
|
113
|
-
{
|
|
114
|
-
...grid3dLayer,
|
|
115
|
-
pointsData: "vtk-grid/Simgrid4x_points.json",
|
|
116
|
-
polysData: "vtk-grid/Simgrid4x_polys.json",
|
|
117
|
-
propertiesData: "vtk-grid/Simgrid4x_scalar.json",
|
|
118
|
-
},
|
|
119
|
-
],
|
|
120
|
-
};
|
|
121
|
-
Simgrid4x.parameters = parameters;
|
|
122
|
-
|
|
123
|
-
export const Simgrid8xIJonly = Template.bind({});
|
|
124
|
-
Simgrid8xIJonly.args = {
|
|
125
|
-
...defaultProps,
|
|
126
|
-
id: "grid-3d",
|
|
127
|
-
layers: [
|
|
128
|
-
axes,
|
|
129
|
-
{
|
|
130
|
-
...grid3dLayer,
|
|
131
|
-
pointsData: "vtk-grid/Simgrid8xIJonly_points.json",
|
|
132
|
-
polysData: "vtk-grid/Simgrid8xIJonly_polys.json",
|
|
133
|
-
propertiesData: "vtk-grid/Simgrid8xIJonly_scalar.json",
|
|
134
|
-
},
|
|
135
|
-
],
|
|
136
|
-
};
|
|
137
|
-
Simgrid8xIJonly.parameters = parameters;
|
|
138
|
-
|
|
139
|
-
// // Intersection story.
|
|
140
|
-
// const intersection_axes = {
|
|
141
|
-
// "@@type": "AxesLayer",
|
|
142
|
-
// id: "axes-layer2",
|
|
143
|
-
// bounds: [463256, 5930542.5, -9060, 464465, 5932768, -7999],
|
|
144
|
-
// };
|
|
145
|
-
|
|
146
|
-
// const intersection = {
|
|
147
|
-
// "@@type": "Grid3DLayer",
|
|
148
|
-
// id: "Grid3DLayer",
|
|
149
|
-
// pointsData: "vtk-grid/intersection_points.json",
|
|
150
|
-
// polysData: "vtk-grid/intersection_polys.json",
|
|
151
|
-
// propertiesData: "vtk-grid/intersection_scalar.json",
|
|
152
|
-
// material: true,
|
|
153
|
-
// colorMapName: "Rainbow",
|
|
154
|
-
// scaleZ: 5,
|
|
155
|
-
// };
|
|
156
|
-
|
|
157
|
-
// export const Intersection = Template.bind({});
|
|
158
|
-
// Intersection.args = {
|
|
159
|
-
// ...defaultProps,
|
|
160
|
-
// id: "grid-3d",
|
|
161
|
-
// layers: [intersection_axes, intersection],
|
|
162
|
-
// };
|
|
163
|
-
|
|
164
|
-
// Intersection.parameters = {
|
|
165
|
-
// docs: {
|
|
166
|
-
// description: {
|
|
167
|
-
// story: "3D grid intersection geometry using vtk polydata format.",
|
|
168
|
-
// },
|
|
169
|
-
// inlineStories: false,
|
|
170
|
-
// iframeHeight: 500,
|
|
171
|
-
// },
|
|
172
|
-
// };
|
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
import { CompositeLayer, Color } from "@deck.gl/core/typed";
|
|
2
|
-
import privateLayer, { Material } from "./privateLayer";
|
|
3
|
-
import { ExtendedLayerProps, colorMapFunctionType } from "../utils/layerTools";
|
|
4
|
-
import { makeFullMesh } from "./webworker";
|
|
5
|
-
import { isEqual } from "lodash";
|
|
6
|
-
import { load, JSONLoader } from "@loaders.gl/core";
|
|
7
|
-
|
|
8
|
-
export type WebWorkerParams = {
|
|
9
|
-
points: number[];
|
|
10
|
-
polys: number[];
|
|
11
|
-
properties: number[];
|
|
12
|
-
isZIncreasingDownwards: boolean;
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
function GetBBox(
|
|
16
|
-
points: number[],
|
|
17
|
-
isZIncreasingDownwards: boolean
|
|
18
|
-
): [number, number, number, number, number, number] {
|
|
19
|
-
let xmax = -99999999;
|
|
20
|
-
let ymax = -99999999;
|
|
21
|
-
let zmax = -99999999;
|
|
22
|
-
|
|
23
|
-
let xmin = 99999999;
|
|
24
|
-
let ymin = 99999999;
|
|
25
|
-
let zmin = 99999999;
|
|
26
|
-
|
|
27
|
-
const z_sign = isZIncreasingDownwards ? -1 : 1;
|
|
28
|
-
|
|
29
|
-
for (let i = 0; i < points.length / 3; i++) {
|
|
30
|
-
xmax = points[3 * i + 0] > xmax ? points[3 * i + 0] : xmax;
|
|
31
|
-
xmin = points[3 * i + 0] < xmin ? points[3 * i + 0] : xmin;
|
|
32
|
-
|
|
33
|
-
ymax = points[3 * i + 1] > ymax ? points[3 * i + 1] : ymax;
|
|
34
|
-
ymin = points[3 * i + 1] < ymin ? points[3 * i + 1] : ymin;
|
|
35
|
-
|
|
36
|
-
zmax = points[3 * i + 2] > zmax ? points[3 * i + 2] : zmax;
|
|
37
|
-
zmin = points[3 * i + 2] < zmin ? points[3 * i + 2] : zmin;
|
|
38
|
-
}
|
|
39
|
-
return [xmin, ymin, zmin * z_sign, xmax, ymax, zmax * z_sign];
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
async function load_data(
|
|
43
|
-
pointsData: string | number[],
|
|
44
|
-
polysData: string | number[],
|
|
45
|
-
propertiesData: string | number[]
|
|
46
|
-
) {
|
|
47
|
-
const points = Array.isArray(pointsData)
|
|
48
|
-
? pointsData
|
|
49
|
-
: await load(pointsData as string, JSONLoader);
|
|
50
|
-
|
|
51
|
-
const polys = Array.isArray(polysData)
|
|
52
|
-
? polysData
|
|
53
|
-
: await load(polysData as string, JSONLoader);
|
|
54
|
-
|
|
55
|
-
const properties = Array.isArray(propertiesData)
|
|
56
|
-
? propertiesData
|
|
57
|
-
: await load(propertiesData as string, JSONLoader);
|
|
58
|
-
|
|
59
|
-
return Promise.all([points, polys, properties]);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export interface Grid3DLayerProps<D> extends ExtendedLayerProps<D> {
|
|
63
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
64
|
-
setReportedBoundingBox?: any;
|
|
65
|
-
|
|
66
|
-
/** Url or native javascript array. Set of points.
|
|
67
|
-
* [x1, y1, z1, x2, y2, z2, ...]
|
|
68
|
-
*/
|
|
69
|
-
pointsData: string | number[];
|
|
70
|
-
|
|
71
|
-
/** Url or native javascript array.
|
|
72
|
-
* For each polygon ["number of points in poly", p1, , p2 ... ]
|
|
73
|
-
* Example One polygn ith 4 poitns and one with 3 points.
|
|
74
|
-
* [4, 3, 1, 9, 77, 3, 6, 44, 23]
|
|
75
|
-
*/
|
|
76
|
-
polysData: string | number[];
|
|
77
|
-
|
|
78
|
-
/** Url or native javascript array..
|
|
79
|
-
* A scalar property for each polygon.
|
|
80
|
-
* [0.23, 0.11. 0.98, ...]
|
|
81
|
-
*/
|
|
82
|
-
propertiesData: string | number[];
|
|
83
|
-
|
|
84
|
-
/** Name of color map. E.g "PORO"
|
|
85
|
-
*/
|
|
86
|
-
colorMapName: string;
|
|
87
|
-
|
|
88
|
-
/** Use color map in this range.
|
|
89
|
-
*/
|
|
90
|
-
colorMapRange?: [number, number];
|
|
91
|
-
|
|
92
|
-
/** Clamp colormap to this color at ends.
|
|
93
|
-
* Given as array of three values (r,g,b) e.g: [255, 0, 0]
|
|
94
|
-
* If not set or set to true, it will clamp to color map min and max values.
|
|
95
|
-
* If set to false the clamp color will be completely transparent.
|
|
96
|
-
*/
|
|
97
|
-
colorMapClampColor: Color | undefined | boolean;
|
|
98
|
-
|
|
99
|
-
/** Optional function property.
|
|
100
|
-
* If defined this function will override the color map.
|
|
101
|
-
* Takes a value in the range [0,1] and returns a color.
|
|
102
|
-
* E.g. (x) => [x * 255, x * 255, x * 255]
|
|
103
|
-
*/
|
|
104
|
-
colorMapFunction?: colorMapFunctionType | false;
|
|
105
|
-
|
|
106
|
-
/** Surface material properties.
|
|
107
|
-
* material: true = default material, coloring depends on surface orientation and lighting.
|
|
108
|
-
* false = no material, coloring is independent on surface orientation and lighting.
|
|
109
|
-
* or full spec:
|
|
110
|
-
* material: {
|
|
111
|
-
* ambient: 0.35,
|
|
112
|
-
* diffuse: 0.6,
|
|
113
|
-
* shininess: 32,
|
|
114
|
-
* specularColor: [255, 255, 255],
|
|
115
|
-
* }
|
|
116
|
-
*/
|
|
117
|
-
material: Material;
|
|
118
|
-
|
|
119
|
-
/** Enable/disable depth testing when rendering layer. Default true.
|
|
120
|
-
*/
|
|
121
|
-
depthTest: boolean;
|
|
122
|
-
|
|
123
|
-
/** If true means that input z values are interpreted as depths.
|
|
124
|
-
* For example depth of z = 1000 corresponds to -1000 on the z axis. Default true.
|
|
125
|
-
*/
|
|
126
|
-
ZIncreasingDownwards: boolean;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
const defaultProps = {
|
|
130
|
-
"@@type": "Grid3DLayer",
|
|
131
|
-
name: "Grid 3D",
|
|
132
|
-
id: "grid-3d-layer",
|
|
133
|
-
visible: true,
|
|
134
|
-
material: true,
|
|
135
|
-
colorMapName: "",
|
|
136
|
-
propertyValueRange: [0.0, 1.0],
|
|
137
|
-
depthTest: true,
|
|
138
|
-
ZIncreasingDownwards: true,
|
|
139
|
-
};
|
|
140
|
-
|
|
141
|
-
export default class Grid3DLayer extends CompositeLayer<
|
|
142
|
-
Grid3DLayerProps<unknown>
|
|
143
|
-
> {
|
|
144
|
-
rebuildData(reportBoundingBox: boolean): void {
|
|
145
|
-
const p = load_data(
|
|
146
|
-
this.props.pointsData,
|
|
147
|
-
this.props.polysData,
|
|
148
|
-
this.props.propertiesData
|
|
149
|
-
);
|
|
150
|
-
|
|
151
|
-
p.then(([points, polys, properties]) => {
|
|
152
|
-
const bbox = GetBBox(points, this.props.ZIncreasingDownwards);
|
|
153
|
-
|
|
154
|
-
// Using inline web worker for calculating the triangle mesh from
|
|
155
|
-
// loaded input data so not to halt the GUI thread.
|
|
156
|
-
const blob = new Blob(
|
|
157
|
-
["self.onmessage = ", makeFullMesh.toString()],
|
|
158
|
-
{ type: "text/javascript" }
|
|
159
|
-
);
|
|
160
|
-
const url = URL.createObjectURL(blob);
|
|
161
|
-
const webWorker = new Worker(url);
|
|
162
|
-
|
|
163
|
-
const webworkerParams = {
|
|
164
|
-
points,
|
|
165
|
-
polys,
|
|
166
|
-
properties,
|
|
167
|
-
isZIncreasingDownwards: this.props.ZIncreasingDownwards,
|
|
168
|
-
};
|
|
169
|
-
|
|
170
|
-
webWorker.postMessage(webworkerParams);
|
|
171
|
-
webWorker.onmessage = (e) => {
|
|
172
|
-
const [mesh, mesh_lines, propertyValueRange] = e.data;
|
|
173
|
-
const legend = {
|
|
174
|
-
discrete: false,
|
|
175
|
-
valueRange: this.props.colorMapRange ?? propertyValueRange,
|
|
176
|
-
colorName: this.props.colorMapName,
|
|
177
|
-
title: "MapLayer",
|
|
178
|
-
colorMapFunction: this.props.colorMapFunction,
|
|
179
|
-
};
|
|
180
|
-
|
|
181
|
-
this.setState({
|
|
182
|
-
mesh,
|
|
183
|
-
mesh_lines,
|
|
184
|
-
propertyValueRange,
|
|
185
|
-
legend,
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
if (
|
|
189
|
-
typeof this.props.setReportedBoundingBox !== "undefined" &&
|
|
190
|
-
reportBoundingBox
|
|
191
|
-
) {
|
|
192
|
-
this.props.setReportedBoundingBox(bbox);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
webWorker.terminate();
|
|
196
|
-
};
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
initializeState(): void {
|
|
201
|
-
const reportBoundingBox = true;
|
|
202
|
-
this.rebuildData(reportBoundingBox);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
updateState({
|
|
206
|
-
props,
|
|
207
|
-
oldProps,
|
|
208
|
-
}: {
|
|
209
|
-
props: Grid3DLayerProps<unknown>;
|
|
210
|
-
oldProps: Grid3DLayerProps<unknown>;
|
|
211
|
-
}): void {
|
|
212
|
-
const needs_reload =
|
|
213
|
-
!isEqual(props.pointsData, oldProps.pointsData) ||
|
|
214
|
-
!isEqual(props.polysData, oldProps.polysData) ||
|
|
215
|
-
!isEqual(props.propertiesData, oldProps.propertiesData) ||
|
|
216
|
-
!isEqual(props.ZIncreasingDownwards, oldProps.ZIncreasingDownwards);
|
|
217
|
-
|
|
218
|
-
if (needs_reload) {
|
|
219
|
-
const reportBoundingBox = false;
|
|
220
|
-
this.rebuildData(reportBoundingBox);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
renderLayers(): [privateLayer?] {
|
|
225
|
-
if (Object.keys(this.state).length === 0) {
|
|
226
|
-
return [];
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
const layer = new privateLayer(
|
|
230
|
-
this.getSubLayerProps({
|
|
231
|
-
mesh: this.state["mesh"],
|
|
232
|
-
meshLines: this.state["mesh_lines"],
|
|
233
|
-
pickable: true,
|
|
234
|
-
colorMapName: this.props.colorMapName,
|
|
235
|
-
colorMapRange: this.props.colorMapRange,
|
|
236
|
-
colorMapClampColor: this.props.colorMapClampColor,
|
|
237
|
-
colorMapFunction: this.props.colorMapFunction,
|
|
238
|
-
propertyValueRange: this.state["propertyValueRange"],
|
|
239
|
-
material: this.props.material,
|
|
240
|
-
depthTest: this.props.depthTest,
|
|
241
|
-
})
|
|
242
|
-
);
|
|
243
|
-
return [layer];
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
Grid3DLayer.layerName = "Grid3DLayer";
|
|
248
|
-
Grid3DLayer.defaultProps = defaultProps as unknown as Grid3DLayerProps<unknown>;
|