2014-10-04 2 views
0

저는 this tutorial을 사용하여 주전자를 직사각형으로 바꿨으며 새로운 이미지를 vuforia target manager에 업로드하고 대상 이미지를 새로운 것으로 교체하여 대상 이미지를 변경했습니다. 이미지의 크기는 1419x972입니다. 또한 대상 관리자에게 물어볼 때 입력 한 너비는 1419입니다. 따라서 모델 .xml 파일에서 올바른 이미지 크기를 볼 수 있습니다.Vuforia - 대상 위에 그려진 모델의 크기가 잘못되었습니다

는 사각형 모델에서 나는이 크기를 입력 :

double w = 394; 
double h = 120; 
double[] BTN_VERTS = {-0.5*w, -0.5*h, 0.0, 0.5*w, -0.5*h, 0.0, 0.5*w, 0.5*h, 0.0, -0.5*w, 0.5*h, 0.0}; 

그래서 그것은 대상의 3 분의 1 주위에 폭 대상에 사각형을 그립니다해야한다. 그러나 내가 보는 것은 대상과 거의 같은 너비의 직사각형입니다. 내가 여기서 뭘 잘못하고 있는지 말해 줄 수 있니?

편집 :

나는이 문제를 해결했다. 나는 모든 크기를 3으로 나눴으며 이제 모든 것이 완벽하게 맞습니다. 왜 모든 일이 일어날 수 있었는지, 모든 목표에 대해 동일하거나 더 이상 적용되지 않는 경우가있을 수 있습니다. 다른 코드 곱셈을 3이나 그와 같은 식으로 사용하지 않아도 아마 vuforia와 관련 있다고 생각할 수 있습니다.

답변

0

아니요, 문제는 Vuforia와 관련이 없습니다. 나는 렌더러에 대한 코드를 가지고 있지 않지만 당신이 주전자의 예를 사용하여 작업하는 말 때문에 나는이 문제라고 확신 :이 라인에서 봐 ImageTargetRenderer 클래스에서

Matrix.translateM(modelViewMatrix, 0, 0.0f, 0.0f, 
        OBJECT_SCALE_FLOAT); 
Matrix.scaleM(modelViewMatrix, 0, OBJECT_SCALE_FLOAT, 
        OBJECT_SCALE_FLOAT, OBJECT_SCALE_FLOAT); 

그리고 OBJECT_SCALE_FLOAT의 값을 찾으십시오. 주전자 예에서는이

private static final float OBJECT_SCALE_FLOAT = 3.0f; 

같이 설정 하였다 이것이 본질적으로는 Z 평면에서 3.0 매트릭스로 변환뿐만 아니라 3.0 모든 세 차원 (X, Y 및 Z)을 스케일링한다 않는다. 귀하의 경우, 스케일링 부분이 중요합니다.

이 스케일링은 단순히 예를 들어, 다른 값으로 OBJECT_SCALE_FLOAT을 변경 발생하지 않으려면, 즉 1.0 (스케일링 없음). 이렇게하면 문제가 해결됩니다.

그러나, OBJECT_SCALE_FLOAT도 행렬을 변환에 사용 된 점에 유의하시기 바랍니다. 따라서 값을 조정해야합니다. Matrix.translateM(...)

이제 매트릭스로 작업하고 있으므로 Android 설명서에서 Matrix 클래스를 살펴 보시기 바랍니다.

+0

와우! 나는 그것을 놓쳤다는 것을 믿을 수 없다. 나는 번역에도 똑같은 문제가 있었다. 그래서 모든 문제를 해결했습니다. 감사. –

+0

환영합니다! 다행히 도울 수있어. –