[Unity] AndroidでMeshFilterを生成するとFPSが下がる

Unityで、MeshをPointで生成しようとして以下の処理をスクリプトに記述。
Androidでビルドして実機確認したら、FPSが物凄く低下した。

MeshFilter meshFilter = GetComponent();
meshFilter.mesh.SetIndices(meshFilter.mesh.GetIndices(0), MeshTopology.Points, 0);

上記の処理が無い時のFPSは60FPS前後であるのに対して、
ある場合は、3FPSにまで低下した。

※原因がわかり次第記事にします。

Unityのコード編集にVSCodeを使う

VSCodeがとても使いやすくて、「UnityでもVSCodeつかえないかなぁ・・・」っと思っていたらやっている人いたので自分もやってみることにした。

参考記事
今日からUnity + Visual Studio Codeを用いた快適な開発生活(随時更新中)

VSCodeでの設定

i. VSCodeの拡張機能から、以下のプラグインをインストールする。

ii. VSCodeのデバッグアイコンから歯車をクリックしたら、Unity Debuggerを選択。

操作説明

Debugger選択

デバッグするときにUnity Editorを選択するとデバッグできる。

Debug選択

iii. UnityからEdit -> Preference -> External Tools -> External Script Editor をVSCodeに変更。

iiii. 以上!

REALSENSE D415 を使ってUnityでモーションを取るまでのセットアップ

※今回はWindowsの説明だけしかしません。その他のOSは以下を参照↓
http://download.3divi.com/Nuitrack/doc/index.html
https://github.com/IntelRealSense/librealsense

モーションを取るのには、公式のSDKでは難しそうなので、NuitrackというSDKを使います。

公式のSDKも入れておいたほうがいいので、入れときましょう。
公式SDKのgithub
公式SDKのインストールファイル場所

公式SDKを入れたら、次にNuitrackを入れて行きます。

まず最初に、Nuitrackから、自分のOSにあったものをダウンロードしましょう。有料版と無料版があります。

無料版

有料版

ダウンロードしたら、次はインストールをしましょう。

ダウンロードしたファイルを解凍すると、OpenNI~~~ というインストールファイルがあるのでそれを実行してインストールします。

インストールが完了したら、次に解凍したファイルの中にnuitrackというフォルダーがあるのでそれをC:\直下にコピーします。( 人によっては D:\ )

コピー出来たら、今度はそれにPATH(環境変数)を通します。

PATHは二つ入れます。
一つは、” NUITRACK_HOME ” という名前で、値を C:\nuitrack にして環境変数にいれます。

もう一つは、環境変数のPathに C:\nuitrack\bin を追加してください。

以上でPathの登録は終了です。

次にUnityのSDKを入れます。
以下のDownload SDK and SamplesをクリックするとSDKをダウンロードできます。

ダウンロードしたら今度はそれを解凍したら、その中にある ” NuitrackSDK.unitypackage “をUnity(2017.3.1f1)にインポートしましょう。

以上でセットアップの完了です。

[Unity] CanvasScalerと座標

uGUIやRectTransformを使った画面のレイアウトをスクリプトから制御しようと思うと、座標の扱い方で混乱することがあるのでメモ。

mousePositionやtouchesの座標 > 画面の解像度座標
uGUI(RectTransform) > CanvasScaler内の座標

なので、座標の変換が必要

UnityでiOSのビルドをしてxcodeでアーカイブするときによくでるエラー

その1
.......MapFileParser.sh: Permission denied

まんまパーミッションを変更する

chmod +x MapFileParser.sh

その2

clang: error: no such file or directory: '......../Classes/Prefix.pch'

clang: error: no input files

どこか別のxcodeプロジェクトから同じファイルをコピペしてもってくる

あせることはない、コピペでいいんだぜ

Apple LLVM 8.0 clang: error: no such file or directory:xxx/Prefix.pch がxcodeで出た時


Apple LLVM 8.0 clang: error: no such file or directory:xxx/Prefix.pch

Unityでビルドするとたまに出る。Build settingのPrefix Headerを見るとClasses/Prefix.pchとなってるけど、実際には存在しないので、そういう時は他のUnityでビルドしたプロジェクトからコピペして対処すればOK

iOS/Androidで最高にリアルな3D表示を実現できた

ミニチュアストーリーズ」でスマートフォンでリアルの3D表現を追求して、そこからさらに精度をあげて、かつ軽量なデータを実現する手法がだいたいわかってきた。

まだ改善の余地はあるけど、このレベルでスマートフォンで表示できるのは実用レベルになってきたと思う。ちなみに上のドーナッツはUnityで作ってGalaxy S6で操作しているもの。下のミニチュアストーリーズと比べてみると面白いです。

Unity Listからforeachを使ってremoveする


foreach(Class item in Lists){
 if(item.id == id){ 
  Lists.remove(item);
 }
}

こんなかんじでやると、

InvalidOperationException: Collection was modified; enumeration operation may not execute.

とエラーになるので、


List<Class> TmpList = Lists;
foreach(Class item in Lists){
 TmpList.Add(item );
}

foreach(Class item in TmpList){
 if(item.id == id){ 
  Lists.remove(item);
 }
}

こうしてやる