2017-09-22 3 views
-1

화면 중간에 UIView,이 경우 100x100이 있고 사용자의 "대상"가이드 라인처럼 작동해야합니다.SceneKit/ARKit : 화면 모양을 3D 오브젝트로 매핑

사용자가 추가 버튼을 누르면 화면에 UIView의 크기와 위치에 해당하는 너비/높이/크기/거리/회전을 사용하여 정확히 동일 지점에 SCNBox을 추가해야합니다.

This image 내 뜻을 이해하는 데 도움이 될 수 있습니다.

UIView의 크기는 다양하지만 항상 사각형이며 화면 중앙에 위치합니다. 해당 3D 모델도 다를 수 있습니다. 이 경우 사각형 UIView이 상자에 매핑되지만 나중에 동일한 사각형 UIView가 해당 지름 (너비) 및 높이를 가진 원통에 매핑 될 수 있습니다.

어떤 생각을 어떻게 할 수 있습니까?

나는 UIView 폐기와 sceneView.pointOfView의 자식으로의 자리로 상자를 배치 시도했다, 나중에는 행운과 함께 위치 /를 rootNode에 부모의 변환.

감사합니다.

답변

0

부모보기에서 UIView의 가운데 위치를 가져오고 SCNRenderer의 unprojectPoint 메서드를 사용하여 장면의 3D 좌표로 변환하여 3D 개체를 배치 할 위치를 가져옵니다. z 값을 결정하기위한 몇 가지 방법을 구현해야합니다.

분명히 물체의 거리에 따라 화면의 크기가 결정되지만, 물체의 크기를 조정하려는 경우 카메라의 줌 레벨의 역수를 눈금으로 사용할 수 있습니다. 확대/축소 수준이란 확대/축소 수단을 의미합니다 (예 : 카메라를 기본 거리보다 더 가깝게 이동하면 작은 크기의 모델이 생성됨). UIView의 크기가 변경되면 중심점을 추가하거나 대신하여 모든 모서리 점을 3D 공간에 개별적으로 비 프로젝트화할 수 있지만 uiview의 축척을 3D 노드의 축척으로 변환하는 것이 더 쉽습니다. 예를 들어 UIView의 최대 크기를 알고있는 경우 작은보기를 최대 크기의 백분율로 표시하고 같은 비율을 사용하여 개체의 크기를 조절할 수 있습니다.

또한 개체의 회전이 UIView에 해당해야한다고 언급했습니다. 나는 그 물건이 카메라를 바라 보길 원한다고 생각합니다. 이를 위해 pointOfView 노드의 .transform 속성을 기반으로 객체에 회전을 적용 할 수 있습니다.

관련 문제