圧倒的python:numpy データサイエンス受験用

かずまなぶです。

ランダムウォークを作ってみた 株式チャートっぽい

日々、独学で学び続けているデータサイエンスの分野ですが、体系的に学びたい思い、このたび

東京大学 工学系研究科 技術経営戦略学専攻


グローバル消費インテリジェンス寄附講座

【第三期社会人向けデータサイエンスコース】

というものに応募してみました。

しかし、応募者数が受講可能人数を上回ってしまい、とりあえずpythonスキルのテストを実施して人数を絞るとのことで、本日受験いたしました。

※会社休んでまで受験してますので、絶対に受かりたい~。(; ・`д・´)

テストの前に、今一度 numpyを復習してみましたので、貼っておきます。

ここには出てきませんが、np.split(A,2)とかnp.split(A,2,axis=1)とかスプリット系は絶対必須です。

そのほか 順序入れ替え系の参考サイト

参考書:Pythonによるデータ分析入門 第二版

仮想空間VR:操作パネルとボタン#3

やっていきましょう 3回目です。

操作対象を設置する

  1. Standard Assets の中にパーティクルシステムとして放水ホースがあるのでシーンに適当に追加します。 Assets/Standard Assets/ParticleSystems/Prefabs/Hose.prefab
  2. InspectorからHoseを有効にします。(なぜか無効になっている)
  3. play on awakeはOFFにしておきます。
  4. Hose(script)とSimple Mouse Rotator(script)はOFFにしておきましょう。今回は使いません。
  5. Hoseの子要素にWaterShowerがあります。これが放水のON/OFFをつかさどっています。
  6. StarButtonのInspector>Button(Script)にOnclik()したときの動作を決める項目があります。プラスボタンを押して項目を増やし、WaterShawerを入れます。
  7. ParticleSystem.Playを選択します。これでボタンを押すとWaterShaweが実行されるようになりました。

こんどはStopボタンです。

違うのは、ParticleSystem.playでなくてParticleSystem.Stopにします。

まとめ

スタートボタンをマウスでクリックすると Button(script)のOn Click()関数が実行され、WaterShower(Script)を呼び出し、ParticleSystem.Play()関数が実行され、放水される。という流れになります。

次回

視線を向けた先のボタンがハイライトするようにスクリプトを書いていきます。

圧倒的かずまなぶ(‘ω’)ノ

仮想空間VR:操作パネルとボタン #2

圧倒的かずまなぶです。(; ・`д・´)

2回目やっていきましょう。

ボタンのあるダッシュボードを作成

DefaultCanvasプレハブをシーンに追加して、名前をDashboardにします。

Dashboardの子要素にUI>Row Imageを作り、これにダッシュボード的なテクスチャを張りましょう。(Image と RawImage は何が違うのか)

DashboardのInspectorを いじって、イイ感じの位置にしましょう。水平目線よりも、下において、コッチに向けるように回転させるとイイ感じになります。

  1. Pos : 0,0,0
  2. width , hight : 140 , 105
  3. scale :  4.5 , 4.5 ,4.5

Start ボタン と Stopボタンを配置する

  1. UI>ButtonをDashboardの子要素に追加する
  2. 名前をStartButtonに変更する。
  3. Posをイイ感じの場所にする。
  4. width,hight : 60,60
  5. Scale : 1
  6. Image(script)のSourceImageにButtonAcceleratorUpSpriteというStandard Assetsのスプライトを入れる。(スプライトとは)

次はStopボタンです。

スプライトだけ違うものを入れます。ButtonAcceleratorOverSprite.png

スイッチングの対応

目線のRayがダッシュボードのどこを見ているかわかるように。衝突検知用の見えない壁をつけておきます。あとで、目で爆発させるのと同様に、目でスイッチングできるようにスクリプトを書いていきます。

Dashboardの子要素にplaneを追加して、そのMesh RendererをOFFにして透明にします。Mesh ColliderはONにして衝突だけ検知できるようにします。

次回は操作対象のオブジェクトを作成します。

圧倒的かずまなぶ(‘ω’)ノ

仮想空間VR:操作パネルとボタン#1

