Если ваша цель - изменить перевод (положение) модели относительно ее родителя, вы должны использовать .setLocalPosition()
, передавая Вектор, представляющий новый перевод.
public void setLocalPosition (Vector3 position)
ARCore Документация:
https://developers.google.com/ar/reference/java/sceneform/reference/com/google/ar/sceneform/Node#setLocalPosition(com.google.ar.sceneform.math.Vector3)
Изменить ( переход от комментариев в ответ ):
LocalPosition
относится к переводу узла ( модель ) относительно происхождения родительского узла, тогда как WorldPosition
относится к переводу относительно происхождения мира.
Например:
У вас есть мировое происхождение в (0,0,0), и внутри этой сцены есть плоскость с переводом (1,1,1). Когда вы добавляете дочерний элемент в плоскость и устанавливаете его локальное положение в (1,1,1), это означает, что он помещается в сцену относительно начала координат плоскости, поэтому мировое положение будет (2,2,2)
Если вы обнаруживаете плоскость и используете ее в качестве родителя для модели, то вы захотите использовать LocalPosition для перемещения модели относительно плоскости. Из-за того, что вы являетесь родителем модели, вы не захотите использовать WorldPosition, потому что не знаете точно положение мира.
Одна вещь, с которой вам нужно иметь дело, когда родительская модель к плоскости, которая обнаруживается с помощью обнаружения плоскостей, - это привязка к привязке. Если привязка к плоскости теряется, позиционирование модели не будет согласованным.
Одно из возможных решений - получить перевод мира с обнаруженной плоскости, а затем добавить свою модель в качестве дочернего элемента сцены, используя положение плоскости. Тогда мировая и локальная позиции будут одинаковыми