#2543 Tensor vectors: Use tensor value, not length, for color mapping

This commit is contained in:
Unknown 2018-03-01 16:01:14 +01:00 committed by Rebecca Cox
parent 2ac9aba485
commit 82a394d588
3 changed files with 15 additions and 12 deletions

View File

@ -156,24 +156,24 @@ void RivTensorResultPartMgr::appendDynamicGeometryPartsToModel(cvf::ModelBasicLi
if (isDrawable(result1, m_rimReservoirView->tensorResults()->showPrincipal1()))
{
tensorVisualizations.push_back(TensorVisualization(
cvf::Vec3f(displayCoord), result1, faceNormal, isPressure(elmPrincipals[0][elmIdx]), 1));
cvf::Vec3f(displayCoord), result1, faceNormal, isPressure(elmPrincipals[0][elmIdx]), 1, elmPrincipals[0][elmIdx]));
tensorVisualizations.push_back(TensorVisualization(
cvf::Vec3f(displayCoord), -result1, faceNormal, isPressure(elmPrincipals[0][elmIdx]), 1));
cvf::Vec3f(displayCoord), -result1, faceNormal, isPressure(elmPrincipals[0][elmIdx]), 1, elmPrincipals[0][elmIdx]));
}
if (isDrawable(result2, m_rimReservoirView->tensorResults()->showPrincipal2()))
{
tensorVisualizations.push_back(TensorVisualization(
cvf::Vec3f(displayCoord), result2, faceNormal, isPressure(elmPrincipals[1][elmIdx]), 2));
cvf::Vec3f(displayCoord), result2, faceNormal, isPressure(elmPrincipals[1][elmIdx]), 2, elmPrincipals[1][elmIdx]));
tensorVisualizations.push_back(TensorVisualization(
cvf::Vec3f(displayCoord), -result2, faceNormal, isPressure(elmPrincipals[1][elmIdx]), 2));
cvf::Vec3f(displayCoord), -result2, faceNormal, isPressure(elmPrincipals[1][elmIdx]), 2, elmPrincipals[1][elmIdx]));
}
if (isDrawable(result3, m_rimReservoirView->tensorResults()->showPrincipal3()))
{
tensorVisualizations.push_back(TensorVisualization(
cvf::Vec3f(displayCoord), result3, faceNormal, isPressure(elmPrincipals[2][elmIdx]), 3));
cvf::Vec3f(displayCoord), result3, faceNormal, isPressure(elmPrincipals[2][elmIdx]), 3, elmPrincipals[2][elmIdx]));
tensorVisualizations.push_back(TensorVisualization(
cvf::Vec3f(displayCoord), -result3, faceNormal, isPressure(elmPrincipals[2][elmIdx]), 3));
cvf::Vec3f(displayCoord), -result3, faceNormal, isPressure(elmPrincipals[2][elmIdx]), 3, elmPrincipals[2][elmIdx]));
}
}
}
@ -438,11 +438,9 @@ void RivTensorResultPartMgr::createResultColorTextureCoords(cvf::Vec2fArray*
for (auto tensor : tensorVisualizations)
{
int sign = tensor.isPressure ? 1 : -1;
for (size_t vxIdx = 0; vxIdx < 5; ++vxIdx)
{
cvf::Vec2f texCoord = mapper->mapToTextureCoord(sign * tensor.result.length());
cvf::Vec2f texCoord = mapper->mapToTextureCoord(tensor.principalValue);
textureCoords->add(texCoord);
}
}

View File

@ -56,18 +56,20 @@ public:
private:
struct TensorVisualization
{
TensorVisualization(cvf::Vec3f vertex, cvf::Vec3f result, cvf::Vec3f faceNormal, bool isPressure, size_t princial)
TensorVisualization(cvf::Vec3f vertex, cvf::Vec3f result, cvf::Vec3f faceNormal, bool isPressure, size_t princial, float principalValue)
: vertex(vertex)
, result(result)
, faceNormal(faceNormal)
, isPressure(isPressure)
, princial(princial){};
, princial(princial)
, principalValue(principalValue) {};
cvf::Vec3f vertex;
cvf::Vec3f result;
cvf::Vec3f faceNormal;
bool isPressure;
size_t princial;
float principalValue;
};
private:

View File

@ -301,7 +301,10 @@ void RimGeoMechView::updateCurrentTimeStep()
m_tensorPartMgr->appendDynamicGeometryPartsToModel(frameParts.p(), m_currentTimeStep);
frameParts->updateBoundingBoxesRecursive();
frameScene->addModel(frameParts.p());
if (frameParts->partCount() != 0)
{
frameScene->addModel(frameParts.p());
}
}
}
}