Buckets:
ktongue/docker_container / simsite /frontend /node_modules /three /examples /jsm /loaders /XYZLoader.js
| import { | |
| BufferGeometry, | |
| Color, | |
| FileLoader, | |
| Float32BufferAttribute, | |
| Loader | |
| } from 'three'; | |
| class XYZLoader extends Loader { | |
| load( url, onLoad, onProgress, onError ) { | |
| const scope = this; | |
| const loader = new FileLoader( this.manager ); | |
| loader.setPath( this.path ); | |
| loader.setRequestHeader( this.requestHeader ); | |
| loader.setWithCredentials( this.withCredentials ); | |
| loader.load( url, function ( text ) { | |
| try { | |
| onLoad( scope.parse( text ) ); | |
| } catch ( e ) { | |
| if ( onError ) { | |
| onError( e ); | |
| } else { | |
| console.error( e ); | |
| } | |
| scope.manager.itemError( url ); | |
| } | |
| }, onProgress, onError ); | |
| } | |
| parse( text ) { | |
| const lines = text.split( '\n' ); | |
| const vertices = []; | |
| const colors = []; | |
| const color = new Color(); | |
| for ( let line of lines ) { | |
| line = line.trim(); | |
| if ( line.charAt( 0 ) === '#' ) continue; // skip comments | |
| const lineValues = line.split( /\s+/ ); | |
| if ( lineValues.length === 3 ) { | |
| // XYZ | |
| vertices.push( parseFloat( lineValues[ 0 ] ) ); | |
| vertices.push( parseFloat( lineValues[ 1 ] ) ); | |
| vertices.push( parseFloat( lineValues[ 2 ] ) ); | |
| } | |
| if ( lineValues.length === 6 ) { | |
| // XYZRGB | |
| vertices.push( parseFloat( lineValues[ 0 ] ) ); | |
| vertices.push( parseFloat( lineValues[ 1 ] ) ); | |
| vertices.push( parseFloat( lineValues[ 2 ] ) ); | |
| const r = parseFloat( lineValues[ 3 ] ) / 255; | |
| const g = parseFloat( lineValues[ 4 ] ) / 255; | |
| const b = parseFloat( lineValues[ 5 ] ) / 255; | |
| color.set( r, g, b ).convertSRGBToLinear(); | |
| colors.push( color.r, color.g, color.b ); | |
| } | |
| } | |
| const geometry = new BufferGeometry(); | |
| geometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); | |
| if ( colors.length > 0 ) { | |
| geometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); | |
| } | |
| return geometry; | |
| } | |
| } | |
| export { XYZLoader }; | |
Xet Storage Details
- Size:
- 1.91 kB
- Xet hash:
- e5f0a62996829affa17b6e2689245d24357360e54264e62bfb6f10f2d5308886
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.