The WONDER ROAD

     

Uターンの失敗からリスタートするブログ

2022年10月

前々から「機械学習を勉強してみたいな」とぼんやりと思っていました。ただ、なかなか始められないままでしたので、少しずつですが勉強していきたいと思います。

Python_Install


Contents

  1. これまでのプログラミング歴
  2. PythonかAnacondaか
  3. Anacondaをインストール
  4. Google Colaboratoryをつかってみる

1. これまでのプログラミング歴

ぼくは一応理系人間なので、仕事としてプログラミングをしたことはないものの、いくつかのプログラミング言語については簡単なプログラムを自分で書いて実行する程度の経験はあります。
ほんとにさわりだけのものもありますがざっと挙げると Fortran、C++、VBA、MATLAB などです。とくに MATLAB はそこそこ使いましたし、今でもたまに使います。

プログラミングがまったくの初心者というわけではないので、記事はどちらかと言うと備忘録的に書いていきますので、初心者の方はほかにたくさんあるチュートリアルなんかを参考にしていただければと思います。


2. PythonかAnacondaか

Pythonについて調べ始めてまず戸惑ったのは、「PythonかAnacondaか」です。
どちらもPythonを利用する環境ということに違いはありません。ただ、用意されているアプリケーションが異なります。

今回は技術計算や機械学習ということを目的に考えているので、Anacondaをインストールしてみたいと思います。

ただ、どんな違いがあるのかを知っておきたい気持ちもあるので、Web上でPythonを実行できる「Google Colaboratory」というサービスも同時に使っていきたいと思います。

3. Anacondaをインストール

WindowsマシンにAnacondaをインストールします。
  1. Anacondaのディストリビューションページにアクセスします。

    Python_Install_01


  2. 「Download」をクリックしてインストーラーをダウンロードします。ほかのOSのインストーラーが必要な場合はページ下に用意されています。

    Python_Install_02


  3. ダウンロードした.exeファイルを実行するとインストールが始まります。

    Python_Install_03


  4. ウィザードに表示される指示にしたがってインストールをすすめます。

  5. インストールが完了するとスタートメニューにAnacondaが表示されます。

    Python_Install_04

4. Google Colaboratoryをつかってみる

「Google Colaboratory」とはウェブ上でPythonを実行できるGoogleのサービスです。

Python_Install_05


「Anaconda」との使い方の違いを確認するために、比較用としてつかってみたいと思います。

「Google Colaboratory」のつかい方は簡単です。Googleアカウントを持っていればログインした状態で「Google Colaboratory」のページにアクセスするだけです。

そして、上部メニューの「ファイル」→「ノートブックを新規作成」でノートブックをつくることで「Python」を始めることができます。

Python_Install_06


これまでサッカーグラウンドやゴールなど少しずつ勉強しながらつくってきましたが、やっぱりボールを蹴る人が必要だ、ということで人のモデルをつくってみます。


Blender_Human_Model

Contents

  1. 人のモデルのつくり方
  2. Rigifyを有効化
  3. アーマチュアを追加
  4. アーマチュアをオブジェクトを関連付ける
  5. アーマチュアを修正する方法

1. 人のモデルのつくり方

これまで何度か人のモデルにアーマチュアを追加し、いろいろなポーズをとらせようと挑戦しましたが、なかなか難しく断念してきました。

今回はまず人物モデルの作成はあきらめてフリーのモデルをダウンロードし、アーマチュアを追加するところから始めてみたいと思います。ただ、このアーマチュアを追加する作業も非常に難しくこれまでに何度も断念した理由でもありました。

しかし、調べてみるとBlenderには「Rigify」というアドオンが用意されており、基本的な人型のアーマチュアが準備されているようなのでこれをつかって再度挑戦してみます。

2. Rigifyを有効化

まず、「Rigigy」を有効化します。
  1. 「編集」→「プリファレンス」を選択します。

    Blender_Rigify_Activate_1

  2. 「アドオン」から「Rigging: Rigify」にチェックをいれます。

    Blender_Rigify_Activate_2

これで「Rigify」がつかえるようになりました。


3. アーマチュアを追加


つぎに「Rigify」を使用して「アーマチュア」を追加していきます。

