Unityの3DプロジェクトをVisual Studio Projectにエクスポートしてビルドする

基本的には、Exporting and building a Unity Visual Studio solution の手順に従えばできる。

Holograms 100 の Chapter6の手順も、だいたい同じ。

まずFile->Build Settingsのダイアログで「Unity C# Projects」にチェックを入れてビルド。

f:id:sunasaji:20170905005512p:plain

あとは Windows の Explorer でビルド先ディレクトリを開いて、中にある拡張子SLNのファイルをVSで開いてコンパイルするだけ。

Unityからのエクスポートは毎回する必要はなく、下記を変えたときにやればよいようだ。→ Exporting and building a Unity Visual Studio solution

  • You add or remove assets in the Project tab.
  • You change any value in the Inspector tab.
  • You add or remove objects from the Hierarchy tab.
  • You change any Unity project settings

ビルドすると、複合現実ポータルでWinキーを押してアプリ一覧から自分のアプリを呼び出したり、メインディスプレイのWinメニューから自分のアプリを呼び出して、Windows Mixed Realityデバイス内でVRアプリをプレイできる。

視界に浮かぶ美しい豆腐。

f:id:sunasaji:20170905012325p:plain

VS2017+Unity2017.2.0b9でWinMR開発

手順の整理を兼ねて、別のWin10機でもWindows Mixed RealityデバイスでUnityのプレビューができるようにしてみた。

環境

  • Unity: 2017.2.0b9
  • Visual Studio Community 2017: Version 15.3.3 (26730.08)
  • OS: Windows10 Home Insider Preview (16281.rs3_release.170829-1438)
  • PC本体:自作(CPU:Intel Core i3-6320, マザボ:ASRock H110M-ITX/D3, CPU内蔵GPU) ややカク付くけどこのスペックでも複合現実ポータル動いた。
  • メインディスプレイ:DVI接続
  • Acer AH100:USB3+HDMI

手順

公式手順

基本的に公式手順に従う。ただし以前と同様に「Unity Mixed Reality Technical Preview」の項目と、下の方の「For DirectX development:」と「Update graphics drivers」はパスした。 Windows Insiderの設定は、「次のバージョンのWindows」と「ファースト」を選択した。

Install the tools

Unity Beta 2017.2.0b9 インストール

f:id:sunasaji:20170904011854p:plain f:id:sunasaji:20170904011928p:plain

サンプルの3Dキューブを表示するUnityプロジェクトを作る

下記の手順でとりあえず白い立方体を表示するだけのアプリを作る。

Holograms 100

ただし、説明では「Edit」->「Project Settings」->「Quality」で「Fastest」を選ぶとあるが、「Fastest」ではなくて「Very Low」となっているので、注意。 Defaultの右にある、二つ目の「▼」から選択できる。

f:id:sunasaji:20170904013553p:plain

また、「Build Settings」->「Player Settings」で「Virtual Reality Supported」を選ぶチェックボックスは、「Other Settings」ではなくて「XR Settings」の中にあるので、注意。

f:id:sunasaji:20170904013157p:plain

更に、デフォルトでは、「Build Settings」画面に、「Currently selected scripting backend (IL2CPP) is not installed.」という警告が出る。これは「scripting backend」に、インストールされていない「IL2CPP」が指定されているため。インストール済のscript backendに変更すればよい。

f:id:sunasaji:20170904014348p:plain

「Player Settings」ボタンをクリックして、「Inspector」ビューの「Other Settings」タブの「Scripting Backend」を「.NET」にする。

f:id:sunasaji:20170904014416p:plain

あとは、手順に従って、UnityのPlayボタンを押せば、AcerのImmersive Deviceで立方体がプレビューできる。

参考

Windows Mixed Reality用のUnityプロジェクトをビルドする手順

Unity development overview

VS2017+Unity2017.2.0b8でWinMR開発

AcerWindows Mixed Realityヘッドセットが届いたので、Unityから使えるようにセットアップした。 冗長なところがあるかもしれないけれど、環境や手順を記録しておく。

