【CG】月日に連動して葉の色が変わるブループリントクラス【UE4】

Pocket
LinkedIn にシェア
LINEで送る

やる人がいるのか正直わかりませんが、こんなやり方もあるかなあ、ってことで紹介します。

要はUE4エディタのBP_SunPositionの日時と樹木の葉のマテリアルを連動させて、日付をいじるだけで季節感を変えられますということです。

やってみよう

マテリアルエディタでダイナミックマテリアルインスタンスを用意して、ブループリントクラスのアクターを作成しスクリプトを仕掛けていきます。

マテリアル側

変化する対象の樹木を決めましょう。
その樹木が使用しているマテリアルを開きましょう。元のマテリアルは残すためにコピーするのがいいかもしれない。

色の変更手段はたくさん有ると思いますが、今回はRGBAにしてみましょうか。
[Vector 4]ノードをパラメータ化して、名前を「ColorTune」とします。このキーワードが重要です。
初期値は(1, 1, 1, 1)で良いかと。

ブループリント側

ブループリントを新規作成します。
スタティックメッシュコンポーネントを追加します。なお、最後にこのコンポーネントに対し色変更したい樹木を割当します。

Construction Script

初期処理です。以下の2つの処理を追加します。
・ダイナミックマテリアルインスタンスを生成して、変数MatInsに保持する。
・アクター一覧からを配置した「Sun Position」を探して(※1)、変数SunPositionにインスタンスのポインタを保持する。
  ※1:もっといい方法があったはずだけど忘れた。

イベントグラフ

BeginPlayイベントに、イベントタイマーを定義します。
今回は1秒ごとにUpdateMonthイベントが呼ばれるように設定しました。
SunPositionのMonthの値を1秒毎に知りたいので、SunPositionアクターからMonthの値をgetし、変数CurrentMonthに代入します。

Tickイベントには、以下のようにノードを作ってみてください。
CurrentMonthの値に月が入っているので、その月情報を元に処理を分けてみましょう。

マテリアルと連動するためのキーワードは、先程マテリアル側に設定した「ColorTune」です。

ここからは樹木の種類や好みで変更してもらうパラメータなどの話しになりますが、私は次のようにしてみました。

月。BP_SunPosition::getMonth()の値 RGBAの値 葉の表現
1-3, 12月 (1, 1, 1, 0) 葉が無い
4-9月 (1, 1, 1, 1) 新緑
10月 (1, 1, 0, 1) 黄色
11月 (1, 0, 0, 1) 紅葉

11月であれば、色を変えます(黄)
12月であれば、紅葉(赤)
1~3月であれば、落葉(アルファ=0)
その他の月は、通常の色に(緑)

完成

これでブループリントクラスができたので、アクターとして配置しましょう。
置いた後、スタティックメッシュ(Static Mesh)に樹木を割り当てて、マテリアルにはダイナミックマテリアルインスタンス(Dynamic Material Instance)を割り当てましょう。

最終成果物。こんな感じで動きます。
今の樹木メッシュは枝と葉とでマテリアルを分離しているものがほとんどでしょうから大概の樹木に適用できます。
Play中にBP_SunPositionの日時を常時更新させたい方は利用価値が無いわけではないかもしれません。ご参考に。

応用編

例えば1~3月は落葉するから葉の数をゼロにしたいのであれば
・1~3月RGBAのアルファ値をゼロでセットすればよいです。
・マテリアル側は、
  ・[Masked]に設定します。
  ・ColorTuneノードの[A]の値をオパシティマスク(Opacity Mask)に接続します。

ダウンロード

2022/11/2追加。
本記事のデモプロジェクトです。UE4.25。34MBです。
  https://christinayan01.jp/architecture/download/four_seasons_leaves_demo.zip

管理人が読んだおすすめの建築本

    

7 thoughts on “【CG】月日に連動して葉の色が変わるブループリントクラス【UE4】

  1. 購入させていただきたくpaypalより支払いしようとしましたが、処理中で支払いが完了しない状態です。他の支払いは問題なかったのですが、今は購入できないなどありますでしょうか?

    1. こんにちは、ご購入(ご支援)ありがとうございます。せっかくのご支援完了しないとのことで大変恐れ入ります。
      Paypalが生成したAPI埋め込みコードを貼り付けたのが数年前になりますので、ここ暫くの間に変更が生じている可能性も踏まえて確認してまいります。

      1. こんにちは。
        返信いただきまして有り難うございます。
        お手数お掛け致しますが、確認の程宜しくお願い致します。

  2. 購入が可能になっておりましたので購入させていただきました。
    すみません、こちらはプロジェクトデータのダウンロードはできないのでしょうか?

    1. ご支援ありがとうございます。私の方でも確認ができました。
      ごめんなさいこちらの記事で紹介したプロジェクトは公開予定がございません。理由は樹木が購入したアセットであるため二次配布に相当してしまうためです。
      すべての記事のプロジェクトなど公開しているわけではございませんためご了承くださいませ。

      1. ご回答有難うございます。
        承知いたしました。

        質問させていただきたいことがありますがよろしいでしょうか?
        木はスタティックメッシュをレベルに1本づつ配置しているということでよろしいでしょうか?
        これがフォリッジで配置した木に対しても、同じようにすれば、季節によって葉の色を変えられるという認識でよろしいでしょうか?

        これまさにやりたいなあと思って記事を拝見させていただいています。

コメントを残す