当前位置:HOS学院>技术前沿>如何利用Poly API为移动VR/AR项目寻找免费3D资源

如何利用Poly API为移动VR/AR项目寻找免费3D资源

作者:admin发布时间:2018-08-24 15:09:10来源:映维网

  你对VR和AR移动应用是否构思出什么好点子,但又不知道应该如何实现它们呢?

  除非你是安卓开发者,同时又是一位经验丰富的3D美术,否则创建实现沉浸式360度体验所需的所有asset可能是一次艰辛的过程。

  即便你没有创建3D模型所需的时间,资源或经验,这并不意味着你无法开发出优秀的VR或AR移动应用程序。网络免费了提供大量3D资源,以及存在渲染这些asset所需的众多API,框架和内容库。

  在本文中,映维网将与大家深入Poly。这个在线资源库和API为你提供了成千上万的3D asset。在本文结束时,你将能够创建一款在运行时检索3D Poly asset,然后通过Processing for Android库进行渲染的应用程序。

  1。 使用Poly显示3D资源

  如果你曾经涉足Unity开发,Poly存储库就是类似于Unity Asset Store的存在,但不同点在于Poly的所有内容都是免费。

  Poly的众多3D模型都是在创意公用授权条款下授权发布,因此只要给予创作者适当的引用注释,你就可以自由使用,修改和重新混合这些asset。

  Poly所有的3D模型都兼容谷歌的VR和AR平台,例如Daydream和ARCore,但你仍然可以随时随地使用它们,甚至可以用于苹果的ARKit。

  在检索和显示Poly asset时,你有两种选择。首先,你可以将资源下载到计算机,然后将它们导入Android Studio;或者你可以使用Poly API在运行时检索这些asset。

  跨平台,基于REST的Poly API提供对Poly大量3D模型的程序化,只读访问。这比将asset与APK打包在一起更复杂,但在运行时检索Poly asset存在几个好处,最明显的是它有助于控制APK大小,而这可能会影响下载应用程序的人数。

  你同时可以利用Poly API为用户提供更多选择。例如,如果你正在开发一款移动游戏,这时你可以允许用户从一系列的角色模型中进行选择。

  由于你可以自由修改Poly模型,你甚至可以支持用户调整他们选择的角色,例如改变头发或眼睛颜色,或者将其与其他Poly asset相结合,比如说不同的武器和盔甲。通过这种方式,Poly API可以帮助你提供令人印象深刻的3D asset种类,而且所有这些都只需相对较少的工作量。你的用户将确信你花费了大量时间来精心制作所有这些3D模型。

  2。 创建一个3D建模项目

  我们将创建一个应用程序,然后在首次启动时检索特定的Poly asset,并根据用户请求以全屏模式显示这个asset。

  为了帮助我们检索这个asset,我将使用Fuel,一个用于Kotlin和Android的HTTP网络库。首先使用你选择的设置来创建一个新项目,但在提示时选择“Include Kotlin support(包含Kotlin支持)”。

  你对Poly API所做的所有调用都必须包含API密钥,后者是用于标识应用程序并强制执行使用约束。在开发和测试期间,你通常会使用不受限制的API密钥,但如果你有计划发布这款应用程序,则必须使用受Android约束的API密钥。

  要创建受约束的密钥,你需要知道项目的SHA-1签名证书,现在我们来获取这一信息:

  选择Android Studio的“Gradle”选项卡(见下图中的光标位置)。这将打开“Gradle projects”面板。

  在“Gradle projects”面板中,双击以展开项目的“根”,然后依次选择“Tasks(任务)> Android(安卓)>Signing Report(签名报告)”。这将在Android Studio窗口底部打开一个新面板。

  选择“Toggle tasks executions(切换执行任务)/text mode(文本模式)”按钮(见下图的光标位置)。

  “Run(运行)”面板现在将进行更新,以显示有关项目的大量信息,包括其SHA-1指纹。

  3。 创建一个谷歌云平台账号

  要获取必要的API密钥,你需要一个谷歌云平台(Google Cloud Platform,GPC)帐户。

  如果尚未获取帐户,你可以通过“Try Cloud Platform”这个页面,并按照说明注册12个月的免费试用版。请注意,你需要信用卡或借记卡,但根据“常见问题解答”页面,这仅用于验证身份,并且“在免费试用期间不向你收取费用。”

  4。 获取你的Poly API密匙

  注册完成后,你可以启用Poly API并创建密钥:

  转到GCP Console。

  选择左上角的图标,然后依次选择“API&Services(API与服务)> Dashboard(仪表盘)”。

  选择“Enable APIs and services(启用API与服务)”。

  在左侧菜单中,选择“Other(其他)”。

  选择“Poly API”。

  单击“Enable(启用)”按钮。

  稍等一会后将出现一个新的屏幕;打开侧边菜单,然后选择“API&Services(API与服务)> Credentials(信用证书)”。

  在随后弹出的窗口中,选择“Restrict key”。

  给你的密匙命名。

  在“Application restrictions”下选择“Android apps”。

  选择“Add package name and fingerprint”。

  将项目的SHA-1指纹复制/粘贴到“Signing-certificate fingerprint”字段中。

  输入项目的包名称(在你的Manifest和每个类文件顶部)。

  点击“Save”。

  现在你将进入项目的“Credentials”屏幕,其中包含所有API密钥的列表,如你刚刚创建的支持Poly的API密钥。

  5。 项目依赖项:Fuel, P3D和Kotlin扩展

  为了检索和显示Poly asset,我们需要其他内容库的帮助:

  Fuel:Poly目前没有官方Android工具包,因此你需要使用其REST接口。为了简化这个过程,我使用的是Fuel HTTP网络库。

  Processing for Android。我将使用这个库的P3D渲染器来显示Poly asset。

  打开项目的build.gradle文件,并将这两个库添加为项目依赖项:

  为了令代码更简洁,我同时使用了Kotlin Android扩展,所以我们添加这个插件,并打开build.gradle文件:

  最后,由于我们是从Internet检索asset,我们的应用程序需要Internet权限。打开你的Manifest并添加以下内容:

  6。 添加API密钥

  每当我们的应用程序从Poly请求asset时,它都需要包含有效的API密钥。我正在使用占位符文本,但如果应用程序需要能够正常工作,其必须使用自己的API密钥来替换这个占位符。

  我同时添加了一个检查,如果你忘记更换“INSERT-YOUR-API-KEY”文本,应用程序将显示警告:

  7。 检索asset

  你可以在谷歌Poly官网选择任何asset,但我将使用这个地球模型。

  你可以使用它的ID来检索asset(详见上图,地址栏的末尾)。我们将这个asset ID与Poly API主机(“https://poly.googleapis.com/v1”)结合使用。

  接下来,我们需要使用httpGet()函数来向asset URL发出GET请求。我同时指定响应类型必须是JSON:

  asset可能有多种格式,如OBJ,GLTF和FBX。我们需要确定asset属于OBJ格式。

  在这一步中,我同时要检索需要下载的所有文件名称和URL,

  包括asset的主文件(“root”),以及任何相关的材质和纹理文件(“resources”)。

  如果应用程序无法正确检索asset,它将显示一个Toast以告知用户。

  “点击查看相应代码”

  这时,如果你在安卓智能手机或平板电脑,又或者是在Android Virtual Device (AVD)上安装项目,则asset将成功下载,但应用程序实际上不会显示它。我们现在来解决这个问题。

  8。 创建第二个屏幕:添加导航

  我们将以全屏模式显示asset,所以我们来更新main_activity.xml文件,纳入一个按钮。当点击按钮时,系统将启动全屏Activity。

  现在我们将onClickListener添加到MainActivity.kt文件的末尾:

  “点击查看相应代码”

  9。 构建3D画布

  现在,我们创建一个将以全屏模式显示asset的Activity:

  按住Control键并单击项目的MainActivity.kt文件,然后选择“New> Kotlin File/Class”。

  打开“Kind”下拉菜单,然后选择“Class”。

  将其命名为“SecondActivity”,然后单击“OK”。

  为了绘制3D对象,我们需要3D画布。我将使用Processing for Android的库的P3D渲染器,这意味着扩展PApplet类,重写settings()函数,然后将P3D作为参数传递给fullScreen()函数。 我们同时需要创建一个将Poly asset表示为PShape对象的属性。

  接下来,我们需要初始化PShape对象,重写setup()函数,调用loadShape()函数,然后传递。obj文件的绝对路径:

  10。 在P3D的画布上绘制

  要在这个3D画布上绘制,我们需要重写draw()函数:

  默认情况下,从Poly API检索的大多数asset都在较小的一侧,因此如果你现在运行这个代码,你甚至可能看不到asset,具体取决于你的屏幕配置。在创建3D场景时,你通常会创建一个自定义camera,以便用户探索场景并360度全方位地浏览3D资源。但这超出了本文的范围,所以我将手动更改asset的大小和位置,以确保它适配屏幕。

  你可以通过将负值传递给scale()函数来增加asset的大小:

  你可以使用translate()函数和以下坐标调整asset在虚拟3D空间中的位置:

  X。沿水平轴定位asset。

  Y。沿垂直轴定位asset。

  Z。这是“深度/高度”轴,它将2D对象转换为3D对象。正值会产生物体朝向你本人的印象,负值会产生物体远离你本人的印象。

  我的操作如下:

  下面是完整的代码:

  接下来,我们需要创建相应的布局文件,其中我们将3D画布添加为FrameLayout微件:

  按住Control键并单击项目的“res> layout”文件夹。

  选择“Layout resource file”。

  将文件命名为“activity_second”,然后单击“OK”。

  现在我们拥有了“asset_view”FrameLayout,接下来我们需要令SecondActivity了解它。回到SecondActivity.kt文件,创建一个新的PFragment实例,并将其指向我们的“asset_view”微件:

  “点击查看相应代码”

  最后一步是将SecondActivity添加到你的Manifest:

  11。 测试你的项目

  我们现在可以测试这个项目。将其安装在安卓设备或AVD上,并确保你具有活跃的互联网连接。在应用程序启动后,它就会下载asset,然后你可以通过点击“Display Asset”按钮进行查看。

  你可以通过GitHub下载这个完整的项目。

  12。 总结

  在本文中,我们探究了如何利用Poly API在运行时检索3D asset,以及如何使用Processing for Android库显示这个asset。你是否认为Poly API可以令支持更多人开始VR和AR开发呢?请在下面的评论栏告诉我们。


  环视天下声明:HOSSKY网站登载或转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。

技术前沿热点