From c943d20f6a7df73cc371cec73d6ed3be36d538a0 Mon Sep 17 00:00:00 2001 From: JR-Morgan <45512892+JR-Morgan@users.noreply.github.com> Date: Tue, 30 Nov 2021 17:22:02 +0000 Subject: [PATCH 1/2] Fixed issue in Viewer conversion with n-gon faces causing the entire mesh to fail conversion. - Also added support for 3,4 cardinality indicators on mesh faces. --- .../viewer/src/modules/converter/Converter.js | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/viewer/src/modules/converter/Converter.js b/packages/viewer/src/modules/converter/Converter.js index 1c658346c..cb086ad6a 100644 --- a/packages/viewer/src/modules/converter/Converter.js +++ b/packages/viewer/src/modules/converter/Converter.js @@ -313,15 +313,23 @@ export default class Coverter { let k = 0 while ( k < faces.length ) { - if ( faces[ k ] === 1 ) { // QUAD FACE + let n = faces[ k ] + if ( n <= 3 ) n += 3 // 0 -> 3, 1 -> 4 + + if ( n === 4 ) { // QUAD FACE indices.push( faces[ k + 1 ], faces[ k + 2 ], faces[ k + 3 ] ) indices.push( faces[ k + 1 ], faces[ k + 3 ], faces[ k + 4 ] ) - k += 5 - } else if ( faces[ k ] === 0 ) { // TRIANGLE FACE + } else if ( n === 3 ) { // TRIANGLE FACE indices.push( faces[ k + 1 ], faces[ k + 2 ], faces[ k + 3 ] ) - k += 4 - } else throw new Error( `Mesh type not supported. Face topology indicator: ${faces[k]}` ) - } + } else { //N-GON FACE + //TODO triangulate n-gon face. + + //There is no need to throw an exception here, unsupported faces will simply be ignored. + //throw new Error( `Mesh type not supported. Face topology indicator: ${faces[k]}` ) + } + + k += n + 1 + } buffer.setIndex( indices ) buffer.setAttribute( From 2c95ae55caa180ff18cc733c8488f6e38b61ef20 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Tue, 30 Nov 2021 19:26:55 +0000 Subject: [PATCH 2/2] chore(viewer): bumps version && npm publish --- packages/viewer/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/viewer/package.json b/packages/viewer/package.json index 4df165627..1d35a45e3 100644 --- a/packages/viewer/package.json +++ b/packages/viewer/package.json @@ -1,6 +1,6 @@ { "name": "@speckle/viewer", - "version": "2.2.2", + "version": "2.2.3", "description": "A 3d viewer for Speckle, based on threejs.", "homepage": "https://speckle.systems", "repository": {