YT-Bridge for Blender and ModoをGumroadオンラインストアでリリースいたしました。このツールは、BlenderとModoの間でシーンデータを双方向に交換するためのブリッジツールです。
YT-Toolsには、External Clipboardという機能があり、BlenderとModoやLightWaveの間でメッシュデータをコピペすることができます。これはもともとYT-ToolsでBlenderの中だけでModoライクなコピペを行うためのクリップボードを拡張したもので、設計上ポリゴンやメッシュ属性以外への拡張には無理がありました。YT-ToolsのExternal Clipboardをリリースしてから、カメラやライトなどの他のシーンデータも転送して欲しいとのリクエストに対応するため、ブリッジツールを一から設計し直したのがYT-Bridgeです。
下記がYT-BridgeとYT-ToolsのExternal Clipboardでできることの違いです。
YT-Bridgeは、YT-Toolsと同様に外部ファイルを経由して、データを転送しまします。プッシュ操作で指定したアイテムの情報を外部ファイルに出力し、読み込みを行うアプリ側でプル操作を実行して外部ファイルに出力されてデータを読み込みます。YT-Bridgeでは手動のプッシュ・プル操作でデータの転送を行うフローにしています。IPCなどのアプリケーション間通信を使った自動転送も検討しまいしたが、セットアップの煩雑さや通信トラブルが想定されることから、シンプルに手動でプッシュ・プルするやり方にいたしました。
また、YT-Tools External Clipboardでは、転送速度の向上を期待してOSのクリップボードを経由する方法も選択できるようにしていましたが、転送速度が逆に遅くなったり転送サイズに上限があったりなどメリットが少ないためこれは廃止しました。そのかわり内部データをmsgpackを使ってバイナリーでシリアライズするオプションを用意いたしました。JSONのテキスト形式よりも外部ファイルのサイズが小さくなるためバイナリ形式の方が転送が高速になる場合があります。
想定している主なワークフローは、Blender上のシーンをマスターとしてメッシュデータなどをModoに転送し、モデリングの修正などを行い、修正データをBlenderにプッシュして書き戻すというフローです。Blenderから修正データをプル操作でシーン上の同名のオブジェクトに上書きする際に、念の為シーン上の上書き前のオブジェクトのバックアップと取っておきたい場合があると思います。Duplicate and Replace Objectsを有効にしておくと上書きするオブジェクトの複製を作成したのち、上書きを実行します。
データ変換の詳細に関しては、YT-Bridgeのドキュメントを参照していただきたいと思いますが、YT-BridgeではModoのインスタンスアイテムをBlenderのリンク複製に変換しています。ModoのインスタンスとBlenderのリンク複製はほぼ同じ目的を実現する機能なのですが、Modoのインスタンスアイテムが実体を持つアイテムをソースとして参照しているのに対し、Blenderのリンク複製は共通の(MESHなどの)データを複数のオブジェクトが同等レベルで共有しているという違いがあります。この辺りはアプリケーションのデザインの違いからかくるもので大変興味深いです。