从iOS的Grasshopper到QuickPreview:使用USDZ文件格式,第1部分

这个主意

作为一名架构师,城市设计师设计师 iOS开发人员,我所面临的挑战之一就是能够从这种疯狂的愿景,经验和不同领域的组合中做出一些贡献。 从建筑师+城市主义者+设计师的角度来看,我总是对参数化设计,快速原型制作和数字制造感到困惑。

犀牛的蚱hopper是实现这一目标的绝佳工具。 有了它,我们就能构思出难以置信的方法(称为“定义”),这些方法决定形状和形式,而所有这些方法仍在整个过程中为实验提供了空间。 如果您不熟悉它,Grasshopper是一个图形算法编辑器,完全与Rhino的3-D建模工具集成在一起。 它不需要传统的编程或脚本知识,但仍允许设计人员构建表单生成器。 您基本上是使用图形界面来定义一堆3D建模指令,这些指令与您的创意所确定的动态参数紧密相关。 这些参数的更改会立即从算法中产生响应,从而创建新的表格。

因此,确实,Grasshopper 对于设计师而言是一种了不起的工具 但是,构想整个构图方法而不是静态伪像的全部目的是让最终用户成为设计过程的积极组成部分,这使他们能够选择与他们的特定需求兼容的值,并尝试各种和个性化的方法。味道。 因此,Grasshopper不能为普通消费者提供足够接近常规数字体验的产品。 从iOS开发人员的角度来看,这种见解导致了以下指导性问题:

使用iOS可以做些什么来缩小Grasshopper Definitions与消费者之间的差距?

为了回答这个问题,我不得不考虑我对该项目的个人限制

因为我是iOS开发的初学者/中级,所以如果该解决方案易于实现 ,那将是非常好的
探索AR作为可视化和/或与设计交互的一种形式

从中我得到了理想的通量:

1.
2.
3.

新的USDZ文件格式

在WWDC 2018上,我们了解了Pixar在Apple和Adobe的支持下开发的新文件格式。 USDZ通过组合用于在一个文件中渲染场景的关键信息,简化了3D模型的可视化。 几何形状,纹理,照明,相机位置—皮克斯将所有内容捆绑在一起,形成了零压缩,未加密的 zip档案。 结果是可以快速但强大地进行可视化的存档。 苹果公司的职责是使iOS Quick Look Preview成为文件功能的令人难以置信的展示-无需进行配置,我们就可以通过AR将模型推向现实。

考虑到这一点,我的想法开始形成。 因此,我首先验证了处理此类文件的难度。 可以在下面找到有关它们的主要准则。

USD文档:Usdz文件格式规范
因此,我们要求每个文件在包中以64字节对齐开始。 幸运的是,zip格式提供了… graphics.pixar.com

AR模型的QuickLook预览

如本教程所示,使用Quick Look非常简单。 只需几行代码,您就可以轻松进行。 我真的推荐这个 让它与AR一起使用。 您可以在Apple的展示网站上获得一些usdz示例以供使用。

在UICollectionView中的项目上使用快速查找,您必须从类QLPreviewController及其数据源和委托中定义一个变量。

  func collectionView(_ collectionView:UICollectionView,didSelectItemAt indexPath:IndexPath){ 
thumbnailIndex = indexPath.item
让previewController = QLPreviewController()
PreviewController.dataSource =自我
PreviewController.delegate =自我
present(previewController,动画:true)
}

func numberOfPreviewItems(在控制器中:QLPreviewController)-> Int {
返回1
}

func PreviewController(_控制器:QLPreviewController,previewItemAt索引:Int)-> QLPreviewItem {
让url = urlFromUsdzFile
返回网址为QLPreviewItem
}
 让url = Bundle.main.url(forResource:models [thumbnailIndex],withExtension:“ usdz”)! 
 返回网址为QLPreviewItem 
  } 

但是有趣的部分是创建您自己的USDZ文件。 由于Rhino无法导出这种新格式,因此很明显我需要将文件转换为它。 经过一些挖掘后,我发现可以使用Xcode通过命令行进行转换。

  xcrun usdz_converter〜/ Desktop / myFile.obj〜/ Desktop / myFile.usdz 

除此之外,一些非常聪明的人发现可以在运行时将obj文件转换为usdz。 另一个坦率的灵魂将代码转换为Swift。

经过一番努力后,开始使用它-观察正确的书写方式,URL和路径-我所需要的只是想出一种从Rhinoceros / Grasshopper向应用程序发送.obj文件的方法。

但是……在蚱hopper那边……

我理所当然地认为,要从Windows OS上运行的软件向运行iOS的移动设备进行通信将多么困难。

即使客户端(Swift,Firefly或gHowl)在自己的环境中工作正常,无论我尝试了多少,我都无法在设备之间交换数据。

我的解决方法

现在,我将暂时离开Grasshopper和iOS之间的通信。 似乎是一个更好的主意,学习如何使用3d模型安装正确的USDZ文件并将其发布到基于Web的通用媒体上。 一个链接的AR产品组合肯定很方便。
但是接下来…