かぴばらさんの覚書ブログ (nonkapibara 自分メモ)

かぴばらさんの覚書ブログ (nonkapibara 自分メモ)

Unity勉強中です。 AR、VR、エンターテイメント全般、ワクワクする事が大好き♪♪ O(≧∇≦)O イエイ!!

【Blender】UnityにInportする為にBlenderで「Walk」「Run」「Jump」のアニメーションを作る

環境メモ
⭐️Mac OS Mojave バージョン10.14
⭐️Blender v2.79.6
⭐️Mac Book

 

実際に動かした動画はこちら↓↓

https://twitter.com/nonnonkapibara/status/1101563411240869888

 

1.カメラアイコンをTapして、フレームレートを30fpsにする。
(1秒間に30フレーム)

f:id:nonkapibara:20190302141336p:plain

 

2.ドープシート エディタと、タイムラインを表示する

f:id:nonkapibara:20190302141551p:plain

 

f:id:nonkapibara:20190302141654p:plain

f:id:nonkapibara:20190302142032p:plain

 

3.アニメーションの名前をつける。

ドープシートから、アクションを選択する

f:id:nonkapibara:20190302142204p:plain

 

4.新規ボタンを押す。

f:id:nonkapibara:20190302142245p:plain

5.アニメーションの名前をつける。必ず「F」を押すこと。

Fを押してないと保存できない。

f:id:nonkapibara:20190302142801p:plain

 


6.タイムラインのフレームを入力する

開始1

終了17

f:id:nonkapibara:20190302142350p:plain

※タイムラインの幅が狭いな。。と思ったら、両端をつまみながらスライドすると、
タイムラインが広がったり、縮んだりする。

f:id:nonkapibara:20190302142615p:plain

 

7.アニメーションは、対象のボーンを選択して、キーフレーム を打っていく。という作業になる。

いっきに、全てのボーンを選択して、キーフレーム を打っても良い。

ここでは、まずは、足からキーフレーム を打つ。

f:id:nonkapibara:20190302142930p:plain

8.まずは、1フレームを選択する。

両足を選択した状態で「I」キーを押す

f:id:nonkapibara:20190302143258p:plain

 

9.「回転」を選択する

f:id:nonkapibara:20190302143332p:plain

f:id:nonkapibara:20190302143431p:plain

10.次に17フレーム目に飛ぶ

f:id:nonkapibara:20190302143519p:plain

11.先ほどと同様に両足を選択した状態で「I」キーを押し、回転を選ぶ

f:id:nonkapibara:20190302143617p:plain

f:id:nonkapibara:20190302143641p:plain

こんな感じで直立に立つ箇所は、キーフレーム を打っていく

ここでは、1フレーム目、9フレーム目、17フレーム目に打った。

12.次に、足を動かす。まず5フレーム目に飛ぶ

f:id:nonkapibara:20190302143951p:plain

13.足を前後にずらす。

f:id:nonkapibara:20190302144034p:plain

f:id:nonkapibara:20190302144242p:plain

14.両足を選択した状態で、「I」キー、回転を選ぶ。

f:id:nonkapibara:20190302144352p:plain

15. 13フレーム目に移動し、今度は、反対方向に、足をずらす

f:id:nonkapibara:20190302144447p:plain

f:id:nonkapibara:20190302144509p:plain

f:id:nonkapibara:20190302144643p:plain

 

 

こんな感じで、他のボーンも、同じように、キーフレーム を打っていく

走るRunは、こういう風に、キーフレーム を打ちました。

f:id:nonkapibara:20190302145320p:plain

f:id:nonkapibara:20190302145335p:plain

f:id:nonkapibara:20190302145353p:plain

f:id:nonkapibara:20190302145408p:plain

f:id:nonkapibara:20190302145427p:plain

 

ジャンプ(Jump)は、体ごと、移動するので、

体の中心のボーンを選択し、

 

※体の中心のボーンの入れ方は、下記参照

Blender】アーマチュアの設定(ボーンを入れる)

https://qiita.com/nonkapibara/items/46e9fedecc3905240289

