UnityHDRP+MMDBridgeで動画を作ってみた

https://youtu.be/xRwXb1ULnlk

タイトルの通りなんですが、何点か引っかかった点があるためご紹介します。

今回の構成

Unity 2018.4.22f1
・Alembic 1.0.6
・High-Definition RP 4.10.0
・Shader Graph 4.10.0
・Unity Recorder 2.2.0


WaterShaderの挙動がおかしい!

今回は、ShaderGraphで作成したオリジナルのWaterShaderを利用していたのですが、WaveOffsetをTimeNodeのTimeを利用して行っていました。

ところが!
なんとこのTimeはDeltaTimeでは無いようで(DeltaTimeもTimeNodeにあるのですがこちらも機能せず…

UnityRecorderで撮影を行うと、水が高速で波打つなんてことになってしまいました。
今回はC#⃣ScriptからNodeへ直接DeltaTimeを渡してあげることで解決しました。こちらが参考になると思います。
https://forum.unity.com/threads/recorder-writting-exr-files-with-time-based-shader-are-wrong.662551/

基本的には↑のまま、少しだけ処理速度改善

using UnityEngine;

public class FunctionRenderTime : MonoBehaviour
{
[SerializeField] Material waterOffset;
[SerializeField] float timingValue;
[SerializeField] float timer;
static string vectorNodePropertyName = "Vector1_8A6A3EC4";

private static readonly int vectorNodePropertyID = Shader.PropertyToID(vectorNodePropertyName);

// Start is called before the first frame update
void Start()
{
waterOffset.SetFloat(vectorNodePropertyID, timer);
}

// Update is called once per frame
void Update()
{
timer += timingValue * Time.deltaTime;
waterOffset.SetFloat(vectorNodePropertyID, timer);
}
}

なんか出力結果おかしくない?

なんか黒い部分がありますね

こりゃなんだ、というわけで…
実際は黒いわけではなくRGBにはノイズ、Aチャンネルは黒よりのグレーになっています。

結局こちらの問題の原因はいまいちわかりませんでした。
HDRPのBugでしょうか?最新のバージョンでは直っていることを願うばかり

とりあえず今回はゴリゴリpngそのものを修正していきました…


おまけ HDRPだと簡単にきれいに作れて良いですね~