ProjectARのアプリアイコンProjectARのアプリアイコン

ProjectAR

Blenderのシーンを、目の前の部屋にライブで。

BlenderアドオンとiPhoneアプリが連携し、開いているシーンをローカルネットワーク経由で拡張現実(AR)にストリーミングします。オブジェクトを動かす、モディファイアーを追加する、マテリアルを変える。そのたびにARビューが1秒足らずで更新されます。

Blender

ARでモデルを確認するには、変更のたびに書き出し、転送し、開き直すのが普通でした。ProjectARならBlenderを開いたまま、変更された部分だけを送信。テーブルの上のモデルは、いつでもファイルの中のモデルそのものです。

最大601秒あたりのトランスフォーム更新回数
最大10オブジェクトごとの1秒あたりのメッシュ更新回数
3デスクトッププラットフォーム:Windows、macOS、Linux
0追加でインストールが必要なPythonパッケージ

ハイライトをチェック。

  • 作業しながら、ライブで。Blenderで移動、回転、拡大縮小すると、テーブルの上のオブジェクトも追従します。

  • モディファイアーも反映。評価済みのジオメトリを含め、ビューポートに見えているものがそのままARに現れます。

    Blender
  • インスタンスも、散布も。コレクション、パーティクル、Geometry Nodesのインスタンスも、設定した上限までストリーミングできます。

  • 複数のスマートフォンで、1つのシーンを。スマートフォンはいつでも参加でき、後から加わった端末にもシーン全体が届きます。

  • 送る内容を選べる。表示中のすべて、選択したものだけ、または1つのコレクション。任意のオブジェクトをARから外すこともできます。

    Blender
  • 自動で見つかる。BlenderはBonjourによってアプリのNearbyに表示されます。IPアドレスの手動入力にも対応しています。

すべてを、ストリーミング。

アドオンが送るもの、そしてスマートフォンを快適に動かし続ける工夫。

  • ライブストリーミング。オブジェクトのトランスフォームは最大毎秒60回更新。ジオメトリやマテリアルが変わるとメッシュを再送信します。

  • 送るのは変更だけ。シーン全体を送るのは、デバイスの接続時、ファイルを開いたとき、単位スケールの変更時、またはResyncを押したときだけです。

  • モディファイアーを適用。評価済みのジオメトリを、ビューポートの表示どおりに送ります。

  • インスタンス。コレクション、パーティクル、Geometry Nodesのインスタンスを、設定した上限まで送ります。

  • 送る内容を選択。表示中のすべて、選択したもの、または1つのコレクション。任意のオブジェクトをARで非表示にできます。

  • ARの原点。ワールド原点または3Dカーソルがタップした場所に来るので、原点から離れたモデルも簡単に配置できます。

  • 更新を一時停止。重い編集の間はストリームを止めておき、再開するとスマートフォンが追いつきます。

  • 基本的なマテリアル。Principled BSDFのBase Color、Metallic、Roughness、Alphaに対応します。

  • 自動検出。すべてのネットワークインターフェイスでBonjourを使用。IPアドレスを手動で貼り付けることもできます。

  • 複数デバイス。複数のスマートフォンを同時に接続でき、それぞれにデータ量の表示と切断ボタンがあります。

  • 設定を記憶。ポート、更新レート、各種上限を保持し、Blenderの起動と同時にサーバーを開始することもできます。

  • 処理の遅いスマートフォンも守る。オブジェクトごとの三角形ポリゴン数とインスタンス数に上限を設け、遅れたデバイスは自動で再同期します。

仕組み。

Blenderのデータを読み取るのは常にメインスレッドだけ。ネットワークスレッドに渡るのは、完成したバイトフレームだけです。

  1. シーンを監視

    depsgraphハンドラが、変更されたオブジェクトをすべてマークします。

  2. フレームを生成

    Blenderのメインスレッド上のタイマーが、削除、メッシュ、トランスフォームをバイトフレームに変換します。

  3. 各スマートフォンへ送信

    デバイスごとに1つの送信スレッドが、完成したフレームを届けます。

  4. 互いを見つける

    Bonjourがサーバーを_viewar._tcpとしてアドバタイズします。IPアドレスの手動入力にも対応しています。

  5. 配置する

    メッシュはRealityKitのY軸上向きの空間に届きます。面をタップすると、シーンが配置されます。

ネットワーク上の1フレーム

長さ4バイト · ビッグエンディアン
種類1バイト · 1はJSON、2はメッシュ
ペイロードJSON:hello、clear、transforms、remove、ping · メッシュ:頂点位置、法線、UV、三角形インデックス、三角形ごとのマテリアル(リトルエンディアン)

