[ui] Viewer3D: improved frame graph

* enable PrimitivePicking to enable picking on point clouds
* use OnDemand render policy
* activate FrustrumCulling + increase far plane
* add management of rasterized OpenGL points via a PointSize render
This commit is contained in:
Yann Lanthony 2018-11-23 22:18:16 +01:00
parent e5fa9f1087
commit e35076ef97
2 changed files with 25 additions and 15 deletions

View file

@ -167,7 +167,7 @@ FocusScope {
projectionType: CameraLens.PerspectiveProjection
fieldOfView: 45
nearPlane : 0.01
farPlane : 1000.0
farPlane : 10000.0
position: Qt.vector3d(28.0, 21.0, 28.0)
upVector: Qt.vector3d(0.0, 1.0, 0.0)
viewCenter: Qt.vector3d(0.0, 0.0, 0.0)
@ -224,28 +224,37 @@ FocusScope {
components: [
RenderSettings {
// To avoid performance drops, picking is only enabled under certain circumstances (see ObjectPicker below)
pickingSettings.pickMethod: PickingSettings.TrianglePicking
pickingSettings.pickMethod: PickingSettings.PrimitivePicking // enables point/edge/triangle picking
pickingSettings.pickResultMode: PickingSettings.NearestPick
renderPolicy: RenderSettings.Always
activeFrameGraph: Viewport {
normalizedRect: Qt.rect(0.0, 0.0, 1.0, 1.0)
RenderSurfaceSelector {
renderPolicy: RenderSettings.OnDemand
activeFrameGraph: RenderSurfaceSelector {
// Use the whole viewport
Viewport {
normalizedRect: Qt.rect(0.0, 0.0, 1.0, 1.0)
CameraSelector {
id: cameraSelector
camera: mainCamera
ClearBuffers {
buffers : ClearBuffers.ColorDepthBuffer
clearColor: Qt.rgba(0, 0, 0, 0.1)
FrustumCulling {
ClearBuffers {
clearColor: "transparent"
buffers : ClearBuffers.ColorDepthBuffer
RenderStateSet {
renderStates: [
PointSize {
sizeMode: Viewer3DSettings.fixedPointSize ? PointSize.Fixed : PointSize.Programmable
value: Viewer3DSettings.pointSize
},
DepthTest { depthFunction: DepthTest.Less }
]
}
}
}
}
}
}
},
Qt3DInput.InputSettings {
eventSource: _window
enabled: true
}
Qt3DInput.InputSettings { }
]
Entity {