查看
如何用
Oculus Quest和Unity创建一个混合现实游乐场
(2.测量和绘制你的平面图
下面开始吧。如果你拥有房间的详细平面图,你已经领先一步。否则,你只能像我一样自行测量每一堵墙壁。传统的卷尺并不能解决所有问题,而诸如iOS搭载的AR测量应用同样没有给我带来好运。最后我购买了一个激光测量设备,并尝试在更远的距离获得更高的精度。这个装置和广告描述一样,但我发现最大的问题是,墙壁并不像我预期的那样笔直。不仅墙壁之间不是完全垂直,甚至墙壁本身都是呈现一定的波浪状,而这影响了激光的读取扫描(专业提示:要获得更佳的视线,你可以在激光和墙壁之间放置书籍)。最后我选择了结合激光测量和传统卷尺,并降低了我对完美的期望。一旦获得了可用于Unity的基本模型,你就可以进行虚拟漫游,并在需要的地方进行调整。
测量时,你可以使用任何二维绘图程序(我用的是Graphic),甚至是老式的绘图纸来绘制平面图。当我们将平面图输入到Unity时,我们需要确保比例正确。在现实世界中,一个单位等于1米,所以我建议用厘米进行测量,然后选择一个比例尺来绘制,这样得到的图像不会太大(如1个像素等于1厘米)。即使你的房间很长,你都要确保画布的尺寸是一个完美的正方形。因为将一个正方形映射到Unity对象会更加容易。
4.在Unity绘制平面图
打开Project视图并将平面图文件拖放到“Assets”文件夹中,或通过右键单击“Assets”文件夹来执行导入。
接下来,创建一个新材质并将其命名为FloorPlan。然后单击材质Inspector的Albebo,并从文件选择器中选择平面图图像。
现在在场景中创建一个新平面,如有必要,调整平面,使顶部朝向Y方向。将新的平面图材质拖到平面上方以进行应用。现在你应该可以在场景中看到平面图。
接下来创建一个新的立方体。默认情况下,立方体在每个维度上的比例都是1米,我们将它作为参考来正确缩放平面图。将立方体移到我们先前在平面图上绘制的1米线旁边,然后缩放平面图,令1米线与立方体的边缘相匹配。
现在你的平面图已经正确缩放,我们需要将二维线图转换为三维对象。我建议使用Unity的ProBuilder来实现这一点。这是一个易于学习的简单工具,它提供了大量优秀的功能,当我们后面想要对房间中更复杂的部分建模时,我们就可以进行使用。下面我们设置ProBuilder。这里有一个介绍基础知识的
从ProBuilder菜单选择NewPolyShape,并在每个角围绕房间的周长单击,从而为与平面图匹配的新形状创建顶点。连接完所有墙壁后,你可以单击“EditPolyShape”以拉直任何不适当的线。
我们现在可以将二维平面图转换为三维房间。选定新形状后,可以通过在“Extrusion”字段的Inspector中输入与房间高度(以米为单位)相匹配的新值,然后进行拉伸形状(我的房间是2.8)。现在你应该会看到一个从外观像是你房间的实体。
挤型后的平面图
默认情况下,Unity渲染从对象外部反弹的光,但我们希望像在内部一样查看对象。我们不必重建单独的对象来表示墙壁、地板和天花板,我们只需在Inspector中勾选FlipNormals即可。这将绘制对象的内部,而现在我们可以在房间对象中放置camera、照明和对象,并从内部看到它的样式。
5.对齐头显在真实世界的位置和虚拟世界的位置
这成为了最棘手的部分,因为你无法提前保证头显在物理空间中的位置与camera在虚拟空间中的位置相匹配。
这里涉及大量的猜测和检查,所以你要做的第一件事就是关闭OculusQuest的防护系统,这样你就可以在房间里自由走动。只需戴上头显,导航到设置中的开发者菜单,然后关闭防护系统。
禁用这个选项将允许你在房间中漫游
回到Unity,进入你的Assets中的Oculus文件夹,在VR/Prefabs下找到OVRCameraRig并将其拖动到场景中。你需要把camera放在一个允许你在真实房间里放下的位置。我选择了把camera放在两堵墙相交的角落,这样我就可以把头显的正面靠近墙壁,并将头显的中心与墙角对齐。你可以使用游戏camera的视图来更好地查看头显的实际位置。
6.装饰房间
现在是有趣的地方:让你的虚拟房间看起来更像是你的物理房间。我建议你无需过分追求100%精确,因为你可能会在不必要的地方浪费太多时间,比如照明设备、门把手和垃圾箱。我同时认为,装饰一些不可能存在但更容易建模的物品会更容易和更有趣,并进一步说明虚拟世界的可能性。例如,我制作了一台120英寸的电视。
UnityAssetsStore中有非常多可用于沙发,桌子和椅子等基本物品的优秀免费asset。它们可能与你房间里的物品不完全匹配,但一旦正确地缩放,它们应该足够接近,难以区分,不会影响我们以后要构建的任何一切。
我把最重要的家具和最重要的物品放在房间里:沙发。你会注意到,当向场景添加预构建资源时,它们的比例可能不正确。根据构建模型时的比例,有时它们会太大,有时则会太小。
为了帮助获得正确的比例,我们将使用虚拟空间中的立方体作为指导。首先,测量真实世界物体的最长尺寸。对于我的沙发,我测量从地板到沙发后背顶部的距离,从每个靠手外侧到沙发的距离,以及从后到前的距离。
一旦获得了所有的测量数据,我们就可以创建一个全新的立方体,并对它进行缩放以匹配我们的测量。现在,将一个家具包中的预制件拖到场景中,并将其放置在立方体内部。使用RectTool更改尺寸以匹配立方体的尺寸(你可能需要选择子对象并在单个方向进行调整)。
当你的对象在所有维度对齐立体放后,你就可以删除虚拟场景中的立方体和对象位置。
现在,你需要测量两个不同墙壁之间的距离,从而评估将对象放置在虚拟空间中的位置。同样,一旦获得了正确的测量,你可以在这里使用一个立方体作为放置对象的指导。当开始设置更多的对象时,你就可以相对地进行定位,甚至可以用眼睛观察判断位置,以便快速完成任务。
最后,我用商店里的预制资产来制作家具,厨房里的橱柜,甚至是壁炉里的火。我用ProBuilder建立了我的吧台区域,只留下了我的水槽和烤箱,因为我还有更多有趣的物品可以放在场景中。在空墙位置,我用ProBuilder嵌入墙面,突出我的阳台、壁炉、窗户和几个壁龛。在房间中设置了点光源后,我同事可以删除默认的定向光源,从而使房间的照明更加真实。
7.捕获并排视频
如果你已经来到这一步,恭喜你。下面这部分属于可选项,但以防你想展示自己的作品,我想快速过一遍我是如何制作上述视频。Quest内置视频捕获功能,所以真正困难的部分是把智能手机绑到头显,并点击两台设备的录制按钮。
我决定进行DIY,只使用几条橡皮筋。把每条橡皮筋穿过头显侧面的头带,然后绕着头显前端起拉,并使其穿过另一侧的尼龙头带。
映维网。