Calculating the intersection point of Ray and Scene2d UI plane









up vote
0
down vote

favorite












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();



render1render2



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.










share|improve this question

























    up vote
    0
    down vote

    favorite












    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();



    render1render2



    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.










    share|improve this question























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      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();



      render1render2



      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.










      share|improve this question













      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();



      render1render2



      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






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 2 days ago









      Pratik Velani

      356




      356



























          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',
          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
          );



          );













           

          draft saved


          draft discarded


















          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



































          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes















           

          draft saved


          draft discarded















































           


          draft saved


          draft discarded














          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














































































          這個網誌中的熱門文章

          Barbados

          How to read a connectionString WITH PROVIDER in .NET Core?

          Node.js Script on GitHub Pages or Amazon S3