質問は基本的に1スレッドにつき1つの内容でお願いします。

お問い合わせの際は下記の情報を明記をお願いいたします。

▼ソフトウェアに関するご質問の場合

・【問題が発生したソフトウェア名とバージョン】(例:Cubism Editor 3.1.02、Euclid Editor 1.2.0 など)
・【ご利用のPC環境】例:Windows10、macOS HighSierra など
・【機種名】:MacBookPro 2017 など
・【グラフィックボード】例:GeForce GTX 950M など
・【メモリ】例:8GB
・【原画(イラスト)を制作したソフトウェア】例:Photoshop , CLIP STUDIO , SAI など
・【問い合わせ内容がわかるスクリーンショットまたは動画】例:パーツの表示状態など、お問い合わせ内容がわかる画像をご用意ください

---------------------------

▼SDKに関するご質問の場合

・現象の再現を行い検証させていただきますので、再現する最小のプロジェクトのご提供か、再現するまでの手順
・使用したSDKのバージョン

Live2DモデルをUnity上でスクリプトを使って透明にする方法

http://forum.live2d.com/discussion/956/unity-上でパーツの透明度の設定
にて、Cubism Render ControllerからOpacityの値を別のスクリプトに持っていけるとのことですが、具体的なやり方がわかりません。
私がやりたいのは、Live2Dモデルをbool関数で透明と非透明で切り替えたいのですが、Live2Dモデルということもあって、メッシュ等のα値をいじることが出来ませんでした。

unity2018.1.6f1
cubismも最新のです
Tagged:

コメント

  • http://docs.live2d.com/cubism-sdk-manual/parameters/
    ここに載っている


    // 顔パーツの透明度を0.5に設定する/
    _model->SetPartOpacity( CubismFramework::GetIdManager()->GetId("PartArmLB001"),0.5f );

    このスクリプトを全身にかければいいと思うのですが、全身に一気にかけられる方法と、c#スクリプトにて、SetPartOpacity(CubismFrameworkの部分に赤線が入り、エラーを吐きます。

    using Live2D.Cubism.Core;
    using Live2D.Cubism.Framework;

    private CubismModel _model;
    void start(){
    _model = this.FindCubismModel();}
    これらは宣言済みなのですが・・・.


    公式ページの説明文が色々省きすぎて分かりづらいので、教えてください
  • 全身に一気に透明度調整を掛ける方法と、エラーの修正方法を教えてほしいです
  • @はんげ さん

    ご覧頂いているマニュアルですが、こちらはNative版のもので、Unity版とは言語などが異なるため、スニペットをそのままコピーペーストするだけでは動作しません。
    Unityについては、Cubism SDK ManualおよびCubism SDK Tutorialのサイドメニューの「Unity」以下の項目を参照してください。

    Live2Dモデルをbool関数で透明と非透明で切り替えたい
    こちらの件ですが、モデル全体の不透明度は、CubismRenderController.Opacityに、0から1までの範囲で値を設定してやることで操作することが出来ます。

    以下は実装例になります。
    コードの一部を以下のように書き換えたコンポーネントを、モデルのルートにアタッチしてください。
        private CubismRenderController _renderController;
        public float Opacity = 1.0f;
    
        private void OnEnable()
        {
            _renderController = GetComponent<CubismRenderController>();
        }
    
        private void LateUpdate()
        {
            _renderController.Opacity = Opacity;
        }

    注意点として、この方法で不透明度を操作した場合、半透明時にメッシュが重なった部分の表示に崩れが発生します。
    もしメッシュが重なった部分も綺麗に表示させたい場合は、UnityのRenderTextureにモデルを表示させ、そちらの不透明度を操作するようにしてください。
    RenderTextureは、Cameraでレンダリングした結果を表示するテクスチャで、これを利用するとモデルを一枚のテクスチャとして扱うことも出来ます。
    RenderTextureの使用方法などにつきましては、Unity公式のドキュメント等を参照してください。
  • 回答有り難うございます。無事にOpacityをプログラム上から変更することはできました。
    しかし、Opacityが0になってもキャラクターが透明になりません。メッシュが重なった部分というわけでもなく全身です。
    常にアニメーターで作成したアニメーションをループ再生していますが、これが問題になったりするんですか?
    たまにアニメーションを切り替える動作をした際に透明化することはあるのですが…。
    Unityのインスペクタ上でのOpacityのスライダーの表示も0となっています。


  • @はんげ さん
    確認したところ、こちらでは現象の再現ができませんでした。
    検証のために、現象が再現する最小のプロジェクトを頂けませんでしょうか?
Sign In or Register to comment.