BlenderにACEScgカラースペースを追加する

2020/3/20追記
この手順では完全にACEScgにすることができないみたいです。
Blenderはまだ対応していないとのことなので、参考程度にしてください。


#カラースペースについて
カラースペースとはどこまでの色をどのように表示するかを定義するものです。**色空間**とも呼ばれます。
一般には**RGB, CMYK, グレー**などが使われます。
CGの世界では**sRGB, Linear, Raw**などが代表されます。

##OCIOとは
**OpenColorIO**は、Sony Picture Imageworksが開発したカラーマネージメントソリューションです。

>*OpenColorIO (OCIO) is a complete color management solution geared towards motion picture production with an emphasis on visual effects and computer animation. OCIO provides a straightforward and consistent user experience across all supporting applications while allowing for sophisticated back-end configuration options suitable for high-end production usage. OCIO is compatible with the Academy Color Encoding Specification (ACES) and is LUT-format agnostic, supporting many popular formats.*
*(https://opencolorio.org/ より引用)*

ソフト側で選ぶだけで簡単にカラースペースを変えられるシステムで、コンポジットソフトである**Nuke**などで主に利用されています。

##Blender側でカラースペースを変更する理由
カラースペースをどうこうするのは、映像制作の現場などでは**コンポジット**の段階で行います。
モデリングなどの時点でカラースペースを意識するということはあまりありません。
Blenderにはコンポジットを始めとした多くの機能が備わっており、Blenderだけで作品を完成させることも可能です。その場合はカラースペースをBlender内で意識していく必要があります。
しかし、分業された映像制作の現場ではそういったワークフローはあまりなく、Maya, Substance, Nukeなどを経由して作品を作っていくことが多くなります。

では何故Blenderでカラースペースを変える必要があるのか？
それは、**Lookdev**を行うからです。

Lookdevというのはルックデベロップメントのことで、モデルにマテリアルを適用させた状態で質感の調整やライティングを行う工程を指します。
最終的なルックを想定しながらマテリアルとライティングの調整を行えば、何回もレンダリングして調整していくリスクが減ります。
Blender 2.80以降にEEVEEレンダラが搭載されてLookdevが容易となったこともあり、もはや必須の工程と言えます。
カラースペースを意識した制作を行いたい場合、このLookdevの時点でカラースペースを変えておく必要があるわけです。逆に言えば、sRGBのままでいいのであればカラースペースを増やす必要はありません。

この記事では**ACEScg**というカラースペースを導入していきます。
CG画像を扱うために最適化されたカラースペースです。

#config.ocio
NukeやMayaではソフト内の設定でカラースペースがたくさん備わっており、難しい設定をせずにカラースペースを変えることができます。
しかし、Blenderにデフォルトで備わっているカラースペースは少ないのが現状で、今後のアップデートで増えるかどうかも不明です。
ですが、config.ocioというファイルを直接編集することで使えるカラースペースを増やすことができます。

config.ocioは
`Blenderインストールフォルダ\2.xx\datafiles\colormanagement\`
に配置されています。
これをテキストエディタで開きます。メモ帳でも大丈夫です。

46行目辺りに以下のように書かれた部分があります。

~~~
displays:
  sRGB:
    - !<View> {name: Standard, colorspace: sRGB}
    - !<View> {name: Filmic, colorspace: Filmic sRGB}
    - !<View> {name: Filmic Log, colorspace: Filmic Log}
    - !<View> {name: Raw, colorspace: Raw}
    - !<View> {name: False Color, colorspace: False Color}
  XYZ:
    - !<View> {name: Standard, colorspace: XYZ}
    - !<View> {name: DCI, colorspace: dci_xyz}
    - !<View> {name: Raw, colorspace: Raw}
  None:
    - !<View> {name: Standard, colorspace: Raw}

active_displays: [sRGB, XYZ, None]
active_views: [Standard, Filmic, Filmic Log, Raw]
~~~

ここを以下のように編集します。

~~~
displays:
  sRGB:
    - !<View> {name: Standard, colorspace: sRGB}
    - !<View> {name: Filmic, colorspace: Filmic sRGB}
    - !<View> {name: Filmic Log, colorspace: Filmic Log}
    - !<View> {name: Raw, colorspace: Raw}
    - !<View> {name: False Color, colorspace: False Color}
  XYZ:
    - !<View> {name: Standard, colorspace: XYZ}
    - !<View> {name: DCI, colorspace: dci_xyz}
    - !<View> {name: Raw, colorspace: Raw}
  ACES:
    - !<View> {name: ACES - ACEScg, colorspace: ACES - ACEScg}
  None:
    - !<View> {name: Standard, colorspace: Raw}

active_displays: [sRGB, XYZ, ACES, None]
active_views: [Standard, Filmic, Filmic Log, Raw]
~~~

続いて、その下に`colorspaces:`という項目があるので、一番上で構わないので以下のように追記します。

~~~
  - !<ColorSpace>
    name: ACES - ACEScg
    family: ACES
    equalitygroup:
    bitdepth: 32f
    description: |
      The ACEScg color space  
      ACES Transform ID : ACEScsc.ACEScg_to_ACES
    isdata: false
    allocation: lg2
    allocationvars: [-8, 5, 0.00390625]
    to_reference: !<MatrixTransform> {matrix: [0.695452, 0.140679, 0.163869, 0, 0.0447946, 0.859671, 0.0955343, 0, -0.00552588, 0.00402521, 1.0015, 0, 0, 0, 0, 1]}
~~~

Blenderを再起動し、**プロパティ**の**レンダープロパティ**タブの**カラーマネージメント**という項目でACESカラースペースに変更することができます！
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552567/188263ce-dc40-807a-7c47-fa519795e29d.png)

デフォルトではガンマが1ですが、1.5～2.5程度に上げないとsRGBと比べて暗くなってしまう仕様のようです。

#他のカラースペースを追加する場合
以上の情報は[こちらのGitHub](https://github.com/colour-science/OpenColorIO-Configs/tree/feature/aces-1.1-config)のconfig.ocioファイルに基づいています。ACEScg以外のカラースペースを追加したい方はご自分でダウンロードしていただき、目的のカラースペースを探してBlenderのconfig.ocioに導入してみてください。

---
Blenderでカラースペースを増やす方法はインターネット上にも情報がほぼ無く、正直手探りでここまで行ったのでやり方が間違ってるかもしれません。詳しい方がいましたら訂正していただきたいです。