GIS的VR支持:CityEngine如何通过Unity支持HTC Vive?

2023-11-07 05:50

本文主要是介绍GIS的VR支持:CityEngine如何通过Unity支持HTC Vive?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文地址
作者:Markus Lipp
时间:2017年9月12日

Esri CityEngine是将城市模型和其他3D GIS内容引入虚拟现实(VR)的好工具。它允许您为手机(见ArcGIS 360 VR)和台式PC创建VR体验。

在这篇博文中,我们将逐步描述如何快速将3D数据导入桌面VR头戴式设备,如HTC Vive。为了在VR中的3D环境中进行交互和导航,我们还将展示如何简单地设置手动控制器和传送功能。

作为3D数据集的示例,我们使用CityEngine City Wizard创建的虚拟城市,该数据可以通过欢迎屏幕或通过 File menu – New – City向导轻松访问。

导出你的城市环境

作为第一步,选择城市的中心部分,然后转到File – Export Models

这里写图片描述

Autodesk FBX在CityEngine和Untiy中都很出色。在下一个对话框中,您可以调整一些参数。 Simpify Terrain Meshes用于减少平坦区域中的三角形数量,对于良好的性能来说很重要。还可以选择 Create Texture Atlases,这样可以减少绘制次数。(译者注:将多个纹理打包为单一纹理,并通过纹理坐标来访问对应区域可以减少底层渲染引擎的消耗)您可以进一步选择Embed Textures“以更容易地在Unity使用这些数据。您可能需要向下滚动才能找到这些选项。

这里写图片描述

导入到Unity

所得到的FBX文件可以在CityEngine Navigator的’models‘文件夹中找到。将此文件拖放到空的Unity场景的资源文件夹中。

拖放

然后将城市拖动到“Hierarchy ”视图中。它也将出现在3D场景视图中。双击Hierarchy视图中的城市,然后放大一些。现在,我们来调整相机的位置。选择Main Camera并使用移动工具将其放置在街道上。小Camera Preview会有帮助的。

城市拖网

设置VR

要启用VR,请转到Edit – Project Settings – Player,并勾选检查器的Virtual Reality Supported

VR SDK设置

默认情况下只添加Oculus SDK,但这不适用于HTC Vive。要添加Vive支持,请单击小的“+”符号,然后单击OpenVR。 OpenVR可以适用于Oculus和HTC Vive。将OpenVR拖到Oculus前面,或者简单地删除Oculus。
按3D视图上方的Play 按钮。如果SteamVR和VR眼镜安装正确,将显示一个小的SteamVR弹出窗口,城市将显示在VR中。如果在SteamVR弹出窗口中出现警告,请参阅HTC Vive或Oculus Rift设置说明以寻求帮助。

SteamVR接口

添加移动

我们现在有一个与初始相机定位的场景。如果你有足够大的房间,你可以自身走动一下去探索街道。但是,您如何浏览更大的区域?

传统上,3D游戏使用控制器输入实现连续运动。然而,在VR中,许多用户会引起不适,因为移动的视觉刺激与静止的感觉不符。

一个解决方案是使用传送移动。用户直接在不同的位置之间切换,而不是连续旅行。幸运的是,这在Unity中很容易实现。首先,单击Window – Asset Store。可能会要求您登录,然后搜索SteamVR插件,然后单击Import。在“SteamVR Settings”对话框中,单击“Accept All”。

SteamVR插件

将文件夹“SteamVR / InteractonSystem / Core / Prefabs”中的“Player prefab”拖放到“Hierarchy”中。就像我们之前使用Main Camera一样,将其移动到3D场景中的一个不错的位置。然后删除主相机,因为Player prefab已经包含相机。

拖放机

现在,将一些来自SteamVR / InteractonSystem / Teleport / Prefabs的TeleportPoint prefabs拖放到3D视图中,并将Teleporting预制拖放到Hierarchy*中。为了更方便地在更大的场景中传送,您可以增加传送参数中的弧距。

设置传输点
当您启动场景时,您现在可以通过点击Vive控制器并传送到传送点上的绿色路径来传送到这些位置。

万岁

运行起来,它与Oculus Touch一样的出色。

Oculus Touch

您还可以添加传送区域:双击3D视图中的街道,然后创建副本。单击检查器中的Add Component,并添加传送区域以及Mesh Collider

传送设置

现在你可以在VR中这条街上的任何地方传送。

传送Vive

调整场景

