「授業用」カテゴリーアーカイブ

Pokémon GO(ポケモンGO)はUnityでつくってるとかなんとか

どうもネイティブっぽくないらしい.

逆にUnityにバグがあると,かえってUnityが問題になる予感.

ちょいちょいバグの入った(Unityの)バージョンがリリースされっからな,,知らずにビルドしちゃったりとかして,,,

 

『Pokémon GO』公式サイト

『Pokémon GO』は、位置情報を活用することにより、現実世界そのものを舞台として、ポケモンを捕まえたり、交換したり、バトルしたりするといった体験をすることのできるゲーム! 『Pokémon GO』は、2016年サービス開始予定!!

LINK: www.pokemon.co.jp/ex/PokemonGO/

 

位置ゲーで人が能動的に動く様子を見ています.つまり仕事なんです.わりと本当です.

iMovie(2)

  1. 編集が終わりプロジェクト選択の画面に戻ったら,プロジェクト名を学籍番号と氏名に変更し,完了をタップ.(※ここを変更しても提出するファイル名は変わりませんので飛ばしてもかまいません)
    imovie9
  2. 共有ボタンをタップします
    imovie10
  3. ビデオを保存をタップ
    imovie12
  4. HD-720pをタップし,保存されます.これは自分用の保存
    imovie11
  5. 提出方法については別途指示します

番外編

  1. アフレコをしたいときは,マイクのボタンをタップし,録音をタップすると3秒前から開始されます.ヘッドホンマイクを使うと便利
    imovie13
  2. また,メディアの追加ボタンを押し,オーディオのタブには,効果音(サウンドエフェクト)などが入っています
    imovie14
  3. また,アプリGarageBandでは,BGMを作成したり,声を録音してエフェクトをかけたり,楽器の演奏もできます.これがあの「そう,iPhoneならね」
  4. GarageBandで楽曲を作成したらプロジェクト画面に戻り,選択をタップ
    imovie15
  5. 書き出したいプロジェクトを選択し,左上のシェアボタンをタップ
    imovie16
  6. アプリに出力をタップ
    imovie17
  7. iMovieを選択
    imovie18
  8. その後,iMovieのどのプロジェクトに音を追加するか聞かれますので,音を追加したいプロジェクトを選択してください
  9. あとはiMovieで編集をして書き出すだけです

iMovie(1)

iMovie編集のながれ

iMovieというか,最近の編集ソフトの何がすごいかって20〜30年前はこれだけの編集するのに機材だけで数千万から1億以上かかっていたのですが,今は600円(しかも無料).当時の0.00006%のコストです

  1. iMovieを起動します.
  2. プロジェクトのタブでボタンでプロジェクトを追加します.なお,操作はポートレイトモード(縦位置).ランドスケープモード(横位置)どちらでもかまいません
    imovie1
  3. ムービーを選択します
    imovie2
  4. テーマ「シンプル」を選択し,作成をタップします
    imovie3
  5. フィルムと音符の記号をタップします
    imovie4
  6. 画面下部の写真を選択し,すべてをタップします.なぜか古い写真が先に表示されます.下の方にある絵コンテを撮影した画像を探す
    imovie5
  7. 写真が追加されます(黄色い枠).画像が継続表示される時間を調整します
  8. Ken Burns(勝手に動くエフェクト)をオフ
    imovie6
  9. 次の画像を追加すると,トランジション(つなぎ方)を選択できます.カット編集は「なし」徐々に変わるのは「ディゾルブ」です
    imovie7
  10. ワイプディゾルブなどトランジションの継続時間は左下に表示されている.前後の画像の長さが充分だと時間の選択肢が増えます
    imovie8
  11. 次に,右下の歯車のアイコンをタップ
    imovie19
  12. 黒からフェードイン,黒へフェードインをONにします.これでムービーの最初と最後がフェードイン,フェードアウトになります
    imovie20
  13. Vineなどの短尺の映像では前後フェードをかけない(=いきなりカットイン)のが標準的ですが,今回は標準的な映像作品のセオリーを目指しましょう.
  14. 映像全体の冒頭にタイトルを,冒頭かラストに学籍番号と氏名をテロップ(スーパーとも言う)で入れます(ビデオコンテにはテロップを入れることは少ないのですが,提出者確認用として今回は入れてください)
  15. テロップを入れるには,素材を選択し,右下のTをタップし,画面に現れたサンプル文字をタップして編集します
    imovie21
  16. 終わったら完了をタップ
  17. テロップは,学籍番号と名前が判別できればどのようなデザインでもかまいません
  18. 全て編集が終わったら,左上の完了をタップします

