💠

【DaVinci Resolve】 Halftone(ハーフトーン)エフェクトを作る 【Fusion】

に公開

🐥 はじめに

みなさん、こんにちは。Mugです🐼

本記事では印刷物などで見られるHalftone(ハーフトーン)表現を、📽DaVinci Resolve の Fusion で再現する方法を紹介します

Halftone とは、小さなドットのサイズや密度を変化させることで階調(濃淡)を表現する技法です

  • 暗い部分ほど大きなドット ⚫
  • 明るい部分ほど小さな(またはドットなし)ドット ⬜

上記を踏まえて、今回は以下の3つのアプローチを紹介します 😤

  1. VariBlur ノードを使った Halftone
  2. Particle ノードを使った Halftone
  3. MugSimpleHalftone(Fuse)を使った Halftone ← オススメ💯💮

1 Variable Blurによるhalftone

VariBlurを使用したhalftoneです

Halftone example using 'VariBlur'
完成品

📺 参考動画(元ネタ)

1.1 ドット作成

Shape等を使用してドットを作成し

Dot preview
Dot作成

Node connection order
ノード接続: sEllipsesRender

TransformEdgesをMirrorに設定、サイズを縮小することで全面にドットを描画します

Edge settings
EdgesをMirrorに設定

Node connection order
ノード接続: sEllipsesRenderTransform

Preview after dot size adjustment
サイズ調整後のプレビュー

Transformのサイズを👆 のような見た目になるように調整(小さく)します

1.2 ドットぼかし

VariBlurを使用して入力映像の明るさに応じたドットのぼかしを設定します

VariBlurとはBackgroundに接続したイメージを
Foregroundに接続したイメージの明るさに応じてボケさせるノードです
明るい部分ほど大きくボケます

Preview 'VariBlur'
VariBlurプレビュー

Node connection order
ノード接続: VariBlur (Background: Transform, Foreground: Input Image)

👆 少し見づらいですが、Foregroundの入力映像(左側)の明るい部分でドットのボケが強くなってます👀

📢 ボケが大きくなるほどドットが薄くなります
結果、明るいところはほとんどドットが見えなくなります

上記画像のようになるようにVariBlurBlur Sizeを調整します

ただ、このままだと後々扱いにくいので
InvertColorを使い入力映像を反転させ、 暗いところほどドットがボケる(=薄くなる) ように変更します

InvertColor preview
InvertColorプレビュー

Node connection order
ノード接続: Input ImageInvertColorVariBlur(Foreground)

1.3 背景色設定

Backgroundをドットとマージします
これがhalftoneの背景色となります、好きな色を設定します🤩

Background preview
Backgroundプレビュー

Node connection order
ノード接続: Merge (Background: Background, Foreground: Transform)

1.4 コントラスト調整

ColorCurvesを使用してドットのコントラストを調整します
カーブ設定を👇下記画像のような形にしてコントラストを上げます
これは入力映像に合わせて調整します💪

ColorCurves preview
ColorCurvesプレビュー

Node connection order
ノード接続: VariBlurColorCurvesMediaOut

これで完成です🎉

1.5 まとめ

全体像

All nodes
ノード構成全体

👍 イイねポイント

  • それっぽい見た目
  • 処理が軽め

🤢 残念ポイント

  • ノードの組み合わせが難しい
  • 各パラメータの調整が非常に難しい
  • ドットサイズ変化が急でラインが目立つ

2 Particleによるhalftone

Particleを使用したhalftoneです

Halftone example using 'Particle'
完成品

📺 参考動画(元ネタ)

2.1 Particle化

pImageEmitterを使用して入力映像をparticle化します
ただ接続しただけでは何も表示されないため😑
pImageEmitterの各パラメータを下記のように設定します

⚙️ Controlsページ ⚙️

  1. X Densityを0.1
  2. Y Densityを0.1
  3. Create Particles Every Frameにチェック✅
  4. Lifespanを1.0

⚙️ Styleページ ⚙️

  1. StyleをNGon
  2. NGon Sidesを12
  3. Sizeを2.0

🗒️設定値解説 🗒️

  • Densityはドット分割数です、大きくするとより細かなドットとなります
    → 大きくすればするほど処理が重くなります😵‍💫
  • Create Prticles Every Frame, Lifespanを設定することでParticleの生成を固定化します
  • ドット状になるようにStyleを設定します
  • Sizeを2.0にすることである程度暗いところがきれいに塗りつぶされるように設定します
    → これはお好みで調整します👍