圧倒的かずまなぶです。(; ・`д・´)

操作パネルとボタンを作っていきます。ダッシュボードと呼ばれています。

少々複雑で頭が混乱してきたので、整理します。

こんな感じの操作パネル。 スタートとストップのボタン

やること

  1. UIのCanvasプレハブを作る。
  2. ボタン付きのダッシュボードを作る。
  3. 操作対象物をシーンに追加して、ボタンと接続する。
  4. ボタンを有効にするスクリプトを書く
  5. ボタンを見ているときにハイライトするスクリプトを書く
  6. ボタンがハイライトしているときだけボタンが有効になるスクリプトを書く
  7. 標準カーソルのスクリプトを流用して、ダッシュボードを見ている時だけボタンを有効にする。

DefaltCanvasプレハブを作る

UI>Canvas を作って DefaultCanvasというプレハブを作っておきます。後でいろんなUIを作るときの素材にします。

3D空間では単位がmでしたが、Canvasは別の座標系を持っているので、数値が良くわからないです。

  1. Camvasの名前をDefaultCanvasに変えます。
  2. Inspectorの設定はPos X,Y,Z =(0,0,0) で3D空間の原点。
  3. Width,Height=(640,480) にしておきます。縦横比0.75が良いようです。
  4. Scaleは(0.0135,0.0135,0.0135)にします。こうすると、3D空間(world空間という)上での1ピクセルに相当するようです。
  5. Render ModeをWorld Spaceにします。これは解りません。

 次は、Canvasの子要素ImageとTextのサイズ調整です。

  1. DefaultCanvasの子要素にImageとTextがデフォルトでくっついていいますので、Imageを選んでInspectorのAnchorをStretchにして、サイズいっぱいに引き伸ばしておきます。(まだ絵がないから何も見えませんが・・・)
  2. TextはText(Script)になんか書いて、Characterのサイズをいじって、Paragraphでセンターに寄せて、overflowにして色つけてやると、文字が書けます。
  3. DefaultCanvasに戻って、Canvas Scaler(Script)>Dynamic Pixels Per Unitを10に増やすとTextの解像度が上がり、見やすくなります。

この状態でプレハブにしましょう。

次回:ボタン付ダッシュボードを作る

次回はDefaultCanvasプレハブをシーンに追加していじっていきましょう。

圧倒的かずまなぶ(‘ω’)ノ

仮想空間VR:AIThirdPersonControllerをあれこれいじってみた

こんにちは (‘ω’)ノかずまなぶ です。

わたしのVR空間にだんだんと人が集まってきました。紹介します。

アイドルのおっかけ

  1. 先日紹介しました、アイドルのおっかけです。ユニティちゃんはロコモーションなのでPCのキーボードで自由に動けるのですが、それをずっと追っかけていきます。
  2. おっかけはAIThirdPersonControllerプレハブでAICharacterControlスクリプトのTargetをWalkTargetに設定しています。
  3. walkTargetはEmptyの名前を変えただけのオブジェクトです。追跡対象であるユニティちゃんの子オブジェクトにいれています。
  4. 言い換えれば、おっかけはユニティちゃんではなく、ユニティちゃんの保有するWalkTargetオブジェクトに反応しているのです。
  5. 星白しずかのエナがいつもカビザシを見つめているような感じです。ランカ・リーのVウィルスだったり、バサラのアニマスピリチアだったりもします。解らなかったらスルーしてください。

石盤のおっかけ

  1. アイドルのおっかけを改良して、追跡対象をユニティーちゃんから、地面を這う石盤に変更した「石盤のおっかけ」です。
  2. ユニティちゃんのときは追跡対象のユニティちゃんの中にTargetを入れていましたので、今回は石盤(cylinderオブジェクト)にTargetを入れていると普通は思いますが、違います。
  3. AIThirdPersonControllerプレハブのAICharacterContorolスクリプトのTargetをWalkTarget_lookMoveToオブジェクトにし、LookMoveToスクリプトを適用しています。
  4. LookMoveToスクリプトでは、カメラ目線の始点座標とベクトルを調べ、そのベクトルの延長上に何かしらのオブジェクトがあり、それが地面(変数ground)だったら、その座標にWalkTarget_lookMoveToオブジェクトを移動させるのです。変数GroundにはInspectorパネルからGroundPlaneを適用します
  5. そして、目線によって任意に動かすことができるようになったWalkTarget_lookMoveToオブジェクトに対してはcylinderオブジェクトという実体を与えて(子にして)、目で見ることができるようにしました。
  6. ゲームを実行してみると、目線の先に常に石盤がいるかと思います。

うろちょろゾンビ

  1. ランダムに出現する見えないターゲットに向かってひたすら歩き続けます。ターゲットは5秒間隔で移動します。
  2. AIThirdPersonControllerプレハブのAICharacter ControlのTargetにWalkTarget_Randomオブジェクトを適用する。
  3. WalkTarget_RandomオブジェクトはRandomPositionスクリプトを持ちます。
  4. RandomPositionスクリプトがWalkTarget_Randomオブジェクトの座標を移動させます。

バイツァーダストの被害者

  1. 目線を合わせると、赤いパーティクルが体を包み3秒後に爆死!します。
  2. 何回でもリスポーンしますので、タイミングよくバイツァーダスト!と叫びましょう。要練習です。
  3. AIThirdPersonControllerプレハブのThirdPersonCharacterスクリプトには何もいれません。こいつは特になにかの目標に向かって移動する知能は与えていません。爆死能力だけです。AudioSourceに爆発音だけ入れましたが、機能していません。(課題です)
  4. EmptyからGameControllerを作ります。killTargetスクリプトとAudioSource爆発音をコンポーネントとして追加しました。AIThirdPersonControllerプレハブの中にGameControllerを入れておきましょう。
  5. killTargetスクリプトにはTarget , Hit Effect , Kill Effect , Time To Select , Score、といったいろいろなものをセッティングできるようにしました。
  6. killTargetスクリプトでは、カメラ目線をレイとし、レイが変数targetに当たっていたら、当たっている座標にEffiectを出し、設定時間経過後にkillEffectを出し、そのあとに新しい座標にリスポーンします。
爆死!(; ・`д・´)

仮想空間VR:ユニティちゃんをジャンプさせる

こんにちは、(; ・д・´)圧倒的かずまなぶ です。

ユニティちゃんがジャンプできないので、小一時間かけて解決した記録をUPしておきます。

走っているときにスペースキーを押すと、ジャンプするはずですが、ジャンプして、浮いた瞬間にスクリプトが止まってしまいます。Projectパネル横のConsoleパネルで確認できます。

UnityChanControlScriptWithRgidBody.csを開いて(エラーログをダブルクリックでもいけます。)

126行目

cameraObject.SendMessage("setCameraPositionJumpView"); // ジャンプ中のカメラに変更

で引っかかっているので、//でコメントアウトします。

ジャンプ中にカメラが切り替わるようですが、そんなカメラ作った覚えはないですし。

それだけ。以上 圧倒的かずまなぶ でした。(; ・д・´)