HoloLense:ホロレンズエミュレータの準備 #4

こんばんは、keita nakamoriです。

ホロレンズ本体を持っていない場合はエミュレータを使用することもできます。

101Eはエミュレータを使用した場合のおりがみチュートリアルなので、これで学習したいところですが、ハードルがまた幾重にもあります。

事前準備が必要なのでやっていきましょう。

BIOS 仮想化の有効化

エミュレータのインストールにちゃんと書いてはいるのですが、この通りできません。わたくしなりにアレンジしました。

起動時にF1を押しっぱなしにして、BIOSに入ります。(私はthinkpadなのでF1でしたが、お使いの機種によって違うので調べてください。)

BIOSの設定で仮想化を有効にするかどうかの設定があります。「Enable」にしましょう。2か所ありました。

Hyper-Vの有効化

ホロレンズのエミュレータを使用するにあたり、Hyper-Vを有効にしておく必要があります。

cmdを開くときに右クリックして管理者として実行したのち、
下記のコードをコピペします。

DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V

するとwindowsの再起動を促されるので、実行します。
すると、「windowsの機能の有効化または無効化」を開くとHyper-Vが有効になっていうことが確認できます。

VSのインストール

Visual Studio Community 2017をインストールします。
その時、大事なことは「UWPのインストール」にちゃんとチェックを入れることです。
はまりました。

ホロレンズエミュレータのインストール

ここまでやったら、やっとホロレンズエミュレータのインストールができます。

下記のリンクの指示に従ってインストールをしましょう。

 

以上、お疲れさまでした。

このように、まとめるとカンタンそうに見えますが、いちいちはまっているので、結局丸1日かかっています( ゚Д゚)

同じ思いをする人が出ないよう、お役に立てたら幸いです。

難しいことはワカリマセンw

Python:リスト内包表記をやってみる

こんにちは、今日はリスト内包表記をやっていきます。

タプルをリストに変換するコードという、簡単なケースを例としてやっていきましょう。

通常の書き方

リスト内包表記を使ったやり方

メリット:空リストが不要、アペンドも不要

さらにif文にも対応できる

#普通のやり方

#内包表記の場合

メリット:空リストが不要、アペンドも不要、if文のネストも不要

さらに i , j の2変数になり、for文がダブルになった場合

#通常の場合

#リスト内包表記の場合

メリット:たったの1行で書けてしまう。
ただし、2変数を超える場合は見難くなるので、通常のfor文を使ったほうが解りやすいかもしれない。

さいごに

どうでしょうか、リスト内包表記。かなりパワフルな表現方法ではないでしょうか。
よく見かける書き方なのでぜひマスターしておきたいです。

Python:ラムダ式の使い方

こんにちは、今日はラムダ式についてまとめました。

使わなくてもコードは書けますが、コードがシンプルになる場合があるので、
覚えておいて損はないです。
また、よく見かける書き方なので、
他人のコードを理解するためにも知っておいたほうがよいでしょう。

理解する手順として、
1.通常の関数を使ったやり方
2.関数部分をラムダ式に置き換えて動きを理解する
3.さらに簡単にする

です。やっていきましょう。

例題として、文字で構成されるリストを用意して、
頭文字を大文字に書き換える関数を作ってみましょう。

通常の関数を使ったやりかた

ラムダ式でコードをシンプルにする

さらにシンプルにする

ってことで、どんどん使っていきましょう。

HoloLense:おりがみ やってみました #3

こんにちは、keita nakamori です。

本日は、マイクロソフトアカデミーの101 「おりがみ」をやってみました。

初めに、よくわからなくてUnity5.6でやったのですが、VSからホロレンズにはき出すときにエラーになってうまくいかず焦りました。Unity2018でやれば簡単でした。

はまりどころ

VSのセッティングで、メニューバーの下にある設定で masterではなくて releaseにしなくてはならないことは失念していました。
その右隣りは、X86 と DeviceでOKです。

安定して送信するためにはUSBをつないで 「Device」を選択するといいのです。

チャレンジ

今回は初めに「リモート」でチャレンジしました・・・が、IPアドレスに何をいれればいいのかわからなかったので断念しました。

本日編み出した技

ホロレンズ本体右側の耳の上あたりにあるボタン2個を同時に押すと、動画撮影になりました。

HoloLense:オブジェクトを増やしてみる #2

Hello I am Keita Nakamori.

and then ,Let’s start making holorense project again!!

前回作ったオブジェクトに少し手を加えてみましょう。

工場のプラントっぽい感じにしてみました。

機器をつなぐコンベアとかパイプラインのイメージです。

