FBX Python SDKでBlender と 3ds Max間の出力シーンの画角アニメーションの変換スクリプトを
書きはじめてみています。
以前にアンダースキャンレンダリング用のスクリプトを書いた時にほぼ同内容の変換をやった気になっていましたが
ちょっと違っており、かつメモとしてあって良さそうなもんなのでPythonの関数としてママをおいておきます。
mm、インチ、ディグリー、ラジアンなど値が入り混じるワナにハマることがあるので気をつけなきゃだなー
なんて思いつつ、mathのみで成立させられるなんて便利だなーなんて思ったりもしました。
FBX Python SDK Blender ↔︎ 3ds Max
Camera Animation can Not be converted !

普段は3ds Maxを日常的・能動的に使うことがないので詳しい事情はわからないのですが
カメラに関してちょっと特殊な感じがしています。
Film Offset
まずMayaやCinema4Dでいうフィルムオフセット、Blenderでいうレンズ→シフトがありません。
代わりなのか、そういうわけでもないのか、仰・俯角を補正するモディファイヤがあったりします。
とかくフィルムオフセットがあるシーンをMaxに渡した際は
最終的には目合わせや大きく出力してトリミングするといった手法をとることになると思います。
Lens Animation
そして少し前に発覚したのがレンズのアニメーションに関して。
Maxからは水平視野角のみしか出力されないようです。
もちろん、焦点距離は諸条件から連動した絶対値になるので
あえて持つ必要がないという考え方も理屈ではわかります。
が、この先困ったことに遭遇することがおそらくそれなりの頻度で発生しそうな気がします。
ユーティリティ GhostScriptとPythonでPDFを単純圧縮
PDFに接する機会が日常的にあります。コンテや設定資料などをPDFで受け取ったり
請求書をPDFで送信したりと日常的に使います。
今回はChromeでページプリントアウトをPDFとして保存する際に
おそろしく重い場合があるのでそれを単純に圧縮するというのを
GhostScriptとPythonでやってみました。
実寸A4以下の領収証を出力した時に18MBとかになるとどんだけハイクオリティなんだよ
と思うことがしばしばありました。exrなのかと思うほどの重さです。
それも画像なしテキストとパスのみでそれっておかしすぎる。
以前は手作業で保存しなおしたりしてたんですが、それなりの数があるとめんどくせー。
しかもイヤイヤやるから名前の粒もそろわねー。
てことで、後学のためにスクリプトでも書いてみようってかんじです。
楽をするための努力なら、まずまずできるタイプです。先々を見越して打算的に努力できます。
Continue Reading >>Blender Python Script Grease Pencil to Data
(Convert to TimeRemap Data for AE)
まず最初に
このGreasePencilってレンダリングに関してeeveeにしろCyclesにしろ重いなー
こんな状態なら必要分だけ書き出した方がいいなー
と思っていたところからこの試みは始まったわけですが、、、
この問題はそもそもビューポートレンダラーを使用すれば解決するというオチでした。
※海外フォーラムでその記事を読んだ際には
えーー!!!?
と思ったのと同時に
いや、そらそうか!
とも思う爽快な納得感が春風のように吹き抜けました。
しかし、ともあれBlender上のキーフレームデータを
AEに渡すことができるというのはアニメーションのタイミング調整をする必要が発生した時などに、
まずまず有益だろうとおもうので一応自分で納得できるところまで進めてみました。
過去エントリー
つまり、ClipStudioタイプのタイムシートcsvです。
Blender Python 開発中セレクトダイアログを使う時はPySide
セレクトダイアログのシンプルなAPIが当然あるとおもって取り掛かったんですが、、、、
ネットで情報をあたりつつ確認のため公式Python APIをみてみるも恐ろしくごちゃごちゃしておる。
本格的にBlenderとマッチしたUIをつくるようなプロダクションレベルに仕上げる時は
そうしたいという意向もなくはないが、
開発段階でサクッとカジュアルに保存先としてディレクトリを指定したいぐらいの場合は
ちょっとしたことなのでその必要は全くないのです。
ということで、そこはショートカットしたいのでtkとかPySideとかダイアログが用意されている
既存のものをつかえないのだろうか。
FBX SDK Python FBX Version Convert Script

あー、こーゆーのもあんのね。
というのがFBX SDKの記事を目にした時の第一印象でした。
C4D、Blenderを主に使用しているのでそんなのどうつかうん?という感じです。
Mayaを使っていた頃にはなんとなく存在自体は知っていた気がしますが
それで何ができるかとかはしらず、さらにいえば自分には縁のないモノであろうということで
忘れ去っていました。
では今回なぜ使うことになったかと言いますと、ポメロ越田くんから
Blender→3dsMaxへのデータコンバートでうまくいかないシーンデータがある
との相談をいただいたからなのですが、、、
その際はもちろん可及的速やかに確実な検証込みのデータ渡しが必要ですので
そー言った場合の前提として、立ってるモノは親でもつかえの精神で最短・確実を目指します。
Blender→(fbx)→Cinema4D→(fbx)→3ds Max
という解を検証の結果導きだせました。
これはまさに最短でかつ確実性を重視した手持ちツールつかうパターンです。
早速、4シーンをコンバート・確認しデータを提供させていただきました。
Cursor Editor
現状テキストエディターは気に入っているSublimeTextなわけですが
以前3dsMaxでPythonを使うにあたってVS Codeが指定されていたためそちらをつかっていました。
もちろん単純な使用感は普段使っているわけではないのでちょっと違うなーと思いつつも
指定されているだけあって3dsMaxとの連携はなかなかよかったんですよね。
でさらに、web制作関係でもVS Codeで書かれていることがとても多く
標準ソフトといっても決して大袈裟じゃないくらいに当たり前にそれ前提のサンプルコードが多くみられます。
ということもあって、そのうち本格的に環境を作って試してみんべかなーと思っていたんですよ。
そうこうしてたら、そのforkでChat GPTが搭載されているテキストエディタがあるっつーじゃないですか!
これはタイミングの妙、巡り合わせだと思いつつ早速つかってみています。
ただ正直いうとVS Codeに不慣れなのもあるからか、あまりその恩恵は享受できていませんが
普通にVS Codeの標準機能(git関係とか)に便利な点も多くあり、メインとして移行する可能性が高いと思っています。
ただ、具体的にここがいいとは言えないものの
SublimeTextの具合がとてもいい塩梅(Macをメインで使ってるのと同様の感覚的なもの)なので
並行して使っていくことになるとは思っていますが直近はCursorを使い倒してみようかなーと計画しています。
まずはWeb制作で本領を試してみたいなーと思っています。
Autodesk 3ds Max WorkReport logger Python Script
前回とりあえず環境を確認して、パッケージを色々といれてみたので
確認も兼ねて、少しユーティリティ的なスクリプトでも書いてみようということで
作業引き継ぎ時に必要になりそうなシーン情報をメモファイル出力するものを書いてみました。
python自体は至って普通ですね。
標準のライブラリのみなのにカスタマイズされていて
解決不可能な変な事象が発生します!
みたいなことは発生しません。
Autodesk 3ds Max python環境確認
・3rd Party パッケージ
いつも何かと世話になっているスタジオポメロ越田くんから
Maxが数ヶ月ほど1ライセンス遊んでしまいそうなのでつかってみますか?
というお話をいただいたので借り受けさせていただきました。
3ds Maxはたぶん2015年あたりから触ってませんが久々なのもありみてみたいと思いました。
とはいえ安価なツールではないので、先方で必要になれば当然即日返上します。
Maxは総じて可もなく不可もなくという感じで印象としては普通です。
素人でも程々わかりやすく、プロだとところどころ不便という感じのイメージ。
自分の嗜好性かメインの業務がキャラクターアニメーションなどそっち系であればつかうのは必然でしょうけれど
いかんせん、アニメ業界に限っていうとユーザー人口も多く層も厚いですし、
使っていて、なんか違うんだよなーっところがあるので自分で金を払ってまで使おうとまでは
思ったことがありませんでした。
以前に使用していたのも、8bitからお借りしたライセンスだったと記憶しています。
Blender Python pipでパッケージをインストールしてみる
Pythonの環境を整理するためにいじっていて
そういえば、BlenderのPythonてどうなってんだろう?と思って調べてみました。
Blender自体もHomebrew caskでパッケージの管理をしてるので常に新しい環境になっています。
AfterEffects Script system.callSystem()が
動作しない on Mac Rosetta
Mac mini M1を使い始めて、割と早い段階で気づいてはいたんですよね。
検証していなかったので、エントリーなどはしませんでしたが
このたび、system.callSystem()を使っている数種類のScriptを試して見ました。
スティミュラスイメージ コーポレートサイト制作

https://stimulus-img.com/index.html
主にCGアニメーションの制作を行っている株式会社スティミュラスイメージの
コーポレートサイトのリニューアル制作を担当させていただきました。
といっても現状もサイト自体はあるのですが、文言と構成以外は全て構築したという感じです。
主にはデザイン(アニメーションを含む)・コーディングということですが、
制作にあたって既存のサイトデータを取得・データ変換するための
pythonツールなんかもつくったりしましたけども。