Live2Dのモザイクシェーダーについて

1,056 views
Skip to first unread message

scottie

unread,
Jul 31, 2021, 8:57:53 AM7/31/21
to 宴ユーザーグループ
unity live2D モザイクで検索して上記のURLにたどり着き、参考にさせていただいてLive2Dにモザイクをかけることができました。
このモザイクシェーダーは商用利用は可能でしょうか。また条件などはございますでしょうか。
お忙しいところ恐れ入りますが何卒よろしくお願いいたします。

マッドネスラボ

unread,
Aug 1, 2021, 12:24:57 AM8/1/21
to 宴ユーザーグループ
ライセンスや使用条件はないです。ご自由にお使いください。


2021年7月31日土曜日 21:57:53 UTC+9 scottie:

scottie

unread,
Aug 2, 2021, 10:03:56 AM8/2/21
to 宴ユーザーグループ
ご回答ありがとうございました。ありがたく使わせていただきます。

一点質問させていただけますでしょうか。
モザイクマテリアルを適用したプロジェクトを画面リサイズできるようにしてビルドし、
ゲーム画面をリサイズをするとモザイクの大きさは変わらず画面がリサイズされてしまいます。
モザイクのサイズも同時にリサイズさせたいのですが可能でしょうか。
自分で何とかしようかと調べましたがシェーダーの中身を見てもわからず躓いております。
お忙しいところ恐れ入りますが何卒よろしくお願いいたします。

宴3.10.2
unity 2020.3.12f1 Windows10
Live2D Cubism 4 SDK for Unity R3
unityを勉強し始めて間もない初心者です。
名称未設定 2.jpg

2021年8月1日日曜日 13:24:57 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Aug 3, 2021, 5:04:21 AM8/3/21
to 宴ユーザーグループ
シェーダーのほうだけでは解決できません。
シェーダー上では、
_Size("Size", Float) = 4
となっている値を、画面サイズに対しての実際の描画サイズとして変更する必要があります。

テクスチャ書き込みをする場合は、特に問題なくなると思いますが
そうではない場合は、カメラの描画領域と実際のスクリーンサイズの比率でSizeを変更する必要があります。
こんなコンポーネントを作って、モザイクシェーダーを使うパーツのオブジェクトにAddComponentするとよいかと思います。


using System;
using Live2D.Cubism.Rendering;
using UnityEngine;
using UtageExtensions;

namespace Utage
{
    public class Live2DMosaicMaterial : MonoBehaviour
    {
        [Min(1)]
        public float size = 4;
        
        CubismRenderer cubismRenderer;
        AdvGraphicObjectCustom advGraphicObject;
        private LetterBoxCamera letterBoxCamera;

        private bool IsInit { get; set; } 

        void Init()
        {
            cubismRenderer = this.GetComponent<CubismRenderer>();
            advGraphicObject = this.GetComponentInParent<AdvGraphicObjectCustom>();
            this.letterBoxCamera = advGraphicObject.Engine.CameraManager.FindCameraByLayer(this.gameObject.layer).GetComponent<LetterBoxCamera>();
        }

        void LateUpdate()
        {
            if (!IsInit)
            {
                Init();
                IsInit = true;
            }
            float scale = GetScaleSize();
            cubismRenderer.Material.SetFloat("_Size", Mathf.CeilToInt( size * scale));
        }

        float GetScaleSize()
        {
            AdvGraphicObject obj = advGraphicObject.ParentObject; 
            if (obj.EnableRenderTexture)
            {
                return 1.0f;
            }
            else
            {
                return Mathf.Min(Screen.width / letterBoxCamera.CurrentSize.x, Screen.height / letterBoxCamera.CurrentSize.y);
            }
        }
    }
}


2021年8月2日月曜日 23:03:56 UTC+9 scottie:

scottie

unread,
Aug 4, 2021, 7:05:13 AM8/4/21
to 宴ユーザーグループ
教えていただいたコンポーネントを付けたらモザイクサイズが変わるようになりました。ありがとうございました。

2021年8月3日火曜日 18:04:21 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages