Python:テンポラリーファイルとテンポラリーディレクトリの作成

使用するモジュール

import tempfile

テンポラリーファイルの作成

一時的にテキストなどを保存して、処理が終わったら自動的に消すか残すか選択できます。

テンポラリーディレクトリの作成

こちらも一時的にディレクトリを作成して、処理が終わったら自動的に消すか残すか選択できます。

 

Python:ファイル操作 os pathlib glob shutil

os pathlib glob shutilを使ってみます。

 

あとは、必要に応じてググりましょう。

Python:ファイル操作 os

 

Python:csvを操作する

csvファイルを作成する

 

csvファイルを読み込む

 

Python:txtファイルを作成、開く、読み込む、上書き、追記

python script を実行しているときに、何かしらを.txtファイルや.csvファイルとして保存したいデータがあると思います。

.txtファイルを新規作成して、なにかしらを書き込んで保存するところまでやりましょう。

これを再度呼び出して追記します。

今度は、ただ読み込んでみます。

もっといい方法があります with構文

f.close()する必要がありません。

一行づつ読み込むこともできる

while True → f.readline() → if break

2文字ずつ読み込むこともできる f.read(chunk)

文字を調べる f.seek

f.tell() 現在位置を確認する

f.read(1) 現在位置の値を確認する

f.seek(5) とかで現在位置を移動する

f.read(1) 現在位置の値を確認する

この繰り返し作業でいろいろ操作していく

VR:Daydreamコントローラをクリックしてオブジェクトを出現させる

Keita_Nakamoriです。

前回、予め上空に配置したボールに対して、重力と反発係数を定義して、跳ねるボールたちを実装しましたが、今回は、任意のタイミングでブロックを空間に召喚しようという試みを致しました。

ヒエラルキー

GvrController群を使っていきます。説明:google公式サイト

下記のユニティパッケージをダウンロードしました。

GoogleVRForUnity_1.190.1.unitypackage

何かしらユニティプロジェクトを開いている状態で先程ダウンロードしたunitypackageファイルをダブルクリックすると、インポートが始まります。

インポートが終わったら、下図のようにヒエラルキーにGvrController関連を配置しましょう。Assets>GoogleVR>Prefab の中にあります。

GvrControllerMain

コントローラーの状態を管理するメインモジュールです。

(ユニティではモジュールはプレハブという扱いなんですね。)

GvrControllerInputをコンポーネントとして持ち、google VRコントローラーAPIへのメインエントリーポイントとして機能します。

GvrEventSystem

DayDream コントローラーがユニティイベントシステムを使用できるようにするためのモジュール(プレハブ)。通常のユニティイベントシステムから代替して機能するようになります。

GvrPointerInputModuleコンポーネントを含んでいて、こちらもユニティ標準のStandaloneInputModuleから代替されます。

GvrEditorEmulator

プレイモードの時に、ヘッドセットの動きをキーボードとマウスで代替できるようにするためのモジュールです。以前から設置していたものです。

Alt+マウス:周囲を見渡す

Ctrl+マウス:顔を傾ける

GvrInstantPreviewMain

ユニティ上でプレイモードにしたとき、スマホの画面へVR化した表示をし、さらにさらにその中で、物理的なDaydreamコントローラーを使用できるようにする機能をもつコントローラーです。

windows10デスクトップ上のタスクバー右端アイコンからBlueToothを有効にして、物理Daydreemコントローラーとのペアリングを有効にしておきます。

が、私のは動きませんでした。他になにかしらやらないと行けないようです。

別の方法として、GvrEditorEmulatorと同じようにゲーム実行中に

Shift+マウス移動 でポインターを動かすことができます。

GvrControllerPointer

ヒエラルキーでメインカメラの下層に配置することになっています。

画面上にコントローラーオブジェクトを表示します。

コントローラーの見た目を変更することもできます。

いろいろ方法があります。

1.コントローラープレハブそのものを変更する。

2.GvrControllerPointerの中にControllerVisual (3Dオブジェクト)があるので、これをお好みの3Dオブジェクトに変更する。

私はとりあえず、デフォルトで行きます。ゲームの場合は剣とか杖とかにするとカッコ良くなるでしょう。

このなかのGvr Arm Modelが若干くせもので、持っているポインターとVR上では結構ずれています。気持ち悪いので、微調整しましょう。デフォルトでは近すぎてポインター本体を見ることも困難なので、少し離しました。

スクリプト:Summon.cs

任意の3Dオブジェクトを任意の座標に召喚するスクリプトを作成しました。

インスペクタ上で 召喚したい3Dオブジェクトと召喚したい位置を定義します。

召喚したい位置については、Daydreamコントローラーの指し示す方向に定義しました。次項を参考にしてください。

召喚する位置の設定

Daydreamコントローラーの指し示す方向に定義します。

ヒエラルキーにGvrControllerPointer > Laser > reticle  がありますので、このreticleをSummon.csスクリプトのsummonPositionに代入しましょう。

ヒエラルキーからドロップインします。

以上です。では、ビルドしてヘッドセットをかぶってみましょう。

創造神になった気分にしばらく浸れます\(^o^)/

VR:重力で落下し、床でバウンドするボールを作成する

Keita_Nakamoriです。

物理エンジンを使ってみます。

重力で落下し、床でバウンドするボールを作ってみました。

コンポーネントの追加

3Dオブジェクトのスフィアを作成し、インスペクタパネルにスフィアコライダ(球状の衝突定義)とリジッドボディを追加します。

コライダ(衝突)と 反発係数の定義

スフィアコライダのマテリアルにはスタンダードアセットのBauncyをいれて、Bauncyの反発係数を0.8に修正し、ちょっとづつ跳ねなくなるようにしました。

半径Radiusは0.5をいれました。これはお好みのサイズにします。

リジッドボディで重力の定義

リジッドボディでは重力の使用にチェックを入れます。

今回は質量と抵抗の値はデフォルトにしました。

VR:目視カーソルの作り方

Keita_Nakamoriです。

視線を対象に合わせるときに、補助的なカーソルを目の前に表示させたいと思います。

ヒエラルキーには一人称視点のプレハブとして作っておいたMe My Self Eye と その下の カメラオブジェクトであるMainCamera があります。

今回はさらにMainCameraの下にキャンバスオブジェクトとしてReticle Cursorを作成し、さらにその下にRaw Imageを入れます。

このRaw Imageの中に、スタンダードアセットのテクスチャのcursor_grabをアタッチします。

かんたんですね。

VR:UI Canvasを使ってみる

keita_nakamoriです。

何かしらのテキスト情報をVR空間上に表示させておきたい時に、ユーザーインターフェースとしてCanvasというものを利用できます。

  1. ヒエラルキーにUI>CanvasをCreateしましょう。
  2. Canvasの下にUI>Imageを入れましょう。白くします。
  3. もうひとつ、Canvasの下にUI>Textを入れましょう。文字を書きます。

では、調整をしていきます。

Canvasの調整

初期値はとんでもなく巨大なので、小さくしましょう。

Imageの調整

アンカーはストレッチにしておきましょう。

カラーは若干透明にしておくとカッコいいです。

Textの調整

こちらもストレッチしておきましょう。

テキストに任意の文字を書けば完成です。

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

keita_nakamoriです。

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

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

KillTarget スクリプト

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

Targetを設定する。

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

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

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

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

killEffectを設定する。

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