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とかダイアログが用意されている
既存のものをつかえないのだろうか。
AfterEffects Extension(CEP) TimeLine Launcher(React)
プロジェクト難読化スクリプト1Gを追加
何かしらExtendscriptではなくjsの追加ライブラリで作った値やオブジェクトを渡すようなことをしてみたいと
おもったのですが、パッと簡単なものが思いつきませんでした。
基本的にExtendscript側では簡単なことしかしないようにしたいですし
そうなると限られてくるよなー、便利なモノ、、、思いつかんなーと悩んでました。
ということで、久々の意地悪系スクリプトです。
まーほぼ使うことはない意地悪系スクリプトですが
これまでにはエクスプレッションを含むトランスフォーム、パラメータのフルベイクのようなものが代表例です。
ちなみにこれは尺にもよりますがaep自体が1GBを超え、起動するのに1時間以上かかるようなものになったりします。
さて新たにつくった意地悪系スクリプトはプロジェクトの難読化スクリプトです。
フッテージ、レイヤー、エフェクトそれぞれの名前を
jsに追加したライブラリから出力したハッシュ値にしてみようってことですね。
個人的にはそこまで意地悪でもないかなとは思います。
プラモデルの説明書やバイクのサービスマニュアルなども部位に割り振られたアルファベットなどと
番号の組み合わせだったりするわけで名前を持ってヒントとする、、、
名は体を表すというのが無用に親切であるというだけ。
AfterEffects Extension(CEP) TimeLine Launcher(React)
単機能スクリプトを収束
以前のエントリーは旧来のextendscriptのローンチャをCEP(React)で単純置き換えしたわけですが
TimelineLauncherとして1ファイルだったExtendscriptを分割し、
多少の手入れは必要なもののindexになるtsで、モジュール的にimportすることで
使用可能なことがわかったのでLaunchPadの整理を兼ねて
これまでに作った単機能のスクリプトを実装しています。
その際、やはり数が増えて煩雑になることで何がなんだかわからないような状態になるのをさけるため
マウスオーバーで表示されるツールTipをつけました。これもcssだけでつけることができるのでとても楽です。
さらに、ディレイなども気軽に自由に設定できる即時性は精神衛生上もとてもよいです。
ツールTipは純正のLaunchPad使用しているときにつけたいなーおもってたんですよね。
ファイルパスの表示は別にいらなくね?とも思ってましたし 笑
AfterEffects Extension(CEP) 開発環境考 その2
Webpack5 + React + Typescript
CEP開発にReactを導入してみました。
というのも、、、いささか古くなったので自社サイトのリニューアルを検討しています。
どうせなら、現在のphpを基調とした仕様から脱してみようと考えています。
それならばReactかなということで触り始めてみました。
導入のチュートリアルをこなし、まず思ったのが
html、css、jsという根本こそ同じだけれど書き方とか考え方とかは結構別物ってかんじです。
率直な感想はモダン。
いきなりこのReactを用いて本番でサイトのリニューアルに手をつけると、
すぐに再リニューアルが必要になるようなモノになるか
最悪は途中で諦めてReactの導入を断念、元に戻るになりそうだなと感じたので
すこし肩慣らしをしようということで、SPAでのUIを作成するアイティアが浮かびやすい
CEPをいくつか作ることでテストパイロットとしてみようと思います。
AfterEffects Script OutputPath Property Short-Hand
AEのレンダリング設定に関しては、最初からずっと引っかかるところがあるわけですが
実際のところは、気軽に使えると便利なカスタムプリセット用のプロパティが用意されているので
これを再利用してみようかなーと思い立ちました。
カスタムプリセットを作るのもいいですが、正直増えると煩雑でわけわからんくなるし
かといって、ファイル名を手打ちすると日付など一部フレキブルじゃなくなるプロパティもある。
というのが発端です。なお手打ちはミスの多い筆者はぜひ避けたい指定方法です。
ということでスクリプト使ってプリセット用プロパティのショートハンドを利用することにしてみました。
CLI(コマンドライン)のオプションみたいな感じで理想は1文字ですが
そうでなくても意味付けを損なわず極力少なくというのが目標です。
FBX SDK Python FBX Version Convert Script

あー、こーゆーのもあんのね。
というのがFBX SDKの記事を目にした時の第一印象でした。
C4D、Blenderを主に使用しているのでそんなのどうつかうん?という感じです。
Mayaを使っていた頃にはなんとなく存在自体は知っていた気がしますが
それで何ができるかとかはしらず、さらにいえば自分には縁のないモノであろうということで
忘れ去っていました。
では今回なぜ使うことになったかと言いますと、ポメロ越田くんから
Blender→3dsMaxへのデータコンバートでうまくいかないシーンデータがある
との相談をいただいたからなのですが、、、
その際はもちろん可及的速やかに確実な検証込みのデータ渡しが必要ですので
そー言った場合の前提として、立ってるモノは親でもつかえの精神で最短・確実を目指します。
Blender→(fbx)→Cinema4D→(fbx)→3ds Max
という解を検証の結果導きだせました。
これはまさに最短でかつ確実性を重視した手持ちツールつかうパターンです。
早速、4シーンをコンバート・確認しデータを提供させていただきました。
備忘録 Keka cli
ファイルを圧縮する際は7zを使用しています。なぜかというとMacでもrarを使用できないかと
以前Mac版のWinrarを試し、見た目のうえでは圧縮こそできるものの
正常に展開できないという一番厄介な状態になり諦めました。
ということで、高圧縮でかつWindowsを含めて展開に困らないということでの選択です。