Assetストアからstanderd assetsをインポートして、テクスチャーなりを張ってみました。

さあ、ビルドしましょう。

結果:画面が狭くて全体像がわからない・・・だめだこりゃ

ホロレンズにUnityの文字が浮かび上がってあと、画面が水色に・・・。

カメラの目の前に設置した青い円柱状のオブジェクトが、画面全体に移りこんでしまい壁のようになってしまいました。

高さを1.4mにしているのですが、この程度であれば、人間の有視界角は少なくとも120°以上あるわけですから、肉眼で見たときに、全体形状は見えるはずです。

しかし、ホロレンズではオブジェクトが表示される範囲は公称40°未満であり、とにかく極端に狭い範囲にしか映し出されません。※実際には25°程度にしか体感できませんでした。

なので、有視界全体の中に画角25°の板が表示されている状態になってしまいます。

次に、少し歩いてみて、設備全体を眺めようと思いました。

そこでも画角の狭さが災いして、オブジェクト同士の位置関係全体を写すことができませんでした。あっちみて、こっちみて。つながりを脳内補間する感じです。

現状では、機械設備のようなデカいものを表示するのには向かないと思います。

今後に期待

後継機にはとにかく画角の改善を期待したいです。

Hololense:初めてのホロレンズ #1

Hello my name is Keita Nakamori  as a mechanical engineer.

From now on . Let’s start a microsoft holorense project!!

まずはアカデミーで、基本を覚えましょう

https://docs.microsoft.com/ja-jp/windows/mixed-reality/academy

Unity:2017.1.2.p2が安定らしい

Visual Studio:2017(15.2)が良い組み合わせらしい

でもとりあえず手元にあるUnity2018でやっていきます。

Unityを起動して プロジェクト名をhorotest_001にしました(間違えてローマ字になってしまったw)

カメラの設定

カメラのポジションを0,0,0

Clear FlagsをskyからSolid Colorへ

Back groundをデフォの青っぽい色から真っ黒、しかも透明へ。rgba(0,0,0,0)です。

Clipping Planesは0.3から0.85に変更します。

これで、カメラからの視界を確認すると、真っ暗になり、ホロレンズのデフォ状態になりました。

画質を落として、スピードを重視したセッティングにしましょう。

menu>edit>project settings>quality

levelsのwindowsマークの一番下のDefaultの▼マークをクリックしてVery Lowにします。

XRに対応するためのセッティングをしましょう。

menu>edit>project settings>player

windowsマークをクリックして※重要

XR settings Virtualにチェックを入れる

そうするとwindows Mixed Realityが使えるようになります。

試しにオブジェクトを作ってみましょう。

さっきつくったカメラの前にcubeを置きます。45°傾けるとわかりやすいです。

目の前の真っ暗な背景にcubeだけが浮いています。

ビルドしましょう

menu>file>build settings

UWP Holorenseにチェックを入れます C#にはチェックができなかったです。よくわかりません。やってみましょう。>build

フォルダはUnityではない別のフォルダを自分で作って選択してください。

でないとUnityと混ざってしまいます。

出来上がったフォルダを見ると.slnという拡張子のものがあります、

これをクリックするとVisual Studioが起動します。

そうすると真っ黒な画面が出てきて不安になると思いますが大丈夫です。

VS側の操作

ARMのところをx86に変えましょう。そう書いてあるんで。

右側がいきなりローカルコンピュータに書き換わるのでDeviceに直しましょう。

かなりはまりどころです。!!!

ホロレンズとPCをUSBで物理的につなぎます。

リモートでIPアドレスを指定してつなげる方法もありますが。それはあとで。

Deviceを押すと、ビルドが開始されます。

しばらく待っていると、ホロレンズ上にでかでかとUnityの画面が出てきて、そのあとに、Unityで作ったcubeオブジェクトが見えてきます。

ホロレンズ側の操作

これでホロレンズにはプロジェクト名 horotest_001のアプリケーションが入りました。

以後、ブルームするとAll Appsのなかに「青いunityアイコン」でhorotest_001が生成されていますので、ここからエアタップして起動します。

まとめ

ここまでで、一通り、何もないところから、目の前にオブジェクトを映し出すところまで来ました。では次回からは少しづつ応用して世界を広げていきましょう。

 

 

 

 

 

Python:インストーラーの作成 cx_Freezeモジュール

