2016-06-07 1 views
1

Vuforia 및 Unity3D를 사용하여 응용 프로그램을 개발 중입니다. 이를 위해 휴대 전화로 이미지를 추적하면서 이미지 타겟에서 카메라 위치 (x, y, z)를 실제 단위로 가져와야합니다. Vuforia에서 그러한 위치 정보를 얻을 수 있는지 궁금합니다. 그렇다면 모든 샘플 코드를 높이 평가할 것입니다.Unity3D Vuforia 카메라 위치 (실제 단위)

+0

당신은 세계에서 이미지 대상과 관련된 위치를 알려주고 있습니까? – tim

+0

예 ... 대상 이미지에서 휴대 전화 카메라의 위치 – MKS

+0

MNM의 답변이 작동합니까? – tim

답변

1

다음과 같이 시도해보십시오. 이것은 무엇을

public class ExampleClass : MonoBehaviour { 
public Transform target; 
Camera camera; 

void Start() { 
    camera = GetComponent<Camera>(); 
} 

void Update() { 
    Vector3 screenPos = camera.WorldToScreenPoint(target.position); 
    Debug.Log("target is " + screenPos.x + " pixels from the left"); 
} 
} 

는 화면 공간으로 세계 공간에서의 위치를 ​​변환합니다.

화면 공간은 픽셀 단위로 정의됩니다. 화면의 왼쪽 하단은 (0,0)입니다. 오른쪽 상단은 (pixelWidth, pixelHeight)입니다. z 위치는 카메라의 세계 단위입니다.

정확하게 원하는 것은 아니지만 출발점이 될 수 있습니다.

편집 : 이 지금이 반환 된 위치 규모에 의해 영향을 받는다는

public class ExampleClass : MonoBehaviour { 
public GameObject someObject; 
public Vector3 thePosition; 

void Start() { 
    // Instantiate an object to the right of the current object 
    thePosition = transform.TransformPoint(Vector3.right * 2); 
    Instantiate(someObject, thePosition, someObject.transform.rotation); 
} 
} 

참고 원하는 것을 정확히해야 세계 공간없는 지역 공간을 반환합니다. 방향 벡터를 다루는 경우 Transform.TransformDirection을 사용하십시오. Transform.InverseTransformPoint를 사용하여 세계에서 로컬 공간으로 반대 변환을 수행 할 수 있습니다.

+1

빠른 답장을 보내 주셔서 감사합니다. @ MNM. 예,이 코드는 화면 공간에서 목표 위치를 제공하기 때문에 대상 이미지에서 정보를 얻는 데 실제로 도움이됩니다. 나는 실제 유닛에서 목표 위치를 얻는 것이 가능한지 궁금해하고 있었다. – MKS

+0

내가 게시 한 내 수정 사항을 확인하여 문제를 해결해야 함 – MNM

0

Vuforia 카메라 프리 패브는 맨 위 오브젝트가 움직이지 않도록하기 위해 Vuforia AR 컴포넌트가있는 오브젝트입니다. 자식 객체는 Camera 구성 요소를 보유하고있는 객체이며 Vuforia가 마커 탐지를 기반으로 위치를 계산할 때 공간에서 움직입니다.

그래서 필요한 것은 자식 개체와 그 위치를 얻는 것입니다. 나는 확실하지 않다하지만 난 그 후, 사용할 수없는 경우

CameraDevice.Instance.transform.position; 

으로 얻을 수 있다고 생각 :

Camera cam = FindObjectOfType<Camera>(); 
Vector3 worldPos = cam.transform.position; 

localPosition가 부모를 기준으로 위치를 반환 위치는 세계에 대한 위치를 반환 유래.