環境

  • Unity: 2017.2.0b8
  • Visual Studio Community 2017: Version 15.2 (26430.16)
  • OS: Windows10 Home Insider Preview Version 1703 (16275.1000)
  • Universal Windows Platform SDK (10.0.16267.0)
  • PC本体:ドスパラ GALLERIA VR WEAR HG (今は売り切れだけど、持ち運びもできてスペックも良いので気に入ってる)
  • mini Display Port - VGA変換アダプタ (miyoshi DPA-2KDS/WH) (メインディスプレイ用。これが無いと、ヘッドセットのセットアップがうまくいかなかった)

www.dospara.co.jp

手順

OS設定

下記のMicrosoftの公式手順に従って Immersive Headset の開発環境を構築する。

Install the tools

ただし「Unity Mixed Reality Technical Preview」の項目と、下の方の「For DirectX development:」と「Update graphics drivers」はパスした。 Windows Insiderの設定は、「次のバージョンのWindows」と「ファースト」を選択した。

f:id:sunasaji:20170829232407p:plain

後は、公式通りアップデートして、Windowsの開発者モードを有効にした。

Visual Studio 2017を設定

Visual Studio 2017をインストールして起動し、ファイル→新規作成→プロジェクトを選ぶ。

f:id:sunasaji:20170829233656p:plain

Visual Studio インストーラーを開く」をクリックする。

f:id:sunasaji:20170829233844p:plain

「ユニバーサルWindowsプラットフォーム開発」を選択する。 右下の「オプション」の「Windows 10 SDK」もチェックした。「VRエンジニア養成読本」のHololens入門の記事に書いてあったため、念のため入れた。 ここでは「C++によるデスクトップ開発」は選択しなかったけれど、私の場合は、後で結局入れることになった。

f:id:sunasaji:20170829234302p:plain

下の方にスクロールして、「Unityによるゲーム開発」もチェックする。

f:id:sunasaji:20170829234407p:plain

「続行」を押してしばし待つ。

f:id:sunasaji:20170829234447p:plain

Unityを設定

適当なプロジェクトを開く。私の場合は、ドットインストールのUnity入門を一通り終えて、BallGameを作るところまでやっていたので、これを流用した。

http://dotinstall.com/lessons/basic_unity

「File」→「Build Settings…」を開く。「Universal Windows Platform」を選択して「Switch Platform」を実行する。 以下の設定をする。

Target device: any device
Build Type: D3D
SDK: Latest Installed
Build and Run on: Local Machine
Development Build: (check)

f:id:sunasaji:20170830014636p:plain

「Player Settings」を開く。

「XR Settings」の「Virtual Reality Supported」をチェックする。

「Stereo Rendering Method」を「Single Pass Instanced (Preview)」にする。

IL2CPPをインストール

私の場合は、このときUnityの「Build Settings」画面に、「Currently selected scripting backend (IL2CPP) is not installed.」という警告が出て、ビルドができなかった。

f:id:sunasaji:20170830000711p:plain

後で気が付いたのだが、scripting backendは、「Player Settings」ボタンをクリックして、「Inspector」ビューの「Other Settings」タブの中で設定できるようで、ここに「IL2CPP」が指定されていたため、出ていたメッセージだったようだ。ここで「IL2CPP」の代わりに「.NET」を選べば「IL2CPP」は入れなくて済んだかもしれないが、私は「IL2CPP」を入れることを選んだ。ちなみにIL2CPPはC#C++に変換する仕組みらしい。

f:id:sunasaji:20170830001502p:plain

Unityのインストーラを再度起動して、「Windows Store IL2CPP Scripting Backend」にチェックを入れて、しばし待つ。

f:id:sunasaji:20170830000958p:plain

f:id:sunasaji:20170830001014p:plain

Unityプロジェクトのビルド

ようやくビルドできるようになったので「Build」を押す。ビルドディレクトリが聞かれるので適当に「Build」などのディレクトリを作ってビルドする。

f:id:sunasaji:20170830001301p:plain

ビルドされたプロジェクトをVS2017で開く

「見つからない機能のインストール」ダイアログが開き、「C++ユニバーサルWindowsプラットフォームツール」と「C++によるデスクトップ開発」のインストールを促されるので、素直に従う。

