■Unity開発メモ用のWiki◎現在扱っていること・Unity全般・MMDからUnityへの変換してインポート・MMDの仕様把握・BlenderでMMDモデルのカスタム





Unity:再構築用メモ

  • 用途:3D、MMD、VR、

◎削除する
  • Visual Studio Editor

Unityアセットストアにあるモノ

  • Basic Motions FREE
    • モデルのモーション確認用
  • DOTween (HOTween v2)
    • ゲームオブジェクトをスクリプトで簡単に動かす
  • Dynamic Bone
    • 揺れものの設定
  • Fantasy Skybox FREE
    • スカイボックス用の素材
  • Final IK
    • IKの拡張
  • First Person All-in-One
    • 簡単に一人称視点を作る
  • Magic Mirror Lite - Reflection for Unity
    • 簡単に鏡を作る
      • エラー:名前空間を「VR」→「XR」へ
  • PuppetMaster
    • ラグドールの拡張
  • SAColliderBuilder
    • 簡単にコライダーを作る
  • Space Robot Kyle
    • テスト用3Dモデル
  • Speedball Player
    • テスト用3Dモデル
  • SteamVR Plugin
    • SteamVR用のプラグイン
  • Very Animation
    • 3Dアニメーション編集エディタ拡張


Unityレジストリ内にあるもの

  • Animation Rigging
    • シーンビューでモデルのボーン構造を確認する用
  • Burst
    • Unityのコンパイルに関する何か
  • Jobs
    • Unityのマルチスレッド化に関する何か
  • FBX Exporter
    • Unityの3DオブジェクトをFBX形式で出力する


外部からインポートするもの

  • MMD4Mecanim
    • MMDのPMXファイルをUnity用に変換する
  • SimpleAnimation
    • AnimatorControllerを使わずにアニメーションを行う
  • UniVRM
    • VRM形式のモデルをUnityにインポート・エクスポートする
  • EyeJitter.cs
    • 微細眼球運動(固視微動)するスクリプト
  • ReflectBoneSetting
    • VRMSpringBone・ダイナミックボーンの設定ファイルをインポート及びエクスポート
  • UnityChan_1_2_1
    • ユニティちゃんの3Dモデル
    • エラーCS0234:名前空間「using System.Security.Policy;」は使わないので削除する
  • MeshDeleterWithTexture
    • テクスチャの箇所を指定することでメッシュの対応した箇所を削除できるUnityエディタ拡張


アセット関連のtips

ローカルに落とした使わないアセットのデータを削除したい

  • C:\Users\ユーザー名\AppData\Roaming\Unity\Asset Store-5.x
    • アセットは製作者名ごとにフォルダが作れている

アセット(unitypackage)の中身を見る

  • ググる(解凍、アンパック等)と色々と出てくるので、好きなのでOK?

3D関連のアセット

モーション

Basic Motions FREE Pack
  • 男の基本的なモーションが6種類
Basic Motions (Free Pack)
  • 大股歩き、ゾンビ歩き
Fighter Pack Bundle FREE
  • 男女のごく初歩的な格闘モーション

モデル

ユニティちゃんシリーズ[3Dモデル]
The Woman Warrior
  • 女戦士のモーションの詰め合わせ
  • 古いUnityのアニメーション形式の為、FBXのインスペクタ→Rig→アニメーションタイプを「ヒューマノイド」の変更
    • Ctrl+DでFBX内のアニメーションクリップ取り出せば使える
Speedball Player[3Dモデル]
  • シンプルな3Dモデル
  • 使うときはFVX→RIGのアニメーションタイプを「ヒューマノイド」に変更するのを忘れない様にする

ステージ関連のアセット

カモメ町 Beach Resort Pack[3Dステージ]

  • 南国のリゾート地風のステージ
  • 軽いのが特徴
  • サンプルシーンを読み込むと「Component GUI Layer in Main Camera for Scene XXXX.unity is no longer available.」とエラーが出る
  • 今のUnityでは使わていない古い機能?MainCamareにアタッチしている「Flare Layer」コンポーネントを削除すればいい

スクリプト関係のアセット

AI Behavior[NPCのAI制御]


Unity公式のアセット

Adventure - Sample Game(Unity公式の3Dアドベンチャーのサンプル)

  • サンプルを始めるときはシーン「Persistent」をロードしてプレイする
    • シーンの開始位置の変更
  • 「SceneController」
    • 「Stating Scene Name」:スタート開始時のシーンを選択
    • 「Initial Starting potision」:スタート開始位置のオブジェクトを指定

Standard Assets[Unity公式アセット]

  • やや古い、廃止の決まった機能が使われている箇所がある。
  • サンプルやちょっと便利な機能のおまとめパック
  • 最新バージョンではエラーが出る
    • Projectウィンドウ→「Assets」 → 「Standard Assets」 → 「Utility」を開く
    • フォルダー内にある、「ForcedReset.cs」と「SimpleActivatorMenu.cs」を削除
    • Consoleウィンドウで、「Clear」をクリック
  • 古いアセットはスタンダードアセットの「ポストプロセシング」を使ってい場合もコンパイルエラーが出る。
    • Antialiasing.cs などポスプロ関連のcsファイルを削除する

