diff options
Diffstat (limited to 'client/splash/old/draco.js')
| -rw-r--r-- | client/splash/old/draco.js | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/client/splash/old/draco.js b/client/splash/old/draco.js deleted file mode 100644 index 3f9bfad8..00000000 --- a/client/splash/old/draco.js +++ /dev/null @@ -1,102 +0,0 @@ -function load() { - // Enable logging to console output. - dracoLoader.setVerbosity(1); - - // To use triangle strips use: - // dracoLoader.setDrawMode(THREE.TriangleStripDrawMode); - dracoLoader.setDrawMode(THREE.TrianglesDrawMode); - - // Skip dequantization of the position attribute. It will be done on the GPU. - dracoLoader.setSkipDequantization('position', true); - dracoLoader.decodeDracoFile(reader.result, function(bufferGeometry) { - if (dracoLoader.decode_time !== undefined) { - fileDisplayArea.innerText = 'Decode time = ' + dracoLoader.decode_time + '\n' + - 'Import time = ' + dracoLoader.import_time; - } - var material = new THREE.MeshBasicMaterial({vertexColors: THREE.VertexColors}); - material.wireframe = true - // If the position attribute is quantized, modify the material to perform - // dequantization on the GPU. - if (bufferGeometry.attributes['position'].isQuantized) { - setDequantizationForMaterial(material, bufferGeometry); - } - - var geometry; - // Point cloud does not have face indices. - if (bufferGeometry.index == null) { - geometry = new THREE.Points(bufferGeometry, material); - } else { - if (bufferGeometry.attributes.normal === undefined) { - var geometryHelper = new GeometryHelper(); - geometryHelper.computeVertexNormals(bufferGeometry); - } - geometry = new THREE.Mesh(bufferGeometry, material); - geometry.drawMode = dracoLoader.drawMode; - } - - // Compute range of the geometry coordinates for proper rendering. - bufferGeometry.computeBoundingBox(); - if (bufferGeometry.attributes['position'].isQuantized) { - // If the geometry is quantized, transform the bounding box to the dequantized - // coordinates. - var posAttribute = bufferGeometry.attributes['position']; - var normConstant = - posAttribute.maxRange / (1 << posAttribute.numQuantizationBits); - var minPos = posAttribute.minValues; - bufferGeometry.boundingBox.max.x = - minPos[0] + bufferGeometry.boundingBox.max.x * normConstant; - bufferGeometry.boundingBox.max.y = - minPos[1] + bufferGeometry.boundingBox.max.y * normConstant; - bufferGeometry.boundingBox.max.z = - minPos[2] + bufferGeometry.boundingBox.max.z * normConstant; - bufferGeometry.boundingBox.min.x = - minPos[0] + bufferGeometry.boundingBox.min.x * normConstant; - bufferGeometry.boundingBox.min.y = - minPos[1] + bufferGeometry.boundingBox.min.y * normConstant; - bufferGeometry.boundingBox.min.z = - minPos[2] + bufferGeometry.boundingBox.min.z * normConstant; - } - var sizeX = bufferGeometry.boundingBox.max.x - bufferGeometry.boundingBox.min.x; - var sizeY = bufferGeometry.boundingBox.max.y - bufferGeometry.boundingBox.min.y; - var sizeZ = bufferGeometry.boundingBox.max.z - bufferGeometry.boundingBox.min.z; - var diagonalSize = Math.sqrt(sizeX * sizeX + sizeY * sizeY + sizeZ * sizeZ); - var scale = 1.0 / diagonalSize; - var midX = - (bufferGeometry.boundingBox.min.x + bufferGeometry.boundingBox.max.x) / 2; - var midY = - (bufferGeometry.boundingBox.min.y + bufferGeometry.boundingBox.max.y) / 2; - var midZ = - (bufferGeometry.boundingBox.min.z + bufferGeometry.boundingBox.max.z) / 2; - - geometry.scale.multiplyScalar(scale); - geometry.position.x = -midX * scale; - geometry.position.y = -midY * scale; - geometry.position.z = -midZ * scale; - // geometry.castShadow = true; - // geometry.receiveShadow = true; - - var selectedObject = scene.getObjectByName("my_mesh"); - scene.remove(selectedObject); - geometry.name = "my_mesh"; - scene.add(geometry); - }); -} - -function setDequantizationForMaterial(material, bufferGeometry) { - material.onBeforeCompile = function(shader) { - // Add uniform variables needed for dequantization. - var posAttribute = bufferGeometry.attributes['position']; - shader.uniforms.normConstant = - { value: posAttribute.maxRange / (1 << posAttribute.numQuantizationBits) }; - shader.uniforms.minPos = { value: posAttribute.minValues }; - - shader.vertexShader = 'uniform float maxRange;\n' + - 'uniform float normConstant;\n' + - 'uniform vec3 minPos;\n' + - shader.vertexShader; - shader.vertexShader = shader.vertexShader.replace( - '#include <begin_vertex>', - 'vec3 transformed = minPos + position * normConstant;' - ); - } -} |
