您的位置:首页 > 移动开发 > Unity3D

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

2016-07-25 10:48 701 查看

直接用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也是可以的



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity AR