👇 正しく設定できれば下記のように少し解像度が下がったような映像になります👀

pImageEmitter preview
pImageEmitterプレビュー

Node connection order
ノード接続: Input ImagepImageEmitterpRender

pImageEmitter controls settings
pImageEmitter Controlsの設定

pImageEmitter style settings
pImageEmitter Styleの設定

2.2 輝度に応じたドットサイズ設定

pCustomを使用してParticleごとに異なるサイズのドットとなるようにします
各Particleの輝度を算出し、その輝度に比例してParticleサイズを設定します🤔

具体的にはpCustomでParticleページのSizeを👇下記のように設定します

size * (1 - ((r * 0.299) + (g * 0.587) + (b * 0.114)))

この計算式は輝度が最大のときsize * 1.0となります
sizeとはpImageEmitterのStyleで設定したサイズです、つまり2.0です

pCustom preview
pCustomプレビュー

Node connection order
ノード接続: pImageEmitterpCustompRender

pCustom settings
✂️ --- 中略 ---✂️
pCustom size setting
pCustom ParticleページSizeの設定

2.3 ドット色設定

pCustomを使用してParticleの色を上書き設定します
Red, Green, Blueに好きな色を設定します😍
今回は黒にします

pCustom color settings
pCustom ParticleページRed/Green/Blueの設定

2.4 背景色設定

Backgroundをマージして背景色を設定します
これは好きな色を設定します😍
今回は白にします

Background color settings
Background の設定

Node connection order
ノード接続: Merge (Background: Background, Foreground: pRender)

2.5 コントラスト調整

BrightnessContrastを使用して入力映像のコントラストを調整します
これは📽️映像を見ながら好みのドット感になるように設定します👀

BrightnessContrast settings
BrightnessContrastの調整

これで完成です🎉

2.6 まとめ

全体像

All nodes
ノード構成全体

👍 イイねポイント

  • きれいな円形ドット
  • 正確なhalftone表現

🤢 残念ポイント

  • ノードの組み合わせが非常に難しい
  • 処理が非常に重い🐘🐘🐘

3 MugSimpleHalftoneによるhalftone

MugSimpleHalftoneを使用したhalftoneです
これは私が作ったエフェクトで、実はこの記事はこれを自慢するのが目的の記事です🤫

Halftone example using 'MugSimpleHalftone'
完成品

3.1 インストール

わたしのGitHubページからfuseファイルをダウンロードし、💻各OSごとの格納先に保存します

🗒️ Fuseファイル

https://github.com/mug-lab-3/DaVinciResolveEffects/blob/main/fuses/MugSimpleHalftone.fuse

📁 各OSごとのFuseファイル格納先

OS Path
macOS ~/Library/Application Support/Blackmagic Design/DaVinci Resolve/Support/Fusion/Fuses
Windows %appdata%\Blackmagic Design\DaVinci Resolve\Support\Fusion\Fuses
Linux /.local/share/DaVinciResolve/Fusion/Fuses

参考動画

よくわからないー😭という方はこちらの動画でインストール方法を説明しているので
見ていただけるとわかってもらえるかなと思います😊

3.2 接続

インストールするとエフェクトのTools → Fuses → MugMugSimpleHalftoneというものが追加されます
これを接続します👍

Effect path
エフェクトパネルからの追加

Select Tool(Shift + Space)からはMSHの省略名で検索できます👍

Effect path
Select Tool からの追加

Effect path
ノード接続: Input ImageMugSimpleHalftoneMediaOut

3.3 調整

映像を見ながらMugSimpleHalftoneのインスペクタで各パラメータを調整します
直感的に設定できる(と思う)のでお好みで調整します😊

MugSimpleHalftone settings
設定例

これで完成です😮🎉

3.4 まとめ

全体像

All nodes
ノード構成全体

👍 イイねポイント

  • きれいな円形ドット
  • 正確なhalftone表現
  • 非常に軽い動作
  • 非常にシンプルなノード構成
  • 直感的なドット調整

🤢 残念ポイント

  • Fuseファイルのインストールが必要

🐔 おわりに

1, 2で紹介した方法で満足できなかったので自分でエフェクトを作りました
MugSimpleHalftoneは結構頑張って作ったので使ってもらえるとすごく嬉しいです☺️
ソースコードを公開しているのでFuseの参考にもどうぞ!

この記事が参考になった場合は、ぜひコメントやSNSでシェアしていただけると嬉しいです!
また、フィードバックや質問があればお気軽にお知らせください

GitHubで編集を提案

Discussion