GeoMech result textures: Handle empty results

This commit is contained in:
Jacob Støren
2015-06-09 11:09:11 +02:00
parent d8ffcedd7a
commit 7201e3330b

View File

@@ -251,27 +251,34 @@ void RivFemPartPartMgr::updateCellResultColor(size_t timeStepIndex, RimGeoMechRe
} }
m_surfaceFacesTextureCoords->resize(vxToResultMapping->size()); m_surfaceFacesTextureCoords->resize(vxToResultMapping->size());
cvf::Vec2f* rawPtr = m_surfaceFacesTextureCoords->ptr();
int vxCount = static_cast<int>(vxToResultMapping->size()); if (resultValues.size() == 0)
#pragma omp parallel for schedule(dynamic)
for (int vxIdx = 0; vxIdx < vxCount; ++vxIdx)
{ {
float resultValue = resultValues[(*vxToResultMapping)[vxIdx]]; m_surfaceFacesTextureCoords->setAll(cvf::Vec2f(0.0, 1.0f));
if (resultValue == HUGE_VAL || resultValue != resultValue) // a != a is true for NAN's }
{ else
rawPtr[vxIdx][1] = 1.0f; {
cvf::Vec2f* rawPtr = m_surfaceFacesTextureCoords->ptr();
} int vxCount = static_cast<int>(vxToResultMapping->size());
else
#pragma omp parallel for schedule(dynamic)
for (int vxIdx = 0; vxIdx < vxCount; ++vxIdx)
{ {
rawPtr[vxIdx] = mapper->mapToTextureCoord(resultValue); float resultValue = resultValues[(*vxToResultMapping)[vxIdx]];
if (resultValue == HUGE_VAL || resultValue != resultValue) // a != a is true for NAN's
{
rawPtr[vxIdx][1] = 1.0f;
}
else
{
rawPtr[vxIdx] = mapper->mapToTextureCoord(resultValue);
}
} }
} }
RivScalarMapperUtils::applyTextureResultsToPart(m_surfaceFaces.p(), m_surfaceFacesTextureCoords.p(), mapper, m_opacityLevel, caf::FC_NONE); RivScalarMapperUtils::applyTextureResultsToPart(m_surfaceFaces.p(), m_surfaceFacesTextureCoords.p(), mapper, m_opacityLevel, caf::FC_NONE);
} }
} }