Unityでキャラの表情コントロール2



Blenderで作ったシェイプキー付きのフィギュアをFBXでUnityにインポートするとメッシュごとにインスペクター上の「Skinned Mesh Renderer」の「BlendShapes」で操作できるようになっています。




カレンの顔には29個の表情シェイプキーが付けてあります。あと、眉毛に8個、目に5個、その他に汗や赤面等が12個ほど付けてあります。




モーフのブレンド値は3Dソフトでは一般的に0が最小値で1.0が最大値だと思いますが、Unityでは100が最大値となります。はじめ、1にしても変化したように見えなくて焦りました。

表情アニメーションをUnity上から付ける方法は2つあります。新規にアニメーションクリップを作って「Animation」でキーフレームを打ってさせる方法。もう一つは、スクリプトからBlendShapesを操作する方法です。

しかし、最初スクリプトから動かそうとしてもうまくいきませんでした。「Animation」でキーフレームを打ってさせる方法は重ねたいアニメーションにレイヤーで重ねればよいのですが、スクリプトからでは元のアニメーションのキーフレームの方が優先されるらしく反応してくれませんでした。(スクリプトからレイヤーのようなものを作ってブレンドさせる方法があるのかまでは分かりません)

手っ取り早い解決方法は、元のアニメーションの表情のキーフレームを削除してしまうことです。しかし、FBXでインポートしたアニメーションはデフォルトでは(Read-Only)となっていてキーフレームの削除どころか編集できないようになっています。




こういう時は、FBXのアニメーションクリップを複製(Ctrl + D)してそちらを使用すれば編集可能になります。




とりあえず、シェイプキーのキーフレームを全部削除しておきます。


public class FacialMorphing2 : MonoBehaviour {

    private SkinnedMeshRenderer SKMR_Kao;
    private SkinnedMeshRenderer SKMR_Mayu;  
    private SkinnedMeshRenderer SKMR_me;
    private SkinnedMeshRenderer SKMR_other1;  
    private SkinnedMeshRenderer SKMR_other2;

    private Transform kao;
    private Transform mayu;
    private Transform me;
    private Transform other1;
    private Transform other2;

    public Mesh kaoMesh;

    private int shape_me;
    private int shape_kuti;
    private int shape_mayu;

    void Awake() {
        kao = transform.FindChild("kao");
        mayu = transform.FindChild("mayu");
        me = transform.FindChild("me");
        other1 = transform.FindChild("other1");
        other2 = transform.FindChild("other2");
    }

    void Start() {
        SKMR_Kao = kao.GetComponent<SkinnedMeshRenderer>();
        SKMR_Mayu = mayu.GetComponent<SkinnedMeshRenderer>();
        SKMR_other1 = other1.GetComponent<SkinnedMeshRenderer>();
        SKMR_other2 = other2.GetComponent<SkinnedMeshRenderer>();
    }
...


あとは、各メッシュのSkinnedMeshRendererコンポーネントを取得し各BlendShapesの値を操作します。各メッシュそれぞれにスクリプトをアタッチするとモーフミキシングがバラバラになりやりにくくなるので親元から子のメッシュを取得するようにしました。

FindChildで取得する数が増えると処理が重くなることを想定して、明確にStart()の前に実行されるAwake()を使っています。(FindChildって公式リファレンスに載ってないのですがあんまり使うべきではないのでしょうかね。publicで直接取得でも良かったと思いつつ。)


        shape_mayu = 6;
        shape_me = kaoMesh.GetBlendShapeIndex("ジト目");
        shape_kuti = kaoMesh.GetBlendShapeIndex("たじろぎ_歯無し");

