Java-Gaming.org Hi !
 Featured games (83) games approved by the League of Dukes Games in Showcase (581) Games in Android Showcase (162) games submitted by our members Games in WIP (632) games currently in development
 News: Read the Java Gaming Resources, or peek at the official Java tutorials
Pages: [1]
 ignore  |  Print
 Mouse to 3D space?  (Read 1484 times) 0 Members and 1 Guest are viewing this topic.
Varkas
 « Posted 2012-11-15 11:30:34 »

I'd assume that it should be possible to use the projection matrix "backwards", and calculate a line in 3D space from the 2D mouse coordinate on the screen. Intersecting this line with the objects it should be possible to find the object(s) which was pointed at.

Is this the way to do it? And if yes, how does one do the math? Matrix operations are nontrivial for me, so I will ned a bit of help with that. Thanks

if (error) throw new Brick(); // Blog (german): http://gedankenweber.wordpress.com
ra4king

JGO Kernel

Medals: 386
Projects: 3
Exp: 5 years

I'm the King!

 « Reply #1 - Posted 2012-11-16 00:38:50 »

sproingie

JGO Kernel

Medals: 202

 « Reply #2 - Posted 2012-11-16 00:52:15 »

The term that you might find handy to google for is "ray picking".  A "simple" way to get that ray is with a couple calls to GLU.gluUnproject, using your near and far planes as Z values.  There's probably better ways to do it now though.
Agro
 « Reply #3 - Posted 2012-11-16 02:08:38 »

It is actually really easy. this function will return a vector in the direction you are pointing in, assuming you have a yaw and pitch value(you can't just get it from a single coordinate, you need some sense of direction too):

 1  2  3 Vector3D getDirectionVector() {   return new Vector3D(-Math.cos(pitch * Math.PI / 180.0) * Math.sin(yaw * Math.PI / 180.0), Math.sin(pitch * Math.PI / 180.0), -Math.cos(pitch * Math.PI / 180.0) * Math.cos(yaw * Math.PI / 180.0));}

Note: This is assuming yaw and pitch are in degrees.

Tell me if it didn't work, might've messed up something there.

Then after that, you can use ray tracing or some other good  method to find the object(s) you're pointing at.

ra4king

JGO Kernel

Medals: 386
Projects: 3
Exp: 5 years

I'm the King!

 « Reply #4 - Posted 2012-11-16 02:13:32 »

Try to keep pitch and yaw as radians to save performance.

/nitpicky

Agro
 « Reply #5 - Posted 2012-11-16 02:14:25 »

Oh yeah, always use radians. Degrees is just better for debugging/presentation honestly, but personally I like it better. >

Varkas
 « Reply #6 - Posted 2012-11-16 13:08:21 »

I guess I was rather feeling for a forum posting yesterday. But it seems easy enough, I think I can find a way. If I remember right I already had solved that problem in an very old 3D game attempt of mine, and maybe I can revive that code (the vector from eye position to mouse-on-projection-surface position should be just the ray I was looking for. It guess it was more obvious when I did the projection in my own code ...)

Thanks for the responses, and sorry, next time I'll try to google first.

if (error) throw new Brick(); // Blog (german): http://gedankenweber.wordpress.com
Pages: [1]
 ignore  |  Print

You cannot reply to this message, because it is very, very old.

 MrMapcom (17 views) 2015-05-23 20:26:16 MrMapcom (22 views) 2015-05-23 20:23:34 Waterwolf (31 views) 2015-05-20 15:01:45 chrislo27 (37 views) 2015-05-20 03:42:21 BurntPizza (72 views) 2015-05-10 15:53:18 FrozenShade (56 views) 2015-05-07 09:11:21 TheLopais (220 views) 2015-05-06 13:36:48 TheLopais (202 views) 2015-05-06 13:35:14 TheLopais (208 views) 2015-05-06 13:33:39 TheLopais (228 views) 2015-05-06 13:32:48
 Spasi 32x Riven 16x BurntPizza 16x Drenius 13x ra4king 12x theagentd 11x DavidBVal 11x Husk 11x EgonOlsen 11x princec 10x KevinWorkman 9x scanevaro 8x orangepascal 8x opiop65 7x Slyth2727 6x revers 6x
 List of Learning Resources2015-05-05 10:20:32How to: JGO Wikiby Mac702015-02-17 20:56:162D Dynamic Lighting2015-01-01 20:25:42How do I start Java Game Development?by gouessej2014-12-27 19:41:21Resources for WIP gamesby kpars2014-12-18 10:26:14Understanding relations between setOrigin, setScale and setPosition in libGdx2014-10-09 22:35:00Definite guide to supporting multiple device resolutions on Android (2014)2014-10-02 22:36:02List of Learning Resources2014-08-16 10:40:00
 java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org