WALL THICKNESS DETECTION
by spacorum
HTML
<script src="https://threejs.org/build/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<script src="https://threejs.org/examples/js/loaders/STLLoader.js"></script>
CSS
body {
overflow: hidden;
margin: 0;
}
JavaScript
console.clear();
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.setScalar(5);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
var controls = new THREE.OrbitControls(camera, renderer.domElement);
var loader = new THREE.STLLoader();
var stlPath = 'https://threejs.org/examples/models/stl/ascii/slotted_disk.stl';
//var stlPath = 'http://localhost/MEDIAWAVE/lafactoria3d_es/webroot/3dmodels/__OTROS/_test%20slicer.js/';
loader.load(stlPath, function(geometry) {
//
var support_free = new THREE.MeshBasicMaterial({
color : 0x00FF00,
side:THREE.DoubleSide,
visible: true
});
var support_suggested = new THREE.MeshBasicMaterial({
color : 0xf6931f,
side:THREE.DoubleSide,
visible: true
});
var support_required = new THREE.MeshBasicMaterial({
color : 0xff0000,
side:THREE.DoubleSide,
visible: true
});
var material = [];
material.push(support_free);
material.push(support_suggested);
material.push(support_required);
//var material = new THREE.MeshNormalMaterial({side: THREE.DoubleSide});
var tempGeo = new THREE.Geometry().fromBufferGeometry(geometry);
tempGeo.mergeVertices();
tempGeo.computeVertexNormals();
tempGeo.computeFaceNormals();
//console.log(tempGeo.faces);
//geometry = new THREE.BufferGeometry().fromGeometry(tempGeo);
var mesh = new THREE.Mesh(tempGeo, material);
/*var faces = mesh.geometry.faces;
for (var index in faces){
var face = faces[index];
face.materialIndex = 1;
}*/
scene.add(mesh);
//console.log(isModelPrintable(mesh, geometry));
console.log(isModelPrintable(mesh));
});
function isModelPrintable(mesh) {
//console.warn(geometry.faces);
var minDist = 0.08;
var minDistOriginal = minDist;
var raycaster = new...