以下の内容はhttps://marumaro7.hatenablog.com/entry/mtoon10_urp_outlineより取得しました。


【Unity】URPプロジェクトで Mtoon10 のアウトラインを表示する方法

要件

Unityバージョン 6000.026f1
UniVRM 0.108.0
URPプロジェクト

はじめに

VRMのアウトラインの内容を変更するため
Mtoon10のアウトライン項目を変更しても変化がない。

最新のUniVRMのバージョンでは解決されているようだが、
自プロジェクトでは UniVRM 0.108.0 を使用する必要があるため更新できない状況。

そのため、以下の変更内容を自分で書き変えました。

github.com

対策方法

事前準備

まず事前準備として、「Render Features」に
「MToon Outline Render Feature」を追加します。

方法
→Setting
→PC_Renderer
→Add Renderer Feature


→MToon Outline Render Feature を選択

コード変更

下記の通りに2つのファイル内容変更を行います。

github.com

MToonOutlineRenderFeature の変更

ファイルの場所
Assets/VRM10/MToon10/Runtime/MToonOutlineRenderFeature.cs

全文はこちら

#if MTOON_URP
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;

namespace VRMShaders.VRM10.MToon10.Runtime
{
    public sealed class MToonOutlineRenderFeature : ScriptableRendererFeature
    {
#if UNITY_6000_0_OR_NEWER
        private RenderObjectsPass _opaquePass;
        private RenderObjectsPass _transparentPass;
#else
        private MToonOutlineRenderPass _opaquePass;
        private MToonOutlineRenderPass _transparentPass;
#endif

        public override void Create()
        {
#if UNITY_6000_0_OR_NEWER
            var profilerTagName = nameof(MToonOutlineRenderFeature);
            var shaderTags = new[] {"MToonOutline"};
            var layerMask = -1;
            var cameraSettings = new RenderObjects.CustomCameraSettings();
            _opaquePass = new RenderObjectsPass(profilerTagName, RenderPassEvent.AfterRenderingOpaques, shaderTags, RenderQueueType.Opaque, layerMask, cameraSettings);
            _transparentPass = new RenderObjectsPass(profilerTagName, RenderPassEvent.BeforeRenderingTransparents, shaderTags, RenderQueueType.Transparent, layerMask, cameraSettings);
#else
            _opaquePass = new MToonOutlineRenderPass(RenderPassEvent.AfterRenderingOpaques, RenderQueueRange.opaque);
            _transparentPass = new MToonOutlineRenderPass(RenderPassEvent.BeforeRenderingTransparents, RenderQueueRange.transparent);
#endif
        }

        public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
        {
            renderer.EnqueuePass(_opaquePass);
            renderer.EnqueuePass(_transparentPass);
        }
    }
}
#endif

MToonOutlineRenderPass の変更

ファイルの場所
Assets/VRM10/MToon10/Runtime/MToonOutlineRenderPass.cs

1行目を変更します。

変更前

#if MTOON_URP

変更後

#if MTOON_URP && !UNITY_6000_0_OR_NEWER

以上の変更でアウトラインが表示されるようになりました。

参考

qiita.com




以上の内容はhttps://marumaro7.hatenablog.com/entry/mtoon10_urp_outlineより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14