3Dモデリング・ツールでマスターするべき技能

# はじめに

3Dモデリング・ツールを使いこなすために必要と思われる技能をリストアップしたものです。基本的に、上から下に行くに従って、より高度な内容になるようにしています。

用語はBlenderを念頭に置いていますが、ほとんどの操作や必要な概念などは各種3Dモデリング・ソフト（Maya、3ds Max、Cheetah3Dなど）で共通していると思います。

作成したモデルはゲームに書き出して使用することを念頭に置いているので、マテリアルやレンダリングなどの細かい設定については考えていません。

# 編集（全般）

- **編集開始時にエディタ画面自体のカメラ設定を変える。**
    - Focal Length=150mmに設定する（fovy≒80度？）
    - nearとfarの値を適切に設定する（nearを小さくしすぎると描画がおかしくなるので、ただ小さい値を選べば良い訳でもない）。
        - <font color="blue">Blenderの場合、右サイドバーの3D Viewportの[View]で設定する。LayoutやModelingなど、ワークスペースごとに設定する必要がある。</font>
        - <font color="green">fovy, near, farの値を適切に変えた方が良いのは、ゲームエンジン側でも同じ。デフォルトのカメラは決して万能ではない。</font>
- 編集画面の視点移動、視点回転、ズーム
- 編集画面のカメラ切り替え
    - フロント、サイド、トップ、通常カメラ
- モデルのシェーディング方法の切り替え
    - ワイヤーフレーム、ソリッド、テクスチャ

# 編集（モデリング）

- 基本形状のメッシュ作成
    - 平面、立方体、球体、円柱、円錐、トーラス
    - 作成時の分割数やサイズの設定
        - 現実空間のサイズ（あるいはその定数倍）に寄せる
    - UV Sphere、ICO Sphere、立方体のSubdivisionの使い分け
    - メッシュを移動・回転・スケーリングする
        - スナップを設定する（グリッド、頂点・辺・面）
            - ポリゴンは重なっても、隙間が空いてもいけない。
        - 回転の中心を設定する
    - メッシュの削除
    - メッシュの複製
    - メッシュの統合
- 基本のメッシュ編集
    - 頂点／辺／面の操作
        - グローバル軸、ローカル軸、ノーマル（法線）軸の切り替え
        - 頂点／辺／面の編集モードの切り替え
        - 頂点／辺／面を選択・複数選択・ループ選択する
            - 近接する頂点／辺／面の選択
        - 頂点／辺／面を移動・回転・スケーリングする
        - 頂点／辺／面を削除する
    - 面の処理
        - 面を押し出す
        - 面を内側に押し出す
        - ベベルをかける（面または辺）
        - 面を分割する
            - 格子状に分割
            - 扇状に分割
        - ループ・カット
            - 分割数を指定する
        - 各面の法線設定（スムーズ描画／フラット描画）の切り替え
    - 頂点と辺の処理
        - 頂点をマージする（2頂点のマージ、3頂点以上のマージ）
        - 辺を切り離す
        - 辺同士をつなぐ（ブリッジ）
        - 頂点を選択して辺／面を作成する
            - 法線の向きを確認する
            - 法線の向きを反転させる
    - メッシュ同士のブーリアン操作
- マテリアルの作成と割り当て
    - ゲームエンジン側でマテリアルを作り直すことを考えて、DCCツール側で作業しやすいマテリアルを用意する。
- テクスチャの貼り付けとUV設定
    - テクスチャ画像の読み込みと設定
    - UV展開
        - UVヒートマップの表示
            - <font color="blue">Blenderの場合、UV Editorの右サイドバーで[View]から[Display]-[Overlays]-[Stretching]をチェックして「Area」を選択する。</font>
    - 新規テクスチャ画像の作成と編集
- ボーンの作成、割り当て、ウェイト設定
    - 任意の形状のボーンを作成して割り当てる
    - IKを設定する
    - UnityやUnreal Engineで使えるヒューマノイド型のリグ
    - ボーンごとのインフルエンス数を調整する
- アニメーションの作成
- 参考画像の貼り付け
    - <font color="blue">Blenderの場合、参考画像をドラッグ＆ドロップで追加する。インスペクタ領域の[Object Data]の[Display Perspective]のオン・オフで、パースがついている時の参考画像の表示／非表示を切り替える。</font>
- 自由な形状のメッシュ作成
    - ポリゴン作成
    - ベジェ曲線
        - ベジェ曲線の編集
            - <font color="blue">Blenderの場合、[Add]メニューから[Curve]-[Bezier]を選択し、編集モードでDrawまたはExtrudeを使って編集点を増やしていく。</font>
        - ベジェ曲線を閉じる
            - <font color="blue">Blenderの場合、編集モードの[Curve]メニューから「Toggle Cyclic」を実行する。</font>
- マクロな形状作成
    - Subdivision Surface, Mirror, Screw
    - スカルプト
- 対称モデリング
    - 左右対称に頂点・辺・面を動かす
    - 左右対称にメッシュを複製する
- 法線データの焼き込み
- スクリプトによる作業の効率化

# 各種事例の研究

- YouTubeなどでモデリング例を見て研究する。
- Unity Asset Storeのローポリモデルなどの実例を見て研究する。
- 子供のおままごと用キッチンセット、お医者さんごっこセット、積み木などが手元にあると参考になりそう。
- 各種書籍には、上記の基本、レンダリングなどのゲーム制作に必要ない部分の解説、作例などが混ぜこぜに載っているので、自分でそれを切り分けながら読む。ツール間の違いはそれほどないので、他のツールの本も読んでみるのがオススメ。

# データのエクスポートとインポート

- FBXファイルで受け渡すデータの知識
- エクスポート
    - エクスポート前にトランスフォームを正規化、フリーズ（適用）する。
    - エクスポート対象の選択
        - メッシュ、ボーン、マテリアル、アニメーション、可視性 (Visibility)、ライト、カメラ
- インポート後の処理
    - インポート対象の選択
    - アニメーションの設定
        - 再生時間の調整
        - 相対座標と絶対座標
    - マテリアルの置き換え