まず、事前の準備として、モデルが実際のスケールと異なる場合はスケールを変更して、  Ctrl  +  A  →「全トランスフォーム」でスケールを1にしておきます。
  1.  Shift  +  A  →アーマチュア→Human(Meta-Rig) で人型のアーマチュアを追加します。

    Blender_Rigify_Armature_1

  2. アーマチュアをモデルに合わせてスケーリングします。

    Blender_Rigify_Armature_2

  3. 顔などの不要なボーンを消します。 同時に、  H  キーや  Alt  +  H  キーでボーンを非表示、再表示を繰り返しながら、モデルの関節の位置に合わせてボーンの位置を調整します。

    Blender_Rigify_Armature_3

  4. ボーンの位置を調整する場合は片側だけを変更した後で、  A  キーでアーマチュアをすべて選択し、「アーマチュア」→「対称化」で左右対称にすることができます。
    また、位置を調整する前に画面右上の「X軸ミラー」オプションにチェックを入れておくと行った変更が自動的に反映され左右対称になります。

    Blender_Rigify_Armature_4


    このボーンを移動するとき、トランスフォーム座標系を「ノーマル」、ピボットポイントを「アクティブ要素」に変更すると変更がわかりやすいです。

  5. ここで一度アーマチュアを「全トランスフォーム」しておきます。

  6. オブジェクトモードにして「オブジェクトデータプロパティ」タブから「Generate Rig」をクリックするとRigが作成されます。

    Blender_Rigify_Armature_5


4. アーマチュアとオブジェクトを関連付ける

つぎは作成したRigとオブジェクトを関連付けていきます。

ここで注意が必要なのは、人の体と服などがそれぞれ別のオブジェクトの場合、すべてのオブジェクトを同時に同じRigに関連付けてしまうと、体が服から飛び出したりおかしな見た目になります。

Blender_Rigify_Parent_1

これを解決するためには、同じRigに関連付けたうえでウエイトも同じに調整する必要があります。これにはBlenderのウェイトを別のオブジェクトに複製する機能を使います。

ここでは、まず体をRigと関連付け、そのウェイトペイントを服へ複製するという手順になります。
  1. まず、基準となるオブジェクト(今回は人体モデル)とRigを関連付けます。
     Shift  キーを押したまま、オブジェクト→作成したRigの順で選択します。

    Blender_Rigify_Parent_2


  2. その状態で「オブジェクト」→「ペアレント」→「アーマチュア変形」→「自動のウエイトで」を選択すると、自動でウエイトが設定されリグとメッシュが関連付けられます。ショートカット   Ctrl  +  P   でも選択できます。

    Blender_Rigify_Parent_3


  3. つぎにオブジェクトモードで  Shift  キーを押しながら、「服のオブジェクト」→先に体のオブジェクトと関連付けたRigの順で選択します。

    Blender_Rigify_Parent_4


  4. この状態で  Ctrl  +  P  を押して、表示されたメニューから「ペアレント」→「空のグループで」を選択します。
    これで服のオブジェクトに対応する頂点グループがつくられます。

    Blender_Rigify_Parent_5


  5. この頂点グループにウェイトをコピーしていきます。
    オブジェクトモードで「体」→「服」の順で選択してウェイトペイントモードに切り替えます。

  6. ウィンドウ上部のメニューから「ウェイト」→「ウェイト転送」を選択し、下に表示される「メッシュデータの転送」タブの「転送元レイヤーの選択」を「名前」に変更します。

    Blender_Rigify_Parent_6


  7. 同様の方法で「パンツ」、「靴」についてもウェイトをコピーします。



これですべてのオブジェクトが同じRigに関連付けられ、さらにすべてのオブジェクトに同じウェイトが設定されました。
ウェイトをコピーする前は真っ青だったウェイトペイントが、しっかりコピーされているのがわかります。

Blender_Rigify_Parent_7



これによってすべてのオブジェクトが同じ割合で動かされます。

Blender_Rigify_Parent_8


5. アーマチュアを修正する方法

アーマチュアとオブジェクトを関連付けた後、ポーズモードでポーズをとらせてみると、関節が思った方向と違う方向に曲がったりすることがあります。これはボーンの配置が原因です。

Blender_Rigify_Knee_in


これを修正するには、「編集モード」に変更し、ボーンの位置を調整する必要があります。
たとえば、膝が逆に曲がる場合は、膝に当たる部分の継ぎ目を少し前側へ移動します。また、膝が内側に曲がってしまう場合は、少し外へ移動します。

Blender_Rigify_Knee_in_bone
修正前
                    
Blender_Rigify_Knee_in_bone_2
修正後

その後、オブジェクトモードに変更して「Generate Rig」を押すと再度関連付けし直さなくてもモデルの動きがかわります。

Blender_Rigify_Knee_in
修正前
                    
Blender_Rigify_Knee_in_2
修正後

このように、アーマチュアの微調整は何度でもできます。


このページのトップヘ