AR互动大屏丨Dinosaur_BigScreen

视频展示及项目文件

视频展示:Dinosaur_BigScreen_Vedio

项目文件:Dinosaur_BigScreen_File

转自:https://blog.youkuaiyun.com/weixin_38239050/article/details/80994136

制作思路

Dinosaur_BigScreen采用EasyAR SDK,制作过程类似普通的显示操作过程——将模型叠加在真实环境中,用摄像头看到真实环境,通过键盘或内置的自动动作系统,完成模型的运动

1、新建一张Plane作为地面,Plane坐标归零

2、在地面行走的物体,脚要附在地面上

3、Plane附加一个shader“ShadowOnly”(附录),用来接收模型阴影,并将面片透明,透明后便能看到现实中的地面

4、制作天空盒,用全景照片作为天空盒,用于给模型模拟真实光照效果。天空盒可在Scene里面关闭,但关照效果依旧可添加到模型身上

全景照片可用手机拍摄三张上、中、下三个角度全景照片,用PS合成一张全景照片

5、设置模型动画、声音等控制策略

6、发布项目

 

天空盒制作过程

1、全景照片在Unity中的设置:

 

2、天空盒材质设置:

 

3、Lighting-Environment-Skybox Material设置:

 

部分代码展示

a、控制声音播放速度

 
  1. GetComponent<AudioSource>().clip = BarkAudioClip;

  2. GetComponent<AudioSource>().pitch = 2f;

  3. GetComponent<AudioSource>().Play();

b、更改屏幕分辨率

Screen.SetResolution(1366, 768, true);

 

Unity事件的运用

我们可通过代码形式控制播放声音,同样,我们也可以用另外一种形式,在模型的Animation Clip中添加事件的方式,完成声音在合适时机时的播放

1、完成播放声音的方法,注意,脚本中的该部分代码独立于所有API之外,仅供外部调用,并没有在代码中就实现播放功能

 
  1. public void Au_Bark()

  2. {

  3. GetComponent<AudioSource>().clip = BarkAudioClip;

  4. GetComponent<AudioSource>().pitch = 2f;

  5. GetComponent<AudioSource>().Play();

  6. }

2、在模型的Perfab-Animation中找到对应的动画

3、点击该动画的Events,可根据下面的动画,在合适时机点击+号,添加事件。Object选上播放声音的脚本,Function填入脚本中控制声音播放的方法,Apply

4、Enjoy


附录:

Shader:ShadowOnly

 
  1. Shader "FX/Matte Shadow" {

  2.  
  3. Properties {

  4. _Color ("Main Color", Color) = (1,1,1,1)

  5. _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}

  6. _Cutoff ("Alpha cutoff", Range(0,1)) = 0.5

  7. }

  8.  
  9. SubShader {

  10. Tags {"Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout"}

  11. LOD 200

  12. Blend Zero SrcColor

  13.  
  14. CGPROGRAM

  15.  
  16. #pragma surface surf ShadowOnly alphatest:_Cutoff

  17.  
  18. fixed4 _Color;

  19.  
  20. struct Input {

  21. float2 uv_MainTex;

  22. };

  23.  
  24. inline fixed4 LightingShadowOnly (SurfaceOutput s, fixed3 lightDir, fixed atten)

  25. {

  26. fixed4 c;

  27. c.rgb = s.Albedo*atten;

  28. c.a = s.Alpha;

  29.  
  30. return c;

  31. }

  32.  
  33. void surf (Input IN, inout SurfaceOutput o)

  34. {

  35. fixed4 c = _Color;

  36. o.Albedo = c.rgb;

  37. o.Alpha = 1;

  38. }

  39.  
  40. ENDCG

  41. }

  42.  
  43. Fallback "Transparent/Cutout/VertexLit"

  44. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值