feat(viewer): Added polycurve conversion.

This commit is contained in:
Alan Rynne
2021-01-26 12:46:12 +01:00
parent bcadd9b9ef
commit 74c68fbf4c
+26 -3
View File
@@ -1,6 +1,6 @@
import * as THREE from 'three'
import { BufferGeometry } from 'three'
import { NURBSCurve } from 'three/examples/jsm/curves/NURBSCurve'
import { BufferGeometryUtils } from 'three/examples/jsm/utils/BufferGeometryUtils'
import ObjectWrapper from './ObjectWrapper'
import { getConversionFactor } from './Units'
@@ -242,7 +242,30 @@ export default class Coverter {
return new ObjectWrapper( geometry, obj, 'line' )
}
// async PolycurveToBufferGeometry( obj ) {}
async PolycurveToBufferGeometry( object ) {
let obj = {}
Object.assign( obj,object )
delete object.value
delete object.speckle_type
delete object.displayValue
delete object.segments
console.log( 'Polycurve to buffer', obj )
let buffers = []
for ( let i = 0; i < obj.segments.length; i++ ) {
const element = obj.segments[i]
const conv = await this.convert( element )
buffers.push( conv?.bufferGeometry )
}
let geometry = BufferGeometryUtils.mergeBufferGeometries( buffers )
delete obj.segments
delete obj.speckle_type
return new ObjectWrapper( geometry , obj, 'line' )
}
async CurveToBufferGeometry( object ) {
let obj = {}
Object.assign( obj,object )
@@ -286,7 +309,7 @@ export default class Coverter {
// Divide the nurbs curve in points
var pts = curve.getPoints( div )
return new ObjectWrapper( new BufferGeometry().setFromPoints( pts ), obj, 'line' )
return new ObjectWrapper( new THREE.BufferGeometry().setFromPoints( pts ), obj, 'line' )
} catch ( e ) {
console.warn( 'Error converting nurbs curve, falling back to displayValue', obj )