Closed10

Unity Universal RPで作る、モデルの残像エフェクト

murnanamurnana

Unity 2020.3.20f1 でサンプルプロジェクト (https://github.com/madoramu/AfterImage) を起動してみると
Packages/UnityChanToonShaderVer2_Project-release-urp-2.2/Runtime/Shaders/UniversalToonBody.hlsl でエラーが発生したので、

Packages/UnityChanToonShaderVer2_Project-release-urp-2.2/Runtime/Shaders/UniversalToonBody.hlsl
            inline void InitializeStandardLitSurfaceDataUTS(float2 uv, out SurfaceData outSurfaceData)
            {
                outSurfaceData = (SurfaceData)0;
//...

を追加して対処

murnanamurnana
  • やっていることは、 Meshの複製、 ボーンの複製
  • 今回は分身をモーションさせない
  • 分身したモデルに別のマテリアルをくっつけている
murnanamurnana

BakeMeshやってる人がいた…!

BakeMeshはベイクするメッシュの頂点数等によって処理負荷が変わる可能性があるため使用する際はしっかりと処理負荷を調べたうえで使うことを推奨します。
https://studyworks.hatenablog.com/entry/bakemesh

でしょうね…
やってることはMeshの複製なので、Mesh大量に作る vs ボーンで計算を頑張ってもらう になるのか

murnanamurnana


ざっくりと、Bakeでつくってみる

左は ModelImport時に、MeshRendererがついているオブジェクト以外を削除するようにOptimizeしたもの
右はそのままのやつ

Boneコピーしたほうがいいのかなぁ

まんてらスタジオまんてらスタジオ

コンピュートシェーダーを使える環境ならGPU Skinningの結果をぶっこ抜いて来て複製出来るけど、スマホの場合はキツイのでボーンコピーで良いと思われ

murnanamurnana

ボーンバージョン作ってみた
Optimizeされたものはどうしようかな 🤔

あとマテリアルを変えられたりする入り口をつくらないと…

murnanamurnana

Optimizeされたものは、あきらめてOptimizeを解体することに

if ((m_Animator != null) && m_Animator.isOptimizable)
{
    AnimatorUtility.DeoptimizeTransformHierarchy(m_RootGameObject);
    m_Transforms = m_RootGameObject.GetComponentsInChildren<Transform>();
}
このスクラップは2021/12/16にクローズされました