f:id:nonkapibara:20190302145755p:plain

f:id:nonkapibara:20190302145928p:plain

中心となるボーンのみ選択した状態で「I」キーを押して、位置/回転を選ぶ

f:id:nonkapibara:20190302150124p:plain

完成!!!

【Blender】アーマチュアの設定(ボーンを入れる)

 

環境メモ
⭐️Mac OS Mojave バージョン10.14
⭐️Blender v2.79.6
⭐️Mac Book

 

 アーマチュアの設定(ボーンを入れる)

 

完成図↓↓↓↓↓↓

f:id:nonkapibara:20190301001514p:plain

1.まず3Dカーソルを体の中心に持ってきて、原点移動する

f:id:nonkapibara:20190228225005p:plain

f:id:nonkapibara:20190228225037p:plain

2.全てメッシュを統合する

f:id:nonkapibara:20190228225457p:plain

 

f:id:nonkapibara:20190228225528p:plain

3.「オブジェクトモード」にして、「単一ボーン」を選択する

f:id:nonkapibara:20190228225824p:plain

4.「N」キーでプロパティを表示し、「レンダリングする物のみ」チェックOFFする。
これをしないと、ボーン(骨)が見えない。
ボーン「レントゲン」チェックONする
f:id:nonkapibara:20190228224754p:plain

5.ボーンを体の中心に置くために、四分割表示にする

f:id:nonkapibara:20190228230309p:plain

6.ボーンを配置していく

f:id:nonkapibara:20190228230846p:plain

7.ボーンを作っていく時に、左右対称で作成するボーンは、ボーンの名前の先頭「L」にする。

f:id:nonkapibara:20190228234033p:plain


8.対称化(symmetrize)にする

f:id:nonkapibara:20190228234245p:plain


※対称化(symmetrize)を使わない場合は、

X軸ミラーチェックONにして、左右対象のボーンを作っても良い。

f:id:nonkapibara:20190228234436p:plain

 

9.メッシュとボーンの関連付けをする。

まず、メッシュを選択した後で、ボーンを選択する

f:id:nonkapibara:20190228234621p:plain

10.Ctrl + P で「自動ウェイトで」を選択する。これでOK

f:id:nonkapibara:20190228234809p:plain

11.動かした時の調整をする。ウェイトペイント。

まず、オブジェクトモードにして、ボーンを選択する

f:id:nonkapibara:20190228235237p:plain

12.編集モードにして、ボーンを選択する

f:id:nonkapibara:20190228235516p:plain

 

13.ポーズモードを選択する

f:id:nonkapibara:20190228235636p:plain

14.ボーン、メッシュの順で選択する

f:id:nonkapibara:20190228235802p:plain

15.ウェイトペイントを選択する

f:id:nonkapibara:20190228235922p:plain

16.動かしたくない箇所は、「減算」にして、青くする

f:id:nonkapibara:20190301000019p:plain

f:id:nonkapibara:20190301000134p:plain

17.動かしたい箇所は、「追加」で赤くする

f:id:nonkapibara:20190301000229p:plain

f:id:nonkapibara:20190301000541p:plain

動かしながらペイントできる。

動かしたボーンを元に戻すのは
Option+R

※部位がバラバラに動く場合は、すべてを正規化にしたら、1つにまとまる。

f:id:nonkapibara:20190301000913p:plain

完成!!!!

 

 

※追記

この後、Blenderでアニメーションする際の、ジャンプ処理を作成する時に

中心となるボーンを入れることで、ジャンプが簡単になる。

 

背骨と骨盤のTipから、中心となるボーンを追加する。名前はmasterにしました。

f:id:nonkapibara:20190302030051p:plain

 

骨盤、背骨、の親をmasterにする

f:id:nonkapibara:20190302030110p:plain

 

f:id:nonkapibara:20190302030233p:plain

 

f:id:nonkapibara:20190302030246p:plain

 

 

【Unity】キャラクターを弾ませる(ARKit)

実際に動かした動画はこちら↓↓

https://twitter.com/nonnonkapibara/status/1094640606683385856

 

 

Unity ARKit Pluginを使用する