        SKMR_Mayu.SetBlendShapeWeight(shape_mayu, 100);
        SKMR_Kao.SetBlendShapeWeight(shape_me, 56);
        SKMR_Kao.SetBlendShapeWeight(shape_kuti, 100);

BlendShapesのブレンド値には
SkinnedMeshRenderer.SetBlendShapeWeightを使います。引数1はint型でブレンドシェープのインデックス番号で引数2がfloat値のブレンド具合です(リファンレスではウェイトは [0から100] の範囲に制限されないそうです)

ブレンドシェープの数がひと目で分かるぐらいならインデックス番号でいいんですが、30、40ぐらいになってくるといちいち数えるのが大変になります。

こういう時、Mesh.GetBlendShapeIndexを使えばブレンドシェープに登録されてある名前の文字列からint型のインデックス値を返してくれます。日本語名でも使えるのでこちらの方が見分けやすいですね。ただし、対象のメッシュを予めMesh型で取得しておく必要があります。




スクリプトからBlendShapesを操作して表情を変えさせてみたものをbxSliderを使ってGIFアニメ風に再現してみました。(今回は動かす必要も無いと思い直立不動で表情のみ変化させています)

スクリプトのみで表情を動かすためには次の表情の前に表情を戻す処理や滑らかに遷移させるための処理を考える必要があったりと、やはりスクリプトだけでやるよりはAnimationを使った方が楽だと思いました。

あえて、スクリプトでBlendShapesを操作してアニメーションをさせるならリニアカーブ的に中割り無しで表情を切り替えるような演出をしたい時には使えるかなとかとも思いました。

Unity5.6にしてよく落ちるようになったという話ですが、Unity5.6で新規でプロジェクトを作ったものに関しては落ちることはまだありません。古いバージョンのプロジェクトを扱う時に注意しておけば安心のようです。


スポンサーサイト
テーマ: CG ジャンル: 日記
Unityでキャラの表情コントロール



カレンは表情モーフも作ってあるので、ならばUnity上からでも表情を操作できるようにしたい、ということでやってみることにしました。

まず、Blenderから表情のアニメーションをFBXでUnityに渡せるようにするところからです。




Blenderでは単体のモーションクリップを「アクション」と言うかたちで管理します。その「アクション」を「NLAエディタ」上で複数ブレンドして新たなモーションを作ることも出来ます。「NLAエディタ」ではシェイプキーによる表情も「アクション」に合成させることも出来ます。

表情が不要なら単体「アクション」だけでいいのですが、表情も必要な時は「NLAエディタ」での編集が必要になります。

シェイプキーのみのアニメーションはFBXでUnityに持っていくことは出来ないようで、表情をFBXに入れたい時はフィギュアのアーマチュア(ボーン)のアニメーションと重ねておく必要があります。(必ずしも動かさなくてもよい)

ですので、「T-Pose」に「まばたき」と「眉怒り」と「あ(歯あり)」の表情を付けてFBXでUnityに渡し、Unity側でアニメーションクリップの分割をしてそれぞれの表情を切り出す方法でいきたいと思います。




「T-Pose」からそれぞれの表情を切り出しました。これらの表情にはT-Poseのキーフレームが打たれていますのでモーションの妨げにならないように必要ないところはマスキングしておきます。




このモデルは剣のボーンの扱いをちょっと試す必要があるため、今のところRigは「Humanoid」ではなく「Generic」のままです。ですので、マスクは「アバターマスク」ではなく「Transform」からかけることにします。表情に関係していないところはチェックを外します。




切り出したクリップをAnimatorのLayerにセットします。それぞれの遷移はBool型でスクリプト上から操作します。レイヤーのブレンドは眉は「OverRide」、まぶたと口は「Additive」です。




まず、「まばたき」は自動でするようにしたいのでコルーチンを使うことにします。

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class FacialMorphing : MonoBehaviour {
  private bool mayu_ikari = false;
  public Slider mouth_a;
  public Text mabataki_ib;
  private Animator animator;

void Start () {
  animator = GetComponent<Animator>();
  StartCoroutine("MabatakiCor");
}

private IEnumerator MabatakiCor() {
  for (;;) {
  float rand = Random.Range(0.5f, 3.0f);
  mabataki_ib.text = rand.ToString();
  Mabataki();
  yield return new WaitForSeconds(rand);
  }
}

private void Mabataki() {
  animator.SetBool("mabataki", true);
  Invoke("Mabataki0", 0.3f*Time.deltaTime);
}
private void Mabataki0() {
  animator.SetBool("mabataki", false);
}


「まばたき」は一定時間で繰り返しても味気ないので不定期になるようにWaitForSeconds()の引数をRandom.Rangeでランダムに0.5から3.0の間の値になるようにしました。

「まばたき」のクリップは閉じるのと開くのを別々のクリップにしたので閉じたら時間差で開くアニメーションを実行するようにしています。

public void MayuIkariOn() {
  if (!mayu_ikari) {
  animator.SetBool("mayu_ikari", true);
  mayu_ikari = true;
  } else
  if (mayu_ikari) {
  animator.SetBool("mayu_ikari", false);
  mayu_ikari = false;
  }
}


眉毛はUIのボタンを押すたびに「普通」と「怒り」を交互させるようにしました。

口はレイヤーのWeightをスライダーでコントロールして制御してみようと思いました。




public void MouthA3_Slider() {
  float slwma = mouth_a.value;
  animator.SetLayerWeight(3, slwma);
}


レイヤーのWeight値のコントロールにはAnimator.SetLayerWeightを使います。引数1はint型のレイヤーの番号で、引数2は0から1間のFloat値でレイヤーのブレンド具合になります。

それで完成したのをGIFアニメーションにしてみました。


Imgur.comの動画をGIFのようにブログ等に貼れる用に出来るサービスを使ってみました。GIFより軽くてキレイに使えるメリットがある反面、ブラウザ上でピッタリと動画のループを合わせるのは至難の業ですね(汗)。けっこう、格闘しましたが妥協することにします(- -)。なんか再生速度もおかしくなってる気もしますが、いちおう自動まばたきとUIから表情を操作している雰囲気は伝わりますでしょうか(^^;)。(始めに用意したGIFアニメはFC2BLOGのアップロード2BM以内の制限に余裕で超過でした)

とりあえず、Unityでモーフを操作して表情を変えることが出来るようになりました。しかし、こういう感じで作ったモーフをUIから全て操作出来るようにするのはすごく骨が折れそうな作業になりそうですね。さすがに全部はやる気はありませんけど(^^;)。始めからモーションに表情をベイクしておく方が楽ですからね。要所要所で使い分けた方が良さそうですね。

ところで、Unity5.4からUnity5.6にしてみたのですが、Unityがなんかすごい頻度で落ちてしまいます。今まで、こんなに落ちたこともなかったのですが。Unity5.4以前で作ったプロジェクトを扱っていたからかもしれませんが、ちょっと怖いですね。うっかり、残そうと思っていたUnity5.4を上書きインストールしてしまいました。しかし、また入れ直す気にはなれませんので、もう少し様子をみることにしましょう。


~後日追記~

Blenderで作ったシェイプキーはFBXでUnityにインポートするとメッシュごとに「Skinned Mesh Renderer」の「BlendShapes」というかたちでUnity上から全てのモーフが使えるようになっているのを後から知りました。そのことについては次回に書いてみたいと思います。
Unityで揺れモノの表現



今回はUnityでMMDモデルではなく、FBXモデルでオリキャラの揺れモノの物理セットアップをしてみようと思います。




揺れモノですので、何かモーションが必要になります。今回はカレンにBlenderで歩行モーションを付けてみました。




Blenderからアニメーション付きのFBXでエクスポートして、Unityにインポートしました。トゥーンマテリアルは前のを流用しています。

・Unityでのトゥーンセットアップ




今回は、スカートというか腰巻の部分はUnityのクロスシミュレーションを使ってみたいと思います。腰巻のメッシュにPhysicsのClothコンポーネントを追加します。




クロスのEditモードで矩形選択、ペイント等を使いクロスのコンストレイントの影響範囲を設定します。赤が影響力0、緑が影響力Maxになります。クロスが他のメッシュと接触している部分は影響力0にしておかないとずり落ちてしまいます。




クロスの当たり判定のコリダーにはGameObjectのカプセルと球を使います。足にはカプセル、腰には球を設置しました。これらのコリダーだけ必要なので、形状は見えないようにMeshRenderはオフにしておきます。




後は、コリダーを各ボーンの入れ子にしてコリダーの配列にセットします。(球コリダーが一つの場合、Sphere Collidersの2番目はべつにnullのままでいいみたいです)

髪の揺れモノはこちらで配布されている「Unity揺れものスクリプト」を使わせてもらいました。3つのスクリプトを使ってセットアップしていきます。

使い方は、まずルートボーンにスクリプト「YureManager.cs」をアタッチします。




次に、揺らしたいボーンに「YureBone.cs」をアタッチして子ボーンを指定。後は、コリダーにしたいオブジェクトに「YureCollider.cs」をアタッチと、とくに難しい設定無しで揺れモノ表現することができました。




剣と羽のところもこのスクリプトで揺れるようにしました。




GIF動画にしてみました(GIFなので色合いが変わってしまいましたが)。揺れモノの動きは結構いい感じになっていてくれていると思います。設定はコリダーの半径ぐらいしか変更していません。シンプルなのに効果は絶大ですね。

せっかくなので、クロスの各項目の設定で見た目に大きく反映されそうなことをメモしておこうと思います。

「Stretching Stiffness(布の伸縮率)」
「Bending Stiffness(布の曲げ剛性)」
「Damping(モーションの減衰係数)」

上の3つに絞って比較してみたいと思います。




今回のセッティングは「Stretching Stiffness」、「Bending Stiffness」が共に1。「Damping」が0.5です。




「Stretching Stiffness」を0にするとクロスが縮み上がります。




「Bending Stiffness」を0にすると重力に従ったようにだらんと垂れる感じになります。よりリアルな布の感じになりますね。しかし、内側に黒いノイズが頻繁に現れます。ローポリ形状ではちょっとキビしいのかもしれません。(トゥーンシェーダーで両面表示だからというのもあるのかもしれませんが)

布であっても垂れずにモデリングした形状をなるべく保ってほしい時にはここの値は大きい方がいいかもしれませんね。




「Stretching Stiffness」、「Bending Stiffness」を共に0にすると、ちょっと使えそうにありません。




「Damping」を1にすると布がフワフワしたようになびきます。しかし、これもローポリではムリがあるのかもしれません。メッシュが貫通しやすくなります。




「Damping」を0にすると塩ビ素材のようにベランベランとした感じになりますね。やはり、ローポリならば0.5ぐらいが無難でしょうか。

あと、「Solver Frequency(一秒間ごとのソルバー反復の回数)」は480あたりがちょうどいい気がします。

今回はこのような感じになりましたが、他のモーションをさせる時に設定の変更もありうるかもしれません。揺れモノは奥が深いですね。また長くなってしまいましたね、本日はこの辺で。(^^;)


テーマ: CG ジャンル: 日記
カレンのMMD用セットアップ



オリキャラ「カレン」にPMX Editorで剛体とジョイントを付けてMMD用の揺れモノ対応物理セットアップをしてみました。




剛体の構成はだいたいこんな具合です。




ここで、前にBlenderでのIKの設定そのままだとMMDモデルではうまく動かないと書いた事についてです。

BlenderでボーンコンストレイントのIKを設定しただけでは足がグリングリンと人間の関節ではありえない方向に曲がったりしてしまいます。ですので、ボーンに軸の角度制限を付けておくことになります。

足の膝の関節は腰を下ろせば膝が前方に折れ曲がるのが自然です。ですので、膝が後方に曲がらないようにX軸に0~180度の制限を付けておきます。Y軸Z軸は動かないよう0にしておきます。

しかし、この設定でMMDに持っていきIKを効かせると膝が後方に曲がり「逆くの字」になってしまいます。どうやら、BlenderとMMDの仕様の違いで逆になってしまうようです。




そこで、PMXEでボーンの設定を変更する必要があります。足のIKボーンの[Link]の「ひざ」の角度制限をBlenderと逆側になるようにX軸の角度制限を「0~180度」ではなく「-180~0度」に変更します。IKの効き具合が弱かったら[Loop]値を大きめにするといいかもしれません。




これで、PMXE(MMD)上でも膝が前方に曲がるようになります。




Blenderで設定した他のボーンコンストレイントも逆方向に働くようだったら[付与率]に[-1]を掛けた値にするとうまく動くようになります。

あと、PMX Editorの見逃しがちな大事な設定のこともついでに書いておきたいと思います。このままこのモデルをMMDに持っていくと「表情操作」で表情を変化させてキーフレームを打つことも出来ますが、そのキーがフレーム上に表示されず編集作業がやりにくいです。

これは、「表示枠」の項目で設定しておく必要があります。




「モーフ」項目でモーフを[Ctrl+A]で全て選択して、右クリックして「Indexコピー」をします。




「表示枠」項目の[表情]を選択して「枠内要素」の空欄上にポインターを持っていって右クリックで「クリックボードから追加/更新」(Ctrl+V)でコピーしておいたものをそこに追加します。




これで、表情もフレーム上に表示されるようになります。

IKや髪などもフレーム上に表示させたい時は同様な手順で対象をIndexコピーして「表示枠」のしかるべく場所に貼り付けておきます。

カレンのMMD用物理セットアップと表情付けの記念に「うごイラ」にしてみました。







MMDと言っていますが実際のモーション付けとレンダリングはMMMで行っています。

MMMはMikuMikuMovingの略でMikuMikuDanceの互換ソフトです(公式サイトはこちら)。MMDよりもモーション付けがし易いように色々と便利な機能が使えるようになっています。MMMとボーンコンストレイントを併用すればMMDモデルのモーション付けも驚くほどやりやすくなりますね。

カレンも表情豊かになりました。しかし、相変わらずキャラ設定を考えていないのでした。f(^^;)

次はUnityで動かしてみるつもりです。

テーマ: CG ジャンル: 日記
Blenderのシェイプキーで表情付け



Blenderのシェイプキーでオリキャラ「カレン」の表情をいくつか付けてみました。




Blenderの「シェイプキー」というのは他の3DCGアプリケーションでいう「モーフミキサー」と言うものと同じです。例えば、「目をつぶる」と「口を開く」の別々の2つの表情をミックスさせて「目をつぶりながら口を開く」という表情を作ったり出来ます。

正直言ってBlenderでモーフターゲットを作るのはめちゃ捗りますね。自分的にはモデリングソフトとしてのBlenderはもう手に馴染んですごく使いやすいです。
(ちなみに、自分はデフォルトの「右クリック選択」でやっています)

嬉しいことに、Blenderではモーフを作ってしまった後でも、そのベースのメッシュに形状を追加したいときにはメッシュが崩壊することもなく出来たりします。後から「あれ入れておけばよかった・・・」とか後悔することもありません。(^^;)




とりあえず、Blenderで作った表情ですが、pmxでエクスポートしてMMDでモーフィングさせてみました。モーフは分かりやすいようにPMXEでそれぞれのカテゴリーに分類しておきました。




「素の表情」です。




口「あ3_歯あり」で笑顔。




眉「困り」と口「たじろぎ_歯無し」で「はぁ~、何言ってるの!?」的な表情。




眉「怒り」と口「い」で何かめっちゃ怒ってます(^^;)。両目ボーンも上目遣いで使っています。




眉「怒り」、目「まばたき」、口「への字」で「渋々納得」的な表情。




目「ウィンク_R」と口「う」で「なーんて、冗談でした♥」的な表情。

指に付けておいたボーンコンストレイントのおかげで手を握るという動作もやりやすいですね。

まだ試したい表情もありますが、追々やっていくことにしましょう。その前にBlenderでUnity用のモーションを作ってみたいですね。Blenderのアニメーション機能は結構色々出来ることが判りました。Blender、まだ知らない機能がたんまりありそうです。

テーマ: CG ジャンル: 日記
Visual Studio 2017のインストール



今朝、MicroSoft社からVisual Studio 2017の正式版が使えるようになったとお知らせメールが着ていました。VS2017はUnityとの連帯もさらに良くなっているそうです。

なので、早速インストルさせてもらうことにしました。とりあえず、Visual Studio Community 2015をアンインストールして30GBぐらいCドライブの空き領域を確保しておきました。




Visual Studio 2017のダウンロードのページから無償版の「Community 2017」をインストールしてみることにします。




何も選択していないVisual Studio 2017の本体のサイズは606MBとずいぶん小さいですね。ここから利用者の必要なものを選んで入れればいいのですね。




試しに全部選択してみると50.52GBとすごいことになります。全部入れておいてもいい気もしますが、さすがにこのサイズともなると躊躇しますね。まず、必要なものだけ入れておいて後から必要になったら追加するようにしておいた方がいいかもしれませんね。






とりあえず、今のところ自分的にはWindowsディスクトップアプリ関連とUnity関連だけで良さそうです。インストールサイズは17.5GBでお手頃です。(^^;)




インストールに時間がかかるものだと思っていましたが、昼食をとるタイミングでインストールを開始して30分ぐらいして戻ってきたら、もうインストールが済んでました。思っていた以上に早かったですね。Visual Studio 2015の時は3~4時間ぐらいかかったような気がします。(Update 3のときは何故か丸2日ぐらいかかりました・・・)




それで早速、Unityのスクリプトエディターに登録してみました。

Unityのメニューバーの[Edit >> Preferences]から[Unity Preferences]
パネルを開き、[External Tools >> External Script Editor]から、
[C:\ProgramData\Microsoft\Windows\Start Menu\Programs]
にある、「Visual Studio 2017」のショートカットを選びます。




これで、UnityでVisual Studio 2017をスクリプトエディターとして設定することが出来ました。UnityのスクリプトをダブルクリックするとVS2017がスクリプトエディターとして起ち上がりました。




onと二文字打っただけで入力候補がいっぱい出てきます。




現れた候補からOnCollisionEnterを確定すると、
private void OnCollisionEnter(Collision collision) {}
とprivate voidからパラメーターとしてcollisionまで用意してくれます。たった二文字からここまでしていただけるとは至れり尽くせりですね。(^^;)

VS2015まではOnCollisionやOnTriggerなど入力候補として現れてくれず、全文字をキー入力しないとなりませんでした。これはすごく便利になりましたね。

あと、クラス単位やメソッドごとに点線でくくられているので終わりのカッコがどこのカッコか判別しやすくなっていますね。

じつはUnity5.5はまだインストールしてないのですが、そろそろ入れてみたいですね。


テーマ: CG ジャンル: 日記
Blenderでカレンのセットアップ



Unity用にShade 3Dで制作したオリキャラ「カレン」でしたが、アニメーションに対応したセットアップはBlenderの方が何かと都合がいいです。ですので、続きはBlenderでやっていこうと思います。




Shade 3DからFBXで書き出して、そのままBlenderに読み込ませるとこんな感じになってしまいます。ボーンの向きがなんともおかしいです。このままでも普通に動かすことは出来ますがボーンの向きに統一感があった方が見やすく扱いやすいので直したいところです。ボーンの向きを一つ一つ直していくことも出来ますが、それでは相当大変そうです。




こういう時はBlenderのインポートの設定を見直して入れ直した方が簡単です。「アーマチュア」の項目で「リーフボーンを無視」と「子を強制的に接続」と「ボーン方向の自動整列」にチェックを入れインポートし直します。

キャラクターが横たわってしまうようなら、「メイン」項目の「方向を手動で設定」を設定してみるといいかもしれません。




これで、うまくいきました。




リーフボーン(Leaf Bone)というのは、ボーンの末端の空のボーンのことです。一般的な3DCGソフトでは一本のボーンでも実際は始点ボーンと末端ボーンの2つで構成されます。Blederでは一本のボーンは一本だけでいいので、リーフボーンも一つのボーンとして認識されてしまいます。そもそもリーフボーンは向きや長さが不確定なためにBlender側がなるべく自然になるようにそれらを自動で設定するようです。とくにリーフボーンが必要ないならオプションで「リーフボーンを無視」にチェックを入れることで実体化されなくなります。




Blenderでさらにプロポーションなど色々メッシュの変更、ボーン、スキンの修正など施してみました。一旦、ポリゴン化した形状の再編集はBlenderの方がやりやすいですねぇ。ポリ頂点をペジェ曲線のようにコントロールできますからね。

マテリアルの設定はうまくインポートされなかったので手動で付け直しました。Blenderのマテリアルの設定は少々ややこしいんですよねぇ。それでも、テクスチャの修正をペンタブを使って3Dペイントでやるとすごくはかどりますね。(もう3Dペイント無しなんて考えられません^^;)

このキャラはUnityで使うことが前提ですが、MMDでも動くようにしたいと思います。Unity上でMMDモデルのシェーダー設定と物理エンジン設定を再現できるプラグイン「MMD4Mecanim」で使うという選択肢も増えます。
(でも、ストア向けアプリ用とするならばMMD4Mecanimを使わなくても動くようにしたいですね)

MMDモデルをBlenderにインポートして色々研究させてもらっていたら、今までMMDモデル用のIKやらコンストレイントの設定はPMXEでやるものだと思っていたのですが、大抵の設定はBlender上でも出来てしまうんですね。驚きです。




それで、まず「ボーンコンストレイント」を使って足にIKを仕込んでみました。「全ての親」も付けてみました。




よくMMDモデルで見かける頭上にある両目を動かすためのボーンもボーンコンストレイントの回転コピーで設定できるのですね。




指の第三関節に従うようにボーンコンストレイントの回転コピーを第一関節、第二関節に設定しておけば「握る」という動作もすごく楽に出来ますね。Blenderでアニメーションをやったことがありませんでしたが、思っている以上にやりやすいのかもしれませんね。こちらも勉強してみることにしましょう。




セットアップ完了後、Blenderからpmxでエクスポートして、PMXEで輪郭線やマテリアルの設定をしてMMDに取り込んでみた図です。




IKはちょっとBlenderでのそのままの設定ではうまく動かないようで、PMXEで変更作業が必要でした。そのことについては日を改めて書きたいと思います。でも、結果的にIKもうまくいきました。




「両目ボーン」はうまく動きました。一つのボーンで左右の目の動きをコントロールできます。

長くなってしまったので、揺れモノ等の続きの話は次回にでもしたいと思います。

このカレンはUnityのパーティクルで魔法エフェクトを使わせたいと思い作ったファンタジー系キャラクターでしたが、いつの間にか半年も経ってしまっていました(汗)。そろそろ、実現させないと。f(^^;)


テーマ: CG ジャンル: 日記
ZBrushへのアップグレード価格は?



ZBrush Coreを使い始めてZBrushに興味を持つようになって気になるのは、ZBrushCoreからZBrushにアップグレードできるのかです。

せっかく、ZBrush Coreを持っているのですからその分新規で購入するより価格がお安くなれば嬉しいです。ちょっと、Pixologicのサイトで確認してみました。

結論は、ZBrush 4R8がリリースされた後から可能だそうです。気になる割引価格は、定価より100ドル分が割引されるようです。(PayPalでの支払いも可)

現在、ZBrush 4R7の定価は795ドルなのでZBrushCoreユーザーなら695ドルで購入できるということですね。おそらくこれは、Pixologicの公式サイトから直接ダウンロードで購入する場合であって日本の代理店ではどう扱われるかはまだ分かりません。(はたまた、R8の価格はR7と同じなのかもまだ分かりませんが)

アップグレードしてもCoreの使用継続は可能であるが、他の誰かに使用権を譲ってはいけない、Coreからのアップグレードではシングルユーザーライセンスのみでボリュームライセンスとフローティングライセンスは対象外とのこと。

しかし、ZBrush 4R8のリリースは結構前から発表されていたみたいですが、いつリリースされるんでしょうね。その時だけでも円高になってくれたらとか願ったり。(^^;)





テーマ: CG ジャンル: 日記
ZBrush Coreでリアル系スカルプト



ZBrush Coreでリアル系女性モデルのスカルプトにチャレンジしてみました。今回は上半身までということで。




球体から捏ね始めて、大体丸一日でこのぐらいに仕上がりました。総ポリ頂点数は何と1,673,000です。(@o@;)




髪は雑ですがこれぐらいにしておきましょう。本家ZBrushだと髪用のブラシも色々あるようですがZBrush Coreでは本家ZBrush用のブラシを使うことは出来ません。でも、ZBrush Coreの基本ブラシだけでもやろうと思えば色々出来ますね。




まつ毛もあった方がいいと思ったので一本一本独立した形状で作ってみました。普通はこういうのは透過テクスチャなどで表現するところですがZBrushCoreだとそういうのは出来ません。意外にも、ZBrushでも頂点一つだけを動かす事もできるのでローポリ形状をちまちま編集しました。








昔、本気で絵の勉強をしていた頃もあり、人体解剖学の勉強もさんざんやっていたのですが(定価で一万円もする医学生向けのネッター解剖学図譜も購入したぐらい^^;)、知識として知っていても絵ではなかなかうまく表現が出来ませんでした。それで、満足出来るレベルに至ることが出来ず、ずっと好きだった絵を描くことをいつしか諦めてしまったのでした。

それでも、絵がうまく描けなくても3DCGスカルプトでならうまく表現出来るかもしれないとか思わせてくれます。

ポリゴンモデリングではリアル系はあまりやる気も出なかったのですが、スカルプトで形を作ってリトポロジーすればものすごく時間短縮と効率化ができそうですね。可能性が広がります。

今まで3Dモデリングではポリラインの流れを考慮に入れつつしないといけませんでした。それは結構な制約を抱えながらモデリングをすることになります。しかし、ZBrushではポリラインなど意識しなくてもよく、本当に自由に絵を描く様にモデリングが出来ます。

ZBrush、想像以上に3Dモデラーにとっては夢のようなツールですね。はじめはZBrushは難しそうで買っても使いこなせないかもとか思っていたのですが、その心配はなさそうです。本家ZBrush使ってみたいなぁ。

しかし、ZBrushはだいたい10万円ぐらいですかぁ。すぐにポンと出せる金額ではありませんが、やれることと比べたら安いぐらいなのかもしれません。今すぐ必要というわけではありませんが、将来的には購入したい気になってきました。

ZBrush4R8が近いうちにリリースされそうな感じですね。その時、セールでもやってくれれば飛びつくかもしれません。(^^;)

久しぶりにうごイラにしてみました。







テーマ: CG ジャンル: 日記
ZBrush Coreでフィギュア捏ねてみた



さっそく、入手したZBrush Coreで何か作ってみようと思いました。スカルプトで作るのならリアル系にチャレンジしてみたいところですが、まずZBrush Coreの操作に慣れるために作り慣れているアニメ調のフィギュアにしてみようと思いました。




で、こちらが初めてZBrush Coreで作ってみたフィギュアです。下描き無しで直感で捏ねてみました。




ZBrushの操作は独特だと聞きますが確かにそうですね。今までポリゴンモデリングで3Dフィギュアを作る時は、メッシュラインの貼り方とかポリゴン数とか気にしながらポリ頂点を増やしてひたすら調節してという感じです。

ZBrushではポリゴン数とかそんなに気にしなくてよくて、ほんとに粘土感覚で捏ねてヘラで切れ込み入れたりとポリゴンモデリングとはまるで感覚が違いますね。どちらかと言うと絵を描く感覚に近いかもしれません。




本家ZBrushは触ったことはありませんが、ZBrush CoreのUIはとてもシンプルで使いやすいようになっています。ZBrush入門者でもすぐ慣れますね。マニュアルには「ZBrushCoreで学んだ知識はZBrushにそのまま適用できます。」と書いてあります。ほとんど変わりないのでしょうかね。




ポリゴンモデリングは込み入ってくると途中で大きな修正とかやり直しとか厳しくなってきますが、スカルプトだと大胆に全部投げ捨ててまた最初からやり直すというのも心置きなくできます。(笑)




体は何やら宇宙服っぽいですが、これはまだZスフィアの状態です。ZBrushでは身体のような形態を作ろうとする時はZスフィアというものをつなぎ合わせたり伸ばしたりしながら大まかに形作ってからスカルプト可能なダイナメッシュに変換してスカルプトするのが一般的のようです。(ようするに、まだ体は作ってません^^;)




色を塗ってみるとこんな感じです。しかし、このテクスチャーはエクスポートは出来ませんが。

ちなみに、このローポリ風キャラクターの頭の部分だけでポリ頂点数は合計423,150にもなります。見た目に反して超ハイポリとなっております。しかし、これだけの頂点数を扱ってもサクサクとモデリングできるしフリーズすることもない、噂通りZBrushすげえです。

(そう言えば今までZBrushは32bitで、現在64bitはプレリリース版で使えるようになって次期バージョンで正式に64bitに対応するようなことだったような気がしますが、このZBrush Coreは64bitフォルダーにインストールされているということは64bit版みたいですね。)




ZBrushでは独立したメッシュパーツのことを「ツール」と呼ぶようです。各ツールは「サブツール」というかたちでそれぞれ独立させて管理が出来ます。また、同一ツールであっても「ポリグループ」というかたちで独立させて扱うことも出来ます。

ZBrush Coreには日本語マニュアルが付いていますが簡単な操作の解説で30ページぐらいしかなく、各機能などの解説は載っていません。




でも、親切なことにZBrushでは各アイコンにCtrlキーを押しながらポインターを合わせるとその機能の説明が表示されるようになっています。

これはデフォルトでは表示されませんが、「環境設定」タブの「クイックインフォ」をアクティブにして、「言語」の「オプション」の「ノート表示」をアクティブにすると表示されます。これで、マニュアルがなくてもなんとかなるかもです。

今までためらっていたスカルプトですが、これは思っていた以上に革新的ですね。自由度が高く人物モデリングなどはポリゴンモデリングより簡単かもしれません。しかし、ポリゴンモデリングなら簡単に出来ることがなかなか出来ないという歯がゆさもあります。

大幅に機能が制限されているはずのZBrush Coreですが、それでもBlenderと併用すれば十分3Dモデル作りには重宝しそうです。本家ZBrushだともっとすごい機能が満載で更に自由度が高いモデリングが出来るんでしょうね。結構興味が湧いてきましたが、当面はZBrush Coreでスカルプトの練習を積みたいと思います。




テーマ: CG ジャンル: 日記
カテゴリ
ini-T MUSIC SKY
プロフィール