我正在尝试使用Xamarin构建应用程序,同时将ARKit与Scenekit结合使用。 ARSession配置为跟踪水平平面,以及何时找到这样的平面。我想在这样的飞机上画一张自定义图表。物体看起来很好并且位于正确的位置,但它仍然保持旋转状态。当我在测试时绕着物体走动时,它的方向改变为面向我,这是不应该做的。这种情况发生的时间不到一秒钟,然后又变回原来的方向。
在我的委托中找到飞机时触发此方法:
public override void DidAddNode(ISCNSceneRenderer renderer, SCNNode node, ARAnchor anchor) {
if (anchor.GetType() != typeof(ARPlaneAnchor) || ChartIsPlaced) {
return;
}
var planeAnchor = (ARPlaneAnchor) anchor;
var chart = new ARChart(createTestData());
chart = (ARChart) chart.DrawOnPlane(node);
renderer.PointOfView.Light = chart.AddLightSource();
node.AddChildNode(chart);
ChartIsPlaced = true;
}
每当ARKit注册足够的点以“看到”锚定平面时,将添加3D图表作为此平面节点的子节点。
我见过的几乎所有使用Xcode制作的iOS样本都没有这个问题,但我似乎无法将其正确地转换为C#。
我怀疑这与SceneKit处理节点及其子节点的方式有关。也许ARAnchor节点发生了变化,我的对象(也就是锚节点的子节点)也发生了变化。
为什么旋转?如何控制这种行为?