|
1 | 1 | import { |
2 | 2 | BufferGeometry, |
| 3 | + Color, |
3 | 4 | FileLoader, |
4 | 5 | Float32BufferAttribute, |
5 | 6 | Int32BufferAttribute, |
@@ -232,6 +233,8 @@ class PCDLoader extends Loader { |
232 | 233 | const intensity = []; |
233 | 234 | const label = []; |
234 | 235 |
|
| 236 | + const c = new Color(); |
| 237 | + |
235 | 238 | // ascii |
236 | 239 |
|
237 | 240 | if ( PCDheader.data === 'ascii' ) { |
@@ -272,10 +275,13 @@ class PCDLoader extends Loader { |
272 | 275 |
|
273 | 276 | } |
274 | 277 |
|
275 | | - const r = ( rgb >> 16 ) & 0x0000ff; |
276 | | - const g = ( rgb >> 8 ) & 0x0000ff; |
277 | | - const b = ( rgb >> 0 ) & 0x0000ff; |
278 | | - color.push( r / 255, g / 255, b / 255 ); |
| 278 | + const r = ( ( rgb >> 16 ) & 0x0000ff ) / 255; |
| 279 | + const g = ( ( rgb >> 8 ) & 0x0000ff ) / 255; |
| 280 | + const b = ( ( rgb >> 0 ) & 0x0000ff ) / 255; |
| 281 | + |
| 282 | + c.set( r, g, b ).convertSRGBToLinear(); |
| 283 | + |
| 284 | + color.push( c.r, c.g, c.b ); |
279 | 285 |
|
280 | 286 | } |
281 | 287 |
|
@@ -335,9 +341,14 @@ class PCDLoader extends Loader { |
335 | 341 | if ( offset.rgb !== undefined ) { |
336 | 342 |
|
337 | 343 | const rgbIndex = PCDheader.fields.indexOf( 'rgb' ); |
338 | | - color.push( dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ rgbIndex ] * i + 2 ) / 255.0 ); |
339 | | - color.push( dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ rgbIndex ] * i + 1 ) / 255.0 ); |
340 | | - color.push( dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ rgbIndex ] * i + 0 ) / 255.0 ); |
| 344 | + |
| 345 | + const r = dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ rgbIndex ] * i + 2 ) / 255.0; |
| 346 | + const g = dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ rgbIndex ] * i + 1 ) / 255.0; |
| 347 | + const b = dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ rgbIndex ] * i + 0 ) / 255.0; |
| 348 | + |
| 349 | + c.set( r, g, b ).convertSRGBToLinear(); |
| 350 | + |
| 351 | + color.push( c.r, c.g, c.b ); |
341 | 352 |
|
342 | 353 | } |
343 | 354 |
|
@@ -389,9 +400,13 @@ class PCDLoader extends Loader { |
389 | 400 |
|
390 | 401 | if ( offset.rgb !== undefined ) { |
391 | 402 |
|
392 | | - color.push( dataview.getUint8( row + offset.rgb + 2 ) / 255.0 ); |
393 | | - color.push( dataview.getUint8( row + offset.rgb + 1 ) / 255.0 ); |
394 | | - color.push( dataview.getUint8( row + offset.rgb + 0 ) / 255.0 ); |
| 403 | + const r = dataview.getUint8( row + offset.rgb + 2 ) / 255.0; |
| 404 | + const g = dataview.getUint8( row + offset.rgb + 1 ) / 255.0; |
| 405 | + const b = dataview.getUint8( row + offset.rgb + 0 ) / 255.0; |
| 406 | + |
| 407 | + c.set( r, g, b ).convertSRGBToLinear(); |
| 408 | + |
| 409 | + color.push( c.r, c.g, c.b ); |
395 | 410 |
|
396 | 411 | } |
397 | 412 |
|
|
0 commit comments