我已使用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有关。
答案 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类。