微信号:Unity-GreaterChina

介绍:Unity官方开发者平台,分享最前沿的技术文章和开发经验,精彩的Unity活动和社区相关信息.

360场景如何和3D物体互动

2018-07-30 12:22 Unity

我们介绍了使用360转录技术制作无模型场景。你或许想问,真实拍摄的360照片或影片能和3D物体互动吗?答案是可以的,本文将由Unity技术经理罗志达为大家介绍,如何在360的场景中制作和3D物的互动。


360视频的原理

一般来说,使用真实相机所拍摄出来的照片,只要在Unity中贴到圆球上,从球体的中心往外看时就会还原拍摄时的场景,这也是一般地图App里街景功能的原理。


360全景在Unity里实现的原理


因此想要还原整个物理结构,我们可以从地板重建开始。如果你知道当初的拍摄高度,一般来说就是你的身高减半个头左右。当初拍摄的位置作为0,0,0的话,往下算这个高度并放一个地板就能重建出一个虚拟地板。下面的示例是放在-1.7的位置。

 

虚拟地板建立 


把这个地板的Mesh renderer网格渲染器关闭只剩下Collider,并放上一个主角,你就会发现地板的位置似乎对了,但主角会不受控制的走到不对的位置。


 放上地板后的样子 

遮罩功能

为了做到有遮罩的功能,我们可以把这张全景图,使用Photoshop处理几个遮罩,如下图所示。


遮罩 

 

将这些遮罩图片分别放到不同的球体上,记住中心都必须是0,0,0。这颗球的Scale会影响到角色被遮罩的深度,所以我们可以从Runtime运行时,把角色走到该地点并调整球的大小来符合遮罩的位置需求。


你可以叠上非常多图层来模拟很多不同的遮罩距离。这些遮罩的图片都是带有Alpha的图片制作很简单,如果你想用Chroma key的方式,也可以参考上一篇文章的方法

 

遮罩的图片

 

实际上当同一张图片被叠在同一个位置时,就算是深度不同,渲染之后也是没有分别的,因此你可以因按照需求来制作非常多的图层,或者使用Shader的Rneder Queue来处理渲染的前后顺序。

 

遮罩原理

制作碰撞结构

制作碰撞结构有二个规则需要遵守。

 

首先必须在当初拍摄的位置来编辑和修改。点选Main Camera之后在选功能表单的GameObject->Align View to Selected,就可以把Scene View切换到镜头的原点,也就是0,0,0。此时可以点击鼠标右键来旋转视角,但绝对不能移动镜头。

 

Align View to Selected的位置

 

第二个规则是新增的碰撞体Y的值必须计算。由于在360照片内放置3D物体,并没有办法有实际的坐标来对齐位置,如果在制作周期中,没有把环境全都测量好,我们必须用目测的方式来重建碰撞结构。

 

我们只知道地板位于Y -1.7,而Unity的坐标是以物体中心为主,因此我们可以新增一个Cube,这个Cube的高度是1,因此我们把它的一半与地板坐标相加就是-1.2 作为它的Y值,这样就相当于Cube会完全的贴合在地板上,这等同加上一个Rigidbody组件,让它贴齐地板是一样的。

 

建立碰撞体的注意事项


放置Collider的方法

 

一旦全部的高台使用这种目测的方法,制作出对应的碰撞体之后,相当于某种程度还原现场的碰撞结构,对于一开始忘了测量环境信息的开发流程,算是还有补救的余地。

 

还原的场景


操作请查考下方视频。



阴影制作

阴影的制作和光照的反应制作和Pre-Bake 360如何使用360转录技术制作无模型场景的方法是相同的。


我们可以放一片网格在脚上跟着主角,阴影会产生在这片临时地板上,再透过Shader把阴影以外的部分去除掉,调低光源的强度让阴影带有一点半透明,就会产生不错的影子效果。

 

阴影的制作

小结

针对360与3D物体互动的内容还有很多空间能够发掘,我们会在未来整理更多有用方法分享给大家! 更多Unity的技术文章分享尽在Unity官方中文论坛(UnityChina.cn) !


推荐阅读


官方活动

实时优化,智造收益 - Unity Monetization开发者生态沙龙

8月3日,Unity将于举办为期半天的Unity Monetization开发者生态沙龙!本次活动将与大家共同探讨移动游戏开发与变现相关难点与痛点。[了解详情]

报名地址:

https://connect.unity.com/events/unityads


7月Asset Store资源商店促销 

7月,只需在Asset Store资源商店消费满30-199美元,最高可获得价值235美元的5款免费资源,参与活动,获得夏日精选资源包。

活动地址:

https://assetstore.unity.com/g/july-promo-activation-cn



点击“阅读原文”访问Unity官方技术论坛

 
Unity官方平台 更多文章 ChinaJoy | Unity展位现场互动指南 制作蝴蝶烟火视觉特效 Unity ML-Agents模仿学习示例解析 Unity和Google合作推动移动游戏广告发展 Unity多人联网游戏功能开发计划
猜您喜欢 战胜申请人跟踪系统(ATS)的秘密 Python基础教程3:基础语法 2016第五届iWeb峰会城市巡回广州站 圆满落幕 关于底层key-value 存储的思考 Apache顶级项目8-Geode源码深度分析