@duet3d/gcodeviewer 3.7.0-alpha.6 → 3.7.0-alpha.8
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/Renderables/bed.d.ts +3 -0
- package/dist/Renderables/ruler.d.ts +21 -0
- package/dist/Renderables/viewbox.d.ts +5 -0
- package/dist/index.cjs.js +43 -7
- package/dist/index.es.js +43 -7
- package/dist/lineshader.d.ts +8 -3
- package/dist/processor.d.ts +16 -0
- package/dist/viewer-proxy.d.ts +8 -3
- package/dist/viewer.d.ts +24 -3
- package/package.json +5 -3
package/dist/lineshader.d.ts
CHANGED
|
@@ -1,24 +1,29 @@
|
|
|
1
1
|
import { ShaderMaterial } from '@babylonjs/core/Materials/shaderMaterial';
|
|
2
2
|
import { Scene } from '@babylonjs/core/scene';
|
|
3
3
|
import { UniformBuffer } from '@babylonjs/core/Materials/uniformBuffer';
|
|
4
|
+
export declare function trailTime(): number;
|
|
4
5
|
export default class LineShaderMaterial {
|
|
5
6
|
scene: Scene;
|
|
6
7
|
material: ShaderMaterial;
|
|
7
8
|
toolBuffer: UniformBuffer;
|
|
8
9
|
renderMode: number;
|
|
9
|
-
static readonly
|
|
10
|
-
static readonly
|
|
10
|
+
static readonly trailHistorySize = 64;
|
|
11
|
+
static readonly vertexShader: string;
|
|
12
|
+
static readonly fragmentShader = "\n precision highp float;\n #include<helperFunctions>\n\n const vec3 LIGHT_TOP_DIR = vec3(-0.4574957, 0.4574957, 0.7624929);\n const vec3 LIGHT_FRONT_DIR = vec3(0.0, 0.0, 1.0);\n \n // x = ambient, y = top diffuse, z = front diffuse, w = global\n const vec4 light_intensity = vec4(0.45, 0.7, 0.75, 0.75);\n const float SPECULAR_POWER = 32.0;\n const float SPECULAR_INTENSITY = 0.35;\n varying vec3 eye_normal;\n varying vec3 eye_pos;\n\n#include<clipPlaneFragmentDeclaration>\n\n uniform bool lineMesh;\n uniform bool alphaMode;\n uniform bool progressMode;\n uniform float unprintedOpacity;\n uniform bool useSpecular;\n\n flat in vec3 vDiffColor;\n flat in float fIsPerimeter;\n flat in float bDiscard;\n flat in float fShow;\n flat in float focused;\n const vec3 lowerBound = vec3(0.3,0.3,0.3);\n\n void main(){\n #include<clipPlaneFragment>\n\n if( bDiscard > 0.0) {\n discard;\n }\n\n vec4 diffuseColor = vec4(vDiffColor, 1);\n\n if(focused > 0.) \n {\n diffuseColor.a = 1.0;\n }\n else if(progressMode && fShow < 0.0)\n {\n diffuseColor.a = unprintedOpacity;\n }\n else\n {\n diffuseColor.a = fShow >= 0.0 || !alphaMode ? 0.99 : unprintedOpacity;\n }\n \n if(lineMesh) {\n if(fIsPerimeter < 1.0)\n {\n if(all(lessThan(diffuseColor.rgb,lowerBound.rgb))) {\n diffuseColor = vec4(diffuseColor.rgb + lowerBound, diffuseColor.a);\n }\n else {\n diffuseColor = vec4(diffuseColor.rgb - lowerBound, diffuseColor.a);\n }\n }\n else\n {\n diffuseColor = vec4(diffuseColor.rgb, diffuseColor.a);\n }\n gl_FragColor = diffuseColor;\n }\n else\n {\n vec3 normal = normalize(eye_normal);\n float NdotL = abs(dot(normal, LIGHT_TOP_DIR));\n float intensity = light_intensity.x + NdotL * light_intensity.y;\n NdotL = abs(dot(normal, LIGHT_FRONT_DIR));\n intensity += NdotL * light_intensity.z;\n vec3 shaded = diffuseColor.rgb * light_intensity.w * intensity;\n if(useSpecular)\n {\n vec3 halfDir = normalize(LIGHT_TOP_DIR + normalize(-eye_pos));\n shaded += vec3(pow(max(dot(normal, halfDir), 0.0), SPECULAR_POWER) * SPECULAR_INTENSITY);\n }\n gl_FragColor = vec4(shaded, diffuseColor.a);\n }\n }";
|
|
11
13
|
constructor(scene: Scene);
|
|
12
14
|
buildMaterial(): void;
|
|
13
15
|
updateRenderMode(mode: number): void;
|
|
14
16
|
updateCurrentFilePosition(position: number): void;
|
|
17
|
+
updateTrailHistory(history: number[], startPosition: number): void;
|
|
18
|
+
setTrailDuration(seconds: number): void;
|
|
19
|
+
setTrailColor(color: number[]): void;
|
|
15
20
|
getMaterial(): ShaderMaterial;
|
|
16
21
|
updateToolColors(toolColors: number[]): void;
|
|
17
22
|
setPickColor(color: number[]): void;
|
|
18
23
|
setMaxFeedRate(feedRate: number): void;
|
|
19
24
|
setMinFeedRate(feedRate: number): void;
|
|
20
25
|
setAlphaMode(mode: boolean): void;
|
|
21
|
-
|
|
26
|
+
setUnprintedOpacity(value: number): void;
|
|
22
27
|
setProgressMode(mode: boolean): void;
|
|
23
28
|
setShowTravels(show: boolean): void;
|
|
24
29
|
setPersistTravels(persist: boolean): void;
|
package/dist/processor.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Base } from './GCodeLines';
|
|
|
2
2
|
import { default as ProcessorProperties } from './processorproperties';
|
|
3
3
|
import { Scene } from '@babylonjs/core/scene';
|
|
4
4
|
import { Mesh } from '@babylonjs/core/Meshes/mesh';
|
|
5
|
+
import { Vector3 } from '@babylonjs/core/Maths/math.vector';
|
|
5
6
|
import { default as GPUPicker } from './gpupicker';
|
|
6
7
|
import { default as LineShaderMaterial } from './lineshader';
|
|
7
8
|
import { default as Nozzle } from './Renderables/nozzle';
|
|
@@ -15,7 +16,12 @@ export default class Processor {
|
|
|
15
16
|
worker: Worker;
|
|
16
17
|
modelMaterial: LineShaderMaterial[];
|
|
17
18
|
filePosition: number;
|
|
19
|
+
renderedFilePosition: number;
|
|
18
20
|
focusedColorId: number;
|
|
21
|
+
trailDuration: number;
|
|
22
|
+
liveTracking: boolean;
|
|
23
|
+
trailColor: number[];
|
|
24
|
+
private trailHistory;
|
|
19
25
|
allowSeek: boolean;
|
|
20
26
|
lastMeshMode: number;
|
|
21
27
|
perimeterOnly: boolean;
|
|
@@ -84,11 +90,21 @@ export default class Processor {
|
|
|
84
90
|
setMeshMode(mode: any): void;
|
|
85
91
|
testBuildMesh(renderlines: any, segCount: any, alphaIndex: any): Mesh[];
|
|
86
92
|
getGCodeInRange(filePos: any, count?: number): void;
|
|
93
|
+
setTrailDuration(seconds: number): void;
|
|
94
|
+
private effectiveTrailDuration;
|
|
95
|
+
setLiveTracking(enabled: boolean): void;
|
|
96
|
+
setTrailColor(color: number[]): void;
|
|
97
|
+
resetTrail(): void;
|
|
98
|
+
private recordTrailSample;
|
|
87
99
|
updateFilePosition(position: number, animate?: boolean): void;
|
|
88
100
|
private closestPositionData;
|
|
89
101
|
private updateNozzlePositionInstant;
|
|
90
102
|
private updateNozzlePositionAnimated;
|
|
91
103
|
animateNozzleToPosition(targetPosition: number): Promise<void>;
|
|
104
|
+
getExtrusionBounds(upToFilePosition?: number): {
|
|
105
|
+
min: Vector3;
|
|
106
|
+
max: Vector3;
|
|
107
|
+
} | null;
|
|
92
108
|
updateByLineNumber(lineNumber: number): void;
|
|
93
109
|
private buildMeshesFromWasmBuffers;
|
|
94
110
|
private createMeshesFromWasmBuffers;
|
package/dist/viewer-proxy.d.ts
CHANGED
|
@@ -36,8 +36,8 @@ export default class ViewerProxy {
|
|
|
36
36
|
y: number;
|
|
37
37
|
z: number;
|
|
38
38
|
}): void;
|
|
39
|
-
resetCamera(): void;
|
|
40
|
-
frameToPrint(): void;
|
|
39
|
+
resetCamera(animate?: boolean): void;
|
|
40
|
+
frameToPrint(animate?: boolean): void;
|
|
41
41
|
requestPrintBounds(): void;
|
|
42
42
|
setBackgroundColor(color: string): void;
|
|
43
43
|
setCameraInertia(enabled: boolean): void;
|
|
@@ -63,7 +63,10 @@ export default class ViewerProxy {
|
|
|
63
63
|
setBedRenderMode(mode: number): void;
|
|
64
64
|
setBedColor(color: string): void;
|
|
65
65
|
setProgressColor(color: string): void;
|
|
66
|
-
|
|
66
|
+
setLiveTracking(enabled: boolean): void;
|
|
67
|
+
setTrailDuration(seconds: number): void;
|
|
68
|
+
setTrailColor(color: string): void;
|
|
69
|
+
setUnprintedOpacity(value: number): void;
|
|
67
70
|
setShowTravels(show: boolean): void;
|
|
68
71
|
setPersistTravels(persist: boolean): void;
|
|
69
72
|
setFeedRateRange(min: number, max: number): void;
|
|
@@ -78,6 +81,8 @@ export default class ViewerProxy {
|
|
|
78
81
|
setDeltaBed(isDelta: boolean): void;
|
|
79
82
|
showBed(visible: boolean): void;
|
|
80
83
|
showAxes(visible: boolean): void;
|
|
84
|
+
showRuler(visible: boolean): void;
|
|
85
|
+
setRulerInterval(interval: number | null): void;
|
|
81
86
|
showWorkplace(visible: boolean): void;
|
|
82
87
|
loadObjectBoundaries(objects: any[]): void;
|
|
83
88
|
showObjectSelection(visible: boolean): void;
|
package/dist/viewer.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { default as Processor } from './processor';
|
|
|
9
9
|
import { default as ViewBox, ViewBoxDirection } from './Renderables/viewbox';
|
|
10
10
|
import { default as Bed, BuildVolume, RenderBedMode } from './Renderables/bed';
|
|
11
11
|
import { default as Axes } from './Renderables/axes';
|
|
12
|
+
import { default as Ruler } from './Renderables/ruler';
|
|
12
13
|
import { default as Workplace } from './Renderables/workplace';
|
|
13
14
|
import { default as BuildObjects } from './Renderables/buildobjects';
|
|
14
15
|
export default class Viewer {
|
|
@@ -32,12 +33,16 @@ export default class Viewer {
|
|
|
32
33
|
viewBox: ViewBox | null;
|
|
33
34
|
bed: Bed | null;
|
|
34
35
|
axes: Axes | null;
|
|
36
|
+
ruler: Ruler | null;
|
|
35
37
|
workplace: Workplace | null;
|
|
36
38
|
buildObjects: BuildObjects | null;
|
|
37
39
|
zTopClipValue: number | null;
|
|
38
40
|
zBottomClipValue: number | null;
|
|
39
41
|
allowSeek: boolean;
|
|
42
|
+
private alphaMode;
|
|
43
|
+
private progressMode;
|
|
40
44
|
offscreen: boolean;
|
|
45
|
+
private static readonly CAMERA_TRANSITION_FRAMES;
|
|
41
46
|
lastFrameUpdate: number;
|
|
42
47
|
renderTimeout: number;
|
|
43
48
|
maxFrameRate: number;
|
|
@@ -56,10 +61,18 @@ export default class Viewer {
|
|
|
56
61
|
init_worker(data: any, worker: Worker): void;
|
|
57
62
|
setSizes(width: any, height: any): void;
|
|
58
63
|
initEngine(): Promise<void>;
|
|
64
|
+
private stopCameraAnimation;
|
|
65
|
+
private animateCameraTo;
|
|
59
66
|
setCameraDirection(direction: ViewBoxDirection): void;
|
|
60
|
-
resetCamera(): void;
|
|
67
|
+
resetCamera(animate?: boolean): void;
|
|
68
|
+
frameToPrint(animate?: boolean): void;
|
|
69
|
+
private bedCorners;
|
|
70
|
+
private printCorners;
|
|
71
|
+
private frameCorners;
|
|
72
|
+
private projectCorners;
|
|
73
|
+
private fitRadius;
|
|
74
|
+
private centerVertically;
|
|
61
75
|
private getPrintBoundingBox;
|
|
62
|
-
frameToPrint(): void;
|
|
63
76
|
postPrintBounds(): void;
|
|
64
77
|
registerClipIgnore(mesh: any): void;
|
|
65
78
|
setAllowSeek(enabled: boolean): void;
|
|
@@ -70,8 +83,13 @@ export default class Viewer {
|
|
|
70
83
|
setBuildVolume(volume: BuildVolume): void;
|
|
71
84
|
setBedRenderMode(mode: RenderBedMode): void;
|
|
72
85
|
setBedColor(color: string): void;
|
|
86
|
+
setAlphaMode(mode: boolean): void;
|
|
87
|
+
setProgressMode(mode: boolean): void;
|
|
73
88
|
setProgressColor(color: string): void;
|
|
74
|
-
|
|
89
|
+
setLiveTracking(enabled: boolean): void;
|
|
90
|
+
setTrailDuration(seconds: number): void;
|
|
91
|
+
setTrailColor(color: string): void;
|
|
92
|
+
setUnprintedOpacity(value: number): void;
|
|
75
93
|
setShowTravels(show: boolean): void;
|
|
76
94
|
setPersistTravels(persist: boolean): void;
|
|
77
95
|
setFeedRateRange(min: number | null, max: number | null): void;
|
|
@@ -82,6 +100,9 @@ export default class Viewer {
|
|
|
82
100
|
setDeltaBed(isDelta: boolean): void;
|
|
83
101
|
showBed(visible: boolean): void;
|
|
84
102
|
showAxes(visible: boolean): void;
|
|
103
|
+
showRuler(visible: boolean): void;
|
|
104
|
+
setRulerInterval(interval: number | null): void;
|
|
105
|
+
private syncGridToRuler;
|
|
85
106
|
showWorkplace(visible: boolean): void;
|
|
86
107
|
loadObjectBoundaries(objects: any[]): void;
|
|
87
108
|
showObjectSelection(visible: boolean): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@duet3d/gcodeviewer",
|
|
3
|
-
"version": "3.7.0-alpha.
|
|
3
|
+
"version": "3.7.0-alpha.8",
|
|
4
4
|
"description": "G-code viewer and processor library with Babylon.js rendering and a Rust/WASM parsing fast path",
|
|
5
5
|
"main": "./dist/index.cjs.js",
|
|
6
6
|
"module": "./dist/index.es.js",
|
|
@@ -21,11 +21,13 @@
|
|
|
21
21
|
"dev": "vite",
|
|
22
22
|
"build": "vite build",
|
|
23
23
|
"preview": "vite preview",
|
|
24
|
+
"precheck": "node WASM_FileProcessor/ensure-pkg.mjs",
|
|
24
25
|
"check": "tsc --noEmit",
|
|
25
|
-
"
|
|
26
|
+
"prepublishOnly": "node WASM_FileProcessor/ensure-pkg.mjs --require-real",
|
|
27
|
+
"build:wasm": "cd WASM_FileProcessor && wasm-pack build --target web --out-dir pkg --release && cp pkg/gcode_file_processor.d.ts pkg-fallback/gcode_file_processor.d.ts",
|
|
26
28
|
"build:wasm:node": "cd WASM_FileProcessor && wasm-pack build --target nodejs --out-dir pkg-node --release"
|
|
27
29
|
},
|
|
28
|
-
"contributors": ["Juan Rosario", "Christian Hammacher"],
|
|
30
|
+
"contributors": ["Juan Rosario", "Christian Hammacher", "James Skitt"],
|
|
29
31
|
"license": "ISC",
|
|
30
32
|
"devDependencies": {
|
|
31
33
|
"@babylonjs/core": "^9.15.0",
|