如何在会话开始后使用ARFoundation让模型出现在AR Camera前面?
How to make a model appear in front of AR Camera after the session starts using ARFoundation?
我正在寻找更新 ARcamera position.I 正在做 ImageTracking project.It 检测到图像并且相应的预制件显示在 camera.It 开始播放 animation.After 动画 我希望预制件非常接近 camera.When 我在动画代码后给出代码 prefab.position=ARcamera.position;
,我认为预制件到达应用程序启动时 ARCamera 所在的初始位置是 (0,0,0).
如何让预制件真正靠近前置摄像头。
speed = 10f;
float step = speed * Time.deltaTime;
Showprefabs.transform.GetChild(0).position = Vector3.MoveTowards(Showprefabs.transform.GetChild(0).position,
new Vector3(Arcam.transform.position.x, Arcam.transform.position.y + 0.2f,
Arcam.transform.position.z + 6.3f), step);
//我使用编辑器添加的值0.2f和6.3f使预制件靠近相机(但在世界位置不同。)
首先我希望 "prefab" 你的意思是已经实例化 GameObject
。移动预制件毫无意义 ;)
您尝试计算目标位置,但使用的是世界-Space 坐标。
你可能想做类似的事情
var targetObject = Showprefabs.transform.GetChild(0);
var currentPosition = targetObject.position;
var targetPosition = Arcam.transform.position
// Place it 60cm in front of the camera
+ Arcam.transform.forward * 0.6f
// additionally move it "up" 20cm perpendicular to the view direction
+ Arcam.transform.up * 0.2f;
targetObject.position = Vector3.MoveTowards(currentPosition, targetPosition, step * Time.deltaTime);
如果您希望该运动更平滑一些,那么如果已经很近,它会移动得更慢,如果更远,它会移动得更快,您可能有兴趣在此处使用 Vector3.Lerp
public float smoothFactor = 0.5f;
targetObject.position = Vector3.Lerp(currentPosition, targetPosition, smoothFactor);
0.5
的 smoothFactor
内容如下:每一帧都将对象设置在 currentPosition
和 targetPosition
的中心位置。接近 0
的值会导致移动速度变慢,接近 1
会更快地到达 targetPosition
。
请注意,实际上这种方法永远不会真正完全达到 targetPosition
,只会非常非常接近,但通常这在 AR 中无关紧要,因为相机无论如何都会不断移动一点。
我正在寻找更新 ARcamera position.I 正在做 ImageTracking project.It 检测到图像并且相应的预制件显示在 camera.It 开始播放 animation.After 动画 我希望预制件非常接近 camera.When 我在动画代码后给出代码 prefab.position=ARcamera.position;
,我认为预制件到达应用程序启动时 ARCamera 所在的初始位置是 (0,0,0).
如何让预制件真正靠近前置摄像头。
speed = 10f;
float step = speed * Time.deltaTime;
Showprefabs.transform.GetChild(0).position = Vector3.MoveTowards(Showprefabs.transform.GetChild(0).position,
new Vector3(Arcam.transform.position.x, Arcam.transform.position.y + 0.2f,
Arcam.transform.position.z + 6.3f), step);
//我使用编辑器添加的值0.2f和6.3f使预制件靠近相机(但在世界位置不同。)
首先我希望 "prefab" 你的意思是已经实例化 GameObject
。移动预制件毫无意义 ;)
您尝试计算目标位置,但使用的是世界-Space 坐标。
你可能想做类似的事情
var targetObject = Showprefabs.transform.GetChild(0);
var currentPosition = targetObject.position;
var targetPosition = Arcam.transform.position
// Place it 60cm in front of the camera
+ Arcam.transform.forward * 0.6f
// additionally move it "up" 20cm perpendicular to the view direction
+ Arcam.transform.up * 0.2f;
targetObject.position = Vector3.MoveTowards(currentPosition, targetPosition, step * Time.deltaTime);
如果您希望该运动更平滑一些,那么如果已经很近,它会移动得更慢,如果更远,它会移动得更快,您可能有兴趣在此处使用 Vector3.Lerp
public float smoothFactor = 0.5f;
targetObject.position = Vector3.Lerp(currentPosition, targetPosition, smoothFactor);
0.5
的 smoothFactor
内容如下:每一帧都将对象设置在 currentPosition
和 targetPosition
的中心位置。接近 0
的值会导致移动速度变慢,接近 1
会更快地到达 targetPosition
。
请注意,实际上这种方法永远不会真正完全达到 targetPosition
,只会非常非常接近,但通常这在 AR 中无关紧要,因为相机无论如何都会不断移动一点。