f:id:sunasaji:20170830002408p:plain

ソリューション操作の再ターゲットをする

以下のようなエラーが出る。

C:\Users\sunas\Documents\BallGame\Build\BallGame\BallGame.vcxproj : warning : Visual Studio 2015 (v140) のビルド ツールが見つかりません。Visual Studio 2017 (v141) ビルド ツールを使用してビルドするには、[プロジェクト] メニューをクリックするかソリューションを右クリックし、[ソリューションの再ターゲット] を選択します。Visual Studio 2015 (v140) ビルド ツールを使用してビルドするには、Visual Studio 2015 (v140) をインストールします。 C:\Users\sunas\Documents\BallGame\Build\Il2CppOutputProject\Il2CppOutputProject.vcxproj : warning : Visual Studio 2015 (v140) のビルド ツールが見つかりません。Visual Studio 2015 (v140) ビルド ツールを使用し、Visual Studio 2015 (v140) をインストールしてビルドします。

エラーメッセージに従って「プロジェクト」メニューから「ソリューションの再ターゲット」を選択する。この後、Ctrl+F5を押してビルド・実行したらPCの全画面が白くなって操作不能になった。ctrl+alt+delを押すとかWinキーを押すなどして何とか復帰した。

再度Unityを開き、ビルドして、Unityの再生ボタンを押す。

Windows Immersive Headsetが反応してVRでアプリがプレビューできた。

参考

・MSの公式手順

https://developer.microsoft.com/en-us/windows/mixed-reality/install_the_tools#installation_checklist_for_immersive_headsets

・MSのMixed Reality開発情報ページ

https://developer.microsoft.com/en-us/windows/mixed-reality/development

・詳細な解説記事。こちらは、Scripting Backendに「.NET」を指定している。

tks-yoshinaga.hatenablog.com

・VRエンジニア開発読本

Hololens関連の記事を参考にした。

Unity2017.1.0f3でMaterialに着色する

VRアプリ開発のためVRヘッドセットを買って、DotinstallのUnity入門を始めた。

http://dotinstall.com/lessons/basic_unity/24607

途中までは順調だったけれど、「#07 Materialを使ってみよう」の所で詰まった。Floorコンポーネントに赤色のMaterialをドラッグしても、赤色にならない。解決するためには、「GameObject」メニューから「Camera」を追加すればよかった。下記のページが参考になった。

techacademy.jp

 

RasPi2とaitendoの液晶M022C9328SPIで動画を再生

こちらの記事に書いたaitendoの液晶、M022C9328SPI で、動画を再生してみた。

suna.hateblo.jp


RasPi2と液晶で動画表示1

取り付けた液晶に映像を出力するために、fbcpを使った。再生にはomxplayerを使った。結構なめらかに再生される。

fbcp でフレームバッファ出力を /dev/fb1 に出す

RasPiは、デフォルトではフレームバッファバイスの /dev/fb0 に映像を出力していて、通常はHDMI端子に繋いだ外部ディスプレイに映像が表示される。 しかしSPIで取り付けた液晶のデバイスは /dev/fb1 となる。デフォルトでは、こちらには映像が出ない。 そこで、fb0 のデータを fb1 にコピーするツール、fbcp を使う。cmakeを使ってコンパイルする。 下記のページを参考にした。 sioslab.blog.fc2.com

github.com

(1) install cmake

コンパイルにcmakeを使うので、入れる。

$ sudo apt-get install cmake

(2) git clone

ソースを頂く。

$ git clone https://github.com/tasanakorn/rpi-fbcp
$ cd rpi-fbcp

(3) build

ビルドする。

$ mkdir build
$ cd build
$ cmake ..
$ make

(4) install

インストール。

$ sudo install fbcp /usr/local/bin/fbcp

(5) 実行

$ fbcp &

omxplayerで、サンプル動画を再生する

画面解像度に合うMP4のサンプル動画をWebで拾って試した。

$ omxplayer samplevideo.mp4

こんな感じになる。


RasPi2と液晶で動画表示2

小さな画面で、綺麗にぬるぬる動いてくれて嬉しい。