Unity:AI Planner

参考:UnityのAI Planner
参考:公式ドキュメント


Starter Assets(Standard Assetsの後継?)

  • 「First Person Character Controller(FPS用デモ)」「Third Person Character Controller(TPS用デモ)」
  • 以下の2つの新しいUnityのシステムのサンプル
    • キャラクター操作→Input System
    • カメラワーク→Cinemachine

Input Systemは古いUnityの入力と競合する!

Input Systemとは

  • 参考サイト(公式ドキュメント):Unityの新入力システム・Input Systemを使おう
  • Input Systemとはゲームパッド・キーボード・マウス・センサー等の入力を扱う、Unityの新しい入力システム
  • Package Managerから追加でインストールするパッケージとして提供され、2020年4月にversion 1.0.0として正式版になった。

◎Input System特徴
  • タッチパットへの対応
  • ゲームパッドのボタン番号の統一

◎ゲームパッドの状態を取得する
  • 現在接続されているゲームパッドはGamepad.currentで参照できる
  • ゲームパッドが接続されていないときはnullになるため、参照する際はnullチェックが必要

空のGameObjectに以下のスクリプト貼り付ける
  • 動かない?後で調べる
using UnityEngine;
using UnityEngine.InputSystem;

public class GamepadExample : MonoBehaviour
{
   void Update()
   {
       // ゲームパッドが接続されていないとnullになる。
       if (Gamepad.current == null) return;

       if (Gamepad.current.buttonNorth.wasPressedThisFrame)
       {
           Debug.Log("Button Northが押された!");
       }
       if (Gamepad.current.buttonSouth.wasReleasedThisFrame)
       {
           Debug.Log("Button Southが離された!");
       }
   }

   void OnGUI()
   {
       if (Gamepad.current == null) return;

       GUILayout.Label($"leftStick: {Gamepad.current.leftStick.ReadValue()}");
       GUILayout.Label($"buttonNorth: {Gamepad.current.buttonNorth.isPressed}");
       GUILayout.Label($"buttonSouth: {Gamepad.current.buttonSouth.isPressed}");
       GUILayout.Label($"buttonEast: {Gamepad.current.buttonEast.isPressed}");
       GUILayout.Label($"buttonWest: {Gamepad.current.buttonWest.isPressed}");
       GUILayout.Label($"leftShoulder: {Gamepad.current.leftShoulder.ReadValue()}");
       GUILayout.Label($"leftTrigger: {Gamepad.current.leftTrigger.ReadValue()}");
       GUILayout.Label($"rightShoulder: {Gamepad.current.rightShoulder.ReadValue()}");
       GUILayout.Label($"rightTrigger: {Gamepad.current.rightTrigger.ReadValue()}");
   }
}

キーボードとマウスの状態を取得する

  • キーボードの状態を取得→Keyboard.current
    • いずれかのキーが押されたかどうかはKeyboard.current.anyKey.wasUpdatedThisFrameで取得
  • マウスの状態を取得→Mouse.current
  • Gamepadクラスで対応しているゲームパッド以外のジョイスティック(DirectInput方式の一般的なHIDゲームパッド等)の状態はJoystick.currentで取得
  • Joystickクラスで認識するジョイスティックについては、旧Input Manager同様、軸とボタンの割り当てを確認する必要がある

◎最低限必要なコンポーネント
プレイヤーに取り付けるコンポーネント
  • 「Player Input」コンポーネント
    • 設定「Input Action Asset」を使う
 
Input Action Assetの設定画面
 
  • コンポーネント「Character Controller」
 
  • スクリプト「Third Person Controller」
    • Assets→StarterAssets→ThirdPersonController
    • 空のGameObject「PlayerCameraRoot」をプレイヤーのルートの下につくる
      • 目線に合より若干下側?
 
  • スクリプト「Basic Rigid Body Push」
  • スクリプト「Starter Assets Inputs」

  • ヒエラルキーに配置するプレハブ
  • プレハブ「UI_EventSystem」
    • Assets→StarterAssets→Mobile→Prefabs→EventSystem→「UI_EventSystem」
    • input System UI Input Module
  • キャラクターとの接地判定がうまく行かず、アニメーターのジャンプ処理を削除
 

OpenYandere


◎パッケージマネージャーからローカルパッケージを導入する

ユニティちゃんの解析

◎ユニティちゃんのバリエーション
UNITY-CHAN(ユニティちゃん)をとりあえず動かしてみる
参考サイト
  • 「Assets」→「Editor」→「******」とフォルダ構成になるようにする?
  • エラー「Assets\Editor\UnityChan\UTS_EdgeDetectionEditor.cs(7,27): error CS0246: The type or namespace name 'UTS_EdgeDetection' could not be found (are you missing a using directive or an assembly reference?)」
    • 一時的に削除
    • TPKnスクリプトでエラー
    • 一時的にTPKフォルダごと削除

◎略称
  • UTS:ユニティちゃんシェーダー
    • パッケージマネージャーから「Post Processing」をインストールしておく
  • TPK:バトルコスシリーズ

