mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Add scripting support to camera
This commit is contained in:
parent
e8bfeded0a
commit
6e19c2ddb4
@ -57,6 +57,7 @@
|
|||||||
#include "cafFrameAnimationControl.h"
|
#include "cafFrameAnimationControl.h"
|
||||||
#include "cafPdmFieldScriptingCapability.h"
|
#include "cafPdmFieldScriptingCapability.h"
|
||||||
#include "cafPdmFieldScriptingCapabilityCvfColor3.h"
|
#include "cafPdmFieldScriptingCapabilityCvfColor3.h"
|
||||||
|
#include "cafPdmFieldScriptingCapabilityCvfVec3d.h"
|
||||||
#include "cafPdmUiComboBoxEditor.h"
|
#include "cafPdmUiComboBoxEditor.h"
|
||||||
#include "cvfCamera.h"
|
#include "cvfCamera.h"
|
||||||
#include "cvfModelBasicList.h"
|
#include "cvfModelBasicList.h"
|
||||||
@ -112,6 +113,17 @@ Rim3dView::Rim3dView()
|
|||||||
CAF_PDM_InitField( &m_cameraPointOfInterest, "CameraPointOfInterest", cvf::Vec3d::ZERO, "" );
|
CAF_PDM_InitField( &m_cameraPointOfInterest, "CameraPointOfInterest", cvf::Vec3d::ZERO, "" );
|
||||||
m_cameraPointOfInterest.uiCapability()->setUiHidden( true );
|
m_cameraPointOfInterest.uiCapability()->setUiHidden( true );
|
||||||
|
|
||||||
|
CAF_PDM_InitScriptableFieldWithScriptKeywordNoDefault( &m_cameraPositionProxy, "CameraPositionProxy", "CameraMatrix", "Camera Matrix" );
|
||||||
|
m_cameraPositionProxy.registerGetMethod( this, &Rim3dView::cameraPosition );
|
||||||
|
m_cameraPositionProxy.registerSetMethod( this, &Rim3dView::setCameraPosition );
|
||||||
|
|
||||||
|
CAF_PDM_InitScriptableFieldWithScriptKeywordNoDefault( &m_cameraPointOfInterestProxy,
|
||||||
|
"CameraPointOfInterestProxy",
|
||||||
|
"CameraPointOfInterest",
|
||||||
|
"Camera Point of Interest" );
|
||||||
|
m_cameraPointOfInterestProxy.registerGetMethod( this, &Rim3dView::cameraPointOfInterest );
|
||||||
|
m_cameraPointOfInterestProxy.registerSetMethod( this, &Rim3dView::setCameraPointOfInterest );
|
||||||
|
|
||||||
CAF_PDM_InitScriptableField( &isPerspectiveView, "PerspectiveProjection", true, "Perspective Projection" );
|
CAF_PDM_InitScriptableField( &isPerspectiveView, "PerspectiveProjection", true, "Perspective Projection" );
|
||||||
|
|
||||||
double defaultScaleFactor = preferences->defaultScaleFactorZ();
|
double defaultScaleFactor = preferences->defaultScaleFactorZ();
|
||||||
@ -1035,6 +1047,13 @@ void Rim3dView::fieldChangedByUi( const caf::PdmFieldHandle* changedField, const
|
|||||||
m_viewer->update();
|
m_viewer->update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if ( changedField == &m_cameraPositionProxy || changedField == &m_cameraPointOfInterestProxy )
|
||||||
|
{
|
||||||
|
if ( m_viewer )
|
||||||
|
{
|
||||||
|
m_viewer->repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -1510,6 +1529,11 @@ QList<caf::PdmOptionItemInfo> Rim3dView::calculateValueOptions( const caf::PdmFi
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
cvf::Mat4d Rim3dView::cameraPosition() const
|
cvf::Mat4d Rim3dView::cameraPosition() const
|
||||||
{
|
{
|
||||||
|
if ( m_viewer && m_viewer->mainCamera() )
|
||||||
|
{
|
||||||
|
m_cameraPosition = m_viewer->mainCamera()->viewMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
return m_cameraPosition();
|
return m_cameraPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1518,6 +1542,11 @@ cvf::Mat4d Rim3dView::cameraPosition() const
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
cvf::Vec3d Rim3dView::cameraPointOfInterest() const
|
cvf::Vec3d Rim3dView::cameraPointOfInterest() const
|
||||||
{
|
{
|
||||||
|
if ( m_viewer )
|
||||||
|
{
|
||||||
|
m_cameraPointOfInterest = m_viewer->pointOfInterest();
|
||||||
|
}
|
||||||
|
|
||||||
return m_cameraPointOfInterest();
|
return m_cameraPointOfInterest();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1545,6 +1574,10 @@ QWidget* Rim3dView::viewWidget()
|
|||||||
void Rim3dView::setCameraPosition( const cvf::Mat4d& cameraPosition )
|
void Rim3dView::setCameraPosition( const cvf::Mat4d& cameraPosition )
|
||||||
{
|
{
|
||||||
m_cameraPosition = cameraPosition;
|
m_cameraPosition = cameraPosition;
|
||||||
|
if ( m_viewer && m_viewer->mainCamera() )
|
||||||
|
{
|
||||||
|
m_viewer->mainCamera()->setViewMatrix( m_cameraPosition );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -1553,6 +1586,10 @@ void Rim3dView::setCameraPosition( const cvf::Mat4d& cameraPosition )
|
|||||||
void Rim3dView::setCameraPointOfInterest( const cvf::Vec3d& cameraPointOfInterest )
|
void Rim3dView::setCameraPointOfInterest( const cvf::Vec3d& cameraPointOfInterest )
|
||||||
{
|
{
|
||||||
m_cameraPointOfInterest = cameraPointOfInterest;
|
m_cameraPointOfInterest = cameraPointOfInterest;
|
||||||
|
if ( m_viewer )
|
||||||
|
{
|
||||||
|
m_viewer->setPointOfInterest( m_cameraPointOfInterest );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -281,7 +281,6 @@ protected:
|
|||||||
cvf::ref<cvf::ModelBasicList> m_screenSpaceModel;
|
cvf::ref<cvf::ModelBasicList> m_screenSpaceModel;
|
||||||
|
|
||||||
caf::PdmField<double> m_scaleZ;
|
caf::PdmField<double> m_scaleZ;
|
||||||
caf::PdmField<double> m_customScaleZ;
|
|
||||||
|
|
||||||
caf::PdmChildField<RimAnnotationInViewCollection*> m_annotationCollection;
|
caf::PdmChildField<RimAnnotationInViewCollection*> m_annotationCollection;
|
||||||
|
|
||||||
@ -329,13 +328,17 @@ private:
|
|||||||
caf::PdmField<int> m_id;
|
caf::PdmField<int> m_id;
|
||||||
caf::PdmChildField<RimViewNameConfig*> m_nameConfig;
|
caf::PdmChildField<RimViewNameConfig*> m_nameConfig;
|
||||||
caf::PdmField<bool> m_disableLighting;
|
caf::PdmField<bool> m_disableLighting;
|
||||||
caf::PdmField<cvf::Mat4d> m_cameraPosition;
|
|
||||||
caf::PdmField<cvf::Vec3d> m_cameraPointOfInterest;
|
|
||||||
caf::PdmField<cvf::Color3f> m_backgroundColor;
|
caf::PdmField<cvf::Color3f> m_backgroundColor;
|
||||||
caf::PdmField<bool> m_showGridBox;
|
caf::PdmField<bool> m_showGridBox;
|
||||||
caf::PdmField<bool> m_showZScaleLabel;
|
caf::PdmField<bool> m_showZScaleLabel;
|
||||||
caf::PdmPtrField<Rim3dView*> m_comparisonView;
|
caf::PdmPtrField<Rim3dView*> m_comparisonView;
|
||||||
|
|
||||||
|
// Camera
|
||||||
|
mutable caf::PdmField<cvf::Mat4d> m_cameraPosition;
|
||||||
|
mutable caf::PdmField<cvf::Vec3d> m_cameraPointOfInterest;
|
||||||
|
caf::PdmProxyValueField<cvf::Vec3d> m_cameraPointOfInterestProxy;
|
||||||
|
caf::PdmProxyValueField<cvf::Mat4d> m_cameraPositionProxy;
|
||||||
|
|
||||||
caf::PdmField<bool> m_useCustomAnnotationStrategy;
|
caf::PdmField<bool> m_useCustomAnnotationStrategy;
|
||||||
caf::PdmField<caf::AppEnum<RivAnnotationTools::LabelPositionStrategy>> m_annotationStrategy;
|
caf::PdmField<caf::AppEnum<RivAnnotationTools::LabelPositionStrategy>> m_annotationStrategy;
|
||||||
caf::PdmField<int> m_annotationCountHint;
|
caf::PdmField<int> m_annotationCountHint;
|
||||||
|
Loading…
Reference in New Issue
Block a user