(映维网 2019年08月05日)摄影测量是一种利用真实世界对象或空间的多张照片来创作数字asset的过程。摄影测量不仅得到了游戏世界的青睐,同时吸引了工业市场的关注。
例如,通过摄影测量生成的点云已成为建筑,工程和施工(AEC)工作流程中不可或缺的一部分。在汽车,运输和制造业中,通过利用摄影测量来捕获物理原型并将其与数字CAD模型进行比较,这可以确保视觉与现实相匹配。
为了更好地模拟现实环境并展示摄影测量在专业用途方面的潜力,Varjo团队最近对日本最大的墓地进行摄影测量扫描,并在VR中展示其数字孪生。
利用上图所示的Varjo VR-1,我们可以在VR中以人眼分辨率探索建筑物,建筑工地或其他空间的最精细细节。20/20分辨率扩展了摄影测量VR在工业方面的用例。
为了说明动态人眼分辨率的VR摄影测量的潜力,我们制作了高野山大灵园的动态演示内容。在本文中,我们将解释我们是如何完成这个项目。
1. 选择摄影测量位置
摄影测量是从选择合适的捕获位置或目标对象开始。并非所有位置或对象都适合摄影测量。我们选择了日本高野山的墓地。因为除了在演示中提供大量的细节外,我们同时希望纳入具有重要文化意义的元素。由于这是户外捕获,所以条件控制非常具有挑战性。但对Varjo而言,我们喜欢挑战。
这个项目的关键挑战是:
运动:高野山大灵园非常巨大且古老。令人惊讶的是,每天都有大量的游客前来参拜,而位于三脚架的摄影机非常吸引人。但在进行摄影测量时,你捕捉的场景应该是完全静止的,没有任何移动。如果你希望捕获大面积内容,这可能会造成问题,因为如果对象本身没有移动,也许光源,太阳会产生移动。如果拍摄需要数小时的时间,阴影可能会发生很大变化。
天气:当你进行户外捕捉时,天气应该选择阴天。当然,捕获期间或捕获之前不可下雨。湿表面的外观与干表面不同,整个拍摄过程中的场景应该看起来一样。
地面:墓地的地面非常难以捕获,因为它充满了枝条,在走动时会它们会移动。
在拍摄摄影测量场景的照片时,一般规则是每张照片应与相邻照片重叠至少30%或更多。主要目标是从尽可能多的角度拍摄目标照片并保持图像重叠。
对于在高野山大灵园捕获的区域,其扫描方式与扫描房间时相似。在这个场景中,我们拍摄了大约2500张照片。
2. 用Unity构建动态的3D场景
摄影测量提供了逼真的沉浸感,但静态照明通常会缩小用例。我们希望使用动态照明来模拟真实的环境。Unity为构建和渲染高度详细的场景提供了一个优秀的平台,这使得工作流程的自动化变得容易起来。
我们同时使用了De-Lighting工具和Unity Asset Store来帮助我们在需要时填补空白,例如《Book of The Dead》中的一些树木和石头。
在拍摄时,我们需要不断进行文件传输,这样我们就可以节省3D构建的时间。首先,我们使用一款名为Reality Capture的软件来创建照片的3D场景。
3. 网格处理和UV
我们从Reality Capture导出3D场景,其带有单个含有1000万个多边形的网格,以及一组98×8K纹理。
在Houdini中,Voronoi Fracture将网格分成更小,更易管理的片段。然后我们使用共享UV生成不同的LOD。这样做是为了避免LOD之间的纹理弹出。
这样,纹理对Unity而言就足够小,而我们可以启用Umbra遮挡剔除。当片段较小时,产生UV同样会更加轻松。
创建着色器是为了烘焙不同的纹理。Unity的De-Lighting工具至少需要反照率,环境光遮挡,法线,弯曲法线和位置贴图。大多数帧缓冲器都可以直接进行烘培,但弯曲法线不是那么明显。幸运的是,弯曲法线是未击中遮挡光线的方向,而有一个名为occlusion()的简单VEX函数可用于输出弯曲法线。
4. De-Lighting
我们创建了一个Python脚本来自动运行纹理。
如果扫描有太多颜色变化,则De-Lighting无法估计环境探测。 所以我们决定采用混合方法,在自动De-Lighting和传统的基于图像的照明阴影去除之间进行混合。
我们创建了一个Unity Asset后处理脚本以导入已处理的模型。它负责了材质创建和纹理分配。共有128个4K纹理被处理,烘焙和去光。
5. Varjo VR-1和Unity:易于集成
导入场景后,只需将VarjoUser Prefab拖到场景即可。只需一瞬间,VR-1就可以看到场景,而我们可以根据我们的需求开始调整它。
Unity Asset Enviro用于白天-夜间循环,而实时全局照明烘焙到场景之中。生成的网格UV用于全局照明,可避免长预处理时间。