ゲームエフェクトでの利用を想定したCopernicus検証備忘録

この記事はHoudiniアドベントカレンダー2024　25日目の記事です。
本記事は、表題の通り 【ゲームエフェクトでの利用を想定したCopernicus検証備忘録となります。
よろしくお願いします。

* 検証環境：Houdini20.5.278

# Copernicusを使うメリット等
* Houdini自体の強みであるデータの"可読性の高さ、シーンファイルの軽さ、10年前のシーンもほぼ当時の仕様で最新環境で開ける驚異的な互換性の高さ"といったメリットをそのまま享受できます。
* 元が３DCGソフトなので、テクスチャ作成にSDFや３Dモデルを使いたい場合に柔軟でスムーズに使用する事ができます。
* 同様の理由で、メッシュやＵＶ・スクロール等の動きを確認しながらテクスチャ作成が可能で、逆にテクスチャ作成をしながらメッシュやＵＶも調整できます。
* ![241017_h.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539096/623a182e-f68d-d0f4-dbb2-85784974bfec.gif)

* ![241024_h2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539096/cd8b14df-a5a9-7e97-ebf1-abec65a56b9a.gif)


# よく使いそうなノード・機能
## Fractalnoise / Worleynoise
* いつもの。デフォルトでタイリング仕様になっているのも有難いところです。
* 基本的にベースはタイリングを使用する事が多いので、縦横に伸ばす場合は後述する"Transform2d"ノードを推奨します。 
* ![241125_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539096/52870f92-16c0-86df-57ce-c6e61add0fa6.png)

## Transform2d
* 上述した縦横伸縮はこちらで行うと便利です。また、パラメータにエクスプレッションを入力してスクロールの確認をする際にも有用です。
* ![241125_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539096/7ae0f282-63e7-72c2-9269-a4197c82d2a2.png)

## Channel Join
* 画像のように"Ramp"ノードを複数用いる事で、ゲームエフェクトお馴染みのUV調整を自在に行えて便利なノードです。
* ![241125_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539096/0e211762-f090-d5a5-50f2-a27dd87b773e.png)

## SOP import
* LOPでもお馴染みのいつものやつ。なんでもできるがブラックボックス化しやすいという注意点も同様かと存じます。
![241125_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539096/511b1864-e704-985d-6bb8-c34b5b7d389f.png)

## Rasterize Geometry
* ジオメトリの持つ様々な情報を取得できるノードです。プリセットにAlpha・Positon・Normal・UV・Depthといったよく使う項目が設定されている気の利き方に加え、"SOP import"ノード等で読み込んだジオメトリのアトリビュートも使用できるので汎用性の高いノードかと存じます。
![241125_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539096/ebf47ab5-65c2-960d-0361-c82bcede231f.png)

## SDF Shape
* 前述した通りHoudini自体がそもそも３DCGソフトなので、SDFの作成・利用といったものが柔軟・スムーズに行えてとても便利です。
* ![241125_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539096/b9851824-cf7d-cb29-beda-4b2f5e39492a.png)

## Tile Pattern
* いつもの。外部から情報を持ち込まなくてもノードの機能だけでも結構色々とできて面白いです。
* ![240919_h.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539096/8fb1f593-b655-3afa-3c60-ec68f96ca5bd.gif)

## Height to Normal 
* 端的に言うと、お馴染みの簡単Normalmap作成機能です。当然便利です。
![241125_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539096/257a882c-7051-2ab4-e099-4d084bbc15db.png)

## Segment by Connectivity
* 恐らく本来の用途ではないと思いますが、エフェクトに関しては下記画像のようなシルエット系のエフェクトを作る際に極めて有用なノードです。
![241125_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539096/428f32b0-ad80-1a0d-80a1-121f5327ebf9.png)

## Rop Image Output
* 最終出力ノードです。
* 検証日時時点の環境では、Copernicusのリファレンス等で最終ノードに広く使われている"Preview Material"ノードからは直接Baker系のノードに繋げず、主にゲーム用途でのテクスチャ出力ができません。そのためCopernicus内からテクスチャ出力をする場合はビジュアル構築後にこちらのノードを使用する必要があります。
* ![240912_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539096/77d6e0d3-6238-68d1-c078-52d4a86bd41c.png)


# 注意点
* 検証日時・バージョン時点では"Object Merge"ノードがCopernicus内に無いので、Houdiniでよくやる""一つの階層内で作ったアセットやギミックを"Null"に繋いで同じ階層内で"Object Merge"で参照する""という手法が使えません。これによりアセットやギミックの参照や再利用時に問題が生じる場合があるので、検証日時・バージョン時点では作業階層やギミックをSubnetで包んでおいた方が後々参照や再利用する際に問題が生じ辛いかと存じます。
* あくまでまだβ版であるということ。最近のHoudiniの新ツール類の進捗度合いを鑑みると、わずかな確率ではありますが場合によっては大きく仕様変更が入る可能性があるということは念頭に置いておき、その上でCopernicusを利用された方が良いかと存じます。
* 上記の理由もあり、Copernicus使用による予算や工数削減の具体的な数字は現状出し辛いかと存じます。今のところ通常のHoudini利用時の予算や工数計算時に、テクスチャ作成ツールとして他ツール比較でHoudini共通メリットを乗せた数字を捻出するのが無難かと存じます。


# おわりに
如何だったでしょうか？
備忘録も兼ねて記事を執筆いたしました。
少しでも皆様のお役に立てたのなら幸いです。
最後までお目通し頂きありがとうございました。