【发布时间】:2018-01-21 19:40:17
【问题描述】:
我得到了 Vuforia 官方示例项目和别人的 Vuforia Swift 项目。我必须做很多配置才能使两个项目都完成编译。 (类似于 vuforiaLicenseKey 和 vuforiaDataSetFile)之后,我发现用我的数据库替换演示数据库后,AR 模型没有显示在演示图像目标上。
为此,我已更新源代码。当我调试时,我可以看到我的图像目标已被检测到。并且,官方示例和其他示例都开始绘制 OpenGL 3D 模型或绘制场景套件节点。问题是我在屏幕上看不到它们。但是如果我重新配置示例数据库,我可以看到 AR 视图正常工作。
以下代码是来自yshrkt/VuforiaSampleSwift 的 swift 项目示例。它正在工作,并且 trackerableName == "coaster" 的条件为真。这意味着应用检测到了过山车图像。
func vuforiaManager(_ manager: VuforiaManager!, didUpdateWith state: VuforiaState!) {
for index in 0 ..< state.numberOfTrackableResults {
let result = state.trackableResult(at: index)
let trackerableName = result?.trackable.name
//print("\(trackerableName)")
if trackerableName == "coaster" {
boxMaterial.diffuse.contents = UIColor.yellow
if lastSceneName != "coaster" {
manager.eaglView.setNeedsChangeSceneWithUserInfo(["scene" : "coaster"])
lastSceneName = "coaster "
}
} else {
print("\(trackerableName?.description)")
boxMaterial.diffuse.contents = UIColor.blue
if lastSceneName != "chips" {
manager.eaglView.setNeedsChangeSceneWithUserInfo(["scene" : "chips"])
lastSceneName = "chips"
}
}
}
}
而且,它调用了以下乐趣。一切看起来都不错。
(void)setNeedsChangeSceneWithUserInfo: (NSDictionary*)userInfo {
SCNScene* scene = [self.sceneSource sceneForEAGLView:self userInfo:userInfo];
if (scene == nil) {
return;
}
SCNCamera* camera = [SCNCamera camera];
_cameraNode = [SCNNode node];
_cameraNode.camera = camera;
_cameraNode.camera.projectionTransform = _projectionTransform;
[scene.rootNode addChildNode:_cameraNode];
_renderer.scene = scene;
_renderer.pointOfView = _cameraNode;
}
同样的项目,在我更新我的图像目标数据库之前,它工作正常,检测图像目标然后在 AR 视图上绘制模型。但是,我更换数据库后,它只能检测图像目标,它不能再在 AR 视图上绘制模型了。
【问题讨论】: