mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Z-Scale working for geomech views
Alligned GeoMech and Reservoir views through RimView
This commit is contained in:
parent
7a2640b52f
commit
af2699d362
@ -37,7 +37,6 @@ public:
|
|||||||
RivReservoirViewPartMgr(RimReservoirView * resv);
|
RivReservoirViewPartMgr(RimReservoirView * resv);
|
||||||
|
|
||||||
cvf::Transform* scaleTransform() { return m_scaleTransform.p();}
|
cvf::Transform* scaleTransform() { return m_scaleTransform.p();}
|
||||||
void setScaleTransform(cvf::Mat4d scale) { m_scaleTransform->setLocalTransform(scale);}
|
|
||||||
|
|
||||||
enum ReservoirGeometryCacheType
|
enum ReservoirGeometryCacheType
|
||||||
{
|
{
|
||||||
|
@ -106,6 +106,8 @@ void RimGeoMechView::updateViewerWidgetWindowTitle()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimGeoMechView::loadDataAndUpdate()
|
void RimGeoMechView::loadDataAndUpdate()
|
||||||
{
|
{
|
||||||
|
updateScaleTransform();
|
||||||
|
|
||||||
if (m_geomechCase)
|
if (m_geomechCase)
|
||||||
{
|
{
|
||||||
m_geomechCase->openGeoMechCase();
|
m_geomechCase->openGeoMechCase();
|
||||||
@ -130,12 +132,10 @@ void RimGeoMechView::loadDataAndUpdate()
|
|||||||
|
|
||||||
void RimGeoMechView::updateScaleTransform()
|
void RimGeoMechView::updateScaleTransform()
|
||||||
{
|
{
|
||||||
CVF_ASSERT(m_scaleTransform.notNull());
|
|
||||||
|
|
||||||
cvf::Mat4d scale = cvf::Mat4d::IDENTITY;
|
cvf::Mat4d scale = cvf::Mat4d::IDENTITY;
|
||||||
scale(2, 2) = scaleZ();
|
scale(2, 2) = scaleZ();
|
||||||
|
|
||||||
m_scaleTransform->setLocalTransform(scale);
|
this->scaleTransform()->setLocalTransform(scale);
|
||||||
|
|
||||||
if (m_viewer) m_viewer->updateCachedValuesInScene();
|
if (m_viewer) m_viewer->updateCachedValuesInScene();
|
||||||
}
|
}
|
||||||
@ -406,6 +406,14 @@ bool RimGeoMechView::isTimeStepDependentDataVisible()
|
|||||||
return (cellResult->resultFieldName() != "");
|
return (cellResult->resultFieldName() != "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
cvf::Transform* RimGeoMechView::scaleTransform()
|
||||||
|
{
|
||||||
|
return m_scaleTransform.p();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
|
@ -67,7 +67,8 @@ public:
|
|||||||
private:
|
private:
|
||||||
virtual void createDisplayModel();
|
virtual void createDisplayModel();
|
||||||
virtual void updateDisplayModelVisibility();
|
virtual void updateDisplayModelVisibility();
|
||||||
void updateScaleTransform();
|
virtual void updateScaleTransform();
|
||||||
|
virtual cvf::Transform* scaleTransform();
|
||||||
|
|
||||||
virtual void clampCurrentTimestep();
|
virtual void clampCurrentTimestep();
|
||||||
|
|
||||||
@ -78,6 +79,7 @@ private:
|
|||||||
virtual void resetLegendsInViewer();
|
virtual void resetLegendsInViewer();
|
||||||
|
|
||||||
void updateLegends();
|
void updateLegends();
|
||||||
|
|
||||||
caf::PdmPointer<RimGeoMechCase> m_geomechCase;
|
caf::PdmPointer<RimGeoMechCase> m_geomechCase;
|
||||||
cvf::ref<RivGeoMechPartMgr> m_geoMechFullModel;
|
cvf::ref<RivGeoMechPartMgr> m_geoMechFullModel;
|
||||||
bool m_isGeoMechFullGenerated;
|
bool m_isGeoMechFullGenerated;
|
||||||
|
@ -188,37 +188,7 @@ void RimReservoirView::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
|||||||
{
|
{
|
||||||
RimView::fieldChangedByUi(changedField, oldValue, newValue);
|
RimView::fieldChangedByUi(changedField, oldValue, newValue);
|
||||||
|
|
||||||
if (changedField == &scaleZ)
|
if (changedField == &showWindow)
|
||||||
{
|
|
||||||
if (scaleZ < 1) scaleZ = 1;
|
|
||||||
|
|
||||||
// Regenerate well paths
|
|
||||||
RimOilField* oilFields = RiaApplication::instance()->project() ? RiaApplication::instance()->project()->activeOilField() : NULL;
|
|
||||||
RimWellPathCollection* wellPathCollection = (oilFields) ? oilFields->wellPathCollection() : NULL;
|
|
||||||
if (wellPathCollection) wellPathCollection->wellPathCollectionPartMgr()->scheduleGeometryRegen();
|
|
||||||
|
|
||||||
if (m_viewer)
|
|
||||||
{
|
|
||||||
cvf::Vec3d poi = m_viewer->pointOfInterest();
|
|
||||||
cvf::Vec3d eye, dir, up;
|
|
||||||
eye = m_viewer->mainCamera()->position();
|
|
||||||
dir = m_viewer->mainCamera()->direction();
|
|
||||||
up = m_viewer->mainCamera()->up();
|
|
||||||
|
|
||||||
eye[2] = poi[2]*scaleZ()/m_reservoirGridPartManager->scaleTransform()->worldTransform()(2, 2) + (eye[2] - poi[2]);
|
|
||||||
poi[2] = poi[2]*scaleZ()/m_reservoirGridPartManager->scaleTransform()->worldTransform()(2, 2);
|
|
||||||
|
|
||||||
m_viewer->mainCamera()->setFromLookAt(eye, eye + dir, up);
|
|
||||||
m_viewer->setPointOfInterest(poi);
|
|
||||||
|
|
||||||
updateScaleTransform();
|
|
||||||
createDisplayModelAndRedraw();
|
|
||||||
m_viewer->update();
|
|
||||||
}
|
|
||||||
|
|
||||||
RiuMainWindow::instance()->updateScaleValue();
|
|
||||||
}
|
|
||||||
else if (changedField == &showWindow)
|
|
||||||
{
|
{
|
||||||
if (showWindow)
|
if (showWindow)
|
||||||
{
|
{
|
||||||
@ -279,14 +249,11 @@ void RimReservoirView::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
|||||||
|
|
||||||
void RimReservoirView::updateScaleTransform()
|
void RimReservoirView::updateScaleTransform()
|
||||||
{
|
{
|
||||||
CVF_ASSERT(m_reservoirGridPartManager.notNull());
|
|
||||||
CVF_ASSERT(m_pipesPartManager.notNull());
|
|
||||||
|
|
||||||
cvf::Mat4d scale = cvf::Mat4d::IDENTITY;
|
cvf::Mat4d scale = cvf::Mat4d::IDENTITY;
|
||||||
scale(2, 2) = scaleZ();
|
scale(2, 2) = scaleZ();
|
||||||
|
|
||||||
m_reservoirGridPartManager->setScaleTransform(scale);
|
this->scaleTransform()->setLocalTransform(scale);
|
||||||
m_pipesPartManager->setScaleTransform(m_reservoirGridPartManager->scaleTransform());
|
m_pipesPartManager->setScaleTransform(this->scaleTransform());
|
||||||
|
|
||||||
if (m_viewer) m_viewer->updateCachedValuesInScene();
|
if (m_viewer) m_viewer->updateCachedValuesInScene();
|
||||||
}
|
}
|
||||||
@ -1484,3 +1451,11 @@ void RimReservoirView::resetLegendsInViewer()
|
|||||||
m_viewer->addColorLegendToBottomLeftCorner(this->cellEdgeResult()->legendConfig->legend());
|
m_viewer->addColorLegendToBottomLeftCorner(this->cellEdgeResult()->legendConfig->legend());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
cvf::Transform* RimReservoirView::scaleTransform()
|
||||||
|
{
|
||||||
|
return m_reservoirGridPartManager->scaleTransform();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -143,7 +143,9 @@ private:
|
|||||||
virtual void updateCurrentTimeStep();
|
virtual void updateCurrentTimeStep();
|
||||||
|
|
||||||
void indicesToVisibleGrids(std::vector<size_t>* gridIndices);
|
void indicesToVisibleGrids(std::vector<size_t>* gridIndices);
|
||||||
void updateScaleTransform();
|
virtual void updateScaleTransform();
|
||||||
|
virtual cvf::Transform* scaleTransform();
|
||||||
|
|
||||||
virtual void updateStaticCellColors();
|
virtual void updateStaticCellColors();
|
||||||
void updateStaticCellColors(unsigned short geometryType);
|
void updateStaticCellColors(unsigned short geometryType);
|
||||||
void updateLegends();
|
void updateLegends();
|
||||||
|
@ -13,6 +13,10 @@
|
|||||||
#include "cafFrameAnimationControl.h"
|
#include "cafFrameAnimationControl.h"
|
||||||
|
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
#include "RimOilField.h"
|
||||||
|
#include "RimWellPathCollection.h"
|
||||||
|
#include "RimProject.h"
|
||||||
|
#include "RivWellPathCollectionPartMgr.h"
|
||||||
|
|
||||||
|
|
||||||
namespace caf {
|
namespace caf {
|
||||||
@ -379,6 +383,36 @@ void RimView::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QV
|
|||||||
updateDisplayModelVisibility();
|
updateDisplayModelVisibility();
|
||||||
RiuMainWindow::instance()->refreshDrawStyleActions();
|
RiuMainWindow::instance()->refreshDrawStyleActions();
|
||||||
}
|
}
|
||||||
|
else if (changedField == &scaleZ)
|
||||||
|
{
|
||||||
|
if (scaleZ < 1) scaleZ = 1;
|
||||||
|
|
||||||
|
// Regenerate well paths
|
||||||
|
RimOilField* oilFields = RiaApplication::instance()->project() ? RiaApplication::instance()->project()->activeOilField() : NULL;
|
||||||
|
RimWellPathCollection* wellPathCollection = (oilFields) ? oilFields->wellPathCollection() : NULL;
|
||||||
|
if (wellPathCollection) wellPathCollection->wellPathCollectionPartMgr()->scheduleGeometryRegen();
|
||||||
|
|
||||||
|
if (m_viewer)
|
||||||
|
{
|
||||||
|
cvf::Vec3d poi = m_viewer->pointOfInterest();
|
||||||
|
cvf::Vec3d eye, dir, up;
|
||||||
|
eye = m_viewer->mainCamera()->position();
|
||||||
|
dir = m_viewer->mainCamera()->direction();
|
||||||
|
up = m_viewer->mainCamera()->up();
|
||||||
|
|
||||||
|
eye[2] = poi[2]*scaleZ()/this->scaleTransform()->worldTransform()(2, 2) + (eye[2] - poi[2]);
|
||||||
|
poi[2] = poi[2]*scaleZ()/this->scaleTransform()->worldTransform()(2, 2);
|
||||||
|
|
||||||
|
m_viewer->mainCamera()->setFromLookAt(eye, eye + dir, up);
|
||||||
|
m_viewer->setPointOfInterest(poi);
|
||||||
|
|
||||||
|
updateScaleTransform();
|
||||||
|
createDisplayModelAndRedraw();
|
||||||
|
m_viewer->update();
|
||||||
|
}
|
||||||
|
|
||||||
|
RiuMainWindow::instance()->updateScaleValue();
|
||||||
|
}
|
||||||
else if (changedField == &surfaceMode)
|
else if (changedField == &surfaceMode)
|
||||||
{
|
{
|
||||||
createDisplayModel();
|
createDisplayModel();
|
||||||
|
@ -28,6 +28,11 @@
|
|||||||
class RiuViewer;
|
class RiuViewer;
|
||||||
class Rim3dOverlayInfoConfig;
|
class Rim3dOverlayInfoConfig;
|
||||||
|
|
||||||
|
namespace cvf
|
||||||
|
{
|
||||||
|
class Transform;
|
||||||
|
}
|
||||||
|
|
||||||
#define CAF_PDM_ABSTRACT_SOURCE_INIT(ClassName, keyword) \
|
#define CAF_PDM_ABSTRACT_SOURCE_INIT(ClassName, keyword) \
|
||||||
bool ClassName::Error_You_forgot_to_add_the_macro_CAF_PDM_HEADER_INIT_and_or_CAF_PDM_SOURCE_INIT_to_your_cpp_file_for_this_class() { return false;} \
|
bool ClassName::Error_You_forgot_to_add_the_macro_CAF_PDM_HEADER_INIT_and_or_CAF_PDM_SOURCE_INIT_to_your_cpp_file_for_this_class() { return false;} \
|
||||||
QString ClassName::classKeywordStatic() { assert(PdmObject::isValidXmlElementName(keyword)); return keyword; }
|
QString ClassName::classKeywordStatic() { assert(PdmObject::isValidXmlElementName(keyword)); return keyword; }
|
||||||
@ -107,6 +112,9 @@ protected:
|
|||||||
virtual void updateCurrentTimeStep() = 0;
|
virtual void updateCurrentTimeStep() = 0;
|
||||||
virtual void updateStaticCellColors() = 0;
|
virtual void updateStaticCellColors() = 0;
|
||||||
|
|
||||||
|
virtual void updateScaleTransform() = 0;
|
||||||
|
virtual cvf::Transform* scaleTransform() = 0;
|
||||||
|
|
||||||
void updateViewerWidget();
|
void updateViewerWidget();
|
||||||
virtual void updateViewerWidgetWindowTitle() = 0;
|
virtual void updateViewerWidgetWindowTitle() = 0;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user