experiment with material clipping planes

This commit is contained in:
Stewart Allen 2022-04-27 17:56:07 -04:00
commit 3af830afe6
4 changed files with 99 additions and 2 deletions

View file

@ -14,6 +14,7 @@
* `P` do not move (average) endpoints connected to long lines in decimate
* `P` explore widget vertex reloading / replacing (Onshape) (issue #48)
* `P` faster ray intersect https://github.com/gkjohnson/three-mesh-bvh/
* `P` try material clipping planes for slice range selection
* `F` edit in Mesh:Tool
* `F` custom device vars for profiles / ranges / gcode

View file

@ -0,0 +1,83 @@
{
"noclone": false,
"mode": "FDM",
"internal": 0,
"bedHeight": 2.5,
"bedWidth": 222,
"bedDepth": 222,
"bedRound": false,
"bedBelt": false,
"resolutionX": 1600,
"resolutionY": 900,
"maxHeight": 222,
"originCenter": false,
"extrudeAbs": false,
"gcodeFan": [
"M106 S{fan_speed}"
],
"gcodeTrack": [
"M117 {progress}% layer {layer} / {layers}"
],
"gcodeLayer": [],
"gcodePre": [
"M107 ; turn off filament cooling fan",
"M104 S{temp} T0 ; set extruder temperature",
"M140 S{bed_temp} T0 ; set bed temperature",
"G90 ; set absolute positioning mode",
"M83 ; set relative positioning for extruder",
"G28 ; home axes",
"G1 F3000 ; set default move speed",
"G1 Z1 F6000 ; pause above the bed",
"M190 S{bed_temp} T0 ; wait for bed to reach target temp",
"M109 S{temp} T0 ; wait for extruder to reach target temp",
"G92 E0 ; set extruder position to 0"
],
"gcodePost": [
"M107 ; turn off filament cooling fan",
"M104 S0 T0 ; turn off extruder",
"M140 S0 T0 ; turn off bed",
"G91 ; relative movement",
"G1 Z10 F1200 ; drop bed 10mm",
"G90 ; absolute positioning",
"G28 X0 Y0 ; home XY axes",
"M84 ; disable stepper motors"
],
"gcodeExt": [],
"gcodeInt": [],
"gcodeProc": "",
"gcodePause": [],
"gcodeDwell": [],
"gcodeSpindle": [],
"gcodeChange": [],
"gcodeFExt": "gcode",
"gcodeSpace": true,
"gcodeStrip": false,
"gcodeLaserOn": [],
"gcodeLaserOff": [],
"extruders": [
{
"extFilament": 1.75,
"extNozzle": 0.4,
"extSelect": [
"T0"
],
"extDeselect": [],
"extOffsetX": 0,
"extOffsetY": 0
}
],
"deviceName": "Anycubic Kobra",
"fwRetract": false,
"extras": {
"palette": {
"printer": "6c99ea036da",
"ping": null,
"feed": null,
"push": null,
"offset": null,
"heat": null,
"cool": null,
"press": null
}
}
}

View file

@ -301,13 +301,16 @@ class Widget {
const mesh = new THREE.Mesh(
geometry, [
new THREE.MeshPhongMaterial({
side: THREE.DoubleSide,
color: 0xffff00,
specular: 0x202020,
shininess: 125,
transparent: true,
opacity: solid_opacity
opacity: solid_opacity,
clipIntersection: false
}),
new THREE.MeshPhongMaterial({
side: THREE.DoubleSide,
color: 0x0088ee,
specular: 0x202020,
shininess: 100,
@ -318,7 +321,7 @@ class Widget {
mesh.renderOrder = 1;
geometry.computeVertexNormals();
geometry.addGroup(0, Infinity, 0);
mesh.material[0].side = THREE.DoubleSide;
// mesh.material[0].side = THREE.DoubleSide;
mesh.castShadow = true;
mesh.receiveShadow = true;
mesh.widget = this;
@ -380,6 +383,15 @@ class Widget {
return this.mesh.material[0];
}
setZClip(from, to) {
let mat = this.getMaterial();
mat.clippingPlanes = (from >= 0 && to >= 0) ? [
new THREE.Plane(new THREE.Vector3(0, 1, 0), -from),
new THREE.Plane(new THREE.Vector3(0, -1, 0), to),
] : null;
moto.space.refresh();
}
isVisible() {
return this.getMaterial().visible;
}

View file

@ -1231,6 +1231,7 @@ gapp.register("moto.space", [], (root, exports) => {
preserveDrawingBuffer: true,
logarithmicDepthBuffer: true
});
renderer.localClippingEnabled = true;
camera = ortho ?
new THREE.OrthographicCamera(-100 * aspect(), 100 * aspect(), 100, -100, 0.1, 100000) :
new THREE.PerspectiveCamera(perspective, aspect(), 0.1, 100000);