그래프는 다음과 같습니다.
ARFrame -> 3DModelFilter (SCNScene + SCNRender) -> OtherFilters -> GPUImageView.SCNRender를 사용하여 ARUI를 GPUImage 렌더링에 통합하는 방법은 무엇입니까?
로드 3D 모델 :
NSError* error;
SCNScene* scene =[SCNScene sceneWithURL:url options:nil error:&error];
는 3D 모델을 렌더링 :
SCNRenderer* render = [SCNRenderer rendererWithContext:context options:nil];
render.scene = scene;
[render renderAtTime:0];
는 지금, 나는 ARFrame의 카메라가 SCNScene 변환을 적용하는 방법에 대한 퍼즐입니다.
일부 추측 :
- 내가 ARFrame 카메라에 할당 할 수 복잡한 조작없이 장면에서 카메라 노드의 변환 변환을?
- ARFrame 카메라의 projectMatrix는이 경우 나에게 도움이되지 않습니까?
갱신 2017년 12월 23일.
우선 @ reply에 감사드립니다. 귀하의 제안에 따라 ARSession에 코드를 추가했습니다 .DebUpdateFrame 콜백 :
ARCamera* camera = frame.camera;
SCNMatrix4 cameraMatrix = SCNMatrix4FromMat4(camera.transform);
cameraNode.transform = cameraMatrix;
matrix_float4x4 mat4 = [camera projectionMatrixForOrientation:UIInterfaceOrientationPortrait viewportSize:CGSizeMake(375, 667) zNear:0.001 zFar:1000];
camera.projectionTransform = SCNMatrix4FromMat4(mat4);
실행 앱.
1. 나는 우주선 전체를 볼 수 없으며 일부만 볼 수 있습니다. 그래서 카메라의 변환에 번역을 추가합니다. 아래 코드를 추가하면 전체 우주선을 볼 수 있습니다.
cameraMatrix = SCNMatrix4Mult(cameraMatrix, SCNMatrix4MakeTranslation(0, 0, 15));
2. iPhone을 위 또는 아래로 움직이면 추적 기능이 작동합니다. 그러나 iPhone을 왼쪽이나 오른쪽으로 움직이면 우주선은 화면에서 사라질 때까지 움직입니다.
내가 놓친 중요한 것이 있다고 생각합니다.
답장을 보내 주셔서 감사합니다. 나는 시도를했고 그 질문에 몇 가지 이슈 업데이트를했다. 제발 저를 구해주세요.나중에 세부 사항이 필요하면 샘플을 github에 업로드합니다. 다시 한번 감사드립니다. – honorfight