syghの新フラグメント置き場

プログラミングTipsやコード断片の保管場所です。お絵描きもときどき載せます。

自作MetasequoiaプラグインをGitHubで公開しました

かつて2007年~2008年頃、こっそり自分のためだけに開発したMetasequoiaプラグインソースコードがHDDの肥やしになっていたので、Gitの練習も兼ねてGitHubに移管・オープンソース化しました。ライセンスはMITです。

今回ソースコードを公開したのは下記のプラグインです。すべてUV編集関係のミニツールになります。

プラグイン 機能概要
SyghMQUV2SVG.dll UV展開図をSVGファイルとして出力
SyghMQUVBBox.dll UVを境界ボックスベースで数値入力変形
SyghMQUVImplant.dll UVをオブジェクト間で移植
SyghMQUVMatrix.dll UVをSRT行列ベースで数値入力変形
SyghMQUVSelectUtil.dll UV選択操作のユーティリティ

Metasequoia 3/4用のビルド済みバイナリ(32bit/64bit)は下記からダウンロードできます。ヘルプ・取説としてテキストファイルも同梱しています。
github.com

とはいえ、オリジナルはC++を使い始めてまだ2年かそこらのときに書いたコードであり、今改めて見直すとそれはもうひどい有様でとても人様に見せられるレベルではなかったので、Visual C++ 2013とMFCを使って最大限書き直しました。VC2015はCRTに致命的なバグを抱えているため*1、今回は見送っています*2。公開したソースコードはいずれも規模がとても小さいので、MFC標準DLLやC++11規格の入門としては良い教材になるかもしれません。MFC自体すでに枯れた技術で、真新しさや面白みはほとんどありませんが……

なお、今回の公開はあくまでソースコードの共有とメンテナンスが目的です。リポジトリのreadmeやWikiにも記載しているように、新機能の開発に関しては今後行なう予定はありません。理由は察してください。

Metasequoiaの今後

Metasequoiaに関しては3DCGを始めた学生の頃からお世話になっていました。直感的なモデリングに特化したツールで、比較的安価であるにもかかわらずプラグインによる拡張性が高く、果てはボーンやモーフによるアニメーションまでMetasequoia上で実現する強烈なプラグインKeynote」が出現したことにより、当時のホビーCG界隈は最高潮に達していたのではないでしょうか。現役ゲームデザイナーによるHow-to本も多数出版されていたと記憶しています*3。ただ、Metasequoia 4の開発ロードマップをめぐってその後Keynoteの開発者mqdl氏との軋轢が深まるなど、今は全体的に活気がなくなっているような印象を受けます。これまでユーザー開発者から提供・公開されていたおなじみのプラグインも、32bit版Metasequoiaでしか使えず、64bit版Metasequoiaに対応するためにはプラグインの64bit化が必要となるにもかかわらず、一向に64bit対応が進んでいないどころかMetasequoiaプラグイン開発自体が縮小傾向にあるように思えてなりません。かつてプラグインを公開していたサイトが閉鎖されてしまったケースも多々あります。
また、プラグインSDK配布ページに記載されている下記の1文が、さらにプラグイン開発者離れを加速させてしまっているように思います。

「作成したプラグインは自由に配布することができますが、Metasequoia本体 (Standard/EXなど全エディションを含む) に搭載された機能と競合することを目的とした等価なプラグインを作成して配布することを禁止します。」

ほかの3DCGソフトウェアと比べるのはどうかとも思うのですが、このように(たとえ機能が競合したとしても)プラグイン開発に制限を課したり禁止したりするなど聞いたことがありません。プラグインによるクラッキングなどの違法行為や特許侵害は論外ですが、正当な手段と目的で開発されたプラグインを、機能が競合するからといって排除しようとするなど愚の骨頂です。せめて適用対象をもっと明確にしていただきたいところですが、議論は一向に進んでいないようです。何が怖いかというと、せっかくオープンソース化したソフトウェアが鶴の一声で公開停止を余儀なくされるというのは個人的にも痛いし、またそれ以上にそういった理不尽であいまいな規制はソフトウェアの健全な発展に悪影響を及ぼすことが予想されるからです*4

Metasequoiaはその後もバージョンアップを重ね、レイトレーシングやボーン/モーフまでをも独自に実装するなど、これまでプラグインによって実現されてきた機能を着実にネイティブ実装しつつあるようですが、このまま行くとコミュニティ総体としては先細りになってしまうのではないかと危惧しています。すでに現在のMetasequoiaは、2010年頃までのメインユーザー層が想定していた方向性とは違う向きに舵を切りつつあるように思います。ユーザーが欲しがっている(ように見える)ものをただ与えることがクリエイターやエンジニアの仕事なわけではないことは確かですし、個性全開でがむしゃらに突っ走った結果が最終的にユーザーのニーズにマッチして成功するという例は往々にして存在しますが、あえて余計な機能の追加をすることなくシンプルであり続ける、そして足らないものはコミュニティに任せる、というのも一つの選択肢なのではないか、と自分は思います。

閑話休題。とりあえず自分は今後どうするのかというと、LightWaveを持っているんだからさっさと使いこなせるようにがんばります。Metasequoia向けに実装したこのプラグインも、せっかくなのでLightWaveプラグインとして実装し直してみようかと考えています。

*1:Visual Studio 2015 / 2017 で発生する可能性がある _snscanf_s 関数の問題について | Microsoft Docs

*2:VC2015で導入されたUniversal CRTにおけるバグが原因で、MFCDDXが正常に機能しません。Windows SDK 8.1を利用し、CRTをスタティックリンクするという条件の両方に該当する場合、VC2015以降は使わないほうがよいです。

*3:Keynoteでのアニメーションは、まるで日曜大工の道具で人が住む家を建てるようなものです。無償のプラグインに依存しすぎるということは、プラグイン開発者の気分次第で開発が停滞・終了したときに技術が廃れたり陳腐化したりする危険性もあり、できれば避けるべきバッドノウハウなのですが、使い慣れたツール上で制約を乗り越えながら別次元の高度な機能を実現すること自体は素晴らしいチャレンジだと思います。

*4:同様に、ソフトウェア特許というものに対しても自分は懐疑的というよりむしろ反対派です。かつて松下電器産業がアイコン特許(笑)を傘にジャストシステムワープロソフト「一太郎」を訴えた問題がありましたが、当時所属していた研究室の助教授は「松下はナンセンス極まりないね」と強く批判していました。