AR实时阴影制作
来源:互联网 发布:视频字幕特效软件 编辑:程序博客网 时间:2024/06/10 19:38
http://mec0825.net/blog/?p=126
增强现实作为一种交互方式是用来承载内容的。用它来承载 2D 内容,就像是给我们原本的世界增添了一些信息;而用它来承载 3D 内容,就会给人一种将虚拟物体带入到现实中的感觉。这里我们将使用 高通+Unity 的方式来实现 3D 效果,并讨论如何添加阴影及如何使虚拟物体浮现出来。
整备工作
1. 下载最新版本的 Unity5
2. 下载最新的 Vuforia SDK
搭建场景
将上面准备好的 Unity Package 导入到 Unity 中,设置 ARCamera 与 ImageTarget 中得参数。创建一个简单的 Cube 对象。注意不要忘记在 ARCamera 中设置 App License Key。
最后通过编译运行,我们就能看到结果了。
添加阴影
在 Unity 中我们通常给物体添加阴影来增加真实感。
但是我们直接这么做的话会在画面中也看到一个白色的平面。所以我们需要一个透明的平面,但能够接收阴影。为了达到这个目的,我们需要一个自定义的着色器。
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
_Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
}
SubShader {
Tags {"Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout"}
LOD 200
Blend Zero SrcColor
CGPROGRAM
#pragma surface surf ShadowOnly alphatest:_Cutoff
fixed4 _Color;
struct Input {
float2 uv_MainTex;
};
inline fixed4 LightingShadowOnly (SurfaceOutput s, fixed3 lightDir, fixed atten)
{
fixed4 c;
c.rgb = s.Albedo*atten;
c.a = s.Alpha;
return c;
}
void surf (Input IN, inout SurfaceOutput o)
{
fixed4 c = _Color;
o.Albedo = c.rgb;
o.Alpha = 1;
}
ENDCG
}
Fallback "Transparent/Cutout/VertexLit"
}
使用 Matte Shadow 制作材质球,再将它拖拽到我们的平面上,就得到了我们期望的效果。注意如果没看到阴影的话,很可能是 Scale 或者 Project Quality 设置的问题。
从识别对象中浮现
要实现这个效果,我们需要使用 [Depth Shader](http://pan.baidu.com/s/1fLnFC)。原理是我们将使用一个透明但看不到内部的盒子将低于物料的物体隐藏起来。
在透明盒子上加上 DepthMask.shader,将 SetRenderQueue.cs 加在需要影藏的物体上。最终我们获得视频中的效果。
- AR实时阴影制作
- 【AR】关于AR实时阴影的制作
- Vuforia AR 物体制作阴影
- AR Shadow Shader 实时阴影+ DepthMask透明遮罩
- AR平面阴影
- AR制作
- 实时阴影技术
- 实时阴影技术
- 添加实时阴影
- AR视频制作
- AR(制作流程)
- unity使用easy ar制作ar红包
- Android 阴影制作 -- Shadow
- Unity3D角色阴影制作
- 阴影制作(Shadow)
- CoreAnimation之制作阴影
- CSS3:制作阴影
- 制作文字阴影
- C++中const大杂烩
- 1006. Team Rankings
- 图片,文字等控件的上下抖动或左右晃动
- 大数据平台监控指标整理
- 某一整数的质数因子
- AR实时阴影制作
- Spring整合Mybatis
- 约瑟夫环问题
- 提高项目22-成绩处理函数版 (参数)
- Ubantu下的输入法--小巧有用
- 如何在Java IDE中使用selenium
- 1007. To and Fro
- win7 删除右下角的win10升级提示
- 类似滑动苹果解锁Text