Я скачал пример кода с https://github.com/yshrkt/VuforiaSampleSwift для реализации Vuforia
с swift
. Это не сработало с последним SDK, но я успешно загрузил xml/dat
dataSet, и когда я указываю на целевой метод, вызывается ViewController.createStonesScene(with view: VuforiaEAGLView) -> SCNScene
. К сожалению, я не вижу ничего на предпросмотре камеры. Должен быть plane
с цветом фона, но ничего не добавлено. Может кто-нибудь помочь мне решить это? Я не хочу показывать простой самолет для начала. Мой проект по адресу: https://www.dropbox.com/s/fk71oay1sopc1vp/test.zip?dl=1
Пожалуйста, обновите Vuforia License key
в AppDelegate
, я не могу предоставить его, так как я не являюсь владельцем этого приложения.
Дошло до того, что я знаю, что эта сцена отображается, но преобразования камеры должны быть неверными. Либо _cameraNode.camera.projectionTransform
, либо _cameraNode.transform
(или оба).
Я добавил zNear = 0.01 в cameraNode, что было небольшим шагом. Теперь, если я просто применю cameraNode.transform
и отключу cameraNode.camera.projectionTransform
, я вижу узел правильного размера, но он повернут на 90 градусов, а также, когда я перемещаю камеру, она перемещается на 90 градусов неправильно (перемещение вверх / вниз перемещает его влево / вправо) , Немного кода, который делает это ниже:
- (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.zNear = 0.01;
// _cameraNode.camera.projectionTransform = _projectionTransform;
[scene.rootNode addChildNode:_cameraNode];
_renderer.scene = scene;
_renderer.pointOfView = _cameraNode;
}
// Set camera node matrix
- (void)setCameraMatrix:(Vuforia::Matrix44F)matrix {
SCNMatrix4 extrinsic = [self SCNMatrix4FromVuforiaMatrix44:matrix];
SCNMatrix4 inverted = SCNMatrix4Invert(extrinsic);
_cameraNode.transform = inverted;
}
- (void)setProjectionMatrix:(Vuforia::Matrix44F)matrix {
_projectionTransform = [self SCNMatrix4FromVuforiaMatrix44:matrix];
// _cameraNode.camera.projectionTransform = _projectionTransform;
}
Так что теперь мне нужно повернуть всю сцену на 90 градусов. Я думаю, что это могло быть в _cameraNode.camera.projectionTransform = _projectionTransform;
, но когда я включаю это, я больше ничего не вижу. Как применить поворот на 90 "к этой сцене?
Вот видео о том, что я имею в виду: https://www.dropbox.com/s/z6pwaztlfyad8fx/ScreenRecording_09-03-2018%2015-01-17.MP4?dl=0
Я думаю, что это может быть в VuforiaManager.mm
:
// Cache the projection matrix
const Vuforia::CameraCalibration& cameraCalibration = Vuforia::CameraDevice::getInstance().getCameraCalibration();
_projectionMatrix = Vuforia::Tool::getProjectionGL(cameraCalibration, 0.05f, 5000.0f);
[_eaglView setProjectionMatrix:_projectionMatrix];
Кто-нибудь знает, как это исправить?