つづく

スーパー スーパーインポーズの略

ArduinoのデータをUnityに送る

Uniduino(Arduinoでなく)ではシリアル通信のデータ=Serial.println(hogehoge);したもの=が見えない.

サイクルコンピュータのようなものを作ろうとしたのですが,UnityのFPSを越える間隔のデータはUnityでは処理しきれないため,Arduino側でデータを処理し,Unityのupdateより遅い速度でUnityへ送る必要がある.

そこで,シリアル通信を送るサンプルを探していたのですが,以下リンクより見つけることができました.

 

UnityとArduinoをシリアル通信 – Qiita

はじめに (読み飛ばしてください 笑) ちょっとした趣味でデータグローブを作ってUnityで遊べたらなと思いました。 ハードウェアの部分はArduinoで制御すればいいんですがUnityとArduino間の通信とどうしたもんじゃと。 調べたらUniduinoという大変素晴らしいAssetがあるみたいですが、使うのに$30するようです。 ふえぇ…学生には高いよぉ… ということでいろんなネットの情報を参考にUniduinoを使わずにUnityとArduin…” name=”description

LINK: qiita.com/yjiro0403/items/54e9518b5624c0030531

 

このプログラムのうち,SerialHandlerをそのまま使わせていただき,別の呼び出すスクリプトだけを変更します.

以下は,シリアルデータを読み出すスクリプトです.別途,SerialHandlerが必要です.

using UnityEngine;
using System.Collections;


	public class mySpline2 : MonoBehaviour{

	public SerialHandler serialHandler;


		void Start(){
		serialHandler.OnDataReceived += OnDataReceived;
		}



		void Update(){

		}



	void OnDataReceived(string message){
		Debug.Log(message);

		var data = message.Split(
			new string[]{"\t"}, System.StringSplitOptions.None);
		if (data.Length < 2) return;

		try {
		} catch (System.Exception e) {
			Debug.LogWarning(e.Message);
		}


	}
	}

 

7行目でInspectorにボックスが出ますので,serialHandlerがアサインされたオブジェクトを入れてください.

11行目は必須です.これがないとエラーがでます.

23行目にあるようにmessageでString形式でデータが戻ってきます.

最終的にはこれをintParseして数値として使用する予定です.

Uniduinoが動かないとき

UnityでArduinoと通信できる魔法のプラグインUniduino(おそらく開発停止)をインポートして動かないとき,

PlayerSettings.NET 2.0 subset.NET 2.0に変更する.これ大事.Uniduinoは以下リンクより.

 

Uniduino

LINK: www.uniduino.com/

 

 

なお,UnityでArduinoを扱えるシステムの最新版は,

 

ARDUnity Home Page

Innovative IoT base Physical Computing DIY Solution ‘ARDUnity’ Official Web Site

LINK: www.ardunity.com/

 

があり,しかも基本的なDOUT.INやAINなどは無料で使用可能です.

外部センサの入力間隔を速度に変更

