Vuforia - 在目标上绘制的模型具有错误的大小

时间:2014-10-04 13:46:06

标签: java android vuforia

我已使用this tutorial将矩形替换为矩形,并通过将新图像上传到vuforia target manager并使用新图像替换数据集文件来更改目标图像。图像大小为:1419x972。当我在目标经理中询问时,我输入的宽度也是1419。所以在模型.xml文件中,我可以看到正确的图像大小。

在矩形模型中,我输入了以下尺寸:

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个,现在一切都很完美。任何人都可以告诉我为什么会发生这种情况,如果它对所有目标都一样,或者可能存在这个3不再适用的情况? 我在代码中没有任何其他乘法3或类似的东西,所以我认为它可能与vuforia有关。

1 个答案:

答案 0 :(得分: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,并将所有三个维度(x,y和z)缩放3.0。在您的情况下,缩放部分很重要。

也就是说,如果您不希望进行此缩放,则只需将OBJECT_SCALE_FLOAT更改为其他值,例如1.0(无缩放)。这应该可以解决你的问题。

但请注意,OBJECT_SCALE_FLOAT也用于翻译矩阵。因此,请务必调整Matrix.translateM(...)

中的值

由于您现在正在使用矩阵,我建议您查看Android文档中的Matrix类。