#1025 Setting colour of cell center spheres based on well type

This commit is contained in:
astridkbjorke 2016-12-07 15:08:46 +01:00
parent 3922d51790
commit df46e626c9
2 changed files with 54 additions and 25 deletions

View File

@ -74,8 +74,6 @@ void RivWellSpheresPartMgr::appendDynamicGeometryPartsToModel(cvf::ModelBasicLis
const RigWellResultFrame& wellResultFrame = rigWellResult->wellResultFrame(frameIndex); const RigWellResultFrame& wellResultFrame = rigWellResult->wellResultFrame(frameIndex);
std::vector<cvf::Vec3d> cellCenters;
for (const RigWellResultBranch& wellResultBranch : wellResultFrame.m_wellResultBranches) for (const RigWellResultBranch& wellResultBranch : wellResultFrame.m_wellResultBranches)
{ {
for (const RigWellResultPoint& wellResultPoint : wellResultBranch.m_branchResultPoints) for (const RigWellResultPoint& wellResultPoint : wellResultBranch.m_branchResultPoints)
@ -88,21 +86,20 @@ void RivWellSpheresPartMgr::appendDynamicGeometryPartsToModel(cvf::ModelBasicLis
cvf::Vec3d center = rigCell.center(); cvf::Vec3d center = rigCell.center();
cellCenters.push_back(center); cvf::Color3f color = wellCellColor(wellResultFrame, wellResultPoint);
}
}
cvf::ref<caf::DisplayCoordTransform> transForm = m_rimReservoirView->displayCoordTransform(); cvf::ref<caf::DisplayCoordTransform> transForm = m_rimReservoirView->displayCoordTransform();
for (cvf::Vec3d c : cellCenters) cvf::Vec3d displayCoord = transForm->transformToDisplayCoord(center);
{
cvf::Vec3d displayCoord = transForm->transformToDisplayCoord(c);
cvf::ref<cvf::DrawableGeo> geo = createSphere(10, displayCoord); cvf::ref<cvf::DrawableGeo> geo = createSphere(10, displayCoord);
cvf::ref<cvf::Part> part = createPart(geo.p()); cvf::ref<cvf::Part> part = createPart(geo.p(), color);
model->addPart(part.p()); model->addPart(part.p());
} }
} }
}
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
@ -136,12 +133,12 @@ cvf::ref<cvf::DrawableGeo> RivWellSpheresPartMgr::createSphere(double radius, co
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
cvf::ref<cvf::Part> RivWellSpheresPartMgr::createPart(cvf::DrawableGeo* geo) cvf::ref<cvf::Part> RivWellSpheresPartMgr::createPart(cvf::DrawableGeo* geo, const cvf::Color3f& color)
{ {
cvf::ref<cvf::Part> part = new cvf::Part; cvf::ref<cvf::Part> part = new cvf::Part;
part->setDrawable(geo); part->setDrawable(geo);
caf::SurfaceEffectGenerator surfaceGen(cvf::Color4f(cvf::Color3f::GREEN), caf::PO_1); caf::SurfaceEffectGenerator surfaceGen(cvf::Color4f(color), caf::PO_1);
cvf::ref<cvf::Effect> eff = surfaceGen.generateCachedEffect(); cvf::ref<cvf::Effect> eff = surfaceGen.generateCachedEffect();
part->setEffect(eff.p()); part->setEffect(eff.p());
@ -149,3 +146,37 @@ cvf::ref<cvf::Part> RivWellSpheresPartMgr::createPart(cvf::DrawableGeo* geo)
return part; return part;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
cvf::Color3f RivWellSpheresPartMgr::wellCellColor(const RigWellResultFrame& wellResultFrame, const RigWellResultPoint& wellResultPoint)
{
// Colours should be synchronized with RivWellPipesPartMgr::updatePipeResultColor
cvf::Color3f cellColor(cvf::Color3f::GRAY);
if (wellResultPoint.m_isOpen)
{
switch (wellResultFrame.m_productionType)
{
case RigWellResultFrame::PRODUCER:
cellColor = cvf::Color3f::GREEN;
break;
case RigWellResultFrame::OIL_INJECTOR:
cellColor = cvf::Color3f::RED;
break;
case RigWellResultFrame::GAS_INJECTOR:
cellColor = cvf::Color3f::RED;
break;
case RigWellResultFrame::WATER_INJECTOR:
cellColor = cvf::Color3f::BLUE;
break;
case RigWellResultFrame::UNDEFINED_PRODUCTION_TYPE:
cellColor = cvf::Color3f::GRAY;
break;
}
}
return cellColor;
}

View File

@ -23,8 +23,8 @@
#include "cvfVector3.h" #include "cvfVector3.h"
#include "cafPdmPointer.h" #include "cafPdmPointer.h"
#include <list> #include <list>
#include "RigSingleWellResultsData.h"
namespace cvf namespace cvf
{ {
@ -34,11 +34,15 @@ namespace cvf
class Effect; class Effect;
class DrawableGeo; class DrawableGeo;
class ScalarMapper; class ScalarMapper;
class Color3f;
} }
class RivPipeGeometryGenerator; class RivPipeGeometryGenerator;
class RimEclipseView; class RimEclipseView;
class RimEclipseWell; class RimEclipseWell;
class RigWellResultFrame;
struct RigWellResultPoint;
class RivWellSpheresPartMgr : public cvf::Object class RivWellSpheresPartMgr : public cvf::Object
{ {
@ -55,20 +59,14 @@ public:
private: private:
static cvf::ref<cvf::DrawableGeo> createSphere(double radius, const cvf::Vec3d& pos); static cvf::ref<cvf::DrawableGeo> createSphere(double radius, const cvf::Vec3d& pos);
cvf::ref<cvf::Part> createPart(cvf::DrawableGeo* geo); cvf::ref<cvf::Part> createPart(cvf::DrawableGeo* geo, const cvf::Color3f& color);
cvf::Color3f wellCellColor(const RigWellResultFrame& wellResultFrame, const RigWellResultPoint& wellResultPoint);
private: private:
caf::PdmPointer<RimEclipseView> m_rimReservoirView; caf::PdmPointer<RimEclipseView> m_rimReservoirView;
caf::PdmPointer<RimEclipseWell> m_rimWell; caf::PdmPointer<RimEclipseWell> m_rimWell;
struct RivPipeBranchData
{
cvf::ref<cvf::Part> m_surfacePart;
cvf::ref<cvf::DrawableGeo> m_surfaceDrawable;
};
cvf::ref<cvf::Transform> m_scaleTransform; cvf::ref<cvf::Transform> m_scaleTransform;
bool m_needsTransformUpdate; bool m_needsTransformUpdate;
}; };