Vuforia 및 Unity3D를 사용하여 응용 프로그램을 개발 중입니다. 이를 위해 휴대 전화로 이미지를 추적하면서 이미지 타겟에서 카메라 위치 (x, y, z)를 실제 단위로 가져와야합니다. Vuforia에서 그러한 위치 정보를 얻을 수 있는지 궁금합니다. 그렇다면 모든 샘플 코드를 높이 평가할 것입니다.Unity3D Vuforia 카메라 위치 (실제 단위)
1
A
답변
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를 사용하여 세계에서 로컬 공간으로 반대 변환을 수행 할 수 있습니다.
0
Vuforia 카메라 프리 패브는 맨 위 오브젝트가 움직이지 않도록하기 위해 Vuforia AR 컴포넌트가있는 오브젝트입니다. 자식 객체는 Camera 구성 요소를 보유하고있는 객체이며 Vuforia가 마커 탐지를 기반으로 위치를 계산할 때 공간에서 움직입니다.
그래서 필요한 것은 자식 개체와 그 위치를 얻는 것입니다. 나는 확실하지 않다하지만 난 그 후, 사용할 수없는 경우
CameraDevice.Instance.transform.position;
으로 얻을 수 있다고 생각 :
Camera cam = FindObjectOfType<Camera>();
Vector3 worldPos = cam.transform.position;
localPosition가 부모를 기준으로 위치를 반환 위치는 세계에 대한 위치를 반환 유래.
당신은 세계에서 이미지 대상과 관련된 위치를 알려주고 있습니까? – tim
예 ... 대상 이미지에서 휴대 전화 카메라의 위치 – MKS
MNM의 답변이 작동합니까? – tim