对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数据用作应用程序中的变量。 通过Poly和ARKit和SceneKit,我们可以轻松实现想法,从而解决我们的复杂问题。
里面有很多3D数据
聚并且现在增加。 让我们尝试使用它,并使应用程序和游戏越来越多!
如果你喜欢
PolyKit ,请按Github页面中的⭐️按钮。
聚苯乙烯
我不知道如何在Google中使用OAuth功能,如果您知道, 请教我,或将“ 提取 请求”发送给PolyKit !
日语版在这里!