从文档https://developers.google.com/ar/reference/java/arcore/reference/com/google/ar/core/Pose
我看到Pose意味着有一个不变的锚点。但是我不太确定它在下面的代码中如何工作,其中以下两点之间画了一条线:
Pose point1;
// draw first cube
Pose point0 = getPose(anchors.get(0));
drawObj(point0, cube, viewmtx, projmtx, lightIntensity);
checkIfHit(cube, 0);
// draw the rest cube
for(int i = 1; i < anchors.size(); i++){
point1 = getPose(anchors.get(i));
log("onDrawFrame()", "before drawObj()");
drawObj(point1, cube, viewmtx, projmtx, lightIntensity);
checkIfHit(cube, i);
log("onDrawFrame()", "before drawLine()");
float distanceCm = ((int)(getDistance(point0, point1) * 1000))/10.0f;
drawLine(point0, point1, viewmtx, projmtx);
当文档使我更加困惑时,有人可以解释有关Pose的更多信息吗?
最佳答案
思考姿势的一种方法是,它与单词的英语含义大致相似-它告诉您对象在世界上的位置以及所面向的方向。
如果您想象在空白的3D位置中创建对象,并且该对象由点集组成,则这些点中的每一个将在空白的3D位置中具有一个位置-即,每个点将具有ax,y,z co -纵坐标。
当您要在场景中显示该对象时,您需要说出要在场景中放置对象的位置,并且需要根据场景的坐标指定位置。
姿势是您这样说的,但是在数学上-这是您对对象中每个点所做的变换,以使该点出现在场景中的正确位置。
当他们说时,您可以在链接的文档中看到这一点
使用围绕原点的四元数旋转定义一个变换,然后进行平移。
四元数旋转会确保您的对象在场景中朝向正确的方向,并且平移会将结果放置在场景中的正确位置。