下記ページを参照にして、ダウンロードする。

qiita.com

 

■環境
 ⭐️Mac OS Mojave バージョン10.14
⭐️Unity 2018.2.15f1
⭐️Mac Book

 

1.UnityARKitSceneを展開する

f:id:nonkapibara:20190211022349p:plain

2.以下を非表示にする

①「RandomCube」非表示

②「GeneratePlanes」非表示

③「PointCloudExample」非表示

④「PointCloudParticleExample」非表示

⑤「AR3DOFCameraManager」非表示

f:id:nonkapibara:20190211022201p:plain

3.「HitCubeParent」の配下のHintCubeを削除して、新しくGameObjectを作る。

(PiyoKumaObjectという名前にした)

新しく作ったGameObjectに

Unity AR Hit Test Example」を追加する

Unity AR Hit Test Example」のHit Transformに「HitCubeParent」をセットする。

f:id:nonkapibara:20190211022927p:plain

4.床(Plane)を透明にするには(shadowPlaneMaterial)をセットする

f:id:nonkapibara:20190211023120p:plain

 

5.床(Plane)にPhysicをセットする

f:id:nonkapibara:20190211023219p:plain

f:id:nonkapibara:20190211023245p:plain

6.キャラクターに、Physicをセットする

f:id:nonkapibara:20190211023324p:plain

7.メタリックのマテリアルボールにも、Physicをセットする

f:id:nonkapibara:20190211023402p:plain

f:id:nonkapibara:20190211023447p:plain

8.Gameオブジェクトに、スクリプトをセットする

f:id:nonkapibara:20190211023518p:plain

9.ボタンのCanvas「UI Scale Mode」を「Scale Width Screen Size」にする

f:id:nonkapibara:20190211023813p:plain

10.ボタンにClickイベントを追加する

f:id:nonkapibara:20190211023849p:plain

 

※メタリックのマテリアルボールの設定

f:id:nonkapibara:20190211024009p:plain

 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class piyoKuma : MonoBehaviour {
    public GameObject yello;
    public GameObject pink;
    public GameObject green;
    public GameObject blue;
    public GameObject redball;
    public GameObject blueball;
    public GameObject orangeball;

    private float posistionYello;
    private float posistionPink;
    private float posistionGreen;
    private float posistionBlue;
    private float posistionRedball;
    private float posistionBlueball;
    private float posistionOrangeball;

    void Start () {
        // Y軸を退避
        posistionYello = GetCurrentPosition(yello);
        posistionPink = GetCurrentPosition(pink);
        posistionGreen = GetCurrentPosition(green);
        posistionBlue = GetCurrentPosition(blue);
        posistionRedball = GetCurrentPosition(redball);
        posistionBlueball = GetCurrentPosition(blueball);
        posistionOrangeball = GetCurrentPosition(orangeball);

        // 重力を無効にする
        SetGravity(yello, false);
        SetGravity(pink, false);
        SetGravity(green, false);
        SetGravity(blue, false);
        SetGravity(redball, false);
        SetGravity(blueball, false);
        SetGravity(orangeball, false);
    }

    /*
     * 重力の有効、無効設定
     */
    private void SetGravity(GameObject targetObject, bool enabledFlag) {
        targetObject.GetComponent<Rigidbody>().useGravity = enabledFlag;
    }

    /*
    * Y軸の位置取得
    */
    private float GetCurrentPosition(GameObject targetObject) {
        return targetObject.transform.position.y;
    }

    /*
     * StartボタンClick処理
     */
    public void onTapPiyoKumaButton(){
        if (IsStop())
        {
            // ボールに重力をセットする
            SetGravity(yello, true);
            SetGravity(pink, true);
            SetGravity(green, true);
            SetGravity(blue, true);
            SetGravity(redball, true);
            SetGravity(blueball, true);
            SetGravity(orangeball, true);

            yello.transform.position = GetGravityMove(yello, posistionYello);
            pink.transform.position = GetGravityMove(pink, posistionPink);
            green.transform.position = GetGravityMove(green, posistionGreen);
            blue.transform.position = GetGravityMove(blue, posistionBlue);
            redball.transform.position = GetGravityMove(redball, posistionRedball);
            blueball.transform.position = GetGravityMove(blueball, posistionBlueball);
            orangeball.transform.position = GetGravityMove(orangeball, posistionOrangeball);
        }
    }

    /*
     * ボール落下移動
    */
    private Vector3 GetGravityMove(GameObject targetObject, float currentPosition)
    {
        return  new Vector3(targetObject.transform.position.x, currentPosition, targetObject.transform.position.z);
    }


    /*
    * ボール停止確認
    * 停止している場合はtrueを返す。動いている場合はfalseを返す。
    */
    private bool IsStop()
    {
        return yello.GetComponent<Rigidbody>().IsSleeping() &&
                     pink.GetComponent<Rigidbody>().IsSleeping() &&
                     green.GetComponent<Rigidbody>().IsSleeping() &&
                     blue.GetComponent<Rigidbody>().IsSleeping() &&
                     blueball.GetComponent<Rigidbody>().IsSleeping() &&
                     orangeball.GetComponent<Rigidbody>().IsSleeping() &&
                    redball.GetComponent<Rigidbody>().IsSleeping();
    }
}

 

 

