[Interest] Qt3D - Setting the Camera's ViewMatrix Directly

Sean Harmer sean.harmer at kdab.com
Mon Dec 5 18:32:45 CET 2016



On 05/12/2016 16:37, Philip Schuchardt wrote:
> Awesome! Thanks! I really like the entity and component system in qt3d!
> It just takes time to understand all the components and how they play
> together with each other.

Yeah, it's a little bit of a mental shift from traditional OOP but means 
we can keep adding more components and aspects without baking many 
assumptions into the core framework of Qt 3D.

> If I aggregate the QTransform and QCameraLens
> into my own camera code, do I need to subclass framegraph node to select
> my custom camera?

Nope, no need to subclass. The QCameraSelector framegraph node's camera 
property is intentionally typed as QEntity* for this reason.

Cheers,

Sean

>
>
> On Mon, Dec 5, 2016 at 3:52 AM Sean Harmer <sean.harmer at kdab.com
> <mailto:sean.harmer at kdab.com>> wrote:
>
>     Hi,
>
>     I see you found it already but I'll explain for posterity. All Qt 3D
>     wants from a "camera" is a view matrix and a projection matrix. These
>     come from the QTransform and QCameraLens components respectively, which
>     are aggregated by QCamera. QCamera itself is not special, it is just an
>     entity with these components and provides some API for common
>     operations. If QCamera doesn't suit your needs you can subclass QEntity,
>     aggregate these components, plus any others you want (perhaps a light
>     source), and add whatever API you like.
>
>     Cheers,
>
>     Sean
>
>     On 04/12/2016 20:49, Philip Schuchardt wrote:
>     > Nevermind, I figured it out. The QCamera can be accessed changed
>     > directly through QCamera::transform()->setMatrix().
>     >
>     >
>     >
>     > On Sun, Dec 4, 2016 at 9:54 AM Philip Schuchardt
>     <vpicaver at gmail.com <mailto:vpicaver at gmail.com>
>     > <mailto:vpicaver at gmail.com <mailto:vpicaver at gmail.com>>> wrote:
>     >
>     >     In the next step of porting my OpenGL application to Qt3D, I
>     trying
>     >     to use my existing camera and interaction code. My interaction
>     code
>     >     creates and manipulates QMatrix4x4's for projection and view
>     >     matrixes. It seems like Qt3D's camera doesn't provide direct
>     access
>     >     of ViewMatrix. My question is how do I set this directly? Can I
>     >     subclass QCamera and control it directly? Could I make my code
>     >     Camera an entry and not use QCamera? How would Qt3D interpret my
>     >     camera as a QCamera and set the necessary uniforms in the shaders.
>     >     Also, how would this play with CameraSelector nodes in the
>     >     framegraph? Would I have to make a custom CameraSelector
>     framegraph
>     >     node?  The nice thing about direct control of the ViewMatrix is
>     >     there's no mystery about how the math works. Without direct access
>     >     to the ViewMatrix, it'll take me a decedent amount to port my
>     camera
>     >     code...
>     >
>     >     Also, how do you unproject a point on the screen using the QCamera
>     >     and the viewport in Q3D? This is necessary for my interactions to
>     >     work correctly.
>     >
>     >     Thanks,
>     >     Phi|ip
>     >     --
>     >     Phi|ip
>     >
>     > --
>     > Phi|ip
>     >
>     >
>     > _______________________________________________
>     > Interest mailing list
>     > Interest at qt-project.org <mailto:Interest at qt-project.org>
>     > http://lists.qt-project.org/mailman/listinfo/interest
>     >
>
>     --
>     Dr Sean Harmer | sean.harmer at kdab.com <mailto:sean.harmer at kdab.com>
>     | Managing Director UK
>     KDAB (UK) Ltd, a KDAB Group company
>     Tel. +44 (0)1625 809908 <tel:+44%201625%20809908>; Sweden (HQ)
>     +46-563-540090 <tel:+46%20563%2054%2000%2090>
>     Mobile: +44 (0)7545 140604 <tel:+44%207545%20140604>
>     KDAB - Qt Experts
>     _______________________________________________
>     Interest mailing list
>     Interest at qt-project.org <mailto:Interest at qt-project.org>
>     http://lists.qt-project.org/mailman/listinfo/interest
>
> --
> Phi|ip

-- 
Dr Sean Harmer | sean.harmer at kdab.com | Managing Director UK
KDAB (UK) Ltd, a KDAB Group company
Tel. +44 (0)1625 809908; Sweden (HQ) +46-563-540090
Mobile: +44 (0)7545 140604
KDAB - Qt Experts



More information about the Interest mailing list