У меня есть официальный пример проекта Vuforia и чей-то проект Vuforia Swift. Мне нужно выполнить много настроек, чтобы оба проекта завершили компиляцию. (что-то вроде vuforiaLicenseKey и vuforiaDataSetFile) После этого я обнаружил, что модель AR не отображается на целевом демонстрационном изображении после замены демонстрационной базы данных моей базой данных.
Я обновил исходный код, чтобы сделать это. Когда я отлаживаю, я вижу, что моя цель изображения была обнаружена. И, как официальный пример, так и чужой пример начинают отрисовывать OpenGL 3D модель или отрисовывать узел набора сцен. Проблема в том, что я не вижу их на экране. Но если я снова настрою пример базы данных, я увижу, что представление AR работает.
Приведенный ниже код представляет собой пример проекта Swift из yshrkt/VuforiaSampleSwift. Это работает, и условие 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.