VR:パーティクルシステムとエフェクト

keita_nakamoriです。

前回、レイの使い方を学んだので、今回はレイ対象にパーティクルシステムを適用してみようと思います。

レイで対象を検知したときにパーティクルシステムを適用しながらカウントダウンし、さらにカウントダウンが終わったらオブジェクトExplosion.prefabで爆発エフェクトをかけるという手順です。

KillTarget スクリプト

物騒なスクリプト名ですが、やっていきましょう。

Targetを設定する。

爆破したいオブジェクトをGameControllerのインスペクターにドラッグしましょう。

後述しますが、パーティクルシステムとKillEffectも合わせてドラッグすると最終的に下記のようになります。

パーティクルシステムを設定する。

ヒエラルキー>Create>Effects>Particle Systemと開くとParticle Systemが作成されるので、それをGameControllerのインスペクターにドラッグしましょう。

killEffectを設定する。

Standerd Asset>Particle Prefabs>ExplosionをGameControllerのインスペクターにドラッグしましょう。

 

VR:レイキャスト

keita_nakamoriです。視線と地面オブジェクトとの交点を検出するスクリプトを書いていきましょう。

ポイントは下記スクリプトのコメントへメモっておきました。

LookMoveTo スクリプト

当該スクリプトは、前回やったWalkTargetと同様にWalkTarget2というオブジェクトをAIThirdPersonControllerが追跡するように、walkTarget2へアタッチします。

よって、名称もLookMoveToという追跡対象っぽいスクリプト名にします。

 

VR:AIThirdPersonContllor.prefabをランダムに動かす

keita_nakamoriです。

standerdAssetsのAIThirdPersonContllor.prefabの使い方を学習する過程で、C#スクリプトの書き方、変数をインスペクターパネルから操作する方法について学んでいきます。

手順

  1. AIThirdPersonContllor.prefabをシーンに適当に配置します。
  2. 追跡目標Targetを変数として持っているので、Empty Objectを新規生成しTargetとしてアタッチします。
  3. Empty Objectの名称をwalkTargetに変更しましょう。
  4. C#スクリプト RandomPosition.csを新規作成し、walkTargetにアタッチしましょう。
  5. 以降、RandomPosition.csの中身を作っていきます。

RandomPosition.cs スクリプト作成の考え方

  1. SetRandomPosition()を作成:walkTargetのtransform.positionにランダム生成した座標を代入することで、追跡目標Targetの位置を時間変化させます。
  2. RePositionWithDelay()を作成:上記SetRandomPosition()を実行するとともに、位置変更のインターバルを設定します。
  3. Start ()を作成:上記RePositionWithDelay()をコルーチンとしてゲーム開始とともに呼び出します。
  4. あとで、位置変更インターバルをインスペクターパネルから微調整できるように、時間をパブリック定義しておきます。public float waitingTime = 5.0f;
  5. void update();メソドは今回必要ないので消しておきましょう。
 

Python:HIOKI8870のcsvデータをpandas.DataFrameに読み込む方法

使用するモジュール群

あとでmatplotlibでグラフを作ったりするので、あらかじめインポートしておきます。

HIOKI8870のcsv生データを読み込む関数

単純には読み込めません。エラー回避のポイントは以下の通り。

  • names (columnの名称)をあらかじめ指定し、列数を固定すること。
  • 日本語が入っているためencodingをshift-jisに指定すること。
 

関数の使い方

関数名:read_hioki(file_addr)

HIOKI8870のcsv生データを読み込み,整形したデータフレームを返す関数です。

引数はfile_addrのみ。読み込むcsvファイル名を絶対パスまたは相対パスで指定するだけです。(文字列で)

file_addr:HOKI8870のcsv生データ

返り値dfは、純粋にロギング条件を除去した、純粋な測定データ部分のみをPandas.DataFrameとした、データフレームです。

おわりに

以上で、データフレームが作成できましたので、あとはnumpyなどで内部処理を行った後に、matplotlibで可視化すると良いです。