ARCore - Plane Detection: detect inclined planes












0














I'm using ARCore with Unity and I'm tracking vertical and horizontal planes with success.



I have an inclined flat platform (it's big: 4 meters x 4 meters, so it should be detected) that is inclined about 30 degrees compared to the floor, but plane detection seems to not work on this platform.



Is it possible to track a plane/platform that is inclined or you have any idea of how to do it?



Thanks in advance.










share|improve this question






















  • I guess you can create a mesh of your inclined platform using feature points you get from that platform
    – Ali Kanat
    Oct 1 at 10:28
















0














I'm using ARCore with Unity and I'm tracking vertical and horizontal planes with success.



I have an inclined flat platform (it's big: 4 meters x 4 meters, so it should be detected) that is inclined about 30 degrees compared to the floor, but plane detection seems to not work on this platform.



Is it possible to track a plane/platform that is inclined or you have any idea of how to do it?



Thanks in advance.










share|improve this question






















  • I guess you can create a mesh of your inclined platform using feature points you get from that platform
    – Ali Kanat
    Oct 1 at 10:28














0












0








0







I'm using ARCore with Unity and I'm tracking vertical and horizontal planes with success.



I have an inclined flat platform (it's big: 4 meters x 4 meters, so it should be detected) that is inclined about 30 degrees compared to the floor, but plane detection seems to not work on this platform.



Is it possible to track a plane/platform that is inclined or you have any idea of how to do it?



Thanks in advance.










share|improve this question













I'm using ARCore with Unity and I'm tracking vertical and horizontal planes with success.



I have an inclined flat platform (it's big: 4 meters x 4 meters, so it should be detected) that is inclined about 30 degrees compared to the floor, but plane detection seems to not work on this platform.



Is it possible to track a plane/platform that is inclined or you have any idea of how to do it?



Thanks in advance.







unity3d arcore






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Oct 1 at 5:21









DanieleOss

1




1












  • I guess you can create a mesh of your inclined platform using feature points you get from that platform
    – Ali Kanat
    Oct 1 at 10:28


















  • I guess you can create a mesh of your inclined platform using feature points you get from that platform
    – Ali Kanat
    Oct 1 at 10:28
















I guess you can create a mesh of your inclined platform using feature points you get from that platform
– Ali Kanat
Oct 1 at 10:28




I guess you can create a mesh of your inclined platform using feature points you get from that platform
– Ali Kanat
Oct 1 at 10:28












1 Answer
1






active

oldest

votes


















0














I believe ARCore only currently supports vertical and horizontal plane tracking at the moment.



There is an open GitHub FR to add support for general plane detection, but in the meantime you might have to analyse the point-cloud yourself and fit planes.



I suspect this would be expensive and/or noisy without filtering to cardinal directions, which would explain why it's not yet be implemented.



That said, if you know for sure the plane you're looking for will always be 30 degrees compared to the floor, you could probably do something similar.



You should be able to retrieve the point-cloud using the static property PointCloud from the Frame object. This is how ARInterface does it for ARCore:



    public override bool TryGetPointCloud(ref PointCloud pointCloud)
{
if (Session.Status != SessionStatus.Tracking)
return false;

// Fill in the data to draw the point cloud.
m_TempPointCloud.Clear();
Frame.PointCloud.CopyPoints(m_TempPointCloud);

if (m_TempPointCloud.Count == 0)
return false;

if (pointCloud.points == null)
pointCloud.points = new List<Vector3>();

pointCloud.points.Clear();
foreach (Vector3 point in m_TempPointCloud)
pointCloud.points.Add(point);

return true;
}


(full source)



Now you've got the point cloud, you need to fit your planes to it. This tutorial might give you some insight into how to go about this, it covers basic plane-fitting via 3 points and more robust multi-point plane fitting using RANSAC. You might also like to look at this answer and this answer.






share|improve this answer























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


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f52584970%2farcore-plane-detection-detect-inclined-planes%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    I believe ARCore only currently supports vertical and horizontal plane tracking at the moment.



    There is an open GitHub FR to add support for general plane detection, but in the meantime you might have to analyse the point-cloud yourself and fit planes.



    I suspect this would be expensive and/or noisy without filtering to cardinal directions, which would explain why it's not yet be implemented.



    That said, if you know for sure the plane you're looking for will always be 30 degrees compared to the floor, you could probably do something similar.



    You should be able to retrieve the point-cloud using the static property PointCloud from the Frame object. This is how ARInterface does it for ARCore:



        public override bool TryGetPointCloud(ref PointCloud pointCloud)
    {
    if (Session.Status != SessionStatus.Tracking)
    return false;

    // Fill in the data to draw the point cloud.
    m_TempPointCloud.Clear();
    Frame.PointCloud.CopyPoints(m_TempPointCloud);

    if (m_TempPointCloud.Count == 0)
    return false;

    if (pointCloud.points == null)
    pointCloud.points = new List<Vector3>();

    pointCloud.points.Clear();
    foreach (Vector3 point in m_TempPointCloud)
    pointCloud.points.Add(point);

    return true;
    }


    (full source)



    Now you've got the point cloud, you need to fit your planes to it. This tutorial might give you some insight into how to go about this, it covers basic plane-fitting via 3 points and more robust multi-point plane fitting using RANSAC. You might also like to look at this answer and this answer.






    share|improve this answer




























      0














      I believe ARCore only currently supports vertical and horizontal plane tracking at the moment.



      There is an open GitHub FR to add support for general plane detection, but in the meantime you might have to analyse the point-cloud yourself and fit planes.



      I suspect this would be expensive and/or noisy without filtering to cardinal directions, which would explain why it's not yet be implemented.



      That said, if you know for sure the plane you're looking for will always be 30 degrees compared to the floor, you could probably do something similar.



      You should be able to retrieve the point-cloud using the static property PointCloud from the Frame object. This is how ARInterface does it for ARCore:



          public override bool TryGetPointCloud(ref PointCloud pointCloud)
      {
      if (Session.Status != SessionStatus.Tracking)
      return false;

      // Fill in the data to draw the point cloud.
      m_TempPointCloud.Clear();
      Frame.PointCloud.CopyPoints(m_TempPointCloud);

      if (m_TempPointCloud.Count == 0)
      return false;

      if (pointCloud.points == null)
      pointCloud.points = new List<Vector3>();

      pointCloud.points.Clear();
      foreach (Vector3 point in m_TempPointCloud)
      pointCloud.points.Add(point);

      return true;
      }


      (full source)



      Now you've got the point cloud, you need to fit your planes to it. This tutorial might give you some insight into how to go about this, it covers basic plane-fitting via 3 points and more robust multi-point plane fitting using RANSAC. You might also like to look at this answer and this answer.






      share|improve this answer


























        0












        0








        0






        I believe ARCore only currently supports vertical and horizontal plane tracking at the moment.



        There is an open GitHub FR to add support for general plane detection, but in the meantime you might have to analyse the point-cloud yourself and fit planes.



        I suspect this would be expensive and/or noisy without filtering to cardinal directions, which would explain why it's not yet be implemented.



        That said, if you know for sure the plane you're looking for will always be 30 degrees compared to the floor, you could probably do something similar.



        You should be able to retrieve the point-cloud using the static property PointCloud from the Frame object. This is how ARInterface does it for ARCore:



            public override bool TryGetPointCloud(ref PointCloud pointCloud)
        {
        if (Session.Status != SessionStatus.Tracking)
        return false;

        // Fill in the data to draw the point cloud.
        m_TempPointCloud.Clear();
        Frame.PointCloud.CopyPoints(m_TempPointCloud);

        if (m_TempPointCloud.Count == 0)
        return false;

        if (pointCloud.points == null)
        pointCloud.points = new List<Vector3>();

        pointCloud.points.Clear();
        foreach (Vector3 point in m_TempPointCloud)
        pointCloud.points.Add(point);

        return true;
        }


        (full source)



        Now you've got the point cloud, you need to fit your planes to it. This tutorial might give you some insight into how to go about this, it covers basic plane-fitting via 3 points and more robust multi-point plane fitting using RANSAC. You might also like to look at this answer and this answer.






        share|improve this answer














        I believe ARCore only currently supports vertical and horizontal plane tracking at the moment.



        There is an open GitHub FR to add support for general plane detection, but in the meantime you might have to analyse the point-cloud yourself and fit planes.



        I suspect this would be expensive and/or noisy without filtering to cardinal directions, which would explain why it's not yet be implemented.



        That said, if you know for sure the plane you're looking for will always be 30 degrees compared to the floor, you could probably do something similar.



        You should be able to retrieve the point-cloud using the static property PointCloud from the Frame object. This is how ARInterface does it for ARCore:



            public override bool TryGetPointCloud(ref PointCloud pointCloud)
        {
        if (Session.Status != SessionStatus.Tracking)
        return false;

        // Fill in the data to draw the point cloud.
        m_TempPointCloud.Clear();
        Frame.PointCloud.CopyPoints(m_TempPointCloud);

        if (m_TempPointCloud.Count == 0)
        return false;

        if (pointCloud.points == null)
        pointCloud.points = new List<Vector3>();

        pointCloud.points.Clear();
        foreach (Vector3 point in m_TempPointCloud)
        pointCloud.points.Add(point);

        return true;
        }


        (full source)



        Now you've got the point cloud, you need to fit your planes to it. This tutorial might give you some insight into how to go about this, it covers basic plane-fitting via 3 points and more robust multi-point plane fitting using RANSAC. You might also like to look at this answer and this answer.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Nov 12 at 11:57

























        answered Nov 12 at 11:45









        n00dle

        4,2022342




        4,2022342






























            draft saved

            draft discarded




















































            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.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f52584970%2farcore-plane-detection-detect-inclined-planes%23new-answer', 'question_page');
            }
            );

            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







            Popular posts from this blog

            Xamarin.iOS Cant Deploy on Iphone

            Glorious Revolution

            Dulmage-Mendelsohn matrix decomposition in Python