View in English

  • メニューを開く メニューを閉じる
  • Apple Developer
検索
検索を終了
  • Apple Developer
  • ニュース
  • 見つける
  • デザイン
  • 開発
  • 配信
  • サポート
  • アカウント
次の内容に検索結果を絞り込む

クイックリンク

5 クイックリンク

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • トピック
  • すべてのビデオ
  • 利用方法

WWDC19に戻る

ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。

  • 概要
  • トランスクリプト
  • USDを使用する

    Universal Scene Description(USD)を使用すると、安定した3Dシーンを描写することができ、エンジニアとアーティストがクリエイティブのワークフロー全体でシームレスにコラボレーションすることができます。このセッションでは、USDの強力な機能と、その優れた拡張性を紹介します。USDアセットの作成方法と、ARKitとRealityKitで使用するusdzコンテンツの作成に関する詳しい情報についてご確認ください。

    リソース

    • AR Quick Look Gallery
      • HDビデオ
      • SDビデオ
    • プレゼンテーションスライド(PDF)

    関連ビデオ

    WWDC21

    • USDによる3Dワークフローの作成

    WWDC20

    • アーティストのARツールキット
    • USDの新機能

    WWDC19

    • AR Quick Lookの最新情報
    • ARKit 3の紹介
    • Reality ComposerによるAR体験の構築
    • RealityKitとReality Composerの紹介
  • このビデオを検索

    (音楽)

    (拍手) こんにちは “Working with USD”へようこそ デニス・コバチです クロエ・ムーアと2人で進めます 昨年 iOSのAR Quick Lookを 紹介しました 3Dコンテンツを簡単に ARで見ることができます

    購入したい商品のモデルも 見られます 実際のサイズ感を確認できるのです デバイスを動かしても モデルは その場にしっかり固定されています

    実際の照明条件に合わせて レンダリングされるので 実物を部屋に置いた感じが よくわかります 光沢のあるクロムめっきのランプにも 部屋の光が反映されます

    ARは楽しいものです 3Dコンテンツを 直感的に楽しませてくれます

    このようなAR体験を支えるのが 昨年 紹介した ファイルフォーマットのUSDZです

    アプリケーションやフレームワークと 深く統合されているため メッセージやメールで ARを共有できます インタラクティブなNewsを 体験したり Webで見つけた新体験を Safariを通じて ダイレクトにARで見られます USDZを使った アプリケーションも作れます

    USDZの基礎となる技術がUSDで― このセッションのメインテーマです

    では今日のトピックです 1つめはUSDとは何か? 次にUSDZの作成や変換の ワークフロー 残りの時間を使って USDに関する理解を深めていきます 3Dファイルフォーマットに 共通する基礎から始めて 最後はUSD固有の機能について

    さて USDとは何か?

    Universal Scene Descriptionの 略です 3Dファイルフォーマットであり C++ライブラリをサポートします Pythonバインディングは Pixarが開発したものです

    このライブラリはUSDファイルの 読み書きができます

    コンポジションエンジンなど 様々な機能があります 注目すべきはスピードと― 拡張性と共同作業です USDに関連する拡張子は3種類です プレーンテキストのUSDA これは 人間が読めることを目的として 設計されたものです バイナリのUSDC これは読み書きが効率的です USDは どちらのタイプにも 使われます

    この3つを自由に使えます

    そしてUSDZです 詳しく見てみましょう

    USDZとは何か? USDの配布フォーマットです 3Dシーンの全データを 1つのファイルにまとめたものです 共有用に最適化された AR Quick Lookの基盤です iOS macOS tvOSが サポートしています USDZファイルの構造を見てみると 非圧縮のZIPアーカイブです すべてのファイルは 64バイトでアラインされています 最も効率的なメモリマッピングです

    このアーカイブには 2種類のファイルが含まれます 1つは Scene description fileです

    USDA USD USDC USDZの フォーマットで ネストしたアーカイブができます もう1つはテクスチャで PNGやJPEGです

    ファイルフォーマットを ざっと比較してみましょう

    一番簡単なものはOBJで 基本的に中身は3Dモデル1つです マテリアルは制限され アニメーションは扱えません

    こちらはもっと新しい ファイルフォーマット群です シーングラフで表した 複数のモデルを持てます 複数のマテリアルや アニメーションにも対応しています

    USDはすべてに対応しながら 拡張性も備えています Pixarが映画用に開発しました 共同作業にも対応しています 複数人が1つのシーンを作業しても お互いの邪魔をしません

    USDZはアーカイブパッケージとして これらの機能を継承しています

    次にワークフローを 見ていきましょう

    2つのカテゴリに分けられます 既存アセットの変換と 新しいアセットの作成です

    変換から始めましょう

    アセットがあるとします フォーマットが異なる FBXやglTFです それをUSDZに変換するとします 自作のアプリケーションや AR Quick Look用です

    ここでコマンドラインツール usdzconvertを紹介します 昨年のXcodeのコンバータに 代わるものです より多くのフォーマットに 対応しています FBXやglTFなどです アセットのバリデーションもします 正しいUSDZファイルか 確認できます Pythonベースで プラットフォームに依存しません そのため このコンバータは macOSの他のプラットフォームの パイプラインと 統合しやすいのです

    いくつかサンプルがあります glFTファイルをusdzconvertで USDZに変換します バリデーションも実行されるのが わかりますね

    コマンドラインオプションは すべて“-h”で確認できます

    細かいマテリアルの定義も コマンドラインから 直接 設定できます 細かいマテリアル定義を持たない OBJなどには便利です

    usdzconvertは 提供パッケージの一部です プリコンパイルされたmacOS用の USDライブラリや他のものも含みます

    例えば USDコマンドラインツールです このusdcatはUSDZファイルの中身を テキストで表示してくれます

    usdtreeはモデルの階層を 見るのに便利です

    usdcheckerはバリデータです

    fixOpacityという スクリプトもあります 昨年 AR Quick Look用に 透過にしたモデルが iOS 13で不透明に見える場合は スクリプトで修正します

    デモはクロエがお見せします (拍手) ありがとう デニス プリコンパイルされたUSDの Pythonライブラリのダウンロードは こちらから行えます あらかじめ用意しておきました USDフォルダにはプリコンパイルされた USDのPythonライブラリと Pixarが提供するusdtreeやusdcatなどの コマンドラインツール一式があります usdzconvertフォルダには usdzconvertとfixOpacity 環境変数を設定する USD.commandもあります ダブルクリックで ターミナルウインドウが開きます

    usdzconvertから始めましょう これだけで実行すると 引数が表示されます

    変換したいglTFファイルが あるとします

    ファイル名を指定して 実行するだけです

    生成されたアセットを 見てみましょう

    すべてのマテリアルと アニメーションが入っています

    ご覧のとおり usdzconvertは バリデーションも行います

    次にマテリアルのないOBJを 変換します

    この4面体です

    オプション引数で マテリアルを設定できます 例として色をつけます

    マテリアルが設定されましたね

    モデルの構造を見るには usdtreeを使います

    マテリアルとメッシュがあります

    モデルの詳細をテキストで見るには usdcatを使います

    別の使用例をお見せします OBJファイルと―

    テクスチャがあります

    テクスチャの適用は 色の設定と同様に簡単です

    USDZは 非圧縮のZIPアーカイブです 中身を調べる簡単な方法は zipinfoです

    USDCファイルがあるのがわかります テクスチャもありますね

    すべてのテクスチャが 適用されています

    まとめましょう usdzconvertで簡単に USDZファイルに変換できます 変換後のアセットの確認に 役立つツールもあります デニスと代わります

    (拍手) ありがとう

    変換について説明しました 次はUSDZファイルを 一から作る方法です

    お好きなオーサリングツールで アセットを作っても構いません FBXなどのフォーマットで エクスポートできると思いますので― それをusdzconvertで USDZに変換することは可能です

    ですが USDエクスポート対応の コンテンツ制作アプリケーションが 増えています そのおかげでコンテンツ制作を USDパイプラインに 統合しやすくなります そして このような複雑な変換工程は もっとシンプルな アーカイブ処理に変わります

    USDエクスポート対応の 2つの コンテンツ制作ツールを例にあげます これはAdobeの Substance Painterです 3Dオブジェクト用の リアルなマテリアルを作れます

    USDとUSDZに対応しています

    これは主要な3Dツールの1つ AutodeskのMayaです

    USDとUSDZに対応しています プラグインはPixarの提供です

    このように 多くのアプリケーションが USDZのダイレクトエクスポートに 対応し USDZの生成工程を簡略化しています

    Pythonバインディングなので 特定のコンテンツに合わせた 独自のPythonパイプラインも作れます

    次はSceneKitで USDZをエクスポートします SCNSceneを 用意しておくだけで済みます USDZのエクスポートは APIを呼ぶだけです 拡張子は必ず “usdz”にしてください

    USDZのエクスポート機能は XcodeのSceneKitエディタにも 組み込まれています USDZエクスポートが UIでも同様に行えます

    ワークフローは以上です

    では 次に USDの機能を見ていきましょう 冒頭でふれましたが USDには多くの機能があります この場ですべてを取り上げるのは 不可能です

    わかりやすいキーコンセプトが いくつかあります

    まずは それを見てみましょう

    4つ紹介します ファイル構造 シーングラフ メッシュデータ マテリアルです

    USDが他と違う点は 読めるようにプレーンテキストを 設計したことです そのため フォーマットは把握しやすく 問題が発生しても 原因を早く特定できるのです

    まずはファイル構造から

    これはUSDAファイルの抜粋です 最初に気づくのは ネストしたコンテナです USDではPrimと呼びます

    Primは実データを格納する プロパティを持ちます

    3つの層に メタデータが付きます ファイル Prim プロパティです

    ネストしているため オブジェクトパスでアクセスします この例ではPrimの“cube”は “simpleMesh”の下にあります パスは “/simpleMesh/cube”になります

    プロパティも同様で ドット表記を使います

    こうした基本のファイル構造が シーンデータでどう使われるか 見ていきます

    シーングラフは オブジェクト階層を定義します 親要素が変わると子にも影響します ここでは立方体と それを親とする球体を使います

    立方体を動かすと 球体も一緒に動きます

    球体を動かしても 立方体はそのままです シーングラフはPrimのネスト構造に 簡単に格納できます これは親のPrimです 立方体と球体 2つの子のPrimがあります なお マテリアルや アニメーションなどのPrimは シーングラフに属しません

    シーングラフは以上です メッシュデータに移りましょう

    メッシュデータは 2つのカテゴリに分けられます 位置 法線 テクスチャ座標などの 属性と 連結性です これは1つの面の頂点の数や 面に属する頂点インデックス などです

    4面体の単純な例を 見てみましょう 最初は4面体の4つの点です

    すべての面に3つの頂点があるので 4つの三角形です

    それぞれの面に 頂点インデックスを持ちます

    次です

    例として面ごとに法線を持たせます

    4つの法線です “面ごと”は USDでは“uniform”なので メタデータに“uniform”を 設定します

    テクスチャ座標も設定します これはインデックス付きの 属性になります インデックスは 面ごと 頂点ごとです USDでは“faceVarying”です

    最後にこちらも必須です 4面体は細分割曲面ではなく ポリゴンでレンダリングします 後で説明します

    それでは 次はマテリアルの定義です

    USDのマテリアルの定義は精細です 元々 映画のレンダリングのためです リアルタイムレンダリングには UsdPreviewSurfaceという サブセットがあります 物理ベースの マテリアルディスクリプションで 2つのワークフローに 対応しています Metallic-roughnessと Specular-roughnessです Metallic-roughnessを 見ていきます

    先ほどのデモと同じ蓄音機を 例にします 最初に色を白に設定します

    次に法線マップと オクルージョンマップを指定し ディテールを際立たせます

    次にメタリックのレベルを上げると 光沢が出ます ラフネスマップも追加して 部分的にツヤを消します

    最後です ディフューズカラーと メタリックテクスチャを設定します 5つのテクスチャで メッシュの見た目が リアルになります

    ではUSDの中を見てみましょう USDはシェーダノードグラフを 使います 別々のノードが結合したものです

    UsdPreviewSurfaceは シンプルなつくりで ノードは4種類です メインシェーダノードは PBR属性を定義します テクスチャサンプラは 使用するテクスチャの宣言

    Mesh Attribute Readerは テクスチャ座標などに使います UVトランスフォームノードは テクスチャ座標のスケールや 回転ができます シンプルな例をお見せします メッシュ属性が いくつか ついています

    ご覧のように メインシェーダノードの サーフェスは マテリアルのものと 結びついています USDはご覧のとおりです ネストしたマテリアルPrimの中に

    メインシェーダノードがあります

    マテリアルと結びつけるために 先ほどお見せした オブジェクトパスを使います 次は少し複雑な例です ディフューズカラーを設定した テクスチャです

    座標を読む Mesh Attribute Readerは 赤のシェーダノードです 対象とするテクスチャのサンプラは オレンジのものです そしてディフューズ属性の メインPBRシェーダ

    USDはこうなります ここにもマテリアルPrimがあります そして3つのシェーダノード

    それぞれ後続のシェーダノードに 結びついています

    以上がUSDの基礎です ご紹介した内容は サンプルフォルダにあります そこに シーングラフを作成するための サンプルスクリプトや― メッシュデータ マテリアルと メッシュグループがあります これで1つのメッシュに 複数のマテリアルを設定できます 変形やボーンアニメーションの サンプルもあります

    USDの基本構造の次は 他のフォーマットにはない USDの強みを紹介します

    複合シーンの拡張性 コンポジションと共同作業です

    拡張性については 細分割曲面で説明します 共同作業の例には コンポジションエンジンを使います

    細分割曲面から始めましょう

    細分割曲面は曲面を効率的に 表現します それに対して ポリゴンは実際の曲面の 近似値で表します この近似値は妥当な値を仮定して 設定されています 実物にどれだけ近づけるか ということです

    一方 細分割曲面は 本物の曲面を表します ダイナミックテッセレーションです カメラまでの距離に基づいて 分割したポリゴンと本物の曲面の 近似値を割り出すようなものです

    細分割曲面は アニメーションにも向いています

    ここ数年 使われています 例をあげましょう 絵文字やミー文字です

    左側を見ると ポリゴンでレンダリングするときの 分割の具合がわかります メモリフットプリントの観点で どちらがいいか明らかですね

    右側が細分割曲面の最終形です ディテールがきれいですね

    標準になっているのが OpenSubdivです これもPixarが開発しました Pixarと連携して提供している メタルシェーダは 私たちのプラットフォームに最適です GPUが速く処理できるのです

    OpenSubdivはSceneKitの 細分割曲面の基盤です

    もちろんUSDは 細分割曲面をサポートしており OpenSubdivにも活用されています 実際 USDの記述は ポリゴンメッシュデータと 細分割曲面で統一されています 分割に特化した プロパティもあります creasesやcornersなどです

    つまり細分割曲面は 高品質なサーフェスの設定には 効率的な手法なのです

    次はコンポジションエンジンです

    これは強力なオーサリングツールで 効率的な共同作業を可能にします ここで参照例をお見せします

    これは2つの子を持つ親の シーングラフです 2つのオブジェクトが 異なるかぎりは効率的です

    しかし 同じオブジェクトの複製が いくつもあったらどうでしょうか? このネスト構造は 非効率的になります 重複データを格納するからです

    大抵のフォーマットは 重複データを取り除き 参照を格納します これはUSDも同様です しかし それだけではありません

    ネストしたシーングラフの中に 仮想オブジェクトを作ります それぞれのオブジェクトが―

    固有のオブジェクトパスを持ちます そのパスでマテリアルを オーバーライドできます プロパティなどです ここでは例として 2つめの球体をオーバーライドして 色を黄色にしました

    1つめの球体の色には影響しません

    サブツリーを 丸ごと取り除くこともできます USDは これらの変更を 元データのオーバーライドとして 保持します

    これによって実現できる ワークフローをお見せします これはmacOS CatalinaのFinderです ご覧のようにQuick Lookが USDファイルを レンダリングしています 私がレイアウトアーティストだと しましょう すべてのオブジェクトを このシーンに配置するとします それと同時に―

    別のアーティストが オブジェクトの改良を行っています 例えば このイスです そのアーティストが オブジェクトを変更して このイスにします

    こうしてから レイアウトファイルに戻ると ファイルはそのままで イスが置き換わっています 参照だからです 実際 こちらで編集できます

    他のファイルに影響を与えずに 色を変えられます

    それぞれのワークフローを 切り離せるのです

    簡単なプレビューでしたが これがUSDで実現できる 新しいワークフローです

    この2つの高度な機能の サンプルもあります サンプルフォルダの中です

    細分割曲面とcreasesの例と 参照とオーバーライドの例です

    Universal Scene Descriptionの まとめです USDはファイルフォーマットであり 3Dコンテンツをオーサリングする ライブラリです アセットをUSDZに変換する ワークフローをお見せしました 新しいツールのusdzconvertは OBJ glFT FBXなどを USDZに変換します PythonのUSDZツールが ダウンロードできます プリコンパイルされたUSDライブラリや サンプルスクリプトも含まれます

    詳細はWebをご覧ください 明日3時からUSDとUSDZの ラボがあります 金曜9時に“Advances in AR Quick Look”もあります

    ありがとう (拍手)

Developer Footer

  • ビデオ
  • WWDC19
  • USDを使用する
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード(英語)
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    Apple Developerアプリを入手する
    Copyright © 2025 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン