Как полностью разместить AR ViewRenderable на целевом изображении? - PullRequest
0 голосов
/ 18 сентября 2018

Я хочу, чтобы AR ViewRenderable был помещен поверх реальной картины цели и полностью соответствовал ее границам. Хотя ViewSizer используется для изменения размера объектов AR, но он делает это глобально (устанавливает dpPerMeter для каждой ситуации). Тем не менее, я хочу масштабировать его по размеру цели,

Я думаю, что-то можно сделать методами setLocalScale вместе с getExtentX и getExtentZ, но я не уверен, как установить параметры для моей причины.

Посмотрите на текущий фрагмент кода:

    setAnchor(image.createAnchor(image.getCenterPose()));
    Node cornerNode = new Node();
    cornerNode.setParent(this);
    cornerNode.setLocalRotation(new Quaternion(new Vector3(1,0,0), -90));
    cornerNode.setLocalPosition(new Vector3(0.0f, 0.0f, 0f));
    cornerNode.setRenderable(targetImage.getNow(null));

1 Ответ

0 голосов
/ 27 сентября 2018

По умолчанию 250dp равно 1 метру, но вы можете изменить его на ViewRenderable.builder().setSizer(DpToMetersViewSizer(you_size))

Вы должны рассчитать масштаб по размеру изображения и предполагаемому размеру ядра AR, поэтому добавьте этот код как

// in this example, the image is 100 cm x 66 cm
val imageWidth = 1f //  = 1m
val imageHeight = 0.66 // = 66 cm

val scaledWidth = imageWidth / image.extentX
val scaledHeight = imageHeight / image.extentZ

// scale the Node
node.localScale = Vector3(scaledWidth, scaledHeight, scaledWidth)

// also, my view_wall.xml is 250dp x 166dp and the VerticalAlignment is center, like
val wall = ViewRenderable.builder().setView(this, R.layout.view_wall)
            .setVerticalAlignment(ViewRenderable.VerticalAlignment.CENTER)
            .build()

Это работает для меня, помогите, это работает для вас.

кстати, это мой тренировочный проект https://github.com/swarmnyc/arcore-augmented-image-swarm

...