Calculating the intersection point of Ray and Scene2d UI plane
I am rendering a Scene2d UI table on the 3D world using SpriteBatch
, projection matrix
and PerspectiveCamera
public void render (float delta)
spriteBatch.setProjectionMatrix(projectionMatrix.set(camera.combined).mul(transform));
spriteBatch.begin();
rootTable.draw(spriteBatch, 1.0f);
spriteBatch.end();
The mouse pointer is hidden and locked to the centre of the screen. When a touchUp event is fired, if the mouse is inside the bounding box of the table, I want to calculate the Vector2
position where the mouse was actually clicked inside the table, so I can call the Table.hit
function to get the clicked Actor
. Also is this the right approach to draw 2D menu on the 3D world.
I am using this code to do a Ray intersection test.
Ray ray = camera.getPickRay(screenX, screenY);
int result = -1;
float distance = -1;
transform.getTranslation(position);
if (Intersector.intersectRayBoundsFast(ray, position, new Vector3(40, 40, 20) ))
Gdx.app.log("RAY", "Table Clicked");
The Scene2d coordinates start from the bottom left corner and in 3D they start from the centre. I used new Vector3(40, 40, 20)
as dummy bounds.
java android 3d libgdx game-development
add a comment |
I am rendering a Scene2d UI table on the 3D world using SpriteBatch
, projection matrix
and PerspectiveCamera
public void render (float delta)
spriteBatch.setProjectionMatrix(projectionMatrix.set(camera.combined).mul(transform));
spriteBatch.begin();
rootTable.draw(spriteBatch, 1.0f);
spriteBatch.end();
The mouse pointer is hidden and locked to the centre of the screen. When a touchUp event is fired, if the mouse is inside the bounding box of the table, I want to calculate the Vector2
position where the mouse was actually clicked inside the table, so I can call the Table.hit
function to get the clicked Actor
. Also is this the right approach to draw 2D menu on the 3D world.
I am using this code to do a Ray intersection test.
Ray ray = camera.getPickRay(screenX, screenY);
int result = -1;
float distance = -1;
transform.getTranslation(position);
if (Intersector.intersectRayBoundsFast(ray, position, new Vector3(40, 40, 20) ))
Gdx.app.log("RAY", "Table Clicked");
The Scene2d coordinates start from the bottom left corner and in 3D they start from the centre. I used new Vector3(40, 40, 20)
as dummy bounds.
java android 3d libgdx game-development
add a comment |
I am rendering a Scene2d UI table on the 3D world using SpriteBatch
, projection matrix
and PerspectiveCamera
public void render (float delta)
spriteBatch.setProjectionMatrix(projectionMatrix.set(camera.combined).mul(transform));
spriteBatch.begin();
rootTable.draw(spriteBatch, 1.0f);
spriteBatch.end();
The mouse pointer is hidden and locked to the centre of the screen. When a touchUp event is fired, if the mouse is inside the bounding box of the table, I want to calculate the Vector2
position where the mouse was actually clicked inside the table, so I can call the Table.hit
function to get the clicked Actor
. Also is this the right approach to draw 2D menu on the 3D world.
I am using this code to do a Ray intersection test.
Ray ray = camera.getPickRay(screenX, screenY);
int result = -1;
float distance = -1;
transform.getTranslation(position);
if (Intersector.intersectRayBoundsFast(ray, position, new Vector3(40, 40, 20) ))
Gdx.app.log("RAY", "Table Clicked");
The Scene2d coordinates start from the bottom left corner and in 3D they start from the centre. I used new Vector3(40, 40, 20)
as dummy bounds.
java android 3d libgdx game-development
I am rendering a Scene2d UI table on the 3D world using SpriteBatch
, projection matrix
and PerspectiveCamera
public void render (float delta)
spriteBatch.setProjectionMatrix(projectionMatrix.set(camera.combined).mul(transform));
spriteBatch.begin();
rootTable.draw(spriteBatch, 1.0f);
spriteBatch.end();
The mouse pointer is hidden and locked to the centre of the screen. When a touchUp event is fired, if the mouse is inside the bounding box of the table, I want to calculate the Vector2
position where the mouse was actually clicked inside the table, so I can call the Table.hit
function to get the clicked Actor
. Also is this the right approach to draw 2D menu on the 3D world.
I am using this code to do a Ray intersection test.
Ray ray = camera.getPickRay(screenX, screenY);
int result = -1;
float distance = -1;
transform.getTranslation(position);
if (Intersector.intersectRayBoundsFast(ray, position, new Vector3(40, 40, 20) ))
Gdx.app.log("RAY", "Table Clicked");
The Scene2d coordinates start from the bottom left corner and in 3D they start from the centre. I used new Vector3(40, 40, 20)
as dummy bounds.
java android 3d libgdx game-development
java android 3d libgdx game-development
asked Nov 10 '18 at 10:15
Pratik Velani
356
356
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53237936%2fcalculating-the-intersection-point-of-ray-and-scene2d-ui-plane%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53237936%2fcalculating-the-intersection-point-of-ray-and-scene2d-ui-plane%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown