Multi-touch Design debate - gurus please!

I've been working on a 2D/3D multi-touch application (for work) built on top of jME for a little while now.  I've been happily working on applications that use perspective projection and parallel projection.  The parallel projection route has been my solution for allowing '2D' content that can be picked, rotated, scaled, translated, etc.  All good things that you'd like to do in a multi-touch application.  I've built the usual photo application that you see for multi-touch apps, and added video, 3D models, etc… all very promising (and I love the ability to do multi-touch applications that use jmephysics). So, my problem…



… I turn my attention to supporting text, and immediately I look at going back to Ortho space (i figure 3D text is bad? Eventually I want to support text entry).  I notice the ability to use Renderer.QUEUE_ORTHO, and so began experimenting with this.  I quickly found that picking nodes in QUEUE_ORTHO became problematic (relying on Model Bounds, which are located in World Coords).



So, given that I want to do 2D things, particularly with text, yet still need picking behaviour, should I be using QUEUE_ORTHO, parallel projection, some perspective projection that I hadn't considered, or something else?



As always, thank you in advance for any helpful hints or advice!

Have you tried comparing mouse coordinates to the object XY coordinates?

You could also write a custom bounding class just for object in ortho queue and call it BoundingRectangle for example. Then you can use it for mouse picking by testing if the mouse is inside that rectangle or not.

Thanks for taking the time to reply.  I can't just compare XY coords as objects can be rotated/scaled/etc - just the kinds of things that Ray firing works out for me.  Good tip on writing a custom bounding class.  Do you think ORTHO is the way to go then?  Better than parallel projection?

Using ortho 2d is fine. (parallel projection is ortho 3d btw)



You can do picking with nodes in ortho (2d) mode. All you need to do is putting them into a separate root node to prevent non-ortho-queue stuff from being picked. Additionally your picking ray must not be computed with getScreenCoordinates but directly from the mouse coordinates.

and: we can help you better if you post a video of your work :smiley: :wink: