对ARKit使用Poly API

嗨! 我是KK的Kakkun(又名KK)在Timers Inc担任iOS工程师
苹果在WWDC 2017上宣布了ARKit ,听说如此直接而又如此激动。
而且,谷歌于2017年10月底宣布了Poly。此外,谷歌于11月底宣布了Poly API。 我尝试使用
带有ARKit的Poly API

Poly是Google免费下载的3D数据服务。
许多创作者上传3D数据,我们可以免费使用它们。
但是,我们必须注意许可,这主要是
CC-BY许可证,必须在显示中显示作者姓名。

Poly API是可通过编程下载3D数据的平台。
现在有四个功能,
搜索,获取资产,获取用户帖子,获得用户喜欢
搜索获取资产功能可通过简单的身份验证获得 ,但是获取用户帖子获得用户喜欢的功能需要OAuth的许可。
有一个样本
由Google提供,请同时进行检查。

首先,我们必须在Google的控制台API页面中激活Poly API

然后我们可以在文档页面中获取API密钥

API

域是https://poly.googleapis.com

v1.assets

获取资产:GET / v1 / {name = assets / *}
资产清单:GET / v1 / assets

我们可以轻松地使用搜索获取详细信息 api,以在url之后设置API密钥
例如https://poly.googleapis.com/v1/assets?key=YOUR_API_KEY

v1.users.assets

用户资产:GET / v1 / {name = users / *} / assets

获取用户发布的资产列表。 但是,此api需要OAuth的许可,因此我目前无法尝试。

v1.users.likedassets

用户喜欢资产:GET / v1 / {name = users / *} / likedassets

获取喜欢的资产的用户列表。 但是此api还需要OAuth的许可,因此我暂时无法尝试。

资产对象中有名为格式对象
我们需要找到
.obj的 format对象格式为
还有一个
对象 以及格式为object的 资源 对象,它们的URL为.obj.mtl ,并且具有JPG,PNG等图像文件作为纹理。
我们必须将文件从资源URL下载到相同的本地目录。 下载所有文件后,我们可以将其用作
通过MDLAsset.obj文件的URL中获取SCNNode

 导入SceneKit 
导入SceneKit.ModelIO
导入ModelIO
//创建MDLAsset的实例
让mdlAsset = MDLAsset(URL:objURL)
//加载纹理
mdlAsset.loadTextures()
//创建SCNNode的实例
让节点= SCNNode(mdlObject:mdlAsset.object(at:0))

现在,我尝试使用Poly API,但是映射模型和下载文件太复杂了。 因此,我制作了一个易于使用的Poly API库,名为PolyKit 。我支持
迦太基 ,您可以安装在Cartfile中插入跟随行。

  github“ fromkk / PolyKit” 

插入行后,在Terminal.app中执行迦太基更新–platform ios ,并在Xcode中进行设置。

搜索功能
PolyAPI用于Poly的搜索资产。

 导入PolyKit 
let query = PolyAssetsQuery(关键字:“ Cat”,格式:Poly3DFormat.obj)
let polyApi = PolyAPI(apiKey:“此处是Poly API密钥!!”)
polyApi.assets(with:query){(result)in
切换结果{
案例。成功(让资产):
self.dataSource.assets =资产。资产 []
情况.failure(_):
self.showFetchFailedAlert()
}
}

要下载.obj文件,请在PolyAsset对象中调用downloadObj函数。 下载后,您可以通过MDLAsset转换为SCNNode

 导入PolyKit 
导入SceneKit
导入SceneKit.ModelIO
导入ModelIOlet资产:PolyAsset =…
//从Poly下载obj和mtl文件
asset.downloadObj {(结果为
切换结果{
案例.success(let localUrl):
让mdlAsset = MDLAsset(url:localUrl)
mdlAsset.loadTextures()
让节点= SCNNode(mdlObject:mdlAsset.object(at:0))
//用node做点什么
案例。失败(让错误):
debugPrint(#function,“错误”,错误)
}
}

PolyKit是一个仅包装Poly API的库,因此变得更易于使用。 特别是,很难将3D数据用作应用程序中的变量。 通过PolyARKit和SceneKit,我们可以轻松实现想法从而解决我们的复杂问题。
里面有很多3D数据
并且现在增加。 让我们尝试使用它,并使应用程序和游戏越来越多!
如果你喜欢
PolyKit ,请按Github页面中的⭐️按钮。

聚苯乙烯
我不知道如何在Google中使用OAuth功能,如果您知道, 请教我,或将“ 提取 请求”发送给PolyKit

日语版在这里!