92 QVector3D
from3DTo2DLabelPosition(
const QVector3D &sourcePos, Qt3DRender::QCamera *sourceCamera, Qt3DRender::QCamera *destCamera );
115 void onCameraUpdate();
116 void onAxisViewportSizeUpdate();
119 void onTouchedByRay(
const Qt3DRender::QAbstractRayCaster::Hits &hits );
123 void createAxisScene();
124 void createAxis( Qt::Axis axis );
126 void setEnableCube(
bool show );
127 void setEnableAxis(
bool show );
128 void updateAxisLabelPosition();
129 void updateAxisLabelText( Qt3DExtras::QText2DEntity *textEntity,
const QString &text );
130 QFont createFont(
int pointSize );
132 void constructAxisScene( Qt3DCore::QEntity *parent3DScene );
133 void constructLabelsScene( Qt3DCore::QEntity *parent3DScene );
135 Qt3DExtras::QText2DEntity *addCubeText(
const QString &text,
float textHeight,
float textWidth,
const QFont &font,
const QMatrix4x4 &rotation,
const QVector3D &translation );
138 void init3DObjectPicking();
141 void displayMenuAt(
const QPoint &position );
148 float mCylinderLength = 40.0f;
152 Qt3DCore::QEntity *mAxisSceneEntity =
nullptr;
153 Qt3DRender::QCamera *mAxisCamera =
nullptr;
155 Qt3DCore::QEntity *mAxisRoot =
nullptr;
156 Qt3DCore::QEntity *mCubeRoot =
nullptr;
157 QList<Qt3DExtras::QText2DEntity *> mCubeLabels;
159 Qt3DExtras::QText2DEntity *mTextX =
nullptr;
160 Qt3DExtras::QText2DEntity *mTextY =
nullptr;
161 Qt3DExtras::QText2DEntity *mTextZ =
nullptr;
162 QVector3D mTextCoordX;
163 QVector3D mTextCoordY;
164 QVector3D mTextCoordZ;
165 Qt3DCore::QTransform *mTextTransformX =
nullptr;
166 Qt3DCore::QTransform *mTextTransformY =
nullptr;
167 Qt3DCore::QTransform *mTextTransformZ =
nullptr;
169 QVector3D mPreviousVector;
170 double mAxisScaleFactor = 1.0;
172 Qt3DRender::QCamera *mTwoDLabelCamera =
nullptr;
173 Qt3DCore::QEntity *mTwoDLabelSceneEntity =
nullptr;
176 Qt3DRender::QScreenRayCaster *mScreenRayCaster =
nullptr;
177 bool mIsDragging =
false;
178 bool mHasClicked =
false;
179 QPoint mLastClickedPos;
180 Qt::MouseButton mLastClickedButton;
181 QCursor mPreviousCursor = Qt::ArrowCursor;
182 Qt3DRender::QPickingSettings::PickMethod mDefaultPickingMethod;
183 QMenu *mMenu =
nullptr;
QVector3D from3DTo2DLabelPosition(const QVector3D &sourcePos, Qt3DRender::QCamera *sourceCamera, Qt3DRender::QCamera *destCamera)
Project a 3D position from sourceCamera to a 2D position for destCamera.
Qgs3DAxis(Qgs3DMapCanvas *canvas, Qt3DCore::QEntity *parent3DScene, Qgs3DMapScene *mapScene, QgsCameraController *camera, Qgs3DMapSettings *map)
Default Qgs3DAxis constructor.