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

Unity Vuforia视频尺寸大于图像目标问题求助

解决Vuforia视频播放超出图像目标的问题

我之前也碰到过一模一样的情况,核心问题就是视频和自定义图像目标的比例不匹配——Vuforia示例里的视频和目标比例是适配好的,换成你500x732的自定义目标后,默认缩放逻辑就失效了。下面给你一步步的解决办法:

1. 先理清比例差异

你的图像目标比例是 500/732≈0.683,先确认你的视频分辨率比例是否和这个一致。如果能把视频转成和目标完全一致的比例,这是最省心的解决方案,不用改代码就能完美适配。

如果必须用现有比例的视频,就继续往下看代码调整的方法。

2. 修改VideoPlaybackBehaviour.cs的动态缩放逻辑

你已经获取了视频的宽高,接下来把比例适配的逻辑加进去,替换原来的固定缩放逻辑:

// 就在你现有获取videoWidth、videoHeight的代码块里添加
int videoWidth = mVideoPlayer.GetVideoWidth();
int videoHeight = mVideoPlayer.GetVideoHeight();
if (videoWidth > 0 && videoHeight > 0)
{
    // 获取当前图像目标的物理尺寸(Vuforia里单位是米,500mm会转成0.5m)
    TrackableBehaviour trackable = GetComponent<TrackableBehaviour>();
    if (trackable != null && trackable.Trackable is ImageTarget)
    {
        ImageTarget imageTarget = (ImageTarget)trackable.Trackable;
        Vector2 targetSize = imageTarget.GetSize();
        
        // 计算目标和视频的比例
        float targetAspect = targetSize.x / targetSize.y;
        float videoAspect = (float)videoWidth / videoHeight;
        
        // 获取视频渲染用的Quad对象
        Transform videoQuad = mVideoPlayer.GetVideoPlayerTransform();
        if (videoQuad == null) return;
        
        // 两种适配模式选一种:
        // 模式1:视频填满目标(超出部分裁剪,无黑边)
        float scaleX, scaleY;
        if (videoAspect > targetAspect)
        {
            // 视频更宽,按目标高度适配
            scaleY = targetSize.y;
            scaleX = scaleY * videoAspect;
        }
        else
        {
            // 视频更高,按目标宽度适配
            scaleX = targetSize.x;
            scaleY = scaleX / videoAspect;
        }

        // 模式2:视频完全显示(不裁剪,保留黑边)
        // if (videoAspect > targetAspect)
        // {
        //     scaleX = targetSize.x;
        //     scaleY = scaleX / videoAspect;
        // }
        // else
        // {
        //     scaleY = targetSize.y;
        //     scaleX = scaleY * videoAspect;
        // }
        
        // 设置Quad的缩放,让视频适配目标
        videoQuad.localScale = new Vector3(scaleX, scaleY, 1f);
    }
}

3. 检查Unity中的图像目标设置

最后确认你的ImageTarget GameObject的局部缩放是(1,1,1)——Vuforia会根据你在Target Manager里设置的物理尺寸自动调整显示大小,手动改缩放会打乱比例,导致视频适配完全错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:37:51