gpt4 book ai didi

android - 如何改变平面中节点的位置?

转载 作者:行者123 更新时间:2023-11-29 00:54:16 26 4
gpt4 key购买 nike

我正在处理一个项目,但我想在点击按钮时更改 3D Assets (例如 Andy)的位置。

我一直在使用 .getLocalPosition 来获取 Assets 的位置,但我不知道它是否是正确的函数。

如果它是正确的,我不知道.setLocalPosoition 是否有效。请帮忙

最佳答案

如果您的目标是改变模型相对于其父级的平移(位置),您应该使用 .setLocalPosition() 传入表示新平移的 Vector。

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) 的平面。当您将 child 添加到平面并将其本地位置设置为 (1,1,1) 时,这意味着它相对于平面原点放置在场景中,因此世界位置将为 (2,2,2)

如果您正在检测一个平面并将其用作模型的父级,那么您将需要使用 LocalPosition 相对于该平面移动模型。由于您养育模型的方式,您不想使用 WorldPosition,因为您无法准确了解世界位置。

在将模型与平面检测检测到的平面进行父级关系时,您必须关心的一件事是保持 anchor 引用。如果平面的 anchor 引用丢失,则模型定位将不一致。

一种解决方法是从检测到的平面获取世界平移,然后使用平面的位置将您的模型添加为场景的子项。那么世界和本地位置将是相同的

关于android - 如何改变平面中节点的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56112989/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com