如何在增强现实中将3D模型放置在gps位置



我在将三维模型放置在特定的gps位置时遇到了巨大的问题。在打开AR ViewController之前,我正在下载模型,这意味着我也有模型的文件路径。我尝试了不同的方法将下载的模型放置在AR中的固定gps位置。

我正在使用Project Dent来实现这一点,但我不确定使用该库是否可行。

我尝试将模型(usdz文件(加载到SCNNode中,然后将其附加到LocationNode,然后将该LocationNode添加到sceneLocationView中。

// Load model
let model = MDLAsset(url: (self.arConfig?.models.first!)!)
model.loadTextures()

let modelNode: SCNNode = SCNNode(mdlObject: model.object(at: 0))
modelNode.scale = SCNVector3(x: 30, y: 30, z: 30)

// Create location node and add the model node to it
let locationNode = LocationNode(location: location)
locationNode.addChildNode(modelNode)
locationNode.continuallyUpdatePositionAndScale = true
locationNode.continuallyAdjustNodePositionWhenWithinRange = true
locationNode.scaleRelativeToDistance = true
locationNode.ignoreAltitude = true

// Add the location node for a given location which includes the model to the scene
sceneLocationView.addLocationNodeWithConfirmedLocation(locationNode: locationNode)

结果是,我可以在相机前看到模型,但它并没有固定在特定的位置。当我把相机向上、向侧面或向后移动一点时,它会随着我的相机不断移动。

我也研究了这个答案。我使用了";ThreeDNode";并尝试使用下载的模型初始化SCNScene;ThreeDNode";班我尝试使用SCNScene(url,options(初始化场景,并将usdz文件转换为.scn文件。然而,场景根节点不包含任何几何体;ThreeDNode";类不能将其设置为自己的。

我还搜索了其他可以帮助我实现这一目标的框架,但没有找到。

几年前我使用了ProjectDent,发现在一般情况下,GPS坐标不够精确,无法按照我预期的方式放置模型。此外,手机上的指南针不够准确,你无法以任何合理的精度将你的模型放置在你期望的位置,而且你放置模型的距离越远,误差就会累积。

使其真正稳定和准确的唯一方法是在映射的环境中执行定位,这在使用ARGeoAnchor的少数城市是可能的。

最新更新