※現在はこの方法は使用していません.Arduino内で1周にかかるmsを検出し,シリアル通信でその数値をUnityに送信しています(現在の方法はこちら

自転車の速度計のように,円周nのタイヤが1周するのに何秒かかったかで,時速を計測するスクリプトです.

余談ですが,これはゲーム内の速度ではなく,実際に外部のデバイスの速度を計算するスクリプトです.

なお,Unity内の速度は1ユニット1mで計算することが多いです.

 

using UnityEngine;
using System;//時間計測するのに必要

public class mySpline : MonoBehaviour
{

	//時間計測に必要な変数
	private int starttime; //最初の初期値用
	private int now; //現在の時間を格納する用
	private int duration; //経過時間を格納する用

	void Start(){

		starttime = DateTime.Now.Hour * 60 *60 * 1000 + DateTime.Now.Minute * 60 * 1000 + DateTime.Now.Second * 1000 + DateTime.Now.Millisecond;
		//ゲームスタート時の時刻をミリセカンドに変換してstarttimeに格納します
	}


	public void cycle1(){ //1周ごとにセンサーなどでこの関数を呼びます.publicにしてあるのは,テスト用にGUIボタンで呼べるようにしてる
		now = DateTime.Now.Hour * 60 *60 * 1000 + DateTime.Now.Minute * 60 * 1000 + DateTime.Now.Second * 1000 + DateTime.Now.Millisecond; //この関数が呼ばれた時の時間をミリセカンドにして格納
		duration = now - starttime; //経過時間を算出してdurationに格納
		float myspeed = (3600000f / duration) * 0.00062f; //円周0.00062km(つまり62cm)と経過時間で時速を計算し,ローカル変数myspeedに格納する
		string kmspeed = myspeed.ToString ("N2"); //myspeedを文字列に変換し,ただし小数点2桁までで切り捨てて,文字用ローカル変数kmspeedに格納.文字列に変更しているのはGUIにすぐいれられるようにするため
			Debug.Log (kmspeed + "km/h");//コンソール画面に速度と単位Km/hを追加して表示
		starttime = DateTime.Now.Hour * 60 *60 * 1000 + DateTime.Now.Minute * 60 * 1000 + DateTime.Now.Second * 1000 + DateTime.Now.Millisecond;//次の計測開始用にstarttimeの時間を現在時間に更新

	}

}

speedscreen

ところで,Unityの計算間隔を超えた場合ってどうなるんでしょう?

MB1(Maya to MB)

MayaのデータをMotionBuilder(以下MB)で編集しましょう。

はグラボ必須です.無いと起動できません.そのためMacでWindowsを使用可能にするパラレルデスクトップでもMayaは起動しますがMBは動きません.

モーションデータは、BVH又はc3dのモーションファイル使用します.
http://www.mocapclub.com/Pages/Library.htm
http://accad.osu.edu/research/mocap/mocap_data.htm
カーネギーのデータ
http://mocap.cs.cmu.edu/

 

  1. MBで使用するには,カーネギーのデータをBVH化したもの(MBはBVH形式が楽です.こちらを利用してください)
    https://sites.google.com/a/cgspeed.com/cgspeed/motion-capture
    Motion builder friendly versionを使う
  2. directories番号の内容はこちらに.リンク先に動きのサンプル動画があるので,それを手がかりにすること
  3. 通常は,MayaからMotinBuilderにシーンを送信するか,fbx(スキニング又はエンベロープ済み)を読み込むが.今回は配布されたデータを用いる
  4. MotionBuilderをMayaと同じショートカットで動かしたい場合,Interaction ModeMayaにする(下図参考)
    mb0701
  5. ドラッグ&ドロップでBVH(又はC3Dファイル)を読み込む
  6. 読み込み後,再生バーを調整し0フレーム目や-1フレーム目Tポーズが入っているか確認する
  7. アセットのTemplate内Character(C3DのときはActor)をシーンにドロップ
    chara
  8. ここまでで,読み込んだデータは概ね以下のような構造になっている
  9. 読み込んだBVHのデータをCharacterにアサインする.CharacterをダブルクリックするとCharacoter Definitionのタブを探しやすい下記画像を参考にMapping Listの部分に読み込んだBVHファイルのボーンをアサインする
    cahacter2
  10. referenceとBaseの項目は必須です.他は部位にあわせて近い部分をアサインしてください.
  11. Tポーズのフレームへ行き,Characterizeにチェックを入れる,その際にキャラクタのスタイルを聞かれるの二足歩行の場合はBipedにする
    chara3

つづく

 

 

 

Mayaが起動しない時の対処方法

Mayaが起動しない時はプロファイルを消去します

ただし,プロジェクトの場所を設定していない場合,保存していたものが全て消える可能性があります

必ずバックアップをとってください

プロファイル消去の方法

  1. マイドキュメント>maya
    または
    マイドキュメント>maya>(Maya2016)
    というフォルダを探します
  2. 正しくプロジェクトを設定していない場合,こちらにシーンファイルが保存されている可能性がありますので,必ずバックアップをとってから,このmayaフォルダを削除します
  3. その後Mayaをスタートさせる

参考WEB

cgjishu.net/blog-entry-32.html

 

Mayaヘルプ

Mayaヘルプコーナー

  • Mayaが起動しない=>Mayaのプロファイルが壊れているようです.対策方法はこちら
  • プロジェクトの設定方法について=>こちらを参考に
  • 保存されない=>保存先が一杯な可能性があります.USBメモリなどに移動させましょう.その際プロジェクトフォルダの取り扱いについては=>こちらを参考に
  • テクスチャなどが表示されない=>上位階層も含め絶対に日本語など2バイト文字のフォルダ名やファイル名を使ってはいけません
  • レンダリングしたものが保存されない=>上位階層も含め絶対に日本語など2バイト文字のフォルダ名やファイル名を使ってはいけません
  • FBX exporterが選択できない場合=>こちら

※いずれの項目も映像メディア2しつこく解説しております.

2バイト文字使用禁止についてですが,業務用ソフトで2バイト文字が使えないのは普通です.諦めてフォルダ名は半角英数字で命名する習慣をつけましょう.