プロトコルのバージョン1はインスタンシングに対応していません。各インスタンスはTrees/Pine#0.12のような固定IDを持つ通常のオブジェクトとして送られ、多数のインスタンスで共有されるメッシュは更新ごとに1回だけ三角形分割されます。

古いiPhoneにも、やさしく。

パネルは作業に合わせて三角形ポリゴンとインスタンスを数え、シーンが重くなる前に警告。スキップしたものも一覧で表示します。

デフォルトのポート51515TCP(mDNSはUDP 5353)
オブジェクトあたりの三角形ポリゴン300,000これを超えるオブジェクトはスキップ
インスタンス500これを超えるインスタンスは送信されません

毎秒の更新回数

デフォルトは30回。アニメーションの重いシーンでは15〜20回がおすすめです。

シーンの規模

シーン全体の三角形ポリゴンは、約100万以下に抑えてください。超えるとパネルが警告します。

プレビュー中は

ビューポートのサブディビジョンレベルを下げる、不要なものを隠す、または1つのコレクションだけをストリーミングしましょう。

スカルプト中は

更新を一時停止し、あとからスマートフォンを追いつかせましょう。

1分で、つながる。

コンピュータとスマートフォンを同じネットワークにつなぎ、ファイアウォールでBlenderを許可すれば、アプリが見つけてくれます。

  • Windows

    プライベートネットワークでBlenderを許可します。

  • macOS

    Blenderにネットワーク上のデバイスの検出を許可します。

  • Linux

    ファイアウォールを使っている場合は、2つのポートを開きます。

  • どんなネットワークでも

    家庭用ルーターかスマートフォンのテザリングが最適です。

  • トラブルシューティング

    よくあるつまずきの解決方法。

技術仕様

アドオン
Blender 4.2以降(5.2 LTSで動作確認済み)、Windows、macOS、Linuxに対応。追加のPythonパッケージは不要で、Bonjourライブラリはwheelとして同梱されています。
アプリ
ARKit対応のiPhoneまたはiPadで動作するProjectAR iOSアプリ
ネットワーク
コンピュータとスマートフォンが同じWi-FiまたはLANに接続され、クライアント分離が無効であること
ストリーミング対象
メッシュ、カーブ、サーフェス、メタボール、テキストの各オブジェクトとそのインスタンス。コーナーごとの法線とアクティブなUVマップを含みます
マテリアル
Principled BSDFのBase Color、Metallic、Roughness、Alpha
今後対応予定
ライト、カメラ、画像テクスチャ
プライバシー
サーバーはStart Serverを押したときだけ起動し、ローカルネットワーク上でのみ待ち受け、インターネットには一切接続しません

その他のツール

Windows

Windows Defenderファイアウォールの確認が表示されたら、プライベートネットワークでBlenderを許可してください。Wi-Fiのプロファイルがパブリックになっている場合は、プライベートに変更します。

Apple Bonjourをインストールする必要はありません。検出機能は組み込まれています。

macOS

確認が表示されたら、Blenderにローカルネットワーク上のデバイスの検出を許可してください。この設定はあとから「システム設定 › プライバシーとセキュリティ › ローカルネットワーク」で変更できます。

Linux

ufwなどのファイアウォールを使っている場合は、TCP 51515とUDP 5353を開いてください(mDNS)。

どんなネットワークでも

ゲストネットワークや、多くのオフィス・大学のネットワークでは、デバイス間の通信がブロックされています。家庭用ルーターかスマートフォンのテザリングなら確実に動作します。

自動検出がうまくいかない場合は、アプリにコンピュータのIPアドレスを入力してください。パネルには待ち受け中のすべてのアドレスが表示されます。

トラブルシューティング

ポートを開けない。別のプログラムか、もう1つのBlenderが使用しています。設定で別のポートを選び、それをアプリに入力してください。

アプリがコンピュータを見つけられない。原因はたいていファイアウォールかネットワークです。まずIPアドレスを手動で入力して、検出の問題か接続の問題かを切り分けましょう。

接続したのに、何も表示されない。面をタップしてシーンを配置してください。オブジェクトがビューレイヤーで表示されているか、ストリームが空の選択に限定されていないか、更新が一時停止されていないかを確認し、Resyncを押します。

タップした場所からモデルが遠い。モデルがワールド原点から離れているためです。AR Originを3D Cursorに設定し、カーソルをモデルにスナップしてください。

色が違う。読み取られるのは、ノードが接続されていないPrincipled BSDFの値だけです。テクスチャを使ったBase Colorには、マテリアルのビューポート表示カラーが使われます。