From 6f41c43af222b378beea61d0af7473c8868fdb62 Mon Sep 17 00:00:00 2001 From: Babatunde Ogunfemi Date: Wed, 3 Oct 2018 14:52:36 -0500 Subject: [PATCH] Fix for PCD Loader to display proper RGB values This fixes #12207 to ensure the right color values are displayed. This fixes both ascii and binary data file renderings. --- examples/js/loaders/PCDLoader.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/js/loaders/PCDLoader.js b/examples/js/loaders/PCDLoader.js index 52505b9a38..19d22e9292 100644 --- a/examples/js/loaders/PCDLoader.js +++ b/examples/js/loaders/PCDLoader.js @@ -205,11 +205,11 @@ THREE.PCDLoader.prototype = { if ( offset.rgb !== undefined ) { - var c = new Float32Array( [ parseFloat( line[ offset.rgb ] ) ] ); - var dataview = new DataView( c.buffer, 0 ); - color.push( dataview.getUint8( 0 ) / 255.0 ); - color.push( dataview.getUint8( 1 ) / 255.0 ); - color.push( dataview.getUint8( 2 ) / 255.0 ); + var rgb = parseFloat( line[ offset.rgb ] ); + var r = ( rgb >> 16 ) & 0x0000ff; + var g = ( rgb >> 8 ) & 0x0000ff; + var b = ( rgb >> 0 ) & 0x0000ff; + color.push( r / 255, g / 255, b / 255 ); } @@ -251,9 +251,9 @@ THREE.PCDLoader.prototype = { if ( offset.rgb !== undefined ) { - color.push( dataview.getUint8( row + offset.rgb + 0 ) / 255.0 ); - color.push( dataview.getUint8( row + offset.rgb + 1 ) / 255.0 ); color.push( dataview.getUint8( row + offset.rgb + 2 ) / 255.0 ); + color.push( dataview.getUint8( row + offset.rgb + 1 ) / 255.0 ); + color.push( dataview.getUint8( row + offset.rgb + 0 ) / 255.0 ); } @@ -285,7 +285,7 @@ THREE.PCDLoader.prototype = { if ( color.length > 0 ) { - material.vertexColors = true; + material.vertexColors = THREE.VertexColors; } else { -- GitLab