1 ポイント 投稿者 GN⁺ 2024-02-09 | 1件のコメント | WhatsAppで共有

Blender VSE に偶然貢献することになった

  • 2か月前、Blender の Video Sequence Editor(VSE)に少しだけコードを提供し始めた。
  • Blender に動画編集ツールがあることを知っていただろうか? 私は知らなかった。
  • 動画編集、タイムライン、シーケンサー、カラー補正、ffmpeg、オーディオミキシングなどについて何も知らないまま、VSE を扱い始めた。

VSE の作業をどうやって「偶然」始めることになったのか?

  • Unity の Unite 2023 カンファレンスをアムステルダムで見て、友人たちを訪ねることにした。
  • カンファレンス後、半日だけ Blender 本社を訪問し、Francesco と Sergey から VSE に貢献する意思があるかと聞かれた。
  • こうして VSE の作業を始めることになった。

タイムライン描画の改善

  • VSE のタイムラインは画像の下部にあり、一度に約 3000 本の「ストリップ」が見える。
  • タイムラインをスクロールしたり移動したりすると、ユーザーインターフェースはおよそ 15fps で更新されていた。
  • 現在では 60fps 以上で更新されるようになった(#115311)。

スコープ

  • VSE では、画像ヒストグラム、ウェーブフォーム、ベクトルスコープのような典型的な「スコープ」を表示できる。
  • ヒストグラム、ウェーブフォーム、ベクトルスコープに改善が入った。

ffmpeg の部分

  • Blender は主に ffmpeg ライブラリを使ってオーディオ/ビデオの読み書きを行っている。
  • libswscale を使って動画フレームの RGB↔YUV 変換を行っている。
  • 現在はマルチスレッドを活用し、RGB→YUV 変換段階をより高速に処理するようになった(#116008)。

オーディオのリサンプリング

  • オーディオライブラリ(Audaspace)内で、オーディオクリップデータのリサンプリングに多くの時間がかかっていた。
  • Audaspace に新しい「中」品質のリサンプリング設定を追加し、レンダリング時に使うようにした(#116059)。

画像変換とフィルタリング

  • VSE では画像、動画、テキスト、シーンなどを変換できる。位置指定、回転、サイズ変更、追加クロップの適用などだ。
  • これらの変換はすべて CPU 上で実行され、すでにマルチスレッド化されている。
「半ピクセル誤差」の修正
  • コード内には複数の「半ピクセル誤差」があり、多くの場合は互いに打ち消し合うか目に見えなかった。
  • これらの誤差は修正された(#116628)。
Bilinear フィルタリング周辺の透明な縁
  • Bilinear フィルタリングだけが、結果画像の周囲に透明部分を追加していた。
  • 現在は Bilinear フィルタリングのコードから「透明へのブレンド」を削除した(#117717)。
フィルタリングの追加と変更
  • VSE のストリップ変換には Cubic フィルタリングの選択肢がなかった。
  • 現在は VSE で 2 種類の Cubic フィルタリングを選べるようになった(#117100, #117517)。
  • 「Auto」フィルタオプションを追加し、デフォルトに設定した(#117853)。

VSE エフェクトの最適化

  • 実際の映像データセットでは多くのエフェクトは使われていないが、コード内で気づいた点を最適化した。
  • その大半はマルチスレッド化による最適化だ。

これらすべてはレンダリング時間にとって何を意味するのか?

  • Blender Studio が提供する 3 つのデータセットでは、VSE 映像の最終レンダリング時間が PC 上でおよそ 2 倍高速になった。

実際の作業プロセスについての考え

  • 上のすべての作業が、2 か月間のパートタイム作業として「十分な量の仕事」なのかはよく分からない。
  • 開発者である私はこの分野やコードベースについて何も知らなかったにもかかわらず、かなりうまくやれた気がする。
  • 合計 37 件のプルリクエストが完了し、レビューされ、マージされた。

次は何か?

  • Blender 4.1 はベータ版となり、機能面では「完成」している。
  • Blender 4.2 の作業が始まり、今後も VSE に取り組み続ける予定だ。

GN⁺ の見解:

  1. この記事は Blender の VSE に対する改善点と開発過程を共有するもので、オープンソースプロジェクトへの貢献がどれほど重要かを示している。
  2. 開発者が自分の専門分野ではない領域でも意味のある貢献ができることを強調し、新たな挑戦を後押しする前向きなメッセージを伝えている。
  3. この記事はソフトウェア開発における最適化と性能向上の重要性を強調し、こうした改善が実際のユーザー体験やレンダリング時間にどのような影響を与えるのかを具体例とともに説明している。

1件のコメント

 
GN⁺ 2024-02-09
Hacker Newsのコメント
  • あるユーザーは、自身のキャリアにおける最大の失敗は、ユニークなプロジェクトのための数学的な解決策を探すことと、平凡な成果に終わる有償プロジェクトとの間でバランスを取れなかったことだと述べている。無償で取り組んでいたことに対して報酬を得る機会もあったが、結局まったく手を付けなくなってしまった経験を共有している。
  • 別のユーザーは、もともとUnityで多くの経験を積んだ後にBlenderへ貢献した事例に触れ、特に画像処理パイプラインを最適化して演算速度を4倍向上させた変更を称賛している。
  • あるユーザーは、Arasがさまざまなオープンソースのグラフィックスプロジェクトに参加し、大幅な高速化と改善を実現したうえで別のプロジェクトへ移っていくことを、ここ数年で最も気に入っている流れの一つだと挙げている。
  • また別のユーザーは、お気に入りの音楽プレーヤーであるMusicbeeがオープンソースではないことを残念に思っており、もしソースが公開されていれば、余暇の時間に小さな問題を修正する形で貢献したいと述べている。
  • あるユーザーは、2020年からBlender VSEを動画編集に使っており、Linuxで最も安定していて機能が充実した動画エディタだと思うと述べている。
  • 別のユーザーは、自分のポッドキャストのためにすべてオープンソースのツールを使いたかったが、Blenderでクロマキー付きのmp4シーケンスをレンダリングするのに10時間かかったため、DaVinci Resolveへ切り替えたと経験を共有している。
  • あるユーザーは、投稿タイトルの意味を理解するのを手伝ってほしいと求め、これはミーム的な表現なのかと尋ねている。
  • また別のユーザーは、Blender 3Dプログラムのどの部分であっても、さらに高速化するのは非常に難しいだろうと述べており、すでに最も高速に起動し、最も反応の良い3Dアプリケーションだと評価している。
  • あるユーザーは、タイトルをもっと分かりやすく変更してほしいと求めている。
  • 最後に、あるユーザーはVSEを初めて使った体験はあまり良くなかったと述べ、自身の経験についてのリンクを共有している。