RasPi2とaitendoの2.2インチ液晶M022C9328SPIを繋ぐ

aitendoで1,750円で売っている2.2インチ、解像度 240x320 の液晶、M022C9328SPI を RasPi2に繋いで、コンソールや画像を出力してみた。 f:id:sunasaji:20170529010831j:plain

www.aitendo.com

結線など

ILI9328 のコントローラチップが載っているので、端子を半田付けして RasPiと結線するだけで動いた。 結線や設定は、こちらのサイトを参考にした。 albertlabo.wiki.fc2.com

fbtftモジュールの設定

(1) fbtftモジュールをロードするよう設定

/etc/modules-load.d/fbtft.conf に以下を追加

spi-bcm2835
fbtft_device

(2) fbtftモジュールのオプションを設定

/etc/modprobe.d/fbtft.conf に以下を追加

options fbtft_device name=hy28b rotate=90

SPI有効化

Raspbian Jessieでの手順。

(1) raspi-configを起動

$ sudo raspi-config

(2) “5 Interfacing Options” を選択

f:id:sunasaji:20170529004901p:plain

(3) “P4 SPI” を選択

f:id:sunasaji:20170529005650p:plain

(4) “Yes” を選択

f:id:sunasaji:20170529011507j:plain

(5) “OK” を選択

f:id:sunasaji:20170529011550j:plain

(6) 再起動

$ sudo reboot

コンソールを表示

SSH等で、RasPiにログインして、下記を実行すると、液晶にコンソールが表示される。RasPiにUSBキーボードを繋ぐとログインできる。

$ con2fbmap 1 1

f:id:sunasaji:20170529011901j:plain

RasPiに Processing を入れたけれど重すぎた

RasPiを使ったインスタレーション的なものを作りたかったので、RasPiに視聴覚表現用プログラミング言語の Processingを入れて試してみた。 結果としては、Raspberry Pi Type B では 1.3フレーム/秒程度の描画しかできず、重くて私の用途には使い物にならなかったので、ボツにするつもり。 X over ssh経由だったので表示負荷も比較的小さかったと思うので、RasPi + Java + 画像処理系言語 ってのがきつかったのかなと思っている。 あとアプリケーションをエクスポートして実行しても、ほぼ描画速度は変わらなかった。またRasPi2でやっても重かった。 ただ、やったことは念のためメモしておく。

Processing は下記のリリースページから最新の 3.3の arm版 (processing-3.3-linux-armv6hf.tgz) をダウンロードした。 github.com

上記のリリースページは、こちらの記事から、辿れた。 makezine.jp

下記のように、ダウンロードして展開・実行すると、Processingの IDEが立ち上がってコードの入力や編集ができ、特に問題なくエディタも動作した。

$ wget https://github.com/processing/processing/releases/download/processing-0257-3.3/processing-3.3-linux-armv6hf.tgz
$ tar xzvf processing-3.3-linux-armv6hf.tgz
$ cd processing-3.3
$ ./processing

黒字に白文字が右から左にスクロールする下記のサンプルを書いて動かしてみたけど、かなりもっさり。 Windows版 Processing でも試してみたら、30フレームでもぬるぬる動いたのに比べ、RasPiでは1.3フレーム/秒がせいぜいだった。

int x,y;
int speed;

void setup() {
size(640, 480);
frameRate(10);
background(0);
x = 0;
y = 30;
speed = 2;
}

void draw() {
  if(x==0){
    x+=400;
  }
  x -= speed;
  background(0);
  text("text print sample",x,y);
}

書き方も何か重いのかもしれないけれど、やはり RasPiは RasPiか。適材適所ということで、Processing は母艦に任せよう。

あと、Processing のテキストやオブジェクトの動かし方に関する処理もメモしておく。

・文字の描画は text関数で行える。 www.d-improvement.jp

・テキストエリアの幅は、textWidth関数で取得できる。
textWidth() \ Language (API) \ Processing 2+

・日本語のフォントを単純に processingで使うと文字化けするけど、下記の手順でフォントのデータを出力しておくと、表示できた。
Processing で日本語を表示する

・オブジェクトを動かす処理はここも参考になった。 www.d-improvement.jp