◎ユニティちゃん 3Dモデルデータ
  • ファイル名:UnityChan_1_2_1
  • 一番基本となる3Dのユニティちゃん

◎シェーダー関連
・ユニティちゃんシェーダー (Unity 5.4/5.5β 対応版)
・ユニティちゃんトゥーンシェーダー2.0(UTS)
  • 上記の発展版のトゥーンシェーダー
・ユニティちゃんSunny Side Up(URP版)
  • 上記のさらに発展版のトゥーンシェーダー
  • Unityの新しいレンダリングパイプ「SRP」に対応した軽量型のシェーダー
・ユニティちゃんSunny Side Up(HDRP版)
  • 上記と同じ「SRP」に対応したハイエンドなシェーダー

◎エラー対策
・CS0234エラー
  • 「Edit」→「Project Settings」→「Player」のOther Settings、ConfigurationsのApi Compatibillity Levelの「.NET Standard 2.00」を「.NET 4.x」に変更

・未解決な問題
  • 頬のテクスチャが欠ける



Dynamic boneの基本

参考サイト1
参考サイト2

◎一時メモ
参考:VRChatでVRoidモデルのおっぱいに触れるようにする&髪やスカートが身体を貫通しないようにするDynamic Boneの設定について:http://blog.livedoor.jp/clannad5659/archives/52477...

  • 対象モデルに後で解りやすい様に、空のオブジェクト「DynamicBone_Object」等をつける
  • 上で作ったオブジェクトに「DynamicBone」コンポーネントを取り付ける
    • 「DynamicBone」コンポーネントはどこに置いても大丈夫?

SpringBoneが設定されたモデルは無効化する

  • VRM系のモデルはSpringBone(DynamicBoneみたいなやつ)が設定されているので無効化する
  • 対象モデルの「secondary」の揺れもの関係の設定が格納されている?

Animation riggingでボーンをシーンビューで表示させる

  • 操作性の向上用
  • 「パッケージマネージャ」→「Unityレジストリ」→「Animation rigging」をインポートする
  • 対象モデルに「Bone renrderer」を取り付ける
  • アーマチェアのルートを右クリック→「子を選択」し、「Bone renrderer」の「Transform」にドロップする
  • 一度シーンを実行したほうが良い?


揺れるボーンの除外設定

  • 「Root」に「Head」を指定すると全ての髪にダイナミックボーンを適用できるが、瞳やメガネまで揺れてしまう
  • 「Exclusions」に揺らしたくないボーンを設定する
    • 下図の場合「Glasses」「RighitEye」「LeftEye」

おっぱいとボーン構造

  • おっぱいのボーン構造で揺れ方が変わる?

  • VRMのおっぱいボーン構造


  • ユニティちゃんのおっぱいボーン構造
    • おっぱいボーンの終端を折り返すといい揺れになると何処かで見た覚えが……


  • おっぱいボーンが終端だけだと上手く揺れない?


2eroモデルのぷち改造

  • 改造用のブレンダーファイルは展開フォルダ→「改造用」→「blender」→「2a7_2ero_ALL190605.blend」をブレンダーで開く
参考:Blender: UIをリセットする方法
(一度再起動してから)ブレンダーファイルを読み込む時に右端にある左矢印をクリック

「UIをロード」のチェックを外す

マテリアルのテクスチャ画像の設定

  • マテリアルは「Armature」→「Body」→「無題.026」にある
    • 検索欄に「tex_」と入力して探す?
  • 以下のマテリアルがある:tex_etc、tex_hairm、tex_armor、tex_photon,tex_face,tex_faceoption,tex_body
    • 「tex_photon」は何処?
  • マテリアルプロパティ→該当のマテリアルを選択→「ノードを使用」をチェック→ベースから丸ポチをクリック→テクスチャ画像→適当なテクスチャを選択する
  • ボディには「body-base+.png」を使用

パーツの取捨選択

  • フォルダ「改造用」→「改造する上での注意点」→「パーツ説明.txt」を参考に使うパーツを選んでいく
  • 下の構成で以下の画像のようなモデルが出来る

ブレンダーからUnityへ

  • 念の為、別名保存し使わなかったメッシュを削除する
  • ブレンダーのプラグイン「CATS」→「モデル修正」でメッシュを結合する
    • 服装やアクセサリーは結合しない方が後々よいか?
  • エクスポート→パスモード「コピー」でテクスチャFBXとして出力する
    • でも結局UnityへはテクスチャとFBXを投げ入れることになる?
  • UTS2の設定を行う
参考:えくれあさんのUTS2簡易攻略!!

ニアナちゃん専用コスチュームへの対応

参考:Unity シェイプキーの使い方
  • 同封されているツール「CostumeChangerFor2A-7」で着せ替える
    • 胸と服のめり込み対応は、対象のモデルの「Body」→インスペクター「Skinned Mesh Render」→BlendShapes「brest_material」でサイズ調整する
      • Unityでのブレンドシェイプ(モーフキー、シェイプキー)の変更方法

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

【メニュー編集】

スカイリム関連

スカイリム関連


Menu

【メニュー編集】

スクリプト関連

フリーエリア

管理人/副管理人のみ編集できます