BMS, Movie, Illustrations, Programming

週報 2024/3/3

週報 2024/3/3

今週やったこと

なかなかFRENZに向けての映像制作が始まらないなあ!?!? やる気あるのか!?

  • タペストリーの宣伝
  • コミケ申し込み完了
  • DAWのインストール
  • 主要音源のインストール
  • DTM
  • 今後のBMS公開に向けた準備
    • アンケート調査
    • 過去プロジェクトファイルのサルベージ
    • リリース計画の検討
    • クロスワードについての調査
  • 過去イラスト作品のアーカイブの公開作業
  • プロシージャルあるいはジェネラティブなグラフィックデザインツールについての調査
    • Processing を試す
    • Blender の force field について勉強
    • Blender Python API について勉強
  • DAW最新バージョン購入
  • たこ焼きを作った
  • カキ鍋の喫食

レガシーなDAWと音源のインストール

ソフトウェアが数年で使えなくなってしまうという状況は近年よく見られる。特に、After Effects については Adobe が古いバージョンを公開しなくなったことから状況は最悪だった。しかし、DAW については結論から言うと比較的良好で、どうしてもサルベージしたいと思っていた曲のプロジェクトファイルに関しては全て無事に読み込むことができた。しかし、古いものを使い続けるのは良くないので、早めに新しいバージョンのDAWや音源を購入したい。

Melodyne のインストールで一苦労

自分の勘違いで2時間以上消し飛んだので、ここにまとめておく。

  • Studio One に付属しているのは Melodyne Essential
    • Studio One 公式サイトからインストーラーをダウンロードすると Melodyne Essential 5 のインストーラーが降ってくる
  • しかし、自分が所有していたのは Melodyne editor 2
    • 恐らく過去に essential から editor にアップグレード済み
    • バージョン違いのインストーラーを使うと当然アクティベートできない
  • Celemony のアカウントページ (myCelemony) にログインすると適切なバージョンのインストーラーがダウンロードできるため、それを使用して解決した
  • Melodyne 2 は Studio One 6 と互換性がないので近日中に Melodyne 5 へのアップグレード版を購入する予定
    • アップグレードライセンスを購入すると元のライセンスは無効になり、また、そもそもMelodyne 2 と Melodyne 5 は同時インストールができないので、念のためサルベージすべきプロジェクトがないか確認してから購入する

スマホで Markdown を使うよりも

Markdown で箇条書きをすると

- [ ] 犬の餌やり
- [x] 花に水をあげる

のように先頭に半角6文字が必要になるので、スマホの小さい画面では横幅が足りなくなってしまう。単にスマホでTODOリストを管理したいだけなのであれば、

⬜犬の餌やり
✅花に水をあげる

のように書けば十分なのではないか、という結論になった。スマホだと記号を入力するのが面倒という事情もある。

今後の方針についてのアンケート

BMSの公開方法について疑問があったのでアンケートを取ってみた。その結果思ったことについてまとめておく。

結果としては、(直近はFRENZの制作に集中したいので無理かもしれないが、)年に4作のペースで1作ずつ簡易なBGA付きのBMSを公開し、そのうちの年に1個はBGAも丁寧に作り込んだものを発表できるようにしたいということになった。本気でBGAを付けると丸一年掛かってしまうので、それは1年に一度くらいにして、他は簡易なBGAを付けるようにする。全曲に簡易なBGAを付けて複数曲入りのパッケージを公開するとなると、3~5年くらい掛かってしまい、それまで何も制作物を発表できなくなってしまうので、1作ずつ公開する方針に切り替えることにした。

なるべくプロシージャルな方法で映像の一部を制作できるようにしたい。そのため、Processing、vvvv、Blender Python API、Animation Nodes などについて学んでいきたい。

最初に書いたように直近の話ではないので、あまりこの作業に集中しすぎないようにしたい。

Python の set リテラル

初めて存在を知った。まあでも set をリテラルで書くことってあんまりないか。

s = {'FOO', 'BAR'}
print(s)       # => {'BAR', 'FOO'}
print(type(s)) # => <class 'set'>

プロシージャルあるいはジェネラティブなグラフィックデザインツールについての調査

やりたいことがとっ散らかっていて、上手く脳内の整理が出来ていない。MidiTrailのようにMIDIファイルに合わせてオブジェクトを生成したり、WAVファイルのスペクトルに合わせて輝度を変化させたり、ピクセルやプリミティブを大量に描画したりして、BGAの制作の助けになるようにしたい。

もう少し色々と調べて、最終的に分かったことをまとめて記事にしたい。

とりあえず、Processing でこんなものを作った。グロー効果は AE (DeepGlow)で付けている。

Blender についての学習

Rigid Body → Copy from Active

Blender は機能が多すぎて全然理解しきれていない。Rigid body や Transform の設定を Copy from Active する、みたいなのは Blender 以外のソフトだとあまり見ないような気がする。数百個のオブジェクトを同時に操作する程度の作業なら BPY に頼らなくても出来そうなんだけれど、ソフトウェアに対する理解が追いついていない。たすけてくれ。

似たような話だと Illustrator の「選択 → 共通 → アピアランス」や「直前の操作を繰り返す (Ctrl+D)」とかもあまり他のソフトでは見かけない機能かもしれない。

Emit Particles from Particles

パーティクルからパーティクルを出す方法、毎回忘れてしまうのでメモ。

How can particles be emitted from particles? – Blender Stack Exchange
https://blender.stackexchange.com/questions/5961/how-can-particles-be-emitted-from-particles

Boids

ずっと何なのか理解していなかったので調べた。鳥や蝶などの群れをシミュレーションするものらしい。結構高度なことができそう。

BPY (Blender Python API)

公式チュートリアルや解説動画などを見た。

https://docs.blender.org/api/current/info_quickstart.html

  • Save As で .py ファイルを外部に保存することができる
    • Alt+S を押さないと保存できないので使い勝手が良いわけではないかも
  • Python Tooltips と Developer Extras は一応 ON にしておく
  • Window → Toggle System Console でコンソールを表示
  • Tab / Shift+Tab でインデント(1行・複数行)
  • Ctrl+/ でコメントアウト・アンコメント(これはvscodeと同じ)
  • ググらなくても Python Console のタブ補完やエラーメッセージで色々と知ることが出来る

ops を実行して何らかの処理を実行する場合と、data を直接書き換えてオブジェクトを構成するパターンがあり、どちらが良いかは状況によるのかもしれない。ops を実行して処理を構成するほうがコンソールからコピペするだけなので手軽にできそう。

とりあえずメッシュの中の頂点を移動する方法。

bpy.data.objects['Cube'].data.vertices[1].co.x = 3

Animation Nodes に近いこともできるようになった。ただ、そんなに軽くはないかも。BMesh をゼロから作るのは面倒そうだった。

import bpy
import math

# メッシュを1フレームごとに変形する
def upd(scene):
    obj = bpy.data.objects['Grid']

    for v in obj.data.vertices:
        x = v.co.x
        y = v.co.y
        d = 5 * math.sqrt(x * x + y * y + 1e-10)
        f = bpy.data.scenes['Scene'].frame_current
        z = 0.2 * math.sin(d - 0.1 * f)
        v.co.z = z

# ハンドラを削除・登録(本当は良くない?)
bpy.app.handlers.frame_change_post.clear()
bpy.app.handlers.frame_change_post.append(upd)

ギャラリー

制作中の作品のイメージボード