Unity と GitHub プロジェクトの管理
はじめに
UnityのプロジェクトをGitHubで管理する方法を簡単にまとめます。
あと、GitHubに公開されているUnityプロジェクトをダウンロードして自分の環境で開く方法も書いておきます。
環境
- Windows10 (Macはターミナルを利用)
- Unityのバージョンは任意
前提条件
以下のことがすでに済んでいることを前提にしています。
- Unityのインストール
- GitHubアカウントの作成
- Gitの基本的な操作の習得
GitHub Desktop をインストール
Windowsでは GitHub Desktop を利用すると簡単です
GitHub Desktop から push
GitHub Desktop の File > Add local Reposity から GitHub にあげたい Unity プロジェクトを選択
- リポジトリの名前を入力
- README作成にチェック
- gitignore は 「Unity」を選択
- Lisenceを選択
.gitignoreについて
以下を参照。ありがたい。
GitHubへpush
GitHub Desktop、またはコマンドを利用してcommit、GitHubへpushします。
以上までがとりあえずのGitHubでの管理方法です。
あとは、適宜pullしたり、branchを切り替えたりします。
GitHubからダウンロードしたUnityプロジェクト
GitHubからzipファイルでダウンロードしたり、 cloneしたりで手に入れたUnityプロジェクトを開きます。
Unityのメニュー画面で(プロジェクトを選択する画面)、 openボタンを押すと、ディレクトリを選択できます。
そこで開きたいUnityプロジェクトを選択します。
以上です。
シェルコマンドでファイルの文字数をカウント
はじめに
bashのコマンドでテキストファイルの文字数をカウント。
とりあえずできただけのものなので、 もっといい方法があれば教えてください。
ファイルの文字をカウント
自分が書いている日記(markdown形式)の文字数をカウント
以下のようなテキストファイル(file)
### 08/06/2018 --- あいうえおかきくけこ。 さしすせそ、たちつてと。 なに、ぬねの。 はひふへほまみむめも。
上から2行(日付と罫線)とスペース、改行を除いた文字をカウント。
cat file | awk 'NR>2{print}' | sed 's/ //g' | tr -d ' ' | tr -d '\n' | wc -m
説明
cat file
: ファイルの中身を出力
awk 'NR>2{print}'
: 3行目以上を出力(2行目までを削除)
sed 's/ //g'
: 全角スペースを削除
tr -d ' '
: 半角スペースを削除
tr -d '\n'
: 改行を削除
wc -m
: 文字数をカウント
Windows10でデスクトップ画面が頻繁に再描写される問題(解決)
問題
突然、Windows10でデスクトップ画面が頻繁に再描写され(30秒に1回くらい)、 パソコンの操作に支障が出た。
解決した方法
デスクトップに置いていたBlenderで作成したファイルを削除し、パソコンを再起動。 (Blenderは3Dモデル作成ソフト)
原因(おそらく)
特に検証をした訳ではないため、あくまで仮説です。正直、あまり自信はないです。
Windows10では、定期的にデスクトップ画面が再描写されている。 その再描写は、基本的には一瞬で終わる。 (人間が気にならないくらい早く。)
セキュリティソフトをインストールしている場合、 デスクトップ画面の再描写時に、 デスクトップに存在しているファイルをチェックしている可能性がある。
デスクトップに一般的ではないファイルを置いていた場合、 そのファイルのチェックに時間がかかり、 その結果、再描写に時間がかかった。
Vuforia の World Center Mode について
はじめに
今回は Vuforia の World Center Mode について書きます。
環境
- Unity2018.1.6f1
- Vuforia7.1.35
World Center Mode について
ARCamera の Vuforia Behaviour に World Center Mode の項目がある。
World Center Mode には4つの選択肢があります。
- SPECIFIC_TARGET
- FIRST_TARGET
- CAMERA
- DEVICE_TRACKING
SPECIFIC TARGET について
自分が選択した Image_target をワールド座標系の原点にできます。
FIRST TARGET について
アプリを起動して一番最初に見つけたマーカをワールド座標系の原点にできます。
CAMERA について
常に ARCamera がワールド座標系の原点になります。
DEVICE TRACKING について
アプリ起動時のデバイスの位置姿勢がワールド座標系の原点になります。
その後デバイスを移動や回転をさせても、オブジェクトの位置や姿勢は動きません。
詳しくは以下を参照してください。
Vuforia7 + Unity デバイストラッキング
はじめに
UnityにVuforiaが統合されてから、Vuforiaがすごく使いやすくなったのでありがたいです。
今回はVuforiaでデバイストラッキングをするための設定方法を書いていきます。
環境
- Unity : 2018.1.6.f1
- Vuforia : 7
デバイストラッキングとは何か
VuforiaのデバイストラッキングをONにすると、 デバイスのセンサを使って、デバイス本体がどのくらい移動回転をしたか計算で求めてくれます。
アプリ起動時のデバイスの位置姿勢がワールド座標系の原点を決定します。
その原点からデバイスがどのくらい移動回転したかが自動で分かります。
デバイストラッキングの設定
まず、Vuforiaをインポート。
そして、ARCameraを作成。
Projectビューの Resources > VuforiaConfiguration
Device Tracker の Track Device Pose にチェック
さらに Tracking mode は 「ROTATIONAL」「POSITIONAL」を選択
ちなみに、ARCamera の Vuforia Behaviour にある World Center Mode が「Device Tracking」になります。
openFrameworks を Ubuntu16.04 にインストール(コンパイル時のエラーについて)
はじめに
openFrameworksを使ってみようかなと思ってインストールしてみました。
色々あって無駄に手間がかかってしまったので、 その時のメモを残しておきます。
目的
Ubuntu16.04にopenFrameworksをインストール
環境
- Ubuntu16.04(仮想環境:VirtualBox)
- openFrameworks0.10.0
参考
参考にした記事の内容とはバージョンが違います。
openFrameworks のインストールから新規プロジェクトの作成まで | ざきのメモ
インストール方法
wget
を使ってインストールしたかったけどエラーが出たのでwebサイトからダウンロード
https://openframeworks.cc/download/
展開したディレクトリはホーム直下におく
あとはそのディレクトリ内で作業
/scripts/linux/ubuntu で以下のコマンドを実行
sudo ./install_dependencies.sh sudo ./install_codecs.sh
次にこのコマンドを実行して二つインストール(実行する場所はどこでもいい)
sudo apt install -y qtcreator eclipse
/scripts/linux/で以下のコマンドを実行してコンパイル
./compileOF.sh -j3 ./compilePG.sh
以上でインストールは終了
コンパイル時のエラー対応
以下のコマンドを実行したときにパッケージが足りないことでエラーがでました。
./compileOF.sh -j3
パッケージが見つからないというエラーを出されたときの、追加するパッケージを列挙していきます。
もしかすると私がつづりを間違えているかもしれないので確認してください。
一括でインストールするコマンド
sudo apt install gstreamer0.10-plugin-base-apps libsndfile1-dev libopenal-dev libpulse-dev libglew-dev liburiparser-dev libglfw3-dev librtaudio-dev libpugixml-dev
一つずつインストール
エラー:gstreamer0.10~.pcが見つからない
sudo apt install gstreamer0.10-plugin-base-apps
エラー:sndfile.pcが見つからない
sudo apt install libsndfile1-dev
エラー:openalが見つからない
sudo apt install libopenal-dev
エラー:libpulse-simpleが見つからない
sudo apt install libpulse-dev
エラー:glewが見つからない
sudo apt install libglew-dev
エラー:uriparser/Uri.hが見つからない
sudo apt install liburiparser-dev
エラー:GLFW/flfw3.hが見つからない
sudo apt install libglfw3-dev
エラー:RtAudio.hが見つからない
sudo apt install librtaudio-dev
これで警告は出てきますが、コンパイルは通りました。
さらに以下のコマンドでもエラーが出たので追加するパッケージを書いておきます。
./compilePG.sh
エラー内容を読むとpugiクラスでエラーが出ているのでそのパッケージをインストール
sudo apt install libpugixml-dev
プロジェクトの作成と実行
/projectGenerator-linux64/で以下のコマンドを実行
./projectGenerator
GUI上でウィンドウが出てきます
そこで好きなプロジェクト名を決めて、Generateボタンを押すと作成できます
そして、/apps/myApps/に自分が作成したプロジェクトが追加されています
自分のプロジェクト内の/src/にcppファイルやhファイルがあります
おわりに
インストールするだけで思ったよりも時間を使ってしまったけど、 無事インストールできてよかったです
Unityで録音アプリを作成
はじめに
Unityで録音アプリを作成してみました。
今回は録音して再生する機能を持ったアプリです。
目的
Unityで録音アプリを作成
環境
- Unity : 2018.1.6f1
- OS : Windows10
ソースコード
MITライセンス
UIのボタンを3つ作成して関数を関連付けしてください。
(StartButton, EndButton, PlayButton)
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MyRecording : MonoBehaviour { AudioClip myclip; AudioSource audioSource; string micName = "null"; //マイクデバイスの名前 const int samplingFrequency = 44100; //サンプリング周波数 const int maxTime_s = 300; //最大録音時間[s] void Start() { //マイクデバイスを探す foreach (string device in Microphone.devices) { Debug.Log("Name: " + device); micName = device; } } public void StartButton() { Debug.Log("recording start"); // deviceName: "null" -> デフォルトのマイクを指定 myclip = Microphone.Start(deviceName: micName, loop: false, lengthSec: maxTime_s, frequency: samplingFrequency); } public void EndButton() { if (Microphone.IsRecording(deviceName: micName) == true) { Debug.Log("recording stoped"); Microphone.End(deviceName: micName); } else { Debug.Log("not recording"); } } public void PlayButton() { Debug.Log("play"); audioSource = gameObject.GetComponent<AudioSource>(); audioSource.clip = myclip; audioSource.Play(); } }
コード解説
ソースコードを簡単に解説します。
まず、使用するマイクデバイスを探します。
ここでmicNameにnullを入れると、 その端末でデフォルトのマイクを使用します。
foreach (string device in Microphone.devices) { Debug.Log("Name: " + device); micName = device; }
Microphone.Startで録音を開始します。
引数は、マイクデバイスの名前、ループするかどうか、録音時間[s]、サンプリング周波数です。
Unity公式のリファレンスを読むと分かりやすいです。
録音データはAudioClip変数に保存されます。
myclip = Microphone.Start(deviceName: micName, loop: false, lengthSec: maxTime_s, frequency: samplingFrequency);
Microphone.Endで録音を停止します。
また、ループをfalseにしていると、録音時間を過ぎれば録音は終了します。
Microphone.End(deviceName: micName);
録音したデータを再生します。
audioSource.Play();
おわりに
Unityで録音機能を持ったアプリを作成しました。
あとは、録音データをセーブしたり、 音声ファイルとして書き出せたりすると、便利になりそうです。