【Unity】キャラクターを弾ませる

環境メモ

⭐️Mac OS Mojave バージョン10.14

⭐️Unity 2018.2.15f1

 

キャラクターを弾ませる

実際に動かした動画はこちら↓↓

https://twitter.com/nonnonkapibara/status/1094639157761036288

 

1.キャラクターをPrefab化し、Rigidbodyを追加する。

Use GravityをチェックONし、Colliderをつける

f:id:nonkapibara:20190211020317p:plain

2.キャラクターを弾ませる為に、Physic Materialを設定する

f:id:nonkapibara:20190211020507p:plain

 

f:id:nonkapibara:20190211020636p:plain

f:id:nonkapibara:20190211020715p:plain

3.Physic Materialをキャラクターに設定する

f:id:nonkapibara:20190211020832p:plain

4.床(Plane)にも、Physic Materialを設定する

f:id:nonkapibara:20190211020932p:plain

 

完成!!

 

 

【Blender】UV展開とベイクをしてからUnityへ取り込む

環境メモ

⭐️Mac OS Mojave バージョン10.14

⭐️Blender v2.79.6

⭐️Unity 2018.2.15f1

⭐️Mac Book

 

####準備#####

Inkscapeでキャラクターを描画して、png保存する

f:id:nonkapibara:20190209120238p:plain

 

Blenderpng画像の下絵を取り込む

【Blender】Blenderでpng画像の下絵を取り込む - Qiita

それから、Blenderで、3Dモデリングにする

f:id:nonkapibara:20190209120521p:plain

f:id:nonkapibara:20190209120655p:plain



####ここから、本題の作業へ入る!!!#####

 

1.対象のキャラクターを全て結合する

f:id:nonkapibara:20190209105132p:plain

f:id:nonkapibara:20190209105304p:plain

 

2.キャラクターを全選択する。

「レンダー」を選ぶ。

「Texture Atlas」を追加する

 

※Texture Atlasのアドオンが入っていない場合は、こちらを参照する。

【Blender】UV Texture Atlasを追加する - かぴばらさんの覚書ブログ (nonkapibara 自分メモ)

f:id:nonkapibara:20190209105506p:plain

3.Texture Atlasが追加できたら、「Auto Unwrap」(展開)ボタンを押す

f:id:nonkapibara:20190209105631p:plain

4.展開が終わったら「UV画像エディター」を開く

f:id:nonkapibara:20190209110102p:plain


5.先ほど展開したテクスチャを選択する

f:id:nonkapibara:20190209110315p:plain

 

6.キャラクターを全選択して「編集モード」にすると、展開ができている事が確認できる。

f:id:nonkapibara:20190209110448p:plain

 

7.「新規画像」で、画像を保存する

f:id:nonkapibara:20190209110617p:plain

f:id:nonkapibara:20190209110716p:plain

f:id:nonkapibara:20190209110741p:plain

 

