You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity/Vuforia开发中如何强制AR对象始终保持直立

基于Vuforia的Unity AR对象始终直立实现方案
  • 调整AR对象层级
    不要将需要保持直立的AR对象直接作为ImageTarget的子节点,父子节点关系会让AR对象完全继承目标的旋转、位移属性,是导致AR对象跟着目标倾斜翻转的核心原因。可以将所有AR内容放在场景根目录下的独立节点组中统一管理。
  • 编写位置同步、旋转锁定脚本
    给AR对象挂载自定义脚本,每帧同步ImageTarget的位置,同时强制AR对象的旋转和世界空间竖直方向对齐,参考代码如下:
using UnityEngine;
using Vuforia;

public class UprightARContent : MonoBehaviour
{
    //  Inspector面板中拖拽对应识别目标到此字段
    public ImageTargetBehaviour bindTarget;
    //  调整AR内容和识别目标表面的垂直偏移,避免穿模
    public float surfaceOffset = 0.02f;
    //  开启后AR内容会始终面向相机,关闭则保持固定世界朝向
    public bool faceToCamera = true;

    void Update()
    {
        //  仅当识别目标处于跟踪状态时更新
        if (bindTarget == null || bindTarget.CurrentStatus != TargetStatus.TRACKED)
            return;
        
        //  同步识别目标的位置,加上表面偏移
        transform.position = bindTarget.transform.position + bindTarget.up * surfaceOffset;

        if (faceToCamera)
        {
            //  保持竖直的同时面向相机
            transform.rotation = Quaternion.LookRotation(Camera.main.transform.forward, Vector3.up);
        }
        else
        {
            //  仅保持竖直,保留水平方向的旋转跟随(如果需要固定朝向可以把y值替换为固定值)
            transform.rotation = Quaternion.Euler(0, bindTarget.transform.rotation.eulerAngles.y, 0);
        }
    }
}
  • 关闭Vuforia自动绑定配置
    如果使用了Vuforia内置的内容自动挂载功能,需要在ImageTarget的Inspector面板中找到Content Positioning Behaviour组件,移除自动绑定的AR内容,避免脚本逻辑被覆盖失效。
  • 效果验证
    分别测试水平放置在桌面、垂直张贴在墙面、斜向摆放的识别目标,确认AR对象始终保持直立,不会跟随目标倾斜翻转,根据实际显示效果微调surfaceOffset参数避免穿模。

内容的提问来源于stack exchange,提问作者jrhall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:18:03