From 6e012ea6d2ea08a1dc66921a8c7cbf7a18756044 Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Thu, 10 Oct 2013 16:04:42 -0700 Subject: [PATCH] When computing average model color, skip eyes and weight rest by number of vertices. --- interface/src/renderer/GeometryCache.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/interface/src/renderer/GeometryCache.cpp b/interface/src/renderer/GeometryCache.cpp index 2eeb5f71a2..926f226d6c 100644 --- a/interface/src/renderer/GeometryCache.cpp +++ b/interface/src/renderer/GeometryCache.cpp @@ -289,18 +289,20 @@ NetworkGeometry::~NetworkGeometry() { } glm::vec4 NetworkGeometry::computeAverageColor() const { - if (_meshes.isEmpty()) { - return glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); - } - glm::vec4 total; + glm::vec4 totalColor; + int totalVertices = 0; for (int i = 0; i < _meshes.size(); i++) { + if (_geometry.meshes.at(i).isEye) { + continue; // skip eyes + } glm::vec4 color = glm::vec4(_geometry.meshes.at(i).diffuseColor, 1.0f); if (_meshes.at(i).diffuseTexture) { color *= _meshes.at(i).diffuseTexture->getAverageColor(); } - total += color; + totalColor += color * _geometry.meshes.at(i).vertices.size(); + totalVertices += _geometry.meshes.at(i).vertices.size(); } - return total / _meshes.size(); + return (totalVertices == 0) ? glm::vec4(1.0f, 1.0f, 1.0f, 1.0f) : totalColor / totalVertices; } void NetworkGeometry::handleModelReplyError() {