「映像メディア3」カテゴリーアーカイブ

簡単なゲームにしてみる(1)

概略

  • 複数シーンをまたぐゲーム化をおこなう
  • 今回は作成手順を理解するため,スクリプトは提供されたものを使用する
  • 画像等は古いものを使っている場合がある
  • 今回は指定個数のエサを何秒間でとることができるかを競うゲームとします

準備・パッケージの読み込み

  1. スクリプトなどが入ったedukit3.unitypackageをダウンロードする(ダウンロードはここから)
  2. Assets>ImportPackage>Custom Package… でダウンロードしたパッケージを読み込む
  3. Asset内にedukit3というフォルダが作成される

タグの準備

  1. Hierarchy内にある適当なオブジェクトを選択する
  2. InspectorのTagをプルダウンし,AddTagを選択する
  3. pointObjをというタグ追加する
    addtag2

スクリプトを空のオブジェクトに配置する

  1. Gameobject>Create Empty で空のオブジェクトを作成し名前をscriptにする

  2. Asset内にある(さきほど読み込んだ)Edukit>myQuest をscriptにアサインする
  3. baitPrefabbaitObjにアサインする(魚の下の矢印画像は後で表示できます)
  4. edukit3の中にあるSEフォルダを展開し,効果音をアサインする(画像参照)
  5. その他の数字も設定する
  6. ※時間がマイナス秒になっても動作するのは仕様です(追記)

解説

  1. GameObjectにどんなコンポーネントをアサインするかでそのオブジェクトの性質が変わる.カメラコンポーネントをアサインすればカメラに,Meshfilterをアサインすれば3Dオブジェクトに,今回はスクリプトだけをアサインしている
  2. この「空のオブジェクト」は便利な入れ物と考えてよい.CGソフトではNullや,ロケーターと呼ばれている

UIprefabを配置する

  1. Asset内にある(さきほど読み込んだ)Edukitの中のUIprefabをヒエラルキーにドロップする
  2. UIprefabを展開し,timeTextとnokorisuをmyQuestの該当の箇所にドロップする
  3. エンディングシーン名も指定する
  4. なおUIについてはこちらも参考に

つぎへ

 

 

Tapで泳ぐプログラムを追加する

概要

  • 移動できる範囲を決めるNavMeshを設定
  • 魚にNavigationAgentを設定する
  • Tap移動のプログラムを魚にアサインする

設定など

  1. 地面代わりのPlaneなどを置く.そのPlaneにNavMeshの設定こちらを参考に)をする
  2. HierarchymyFishを選択し,InspectorAdd Componentを押しnavで検索すると出てくるNav Mesh Agentを選択して追加する
  3. 追加したNav Mesh AgentのBase Offsetを0.5にする
  4. TapMove用UnityPackageをここからダウンロードする
  5. ダウンロードしたUnityPackageファイルをAssets>Import Package>Custom Packageで読み込む
  6. Assets内にTapMoveフォルダができる.この中のtapMoveスクリプトをステージ上のmyFishにアサインする
  7. 次にInspectorのtapMovecirclePrefabをアサインし,RayLengthを15くらいにする
  8. Multipurpose CameraRigを設定する(忘れた場合はこちら).ターゲットはmyFishとする.魚とカメラの距離はPivotで調整する.MainCameraを削除するのを忘れないこと
  9. 一旦保存し,ゲームを再生,Planeの上をクリックしてみる
  10. 魚が泳いでいきます.クリックはタップにも対応しているので,スマートホン用にビルドした場合はタップで魚が泳ぎます
  11. タップで誤動作がおきる場合は,myFishのレイヤーをDefautl以外にする.タップを検知するレイヤーはDefaultレイヤーのみになっているため
  12. 以下参考動画

(Unityへの読み込みはここまで)

UnityにFBXファイルを読み込む(2)

Animation Controllerの設定

  1. Assets>Create>AnimationControllerAnimationControllerを作成する.名前はfishControllerにしておく(名前は何でもかまわない)
  2. 作成したAnimationControllerをダブルクリックする
  3. Animation Contorller画面が開かれる
  4. この画面にFish内のTake 002をAnimation Contorller画面にドロップする
  5. 間違えてTake 001をドロップ場合は,Take 002をドロップし,Take 002の上で右クリックしSet As Layer Default Stateを選択する
  6. 緑のEntryのとTake 002が接続されていればOK
  7. この設定はこのシーンが始まった場合にTake 002を自動でループ再生させるという意味.キャラクタが何もしていない時の動作をIdle(アイドル)と呼ぶが,これでTake 002がIdleの動作となった
  8. 次にTake 001のアニメーションをドロップする
  9. ライトグリーンのAny Stateの上で右クリックし,Make Transitionを選択し,Take 001につなげる

  10. これでどんな動作の状態(Any State)からでもTake 001のアニメーションが再生できる
  11. 次に,Take 001の上で右クリックし,Take002につなげる

  12. これで.Take 001は1度しか再生しないため,再生が終わった後にIdleの動きに戻せた
  13. 跳ねる動きが長いため,Take001を選択しInspectorのSpeedを3にする(3倍速再生)
  14. 同様に尾びれを動かす動作の1サイクルが長いため,Take002を選択しInspectorのSpeedを2にする(2倍速再生)
  15. この再生速度は目安です.好きな値に設定してかまいません.
  16. 次にTake 001を再生するトリガーを設定する
  17. Parametersのタブの+ボタンからTriggerを選択しトリガーを追加,名前をswimにする(この名前は変えないこと)
  18. 次にAny StateからTake 001につながる矢印を選択し,InspectorConditions+ボタンを押し,swimを選択する
  19. これでswimのトリガーでTake001が再生され,その後Take 002のくり返し再生に戻る設定ができた.このように何か動作をしたら必ずIdleの動作に戻す必要がある

