ARCore – WorldScale 和 LocalScale 有什么区别?
ARCore – What is the difference between WorldScale and LocalScale?
我正在尝试调整 AR 模型的大小,我正在处理建筑物大小的模型。
我设法使用 worldscale 和 localscale 调整了我的模型的大小,但到底有什么区别,我什么时候应该使用 worldscale 来放大我的模型以及什么时候使用 localscale?
局部缩放单个对象
在局部space中,模型上的所有操作(平移、旋转和缩放)都是相对于模型的枢轴点执行的。
官方 Google ARCore 开发者文档 says:
public void setLocalScale (Vector3 scale)
Sets the scale of this node relative to its parent (local-space). If isTopLevel()
is true, then this is the same as setWorldScale(Vector3)
.
这是它在真实代码中的样子:
Anchor anchor = hitResult.createAnchor();
AnchorNode anchorNode = new AnchorNode(anchor);
anchorNode.setParent(arFragment.getArSceneView().getScene());
TransformableNode n = new TransformableNode(arFragment.getTransformationSystem());
n.setRenderable(modelRenderable);
n.getScaleController().setMinScale(1.74f);
n.getScaleController().setMaxScale(1.75f);
// Set Node's local scale before setting its Parent
n.setLocalScale(new Vector3(1.23f, 1.23f, 1.23f));
n.setParent(anchorNode);
局部缩放多个对象
当多个选定的对象同时在本地缩放时(使用setLocalScale
),则每个对象都会相对于其自身轴心点的位置进行缩放。
但是,如果您同时全局缩放所有这些选定对象(使用 setWorldScale
),它们将相对于世界的一个结果轴心点进行缩放。
这是本地和世界范围的直观表示:
世界规模:
地方规模:
我正在尝试调整 AR 模型的大小,我正在处理建筑物大小的模型。
我设法使用 worldscale 和 localscale 调整了我的模型的大小,但到底有什么区别,我什么时候应该使用 worldscale 来放大我的模型以及什么时候使用 localscale?
局部缩放单个对象
在局部space中,模型上的所有操作(平移、旋转和缩放)都是相对于模型的枢轴点执行的。
官方 Google ARCore 开发者文档 says:
public void setLocalScale (Vector3 scale)
Sets the scale of this node relative to its parent (local-space). If
isTopLevel()
is true, then this is the same assetWorldScale(Vector3)
.
这是它在真实代码中的样子:
Anchor anchor = hitResult.createAnchor();
AnchorNode anchorNode = new AnchorNode(anchor);
anchorNode.setParent(arFragment.getArSceneView().getScene());
TransformableNode n = new TransformableNode(arFragment.getTransformationSystem());
n.setRenderable(modelRenderable);
n.getScaleController().setMinScale(1.74f);
n.getScaleController().setMaxScale(1.75f);
// Set Node's local scale before setting its Parent
n.setLocalScale(new Vector3(1.23f, 1.23f, 1.23f));
n.setParent(anchorNode);
局部缩放多个对象
当多个选定的对象同时在本地缩放时(使用setLocalScale
),则每个对象都会相对于其自身轴心点的位置进行缩放。
但是,如果您同时全局缩放所有这些选定对象(使用 setWorldScale
),它们将相对于世界的一个结果轴心点进行缩放。
这是本地和世界范围的直观表示:
世界规模:
地方规模: