From fcd89c57ed1f36eb4a73c7d62813344fa0f4c443 Mon Sep 17 00:00:00 2001 From: Cirilo Bernardo Date: Tue, 19 Jan 2016 16:13:12 +1100 Subject: [PATCH] Change in VRML1 color retrieval rule for out-of-bounds index --- plugins/3d/vrml/v1/vrml1_material.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/3d/vrml/v1/vrml1_material.cpp b/plugins/3d/vrml/v1/vrml1_material.cpp index 624f200374..02ef2f6246 100644 --- a/plugins/3d/vrml/v1/vrml1_material.cpp +++ b/plugins/3d/vrml/v1/vrml1_material.cpp @@ -420,7 +420,7 @@ void WRL1MATERIAL::GetColor( SGCOLOR* aColor, int aIndex ) // Calculate the color based on the given index using the formula: // color = ( emission + ambient + diffuse + shininess * specular ) / N // where N = number of non-zero components or 1 (if all zero) - // If the index exceeds the number of items in a list, use the FIRST + // If the index exceeds the number of items in a list, use the LAST // item rather than the default; this behavior caters to some bad // models. @@ -435,7 +435,7 @@ void WRL1MATERIAL::GetColor( SGCOLOR* aColor, int aIndex ) { if( !diffuseColor.empty() ) { - rgb = diffuseColor.front(); + rgb = diffuseColor.back(); dRed = rgb.x; dGreen = rgb.y; dBlue = rgb.z; @@ -459,7 +459,7 @@ void WRL1MATERIAL::GetColor( SGCOLOR* aColor, int aIndex ) { if( !emissiveColor.empty() ) { - rgb = emissiveColor.front(); + rgb = emissiveColor.back(); eRed = rgb.x; eGreen = rgb.y; eBlue = rgb.z; @@ -483,7 +483,7 @@ void WRL1MATERIAL::GetColor( SGCOLOR* aColor, int aIndex ) { if( !ambientColor.empty() ) { - rgb = ambientColor.front(); + rgb = ambientColor.back(); aRed = rgb.x; aGreen = rgb.y; aBlue = rgb.z; @@ -507,7 +507,7 @@ void WRL1MATERIAL::GetColor( SGCOLOR* aColor, int aIndex ) { if( !specularColor.empty() ) { - rgb = specularColor.front(); + rgb = specularColor.back(); sRed = rgb.x; sGreen = rgb.y; sBlue = rgb.z; @@ -530,7 +530,7 @@ void WRL1MATERIAL::GetColor( SGCOLOR* aColor, int aIndex ) if( aIndex < 0 || ( aIndex >= (int)shininess.size() ) ) { if( !shininess.empty() ) - shiny = shininess.front(); + shiny = shininess.back(); else shiny = 0.2; }