[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)にインポートしましょう。

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

Algoliaでネストされた値をフィルタリングする方法

Algoliaでindexからネストされた値をもとにフィルタリングするには、

AlgoliaのダッシュボードにあるdisplayタブにあるFaceting項目のAttributes for facetingに下のようにフィルタリングしたい値を設定して、

※ダッシュボードの変更は、セーブしないと適用されないのでちゃんとセーブしましょう。セーブボタンは、右上あたりに出てると思う。( 多分 )

index.search({
    facetFilters: ” ここにダッシュボードで設定したキーをいれる”
},
(err,content) => {
    if(err) throw err;
    console.log( content );
});
のように、facetFilters:” 設定したキー”で、フィルタリングした値が取れる。

react-map-glのPopup

1.Popupをインポート

import {Popup} form ‘react-map-gl’;

2.使い方

hoge(){

return (

<Popup

tipSize={5} //座標を指すチップのサイズ。

anchor=”top” //座標に対するポップアップの位置を示す文字列。オプションはtopbottomleftrighttop-lefttop-rightbottom-leftbottom-right

longitude={~~~}

latitude={~~~}

onClose={function}

>

<div>{~~~~~}</div>

</Popup>

);

}

react-map-glのMarker

1.Markerをインポート

import { Marker } form ‘react-map-gl’;

2. 使い方

hoge(){

return data.map((element,i)=>{

const {info,coordinates} = element; //data情報を取得

return (

<Marker key={i}

longitude= {coordinates[0]}

latitude={coordinates[1]}

>

<div><span>{info}</span></div>

</Marker>

);

});

}

react-map-glの導入

1.react-map-glをインストール
npm i --save react-map-gl

2.react内で使う
import React from ‘react’;
import ReactDOM from ‘react-dom’;
import ReactMapGL from ‘react-map-gl’;

class Map extends React.Component{
constructor(props){
super(props);

this.state = {
viewport:{
width :400,
height :400,
latitude :37.7577,
longitude :-122.4376,
zoom :8
}
};
}

render(){
const {viewport} = this.state;
return (

<ReactMapGL

mapStyle=”mapbox:~~~”

{…viewport}

onViewportChange={

viewport => this.setState(viewport);

}

>

</ReactMapGL>

);

}

3.webpackに以下を追加

process.env[‘MapboxAccessToken’]= “~~~~”;

以下略———————–>>

plugins:[

new webpack.EnviromentPlugin([‘MapboxAccessToken’])

]

<<——————–以下略