PC8801ぽい画面をAfterEffectsで写真から作る

![ 2018-03-04 0.33.57.png](https://qiita-image-store.s3.amazonaws.com/0/8302/c965d50e-af36-3aaf-e876-e6ef64470b9f.png)



前回のMSXに続いて、NEC国産機ぽい画面を写真を元にしてAEで作る手順をメモがわりに乗せておこうと思います。以前シェーダーで似たようなのも作ったんだけど。

# 特徴とか
* 解像度は640*400である。が上下40ドットずつカットされた640*480だと思ったほうが良い。
* 正確なピクセルのアスペクト比は知らないのだがそのまま1:2でいいのではないか。
* RGBそれぞれ２階調の8色しか出ない。
* ドットが縦長で中間色のタイルパターン表現が多用されるのが最大の特徴。36色(結果グレーになるダブりを省くと33色)の表現ができるとも考えられる。
* 中間色は誤差拡散とかでなだらかに表現するよりも市松模様だけにするほうがそれっぽい。
* おそらく専用モニタを使っていた人が多いと思われるので滲み表現などは控えめでよさそう。

このあたりを踏まえて作業します。

# 手順

<img width="328" alt=" 2018-03-03 23.25.32.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/eb18e168-0c3e-5f57-dd75-a2b2ed4df9b1.png">
まず実機サイズ640*400で画面構成を作ります。最後にかならず調整するので、色味などはおおよそで。

<img width="524" alt=" 2018-03-03 23.26.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/ca91468b-6456-6fb1-a6e0-ce0f5b20dea6.png">
上記のコンポジションを640*480の画面に配置します。上下に黒帯（レターボックス）がある状態にします。（が、好みで400pxのままでもいいです。）そしてこのレイヤーにモザイクエフェクトを640*200サイズでかけます。

<img width="464" alt=" 2018-03-04 0.01.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/2e4ed816-94fc-2c2d-4bd0-16c457c0168d.png">
拡大してみると、１ドットが縦長になっています。ここがもっとも重要なポイントです。

<img width="500" alt=" 2018-03-03 23.33.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/169d99a1-197e-7a7e-86c3-2d53c45a4ee1.png">
さらにそれをプリコンポーズして、ポスタリゼーションエフェクトを２階調(レベル値=2）でかけます。これで最終でもOKですが、タイリングによる中間色表現がほしいのでもうちょっと頑張ります。

<img width="504" alt=" 2018-03-03 23.33.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/dbd65e27-66d3-ecf0-cdd3-8691ef42714c.png">
中間色エリアを抽出するため、ポスタリゼーションの階調を3にします。中間色が表示されるようになりましたが、当然実機で出せない色が表示されてしまっています。

さて、ここからが知恵を絞ったところです。

<img width="497" alt=" 2018-03-03 23.34.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/55d60ead-f8fe-aa4f-3de8-4d03c8979b70.png">
さらにトーンカーブを適用して、中間色部分をいったん最大まで持ち上げます。結果、実機で出力できない色がなくなって、全体的に明るくなった画像ができます。

<img width="535" alt=" 2018-03-04 0.47.43.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/de809892-6e7a-e1cd-4736-a80b0f2a4aae.png">
レイヤーをコピーして、逆に中間色部分を下に下げた画像を作成します。これを上のレイヤーとタイリング合成すれば求める画像になるはずです。

<img width="327" alt=" 2018-03-04 0.52.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/4b9e7a8f-af4e-ea6a-24ad-3007e403ce48.png">
最初に思いつくのがレイヤー合成をディザにすることなんですが（上に来るレイヤーをアルファ50%にする。）、これはせっかくの縦長ドットが潰れてしまっているのと、市松模様のタイリングとはかけ離れてしまっているので別の方法をとります。表現としては面白いですけど。

<img width="286" alt=" 2018-03-03 23.46.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/a29e9d53-b49e-1f9a-bd3d-1f38bbf30c65.png">
ということで、地道にマスクを作ります。チェックパターンのエフェクト１発でおしまいかなーと思いきや、白黒の矩形の合間にグレーのラインとかでできてしまっているので、一度適当な大きさで小さく縦長のタイルパターンを作り、さらにモザイクエフェクトで完全に白黒の状態にして

<img width="500" alt=" 2018-03-03 23.46.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/8ef37434-8ebf-d666-b6d2-3cee302b72b2.png">
CC  repeat tileで画面いっぱいに並べます。これをタイリング用の輝度マスクとします。こういうのはフォトショより楽ですねえ。

<img width="401" alt=" 2018-03-04 1.01.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/a9286d7e-46cf-5ffb-80c5-51798a3f27fe.png">
ルミナンスキーマットでマスクパターンを明るい方のレイヤーへ適用すると目的の画像を得ることができました。

<img width="346" alt=" 2018-03-04 0.47.51.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/b13e5367-4cb2-711f-adcf-03639b117744.png">
これで完成。。でもいいのですが、さらに手を加えます。

<img width="501" alt=" 2018-03-03 23.49.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/8ed9f612-b242-fd0b-328b-77c32875e9e8.png">
ここから色味をドット絵としていい感じになるように、つまり元素材写真としての色味がおかしくなってもいいので、ドット絵が映えるように色彩調整をしていきます。市松模様のタイリングのみとした事でべつのディザリング方法に比べてのっぺりしたエリアができがちなので、いいバランスでベタ塗りとタイリングが並ぶように、トーンカーブや、レベル補正、色相調整などでいじっていきます。わざと赤か青のチャンネルを暗部に残し、他のチャンネルと強度のカーブをずらすことによって、グラデーションが多段になり深みができるのでおすすめです。緑を残すのは目立ってしまうのであまりおすすめしません。

<img width="697" alt=" 2018-03-03 23.51.38.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/3858c29f-db0d-e424-33c3-01a2ba734d11.png">
この作業の際は最終画面を別ビューで開いているとすぐさま結果が確認できて便利です。さらに、レイヤー効果や(一部ペンツール)で黒枠などを加えてイラストぽさを強調します。

# 完成図
![640x480_pc88.png](https://qiita-image-store.s3.amazonaws.com/0/8302/796e83a3-ad33-8043-9b0b-ede5142b88a1.png)

このようになりました。ワン魚（犬＋魚のキャラクター）はトゥイーティーと別の色彩調整を与えています。局所的な色飛びはフォトショで直してやりたくなりますが、AfterEffectsのいいところはこれをこのまま動画に適用できるところですね。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">作成したAEのフィルターを動画に適用テスト<a href="https://t.co/Yh7ggtSdfN">https://t.co/Yh7ggtSdfN</a></p>&mdash; harayoki (@harayoki) <a href="https://twitter.com/harayoki/status/970000431031099392?ref_src=twsrc%5Etfw">2018年3月3日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

↓この記事の後、さらにいろいろ調整。各チャンネルで書き換えに時間がかかってずれがでるともっといいかも。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr"><a href="https://t.co/A0HmwMhLmx">https://t.co/A0HmwMhLmx</a><br>走査線を足してフレームレート落として背景とキャラクターで使用チャンネル分けた感じに調整</p>&mdash; harayoki (@harayoki) <a href="https://twitter.com/harayoki/status/970183506721517568?ref_src=twsrc%5Etfw">2018年3月4日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


# プラグインとか
レトロPCの画面をエフェクトで再現するレトロディザーなんてプラグインが販売されてましたが、縦長ドットには対応してない気がします。あとディザのコントロールがどこまでできるか謎です。まあ$50なので買ってもいいかもしれない。MSXのパレットあるっぽいし。
https://aescripts.com/retrodither/

そして、そのうちNukeかHoudiniでもこういうのをやってみたい。PythonコードかけるからパレットがあるレトロPCの画面の再現もやりやすいのではないか。（AfterEffectsだとプラグインレベルのコーディングをしないといけないので。）