0
0

More than 1 year has passed since last update.

DazStudioのモーフ機能をUnityで使う

Last updated at Posted at 2022-12-09

概要

DazStudioのモーフ機能をUnityで使えるようにします。

下gifアニメはDazStudioのモーフ機能で体型を変更している様子です。
これと同じ操作をUnityEditorで行いたい。
dazMorph.gif

開発環境

Unity:2021.3.9
DazStudio:4.21
IDE:Rider
UniTask:2.3.3

手順

DazStudio側

Daz to Unity Bridgeのインストール

https://www.daz3d.com/daz-to-unity-bridge
無料
要ユーザー登録

Daz to Unity bridegeでエクスポート

適当に服を着せたGenesis8をエクスポートします。
上部ツールバーのFile→Send To→ Daz to Unityを選択します。
ウィンドウが表示されるので、下の画像になるように設定します。
UnityAssets Folderは対応するUnityプロジェクトのパスにします。

image.png

ChooseMorphをクリックすると以下ウィンドウが表示され、Unity側で使いたいmorphを追加します
image.png

Unity側でmorphが入っているか確認

ピンク色のシルエットみたいなプレファブが追加されていると エクスポート成功です。(モーフ機能も追加されたとは言っていない。)
image.png

ピンク色のシルエットだとわかりにくいので、.._baseファイルをヒエラルキー上に移します。

dazMorphToUnity.gif

子オブジェクトの*.Shapeに含まれているSkinnedMeshRendererコンポーネントがDazStudioのモーフ機能に相当します。
image.png

Unity側

動作確認そして問題点

unity上で人体のモーフを動かすと服を貫通し肌が露出します。
人体のBlendShapeが変化しているのに対して、服のBlendShapeが変化してないのが原因です。
DazStudioでは自動でやってくれます。
以下のgifアニメは体のモーフだけを変えたときの様子です。
dazMorphPloglem.gif

問題の対処

 スライダのGUI作って制御します。

スクリプト

MorphChange.cs

using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
public class MorphChanger : MonoBehaviour
{
    [SerializeField] private List<SkinnedMeshRenderer> _skinnedMeshRenderers;
    [SerializeField] private  Slider[] _slider;
    // Start is called before the first frame update
    private void Start()
    {
        _ = ChangeMorph();
    }
    
    private  async UniTask ChangeMorph()
    {
        while (true)
        {
             var result = await UniTask.WhenAny(_slider.Select(async x => await x.OnValueChangedAsync()));

            // float value = await _slider[result.winArgumentIndex].OnValueChangedAsync();
            foreach (var render in _skinnedMeshRenderers)
            {
                render.SetBlendShapeWeight(result.winArgumentIndex,result.result);
            }
        }
    }
}


以下GIFアニメは、Unity上でモーフを動かしている様子です。
morphComplete.gif

所見

DazStudioでエクスポートするところで詰まりましたね。モーフだけ抜かれている現象が起こってました。
自分の場合はUnity Plugin Iinstallerのところを変更したら上手くいきました。
他の人も苦労してるようで中々癖のある機能みたいですね。(参考のURL参照)

あとはDazのアニメーションをUnityで使えれば満足かな…

参考

DazStudio

C# LINQの書き方

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0