10.「ノードエディター」を選択する

f:id:nonkapibara:20190209110827p:plain

 

11.キャラクターのマテリアルを、画像を追加していく

f:id:nonkapibara:20190209110923p:plain

12.「追加」ー「テクスチャ」ー「画像テクスチャ」

f:id:nonkapibara:20190209111023p:plain

13.先程、保存した画像を選択する

f:id:nonkapibara:20190209111125p:plain

f:id:nonkapibara:20190209111213p:plain

順番に、同じように、画像テクスチャーを追加していく

f:id:nonkapibara:20190209111303p:plain

 

16.ベイク処理に進む。

①レンダーを選択する。

②ベイクタイプを「ディフューズ」にする

③直接照明OFF ④間接照明OFF

⑤余白を小さくする

⑥ベイクボタンを押す

※Cyclesレンダーになっている事。

f:id:nonkapibara:20190209111541p:plain

f:id:nonkapibara:20190209111352p:plain

 

17. ベイクが終わったら「UV画像エディター」を開く

f:id:nonkapibara:20190209111924p:plain

18.画像を保存する(この画像がUnityへ取り込む際のマテリアル画像となる)

f:id:nonkapibara:20190209112003p:plain

 

19.マテリアルを、画像に差し替える。

カラーを画像テクスチャーにする

f:id:nonkapibara:20190209112110p:plain

f:id:nonkapibara:20190209112151p:plain

f:id:nonkapibara:20190209112242p:plain

f:id:nonkapibara:20190209112351p:plain

 

20.Blenderの設定を確定する

回転や拡大縮小を確定させる。

キャラクターを全選択した状態で

「オブジェクト」ー「展開」ー「回転」を選ぶ

f:id:nonkapibara:20190209112918p:plain

同じように、拡大縮小もする。

f:id:nonkapibara:20190209113122p:plain

f:id:nonkapibara:20190209113142p:plain

 

23.ここからUnityへ取り込む為のエクスポートをする

「ファイル」ー「エクスポート」ー「FBX」を選ぶ

f:id:nonkapibara:20190209112510p:plain

 

 

24.「メイン」タブから選択する

f:id:nonkapibara:20190209112600p:plain

 

25.エクスポートする

それをUnityで取り込む

f:id:nonkapibara:20190209113602p:plain

f:id:nonkapibara:20190209113717p:plain

 

26.マテリアルを作る

f:id:nonkapibara:20190209113834p:plain

f:id:nonkapibara:20190209114017p:plain

27.マテリアルに、Drag&Dropで画像を配置する

f:id:nonkapibara:20190209114253p:plain

 

28.Prefabにマテリアルを設定する。

f:id:nonkapibara:20190209114541p:plain

 

完成!!

f:id:nonkapibara:20190209120759p:plain

 

【Blender】UV Texture Atlasを追加する

環境メモ

⭐️Mac OS Mojave バージョン10.14

⭐️Blender v2.79.6

⭐️Mac Book

 

1.「ファイル」ー「ユーザー設定」を選ぶ

f:id:nonkapibara:20190207234105p:plain

 

2.「アドオン」ー「UV Texture Atlas」を追加する

f:id:nonkapibara:20190207234146p:plain

3.レンダーの最後尾に追加される。

f:id:nonkapibara:20190207234238p:plain

 

【Blender】重なった箇所を削除する(ブーリアン)

耳と顔をくっつけて、重なった、耳の箇所を削除する。

f:id:nonkapibara:20190207221058p:plain

 

環境メモ

⭐️Mac OS Mojave バージョン10.14

⭐️Blender v2.79.6

⭐️Mac Book

1.削除する方の耳側を選択した状態で、モディファイアー「追加」を選びます。

f:id:nonkapibara:20190207221129p:plain

 

2.「ブーリアン」を選択する

f:id:nonkapibara:20190207221256p:plain

3.「差分」を選んで、重なる方の顔側を選んで、「適用」ボタンを押す。

そうすると、耳と顔が重なった耳側の部分が無くなります!

f:id:nonkapibara:20190207221336p:plain