基于ChatGPT和谷歌3D贴图的虚幻引擎5

发布时间 2023-05-20 10:35:18作者: BOTAI
作者:githubdaily
相信大家小时候躺在床上,都曾设想过这么一个场景:
当你闭上眼睛时,感觉身心十分安宁,物理世界慢慢淡出,身体也随着变得飘逸,一切仿佛只剩下呼吸声和心跳声。
一阵微风拂过,你缓缓睁开双眼,发现自己摆脱了地心引力,出现在了天空之上,只要一个想法,便可瞬间穿梭到地球上任意位置。
今天凌晨,国外一位名为 Nils Bakker 的开发者让这个梦想成真了。
他利用虚幻引擎 5.1 + ChatGPT + Google Maps 3D Tiles API,成功打造了一个虚拟空间传送系统!
通过在界面输入地点,系统便会自动将你传送到世界任意角落,你可以在空中俯瞰各个国家的美景,感受地球上不同地理位置的建筑风格、地貌变化。
整个效果颇为科幻与震撼,这里放个视频让大家感受下:
技术实现:https://nilsbakker.nl/portfolio/3d-tiles/
这里面主要用了 3 款当下主流的 AI 工具:虚幻引擎 5、ChatGPT、Google Maps 3D Tiles。
虚幻引擎与 ChatGPT,大家应该都熟悉。
Google Maps 3D Tiles,是 Google 前不久在 I/O 2023 大会上发布的一款新产品,开发者可通过 API,直接获取到跟 Google Earth 相同的可视化地理图像,目前已支持 45 个国家,2500 座城市。
图片
将 Google 3D Tiles 和 ChatGPT 的 API 结合起来,再利用虚幻引擎的能力,让用户能够身临其境般的感受空间穿梭。
不得不说,作者的创意以及动手能力是真的强。
ChatGPT 提供地理位置导航建议以及位置坐标,再让虚幻引擎 5 呈现逼真的画面效果,并最终由 Google 3D Tiles 生成真实的地理画面。整个流程一气呵成,没有一项多余。
下面让我们跟作者一起打开脑洞,看下整个流程的具体实现。
首先,每当输入框中的 ChatGPT Prompt 被触发时,会自动生成一个答案。该答案包含:XY 地理坐标、城市名称、国家、地点景区介绍。
图片
将这些答案数据进行拆解,便可以做到:
借助 Google Maps API 用 XY 坐标来检索位置数据,再通过位置获取到对应的 3D 几何图形。
一旦获取到位置与 3D 几何数据,则让玩家实现空间穿梭,从当前地点跳转到另一地点。
为了隐藏位置跳转时的加载过程,作者还用了一个颇为巧妙的方法。那就是让虚幻引擎 5 的 Niagara Particles 功能来实现粒子动画效果。
把粒子效果整合,做成一个空间穿梭通道,就像下面这样:
图片
由于地球上不同位置的地理高度不同,为了确保玩家不会突然出现在地下或者天空上方,还需要检查当前视角距离地面的高度,让玩家可以在适当的位置出现。
同时,在穿梭成功后,也不能直接到达目的地,而是要先让玩家滑行一段距离,再向目的地缓慢靠近,给他们欣赏沿途美景的机会。
通过利用当下各个主流的 AI 工具所提供的接口,再加上作者自身的开发能力,仅用了短短一周,作者便完成了整个项目的开发。
本来作者还打算加入天气数据的变化,但是他只设定了一周开发时间,所以很遗憾该功能本次没能加上。
等代码整理完毕后,作者未来会在 GitHub 开源此项目,大家可以期待一下。
图片
随着各项 AI 技术愈加成熟,开发者使用工具的门槛也在逐步降低,未来基于现有的工具以及 API,我们可以快速做出很多创意无限的应用与产品。
我们需要做的,就是将各类 API 以及技术进行整合,进而打磨出一整套方案,并扩展延伸至各行各业。
之前我说过,ChatGPT 以及各个大语言模型的能力还在被不断挖掘,当下我们能探索到的仅为冰山一角。
将 ChatGPT 智能助理的能力整个到诸多产品线上,才是它真正大放异彩的时候!
国外作者原始内容

利用虚幻引擎5.1的强大功能,当谷歌地图3D图块API发布时,我开始了一次技术冒险。怀着雄心勃勃的目标,我挑战自己,在紧迫的一周期限内完成这个项目。在此页面上,我尝试分享创建此交互式体验背后的过程。

结合Google 3D磁贴和ChatGPT API,我利用虚幻引擎的功能创造了一种身临其境的体验,突破了可能性的界限。利用虚幻引擎蓝图的灵活性,我无缝集成了ChatGPT API,使用户能够输入提示并接收动态响应。

提示:

Answer the following question in the following format. 

<< Latitude, Longitude >> ((City Name)) [Country name] ^^a fun fact about this place^^

nothing else. Use that format include the <, > and {} and ().

[USER INPUT]

每次用户输入提示时,它都会使用提供的提示触发特定功能。然后,ChatGPT 提供的答案分为四个部分:XY 坐标、城市名称、国家和有关该位置的有趣事实。然后,这些数据首先被解析为3D文本并放置在虚拟世界中。

但是,我们如何通过准确的位置数据使这个虚拟世界栩栩如生呢?这就是Google Maps API发挥作用的地方。我利用另一个函数来翻译从提示中获得的 XY 坐标,以通过 Google 地图 API 检索位置数据。然后,位置数据用于获取3D几何体,这要归功于出色的Cesium平台和虚幻引擎插件。

收集位置和几何数据后,将 3D 几何加载到指定位置。将用户从其当前位置无缝过渡到新位置。我使用Niagara粒子系统创建了一个门户机制,巧妙地隐藏了过渡过程。

当然,我们不能忘记瞬移的实用性。由于世界各地的地面关卡各不相同,我们需要确保玩家不会在地下或高出地面的地方生成。通过检查地面碰撞,我们确保玩家在离地面适当的高度生成。此外,为了增强用户体验,我们将玩家从预定位置稍微向后放置,让他们在到达时清楚地看到目的地。

检测地面的蓝图功能

在传送过程中,我们还设置了位置的时间。尽管当前的实现会生成时间的随机值,但最初的计划是从另一个 API 检索实际时间和天气数据。但是,鉴于项目的时间限制,该功能将不得不等待未来的开发。

这个项目是一次非常有趣和有益的经历。它展示了虚幻引擎的巨大功能,并展示了集成Google 3D磁贴和ChatGPT等工具所带来的无限可能性。如果您对这个项目有任何疑问,请随时与我们联系。我非常乐意分享更多见解!