myFishをシーンに配置する

  1. InspectorAnimatorに上で作成したAnimationControllerをアサインする
  2. 保存してゲームを再生してみること.魚が泳いでいます(Idleの動き)

次へ

UnityにFBXファイルを読み込む(1)

概要

FBXファイルを読み込み,アニメーションを分割し動作に応じた動きの設定をする

Unityへの読み込み

  1. Assets内にドラッグ&ドロップ(以下D&D)してmyFish.fbxを読み込む
  2. myFishを選択し,Inspectorに魚が表示されるので,再生ボタンを押し,アニメーションが読み込まれているか確認する
  3. 以前作成した魚のテクスチャをD&Dで読み込む.これでテクスチャが反映される(※テクスチャがうまく貼れていない場合はUVを設定する前のモデルを使っている可能性がある)
  4. InspectorModelのタブにあるScale Factorを10(10倍の大きさ)にし,Applyを押す
  5. Rigのタブを選択し,Root nodejoint1にし,Applyを押す
  6. Animationのタブを選択
  7. Clipsの下のスライドバーまたはテキストボックスで,魚がジャンプしはじめ,終わるまでの範囲を指定する.Startが3,Endが25くらいでいい.これで200フレームあったアニメーションの最初部分が分けられた
  8. Applyをクリックする
  9. 次にClipsの右下にある+ボタンを押す.Take001(1)またはTake 002が作成されるのでそれを選択する(名前を変更する場合は下の入力フィールドを使うこと)
  10. これで読み込んだ200フレームのアニメーションが,Take 001とTake 002に分けられた
  11. 魚の尾びれが1サイクルするアニメーションの範囲を指定する.(参考値Startは128,Endは166)
  12. 次にLoop Timeにチェックを入れ,Loop Poseにもチェックを入れる
  13. loop matchのランプがグリーンになっていることを確認する
  14. Root Transform RotationBased Upon(at Start)をOriginalにする.またRoot Transform PositionBased UponOriginalにする
  15. 同様にTake 001を選択し,Root Transform RotationBased Upon(at Start)をOriginalに,またRoot Transform PositionBased UponOriginalにする
  16. Fishの右矢印を開いて展開すると中にTake 001Take 002のアニメーション2種類ができているのを確認すること

つづく

MayaのFBX exporterが選択できない場合

MayaのFBX exporterが選択できない場合

Mayaにプラグインをロードすることで対処できる

  1. ウィンドウ>設定/プリファレンス>プラグインマネージャを選択する
  2. fbxmaya.dll のロード自動ロードにチェックをいれ,Mayaを再起動する
  3. fbxmayaがロード済みの状態

参考WEB

https://knowledge.autodesk.com/ja/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2016/JPN/Maya/files/GUID-18A2CDD7-3334-4FC1-A1B3-A308AD331BB2-htm.html

Maya->Unity 2018版

概要

  • Unityに魚のアニメーションを取りこむ準備をする
  • 最初に,MayaのIKアニメーションをベイク(焼き付け)する
  • 次にUnity互換性のあるFBX(FilmBox)形式で書き出す
  • Unityはmaya形式のファイルにも対応しているが,FBXを使う事が多いので今回はFBX形式とする

書き出しの準備

  1. 最も上の階層のボーン(joint1)を選択する
  2. 次に編集>キー>シミュレーションのベイク処理>□を選択
  3. シミュレーションのベイク処理オプションが表示される
  4. 階層は下位を選択,コントロールポイント,シェイプ(今回シェイプアニメーションは使用していませんが,,)にチェックを入れ,適用を押す
  5. タイムラインに沢山のキーフレームが打たれる.IKやコンストレインアニメーションはそのままではUnityで使えないので,全て1フレ毎のキーフレームに変換される

FBX書き出し設定

  1. FBX形式で書き出す設定をする.ファイル>全て書き出し>□ を選択しオプションを表示させる.(通常は選択項目だけ書き出すが,こちらの方が簡単なので)
  2. オプションが表されるので,ファイルタイプをFBX exporterを選択,次にプリセットを編集を押す(FBX exporterが選択できないときはこちらを参考)
  3. プリセットをAutodesk Media & Entertaimentを選択
  4. ニメーションと組み込みメディア(これでMaterialを書き出される)にチェックが入っているか確認
  5. 設定を変えると,プリセットの部分がカスタムに変化するが気にしなくてよい(プリセットをカスタマイズしたからカスタムに変わる)
    閉じるを押し,プリセット編集を終わる
  6. 設定を保存して閉じる
  7. ファイル>全て書き出しを選択しファイル名を決め,ファイルの種類がFBX exporterになっているか確認し,すべて書き出しを押す
  8. コンストレイン系のエラーが出るがコンストレイン系はベイク済みなので気にしない
  9. ファイルが出力されたらひとまず完了

