summaryrefslogtreecommitdiff
path: root/client/splash/face
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2019-01-28 13:53:44 +0100
committerJules Laplace <julescarbon@gmail.com>2019-01-28 13:53:44 +0100
commit0c0c2ec2ecfd64b16ff6ca0e69142223615f0c36 (patch)
treee67d8519c87ccddb35e449116117b8b085a385de /client/splash/face
parent80c592a33ca8f1e2e3da9d050df4119e434b7aae (diff)
fix obj2ply, add may and xi
Diffstat (limited to 'client/splash/face')
-rw-r--r--client/splash/face/markers.js4
-rw-r--r--client/splash/face/mesh.js145
2 files changed, 71 insertions, 78 deletions
diff --git a/client/splash/face/markers.js b/client/splash/face/markers.js
index 1832824c..1636349c 100644
--- a/client/splash/face/markers.js
+++ b/client/splash/face/markers.js
@@ -78,5 +78,5 @@ export function swap(face) {
}
export function update() {
- group.rotation.y += 0.005
-} \ No newline at end of file
+ // group.rotation.y += 0.005
+}
diff --git a/client/splash/face/mesh.js b/client/splash/face/mesh.js
index 61c4e498..efa9530e 100644
--- a/client/splash/face/mesh.js
+++ b/client/splash/face/mesh.js
@@ -10,17 +10,21 @@ const dracoLoader = new DRACOLoader()
DRACOLoader.getDecoderModule()
export function load(name) {
- dracoLoader.load('/assets/data/faces/' + name + '.drc', (geometry) => {
- geometry.computeVertexNormals()
+ dracoLoader.setVerbosity(1)
+ dracoLoader.setDrawMode(TrianglesDrawMode)
+ dracoLoader.setSkipDequantization('position', true)
+ dracoLoader.load('/assets/data/faces/' + name + '.drc', dracoDidLoad)
+ // dracoLoader.load('/assets/data/faces/' + name + '.drc', (geometry) => {
+ // geometry.computeVertexNormals()
- const material = new MeshBasicMaterial({ vertexColors: VertexColors })
- const mesh = new Mesh(geometry, material)
- scene.add(mesh)
- console.log(name)
+ // const material = new MeshBasicMaterial({ vertexColors: VertexColors })
+ // const mesh = new Mesh(geometry, material)
+ // scene.add(mesh)
+ // console.log(name)
- // Release the cached decoder module.
- DRACOLoader.releaseDecoderModule()
- })
+ // // Release the cached decoder module.
+ // DRACOLoader.releaseDecoderModule()
+ // })
}
export function update(name) {
@@ -45,76 +49,65 @@ function setDequantizationForMaterial(material, bufferGeometry) {
}
}
-export function loadFromFile(buf) {
- // Enable logging to console output.
- dracoLoader.setVerbosity(1)
-
- // To use triangle strips use:
- // dracoLoader.setDrawMode(THREE.TriangleStripDrawMode)
- dracoLoader.setDrawMode(TrianglesDrawMode)
-
- // Skip dequantization of the position attribute. It will be done on the GPU.
- dracoLoader.setSkipDequantization('position', true)
- dracoLoader.decodeDracoFile(buf, (bufferGeometry) => {
- // if (dracoLoader.decode_time !== undefined) {
- // fileDisplayArea.innerText = 'Decode time = ' + dracoLoader.decode_time + '\n' +
- // 'Import time = ' + dracoLoader.import_time
- // }
- const material = new MeshBasicMaterial({ vertexColors: 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)
- }
+export function dracoDidLoad(bufferGeometry) {
+ // if (dracoLoader.decode_time !== undefined) {
+ // fileDisplayArea.innerText = 'Decode time = ' + dracoLoader.decode_time + '\n' +
+ // 'Import time = ' + dracoLoader.import_time
+ // }
+ const material = new MeshBasicMaterial({ vertexColors: 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)
+ }
- let geometry
- // Point cloud does not have face indices.
- if (bufferGeometry.index === null) {
- geometry = new Points(bufferGeometry, material)
- } else {
- if (bufferGeometry.attributes.normal === undefined) {
- const geometryHelper = new GeometryHelper()
- geometryHelper.computeVertexNormals(bufferGeometry)
- }
- geometry = new Mesh(bufferGeometry, material)
- geometry.drawMode = dracoLoader.drawMode
+ let geometry
+ // Point cloud does not have face indices.
+ if (bufferGeometry.index === null) {
+ geometry = new Points(bufferGeometry, material)
+ } else {
+ if (bufferGeometry.attributes.normal === undefined) {
+ const geometryHelper = new GeometryHelper()
+ geometryHelper.computeVertexNormals(bufferGeometry)
}
+ geometry = new 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.
- const posAttribute = bufferGeometry.attributes.position
- const normConstant = posAttribute.maxRange / (1 << posAttribute.numQuantizationBits)
- const 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
- }
- const sizeX = bufferGeometry.boundingBox.max.x - bufferGeometry.boundingBox.min.x
- const sizeY = bufferGeometry.boundingBox.max.y - bufferGeometry.boundingBox.min.y
- const sizeZ = bufferGeometry.boundingBox.max.z - bufferGeometry.boundingBox.min.z
- const diagonalSize = Math.sqrt(sizeX * sizeX + sizeY * sizeY + sizeZ * sizeZ)
- const scale = 1.0 / diagonalSize
- const midX = (bufferGeometry.boundingBox.min.x + bufferGeometry.boundingBox.max.x) / 2
- const midY = (bufferGeometry.boundingBox.min.y + bufferGeometry.boundingBox.max.y) / 2
- const midZ = (bufferGeometry.boundingBox.min.z + bufferGeometry.boundingBox.max.z) / 2
+ // 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.
+ const posAttribute = bufferGeometry.attributes.position
+ const normConstant = posAttribute.maxRange / (1 << posAttribute.numQuantizationBits)
+ const 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
+ }
+ const sizeX = bufferGeometry.boundingBox.max.x - bufferGeometry.boundingBox.min.x
+ const sizeY = bufferGeometry.boundingBox.max.y - bufferGeometry.boundingBox.min.y
+ const sizeZ = bufferGeometry.boundingBox.max.z - bufferGeometry.boundingBox.min.z
+ const diagonalSize = Math.sqrt(sizeX * sizeX + sizeY * sizeY + sizeZ * sizeZ)
+ const scale = 1.0 / diagonalSize
+ const midX = (bufferGeometry.boundingBox.min.x + bufferGeometry.boundingBox.max.x) / 2
+ const midY = (bufferGeometry.boundingBox.min.y + bufferGeometry.boundingBox.max.y) / 2
+ const 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
+ 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
- const selectedObject = scene.getObjectByName("my_mesh")
- scene.remove(selectedObject)
- geometry.name = "my_mesh"
- scene.add(geometry)
- })
+ const selectedObject = scene.getObjectByName("my_mesh")
+ scene.remove(selectedObject)
+ geometry.name = "my_mesh"
+ scene.add(geometry)
}