こんにちは かず まなぶ です。(´・ω・`)

今日は、前回tkinterで作成した電卓ソフトを題材にwindows向けインストーラーを作成する手順についてやっていこうと思います。

おおまかな手順

  1. cx_Freezeのインストール
  2. setup.pyの作成
  3. ビルドとmsi生成
  4. インストール

1.cx_Freezeのインストール

anacondaプロンプトで

うまくいかないときはpipをアップグレードしましょう。

2.setup.pyの作成

電卓ソフト本体の他にsetup.pyというものを作成する必要があります。

cx_Freezeのサイトに行くと下記のようなsetup.pyを作成しなさいと説明があります。

os.environについてはtclとtkの絶対パスを指定する必要がありますので、適宜書き換えてください。

Executableには電卓ソフト本体のファイル名として”calculator.py”を指定します。

あとはショートカットとか名称を変えられるので、好きにやってください。

3.ビルドとmsi生成

anacondaプロンプトを立ち上げます。

calculator.pyとsetup.pyをカレントディレクトリにいれ、anacondaプロンプト上で、

終わったら

をすると、カレントディレクトリ内にbuildディレクトリとdistディレクトリが生成されます。

このdistディレクトリにはインストーラーであるcalculator-1.0.0-amd64.msiファイルが入っています。

インストール

インストーラーmsiを実行してみましょう。インストールはprogramfileディレクトリで良いと思います。

スタートボタンを押して、アプリケーション一覧を見ると見出し”C”のなかにcalculatorが入っているはずです。

実行すれば、pythonが入っていないPCでも動きます。

以上でございました。

 

 

Python:tkinter はじめの一歩

こんにちは かず まなぶ です。(´・ω・)

今日はtkinterを触っていこうと思います。

tkinterはpythonをインストールすると最初から入っているpython用のGUIモジュールです。

他にもwxPythonとかKivyが気になるのですが、まずはtkinterで最低限のことをやれるようになってから、他のGUIにチャレンジしようと思います。

tkiniterのフレームワーク

まだまだ腑に落ちないところがありますが、とりあえずこれで最低限動きました。

応用:tkinterで電卓アプリを作ってみる

応用例として、簡単な電卓を作ってみました。

今後のtkinter勉強

私の最終ゴールは、画像処理アプリの作成です。

画像をカメラで取得し、リアルタイムで画像処理して表示するというところまでやっていきたいと思います。かず まなぶ (´・ω・)

python:classとmethodの作り方について

こんにちは、かずまなぶです。

最近マイクロソフトのホロレンズを試す機会をいただきました。VRとARは似て非なるもの。VRが「没入型、隔離型」なら、ARは「現実にちょっとした情報を上乗せしていく」ような感じでした。

それぞれ特徴があり、またどちらもわたくしの好奇心を激しく揺さぶるデバイスです。ホロレンズ2が出るとの噂があり100%買ってしまいそうです。またオキュラスクエストも発売が近いのではないでしょうか。VRの本命はクエストだと思います。ミラージュは・・・・・、もういいかな・・・。余談はこれくらいにして・・・。

今日の本題です。クラスの作り方とそのメソドの作り方、クラスの継承、オーバーライドをやっていきます。

クラスの使い方 レベル1

まずは最も基本の形です。オブジェクト指向の感覚を養いましょう。

これを実行するとkenjiさんはsay_wordメソドで ” hello world ” と発言します。

クラスの使い方 レベル2

クラスを呼び出したときに勝手に実行される「初期化メソド」、クラスからつくったオブジェクトの変数である「アトリビュート」、おまけにメソドの中でもメソドをネストして使用することができます。

コンストラクタ と デストラクタ  レベル3

コンストラクタ:初期化メソドのようなクラスを呼び出された時点で動作するメソドです。

def __init__(self,name=”名無し”):

デストラクタ:作ったオブジェクトを廃棄するときに使うメソドです。

def __del__(self):

デストラクタを実行するときは、明示的に del personと書くと良いです。

クラスの継承 レベル4

class Car(object):というクラスが予め存在しているとします。

後から作るHondaCarクラスがほとんどCarクラスと同じだった場合、クラスの承継という操作をすることで、Carクラスの持っているメソドを丸ごとコピーできます。これによって、重複するメソドをなくしてスクリプトを綺麗にできます。

class HondaCar(Car): これだけです。

 

クラスのオーバーライド(上書き)レベル5

クラスのオーバーライド(上書き)とは:

クラスを継承したとき全てのメソドを継承するわけですが、その後で”同名のメソド”を定義すると継承したメソドが上書きされ再定義されます。

 

スーパークラス レベル6

スーパークラスとは:

継承した元のクラス、親クラスのことです。

例として、(Carクラス)の__init__初期化メソドを流用してみましょう。

super().__init__(model)の部分です。

まだまだ続きます

随時更新します。classの話は相当奥が深いのです。

2019.5.1 令和元年