次へ

Mayaテクスチャマッピング3

魚のテクスチャを作成する

  1. 先週までに制作した魚にアニメーションをつけたファイルを開く
  2. 魚が変形していない場所で再生をとめる
  3. 魚のオブジェクトを選択する
  4. UV>自動(自動でUVを割り当ての意味)を選択
  5. UVが6方向から見た様子に分割されて作成される(操作はありません)
  6. UVエディタを開くと魚がUV展開されているのがわかる
  7. 魚を選択し,スナップショットを書き出す(選択していないと書き出せない)
  8. オリジナルの魚模様を作成してみること
  9. なお,オブジェクト側のフェースを選択するとUVエディタ側もハイライトされる.対応関係が分かるので手がかりにすること.
  10. これは悪い例

Mayaテクスチャマッピング2

マテリアルを作成しオブジェクトに割り当てる

  1. 椅子の木目を作成したことを思い出しながら,新しいマテリアルを作成する(参考
  2. 作成したマテリアルのカラーの右にあるチェッカーマークをクリック
  3. ファイルを選択する
  4. ファイルアトリビュートが開かれるので,フォルダボタンをクリックし,ファイルの場所を指定する
  5. 作成されたマテリアルを立方体にアサインする
  6. ビューのマテリアル表示モードをONにし,パースビューでテクスチャが反映される
  7. レンダリングするとこのようになる

 

(次へ

 

Unity入門-0ログイン編(2020)

※このステップ(Unity入門-0ログイン編)は一部環境下のみの設定です

※2020年にアップデート(ベースは2018年)

 

Unit Hubを起動する

インストールしている、Unityのバージョンを確認する。2019.3.10がインストールされていればよい。2019.3.15までは問題無く動作すると思います。

新規作成>▽>2019.3.10f1を選択し、指定のバージョンで作成する(※バージョンが違えば互換性が無い場合もあるので注意)※他の授業で違うバージョンを使用している場合はお知らせください。上位バージョンならそのまま使用、下位バージョンなら検討します。

テンプレートの画面が開きますので、3Dを選択、プロジェクト名に半角英数字で好きな名前を入れ、上位階層まで半角英数字の保存場所を選択し、作成ボタンを押します。

 

 

 

Unityをスタートする

  1. Sign in with googleを選択し,大学のアドレスを入力,いつもの入力画面になりますので,もう一度メールアドレス,パスワードを入力
  2. Project Nameは半角英数字で適宜設定すること
  3. Locationの…をクリックし保存先にUSBメモリ(またはSSD)の場所を選ぶ.あまりにもUSBメモリが遅くイライラする場合は,Dドライブに保存し終了時に自分のUSBメモリにバックアップを取るなどする.

次へ

 

 

 

Maya復習ーその2

ここではMayaのマテリアル設定の復習をします.1年次では実習していないプロシージャルテクスチャ(計算で生成したテクスチャ)を,木目で使用します.

マテリアル設定やレンダリングの設定について忘れてしまった方は,少し古いレジュメになりますがこちらを参考に.

 

  1. ウィンドウ>レンダリングエディタ>ハイパーシェード を表示させる
  2. ハイパーシェードの 作成>マテリアル>Phongシェーダを選択 これでPhongのマテリアルが作成される
  3. 作成されたPhongマテリアル(Phong1など)を選択し,アトリビュートエディタのカラーの右にあるチェック模様のボタンを押す
  4. レンダーノードの作成 ウィンドウが現れるので,木目を選択
  5. アトリビュートエディタが木目のプロパティ画面になるので以下のように設定
  6. もしも,木目のプロパティ画面に移行できなかった場合,作成したPhongを選び,チェック模様だったところが右向き三角になっているのでそこをクリックすると木目編集画面へ移行する
  7. 次に作成したPhongを選択し,アトリビュートエディタのスペキュラーシェーデイングの項目を調整する
  8. このPhongマテリアルを座面にアサインする(マウス中ボタン+ドロップ)
  9. もしも木目がビューに表示されていない場合は,各ビューのテクスチャ表示をONにする
  10. 次にパイプのマテリアルを設定をする.ハイパーシェードの 作成>マテリアル>Phong を選択
  11. 新しくPhongマテリアルが作成されました.スペキュラを調整し,グレーのペンキが塗られた脚にする
  12. 本来は脚の先端が黒いのですが,そこは割愛
  13. レンダリングして完成(アンビエントライト,エリアライトを使用)
  14. レンダリングした画像を保存し,提出のこと.画像の保存方法は,レンダービューファイル>イメージの保存の,,
  15. ファイルの種類JPEGか,PNGを選択し,ファイル名を入力して保存を押す.
  16. なお保存した場所を覚えておくこと.通常はプロジェクトファイルのImagseなどに保存される.