你可能会注意到树木看起来有点怪异。要修复此问题,请单击Assets/Materials,然后选择所有绿色树材料。然后在检查器中选择Cutout作为渲染模式。这将从透明部分中删除高亮部分。

结论

在CityEngine和Unity中使用几个简单的步骤和预置功能,您可以创建引人入胜的VR体验。通过添加额外的插件,如SteamVR运动系统,可以改进体验。

您可以添加进一步的简单调整来提高视觉质量:通过在Unity中添加屏幕空间环境遮挡(SSAO)提高对细节的深度感知。 Unity还为现实阴影提供了全球照明解决方案。

在VR中显示更大的城市时,重要的是要注意表现。 理想情况下,它应该运行90fps,以达到舒适的VR体验。 为了提高性能,可以在Unity中启用Single-Pass立体渲染。 此外,CityEngine的基于规则的性质可以为几何形状创建不同的细节级别,例如将较少的细节添加到远处的建筑物中。 由于Unity的多平台特性,很容易在多个平台上部署VR体验。 例如,它与HTC Vive和Oculus Rift兼容,还可以为Windows全息照相机添加Microsoft Hololens支持。 我们将进一步完善这一工作流程,使GIS2VR在未来更加容易。 你有兴趣看到为Unreal Engine等提供的指南吗? 我们很乐意收到到您的反馈。

译者注:Markus属于苏黎世研发中心,在I3S的设计和实现过程中,也曾和他远程合作过一段时间。

这篇关于GIS的VR支持:CityEngine如何通过Unity支持HTC Vive?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/361645

相关文章

GIS图形库更新2024.8.4-9.9

更多精彩内容请访问 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信:digital_twin123 Cesium 本期发布了1.121 版本。重大新闻,Cesium被Bentley收购。 ✨ 功能和改进 默认启用 MSAA,采样 4 次。若要关闭 MSAA,则可以设置scene.msaaSamples = 1。但是通过比较,发现并没有多大改善。

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

sqlite不支持中文排序,采用java排序

方式一 不支持含有重复字段进行排序 /*** sqlite不支持中文排序,改用java排序* 根据指定的对象属性字段,排序对象集合,顺序* @param list* @param field* @return*/public static List sortListByField(List<?> list,String field){List temp = new ArrayList(

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬

Science Robotics 首尔国立大学研究团队推出BBEX外骨骼,实现多维力量支持!

重复性举起物体可能会对脊柱和背部肌肉造成损伤,由此引发的腰椎损伤是工业环境等工作场所中一个普遍且令人关注的问题。为了减轻这类伤害,有研究人员已经研发出在举起任务中为工人提供辅助的背部支撑装置。然而,现有的这类装置通常无法在非对称性的举重过程中提供多维度的力量支持。此外,针对整个人体脊柱的设备安全性验证也一直是一个缺失的环节。 据探索前沿科技边界,传递前沿科技成果的X-robot投稿,来自首尔国立

Unity Post Process Unity后处理学习日志

Unity Post Process Unity后处理学习日志 在现代游戏开发中,后处理(Post Processing)技术已经成为提升游戏画面质量的关键工具。Unity的后处理栈(Post Processing Stack)是一个强大的插件,它允许开发者为游戏场景添加各种视觉效果,如景深、色彩校正、辉光、模糊等。这些效果不仅能够增强游戏的视觉吸引力,还能帮助传达特定的情感和氛围。 文档

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html

Unity协程搭配队列开发Tips弹窗模块

概述 在Unity游戏开发过程中,提示系统是提升用户体验的重要组成部分。一个设计良好的提示窗口不仅能及时传达信息给玩家,还应当做到不干扰游戏流程。本文将探讨如何使用Unity的协程(Coroutine)配合队列(Queue)数据结构来构建一个高效且可扩展的Tips弹窗模块。 技术模块介绍 1. Unity协程(Coroutines) 协程是Unity中的一种特殊函数类型,允许异步操作的实现

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光 一,前言二,资源包内容三,免费获取资源包 一,前言 在创意的世界里,每一个细节都能决定一个项目的独特魅力。今天,要向大家介绍一款令人惊艳的粒子效果包 ——Super Confetti FX。 二,资源包内容 💥充满活力与动态,是 Super Confetti FX 最显著的标签。它宛如一位

Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(4)

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​​ Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(3)-CSDN博客  这节就是真正的存储数据了   理清一下思路: 1.存储路径并检查 //2进制文件类存储private static string Data_Binary_Pa