ARCore - Plane Detection: detect inclined planes
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
add a comment |
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
I guess you can create a mesh of your inclined platform using feature points you get from that platform
– Ali Kanat
Oct 1 '18 at 10:28
add a comment |
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
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
unity3d arcore
asked Oct 1 '18 at 5:21
DanieleOssDanieleOss
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 '18 at 10:28
add a comment |
I guess you can create a mesh of your inclined platform using feature points you get from that platform
– Ali Kanat
Oct 1 '18 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 '18 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 '18 at 10:28
add a comment |
1 Answer
1
active
oldest
votes
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.
add a comment |
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%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
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.
add a comment |
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.
add a comment |
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.
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.
edited Nov 12 '18 at 11:57
answered Nov 12 '18 at 11:45
n00dlen00dle
4,2272342
4,2272342
add a comment |
add a comment |
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%2f52584970%2farcore-plane-detection-detect-inclined-planes%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
I guess you can create a mesh of your inclined platform using feature points you get from that platform
– Ali Kanat
Oct 1 '18 at 10:28