如何创建USDZ文件?

Sur*_*ala 18 3d 3d-model usdz

我试着查看http://graphics.pixar.com/usd/docs/index.htmlhttp://graphics.pixar.com/usd/docs/Usdz-File-Format-Specification.html上的主要文档.但无法找到创建usdz文件的详细信息.

我可以从http://graphics.pixar.com/usd/downloads.html获取一些示例USD文件

我们怎样才能创造一个?

Cla*_*lay 21

Apple提供的usdz文件库位于以下网址

https://developer.apple.com/arkit/gallery/

您需要安装iOS12测试版的设备才能在移动设备上查看模型.基本上Apple使用Mime-types模型/ usd usdz和model/und.pixar.usd .usdz将它们标识为AR可查看.您还需要通过Safari浏览器执行此操作... Chrome不支持文件格式.

用于列出缩略图usdz文件的html将如下所示.

<a rel="ar" href="model.usdz">
  <img src="model-preview.jpg">
</a>
Run Code Online (Sandbox Code Playgroud)

为了创建你自己的usdz文件,Apple捆绑了usdz_converter作为Xcode 10的一部分.它是一个命令行工具,用于从OBJ文件,单帧Alembic(ABC)文件,USD文件(.usda或usd.c)创建usdz文件. )

基本命令行是

xcrun usdz_converter Wineglass.obj Wineglass.usdz  
Run Code Online (Sandbox Code Playgroud)

usdz支持基于物理的渲染,为此,你可以为PBR的每个组件添加图像,如下所示,

xcrun usdz_converter Wineglass.obj Wineglass.usdz 
-g WineGlassMesh
-color_map WineGlass_Albedo.png
-metallic_map WineGlass_Metallic.png
-roughness_map WineGlass_Roughness.png
-normal_map .  WineGlass_Normal.png
-emissive_map  WineGlass_Emissive.png
Run Code Online (Sandbox Code Playgroud)

一个很好的视频,可以帮助您开始创建usdz文件,在网页上托管并在您自己的应用中创建快速浏览

https://developer.apple.com/videos/play/wwdc2018/603/


小智 5

用于在 iOS 上从 OBJ 创建 USDZ 文件(无需 xcode)

我团队的一位工程师上周解决了这个问题!(请参阅我们博客上的概要:https://www.scandy.co/blog/how-to-export-simple-3d-objects-as-usdz-on-ios

创建USDZ文件现在很有趣 - 目前我们可以通过保存文件USDC并...重命名扩展名来伪造它!

首先,您需要将 filePath 处的 .obj 文件作为 MDLAsset 加载

NSURL *url = [NSURL fileURLWithPath:filePath];
MDLAsset *asset = [[MDLAsset alloc]initWithURL:url];
Run Code Online (Sandbox Code Playgroud)

确保MDLAsset可以写入所需的扩展 usdc 支持(美元二进制格式)

if([MDLAsset canExportFileExtension:@"usdc"]){
  NSLog(@"able to export as usdc");

  // save the usdc file
  [asset exportAssetToURL:usdcUrl];
}
Run Code Online (Sandbox Code Playgroud)

将 usdc 重命名为 usdz 因为这就是所需的一切

NSError *renameErr;
NSFileManager *fm = [[NSFileManager alloc] init];
BOOL mvResult = [fm moveItemAtPath:usdcPath toPath:usdzPath error:& renameErr];
if(! mvResult){
  NSLog(@"Error renaming usdz file: %@", [renameErr localizedDescription]);
}
Run Code Online (Sandbox Code Playgroud)

希望这对 Apple 能给我们提供更全面的操作方法有所帮助。

  • 惊人的主意!我想知道是否可以在像 Vapor 这样的 Swift 后端框架上运行它。即使它必须在 OSx 机器上运行,也可以是 Linux。你怎么认为? (2认同)