[2023版]3dsmax Python開発事情|3dsmax python入門 #00

 

前置き挨拶

 まいどご無沙汰しております。おかげさまで3dsmax のツール開発に関するチュートリアルが細く長く読んでいただけているのですが、内容的にもはや古くて使えない(3dsmax2022以降では使えない)ため、最新の状況にアップデートして、3dsmax におけるPython を用いたツール開発のチュートリアルとして新たに書こうと思います。

 これを書いているのは2023年5月、私の所属しているプロダクションでは今のところ3dsmax 2022が主力、2023の検証が進んでいて、今後2023を使うプロジェクトも増えてくるかな、といった状況です。

 今回新たに初歩的なチュートリアルを書いてみるにあたり、この記事はその第0回として、2023年5月現在の3dsmax の事情について書いてみます。

MaxPlus → pymxs へ

 個人的に大きな問題だったのは、以前のチュートリアルでも使用していたMaxPlus というクラスが丸ごと廃止になったことです。厳密には廃止というか、Python2.7用として用意されていたMaxPlusについてPython3 では提供しない、という決定がされたという形でした。これのおかげで既存社内ツールの大幅な書き直しが発生して「超」大変でした。

MaxPlus とはなんだったのか

 この話はあまり初心者向けではないので読み飛ばしていただいて構いませんが、MaxPlus の廃止は個人的にかなりショッキングな出来事だったので少し書いておきます。

 MaxPlus というのは3dsmax に用意されているC++API(SDKとして提供されているもの)をPython でラップしたラッパーのようなパッケージで、これを使うことで、C++API を使わないとできなかったようなことがかなりの部分でPythonのみで書けるようになりました。私はこれに大喜びし、積極的にMaxPlus を使って3dsmax 2020までのツール開発を行っていました。

 ところが、3dsmax が2020から2021になるとき、Python 環境は3のほうがメインになり、MaxPlus はno longer available という状態になりました。Python3への移行は必至だし、そうなれば過去のツールが何一つ使えないという状態が見えてきました。

 MaxPlus はものすごく強力なパッケージだったのですが、内容がC++APIのラッパーに過ぎなかったこともあり、MaxScriptからPython に手を出していった多くの開発者にとってとっつきにくいものだったのだと思います。そのためユーザが増えず、Autodesk としては、「これいらないんじゃね?」という話になったのではないかと邪推しています。たしかに作ってる側からすればコスパ悪い状態だったのでしょうね。

全書き直し発生

 うちの社内では、3dsmax2021はスキップし、主力は2020→2022へと移行していきました。支援ツールについても、3dsmax 2022をターゲットにし、Python2から3へのリライト、MaxPlus からpymxs へのリライトなどを進めました。一部MaxPlus でないと使えない機能については、C++ を使ってMaxScript を拡張し、それをpymxsから呼ぶ、といった回りくどいやり方で実現したものもあります。このコストをどうしてくれるんだAutodeskさん…

Pythonマイナーバージョン差異問題

 さらに、3dsmax 2022用に開発したツールが、2023では動かない問題もありました。これはPythonのマイナーバージョンが違うことにより、.py ファイルをコンパイルして生成されるバイトコード.pyc ファイルの中身が異なる、という現象に起因したものでした。

 配布用のインストーラにはpyc ファイルを同梱するようにしていたため、2022用のpycバイナリが2023では動かないという問題はけっこう大きく、2022用と2023用を別ツールとして用意しなければならない、という状況になりました。3dsmax 2021、2022は3.7系、2023は3.9系であることがこの問題の原因です。今後2024以降でもPythonのマイナーバージョンが更新されることは十分想定できるので、今後3dsmax のバージョンごとにインストールバイナリを用意しなければならない、という事態になりそうです。

2023年版チュートリアルについて

 以上のような状況を踏まえて、2023年時点での3dsmax のPython開発入門という位置づけで、UIを持ったかんたんな支援ツールの開発をどういう風に始めれば良いのか、という部分について、詳しく解説したチュートリアルを書いていこうと思っています。このチュートリアルについては過去のチュートリアルと同様、全く初めての人がこれから始めるという状態を想定して、かなり冗長に説明していくつもりです。

 一方で、ある程度書いている人向けの話というのも発信していくと良いかなと思うので、チュートリアルとは別にそういう記事も書いていこうかなと思っています。ひそかに期待してもらえると嬉しいです。

 けっこうこのブログ全般、ほとんど反応はないけれど実は見られているらしい、という状態で、書いている本人としてはなかなかモチベーションが上がらないので、もし役に立ってましたらSNSでのシェアとかしていただけますとアガります。それによって更新頻度が上がるかは不明ですが、要望などもあれば寄せていただけると記事を書く参考になります。どうぞお気軽にご活用くださいませ。