如何使Unity+vuforia做出来的模型导入到Android手机中能够实现阴影效果

直接用Unity+Vuforia是没有阴影效果的,因为要使用AR效果就要用到ARCamera,但是ARCamera有bug导致阴影出现不了,当然我们会有解决方法
首先,当然是先将灯光弄好,为阴影的出现打下基础,然后将下面这段代码扔给ARcamera就行啦

using UnityEngine;
using System.Collections;
using Vuforia;

public class FixProjectionMatrix : MonoBehaviour, IVideoBackgroundEventHandler
{
    private Camera[] mCameras;

    // Use this for initialization
    void Start()
    {
        mCameras = VuforiaBehaviour.Instance.GetComponentsInChildren<Camera>();
        VuforiaBehaviour.Instance.RegisterVideoBgEventHandler(this);
    }

    // Update is called once per frame
    void Update()
    {

    }

    public void OnVideoBackgroundConfigChanged()
    {
        foreach (var cam in mCameras)
        {
            var projMatrix = cam.projectionMatrix;
            for (int i = 0; i < 16; i++)
            {
                if (System.Math.Abs(projMatrix[i]) < 1e-6)
                {
                    projMatrix[i] = 0.0f;
                }
            }
            cam.projectionMatrix = projMatrix;
        }
    }
}

还没解决?接着看
一、看你的Light是否正确,Shdow Type默认是No Shadow的,有没有选择为Hard Shadows,当然Soft Shadow也是可以,但是性能消耗比较大,而且一些手机可能不支持,查看Strength是不是太弱了,调的太低也会出现看不到阴影的现象。


二、在Unity3D中,Camera离物体近时阴影能显现,远一点就看不到了(或者干脆一开始就看不到),可能是你阴影的可视距离没有调整好,在Edit 》ProjectSettings 》Quality 》Shadow Distance调整即可


三、以上是在Unity中显示阴影,但如果导出到手机上发现竟然阴影又不见了呢?


(1)同样是打开在Edit 》ProjectSettings 》Quality ,看红框部分,绿色钩钩的是你生成到对应平台使用的QualitySetting,因此不仅在Light中要选择Shadow Type的类型,还要看你生成到Android的Levels,这里的Shadows有没有选呢~~~



(2)还不行?到Edit 》Project Settings 》Player,看Rendering Path是不是Forward,还有不要勾选Use Direct3D 11,因为有一些手机是不支持的,当然如果你使用的是Unity5.4等的版本的话,你选择Direct3D9也是可以的



发布了7 篇原创文章 · 获赞 6 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览