Weed.nagoya - 挑戦&物欲プログラマー

HoloLensの出張授業をする会社で、教材を開発しています

忘れぬ前の開発メモ

超忘れっぽいので、開発していて見つけたノウハウを記事にするようにしています。

ケンブリッジ大学内にあるメイカー施設「makespace」に行ってきました

イギリス滞在中、ケンブリッジ大学内にあるメイカーコミュニティースペース「makespace」を2度訪れました。

2台のHoloLensでシェアリング(Sharing)ができているかを手軽に確かめる方法

ほぼネタです。 これだけ😅でも便利です。

HoloLensでWorld Anchorの位置と向きを把握するための簡単なプレハブ

皆さんすでに作っていそうですが、HoloLensでWorld Anchorの位置と向きを把握するために簡単なプレハブを作りました。World Anchorを付けるオブジェクトにぶら下げておけばOKです。ご参考になりましたら幸いです。 http://feelphysics.sakura.ne.jp/Axises.u…

MacからWindowsに移って1年経った Windows OSとmacOS、Visual StudioとXcodeの違い

Macを5年使ってきたのですが、昨年の5月からWindowsに乗り換えました。1年間使ってみました。そのあいだにわかった違いや感想を書こうと思います。 先に結論を書いておくと、「最近のAppleはイマイチだなー」と思いながらMacを使っている方は、現時点では「…

PrefabSpawnManagerを使ったHoloLensのシェアリング(Sharing)のしかた - 磁界学習アプリをシェアリングに対応させました

磁界学習アプリを操作している様子 かねてからHoloLensを使った出張授業で使ってきた磁界学習アプリを、シェアリングに対応させました。以下では、その過程でわかったことや学んだことを説明します。

シェアリングのセッションから退室するとき、自分が生成したオブジェクトをすべて削除する

HoloLensのシェアリングのセッションから退室するとき、自分が生成したオブジェクトをすべて削除したいときがあります。不完全ではありますが、以下のようにすれば削除することができます。 private void DeleteMyMagnets() { var magnets = GameObject.Find…

シェアリングのPrefabSpawnManagerで生成したオブジェクトのUserIdを取り出す

この記事はHoloLensに関する下記記事を前提にしています。 www.weed.nagoya まず、PrefabSpawnManagerでSpawnするときの最後の引数をtrueにします。 this.spawnManager.Spawn(spawnedObject, position, rotation, null, "SpawnedMagnet", true); すると、生…

シェアリングのSyncObjectのクラス図

HoloLensのシェアリング用にMRTKにはSyncObjectというモデルクラスが用意されています。PrefabSpawnManager、SyncSpawnedObjectなどのクラスから使用します。今回はそのクラス図を描いてみました。 OwnerIdやSpawnedSyncObjectのTransformは使えそうです。

シェアリングのPrefabSpawnManagerの設置のしかた

HoloLensのシェアリングでプレハブを生成したいときは、MRTKにそのためのスクリプトが入っています。PrefabSpawnManagerスクリプトです。このスクリプトを使うと、シェアリングをしている各HoloLensの世界に同時にプレハブを、シェアリングによる位置合わせ…

MRTK-ExamplesのSharingSpawnTestシーンを読み解く

HoloLensのシェアリングでプレハブを生成するのが思った以上に大変なことがわかったので、「MRTK-Examplesではどのようにしているのだろう?」と、調べてみることにしました。SharingSpawnTestシーンです。 このシーンは、「One」と発声すると(なぜか15m先…

アプリ起動後にシェアリングサーバのアドレスを入力できるようにするManualIpConfigUtilityを自分のアプリに組み込む

シェアリング関係を開発していると、サーバのアドレスが変わるたびに設定を変えるのが面倒です。アプリを起動させてからIPアドレスを入力できればいいのですが… そんなことを可能にしてくれるのがMRTK-Examplesに含まれているSharingTestシーン中のManualIpC…

MRTKのHandDraggableスクリプトを、改造するために読み解く

MRTKにはHandDraggableスクリプトという、オブジェクトのコンポーネントに追加するだけで、ホログラムをエアタップでつかんで自由に動かすことができる便利なものが用意されています。 デフォルトではオブジェクトは動かしているあいだも常に自分を向くので…

HoloToolkit.Unity.Singleton という【変数準備不要+初期化不要】な便利ヘルパークラスを今さら知った

このヘルパークラスを使うとシングルトンをあらわす以下のコードが… public class MyCursorManager : MonoBehaviour { /// <summary> /// シングルトン化するための変数 /// </summary> public static MyCursorManager Instance; ... /// <summary> /// 本クラスをシングルトン化する /// </summary>…

Let Photon Unity Networking DemoBoxes sample work with HoloLens

Has anyone tried the Photon Unity Networking plugin? Any luck in getting it to work with HoloLens? If yes then how did you do it? Just download PUN and try the very first sample... it just works. Import Photon Unity Networking Register App…

The imported type `Newtonsoft.Json.JsonConvert' is defined multiple times

The imported type `Newtonsoft.Json.JsonConvert' is defined multiple times Delete Asset/Photon Unity Networking/Editor/PhotonNetwork/Newtonsoft.Json.dll

'SpatialInteractionController' does not contain a definition for 'TryGetRenderableModelAsync'

Assets\HoloToolkit\Utilities\Scripts\Extensions\InteractionSourceExtensions.cs(113,43): error CS1929: 'SpatialInteractionController' does not contain a definition for 'TryGetRenderableModelAsync' and the best extension method overload 'Int…

Unityのシーン管理を全部enumで行うことで補完を効かせタイプミスを無くすヘルパークラス

Unityのスクリプトでは、シーン名をそのまま使うと、シーン数が多くなってくるとタイプミスなどが怖いところです。ここはenumでシーンのリストを定義して、補完できるようにしましょう。簡単なコードで実現できます。DictionaryとLinqを使っています。

HoloLensで撮った写真をUnityからスクリプトでテクスチャとして使う

「HoloMagnetには笑い要素がない」というご指摘をいただき、棒磁石に本人の顔を貼り付けるという暴挙に出ました。Windows10のカメラアプリで撮影した写真をデバイスポータル経由でHoloLensに入れます。カメラロールのファイルリストを取得し、PNG/JPGファイ…

HoloLens(+Unity)の「これがしたい」逆引き記事130個の一覧

Evernoteにクリップした記事80個ほどを棚卸しして、「これがしたい」ベースで整理しました。HoloLensで扱っている話題は:デバイスポータル、ハンドトラッキング、AR、入力、Spatial Mapping等です。Unityで扱っている話題は:エディタの使い方、オブジェク…

STL等のモデルをFBXでエクスポートしてUnityにインポートする

Fusion360(稼いでなければ無料)では、保存したファイルはローカルだけでなく実はクラウドにも自動的に保存されます。このページにサインインし、モデルを選択して、「書き出し」「FBX」とします。すると「Download」ボタンの付いたメールが送られてきて、F…

特定のメッシュの色を変えるシェーダプログラミング、おまじないを省いたコード付き

おまじないを省いたコード Shader "Custom/MyShader53-2" { customData = sin(v.vertex.y + _Time.x * 20); color += float4(1.0, 0.0, 0.0, 1.0) * customData; o.Albedo = tex2D(uv_Texture).rgb; } 全コード Shader "Custom/MyShader53-2" { Properties {…

シェーダで色を変更する、おまじないを省いたコード付き

緑と青をうっすらと塗ります。 おまじないを省いたコード Shader "Custom/MyVertexShader4" { color += float4(0.0, 0.5, 0.5, 1.0); } コード全体 Shader "Custom/MyVertexShader4" { Properties { _Texture("Texture", 2D) = "white" {} } SubShader { Tag…

頂点シェーダに挑戦、おまじないを省いたコード付き

各頂点のx座標を3、y座標を3増やすような頂点シェーダを書いてみます。 おまじないを省いたコード Shader "Custom/MyVertexShader3" { v.vertex.x += 3; v.vertex.z += 3; } おまじないを含んだコード Shader "Custom/MyVertexShader3" { Properties { _Diff…

シェーダからおまじないを取り除いた裸のコードはシンプルだった

Unityのシェーダの勉強を始めました。 まず、シェーダを書くにはSublime TextでShaderLangageというパッケージを入れるとSyntaxHighlightされて書きやすいです。 さて、最初に勉強するシェーダのコードはほとんどがおまじないだとわかりました。 例えば以下…

UnityのUpdate()をマネージャで管理して、重くて遅かったアプリを軽く速くする

処置前: 処置後: 「先輩、Unityアプリが重いんですけど」 「1フレームでUpdate()は何回呼んでる?」 「100回です」 「あー、それはマネージャをつくって管理した方がいいな。やり方を教えよう」 「ありがとうございます!」 UnityのUpdate()のコールは数が…

VagrantをPuTTYから使うとき、insecure_private_keyが見つからない

Vagrantにログインするには、以前はユーザー名:vagrant、パスワード:vagrantでOKだったのですが、今はvagrantがSSH鍵を用意してMac/Unixでは「vagrant ssh」で簡単にログインできます。 Windowsの場合、PuTTYがSSH鍵を自動で認識しないなど、追加の設定が…

MixedRealityToolKitの登場で変わったHoloLensプロジェクトの起こし方

MRDesignLabsからHoloToolkitがなくなりました。つまり、別途HoloToolkitを導入しなければならなくなりました。 ところがHoloToolkitリポジトリもなくなり、代わりにMixedRealityToolkitリポジトリができました。このリポジトリからHoloToolkitがダウンロー…

HoloLens MRDesignLab 対象別文献リスト

誰でも編集できますので、不足などありましたら追記していただけると大変助かります。どうぞよろしくお願いします。 docs.google.com

C#で、UnityのDebug.Logでメッセージに加えてファイル名と行数を表示する

以下のクラスファイルをUnityのプロジェクトに入れるだけで、DebugLog はコンソールに 1. メッセージに加えて 2. ファイル名と 3. 行数も表示します。ログの該当行をダブルクリックするとソースコードの該当行に飛びます。

JS概観

「JS概観」#Tech これからJSを始める人にはわかりやすそうな図。jQueryが入っていないのは実態としては疑わしいけど😅A Modern Day Front-End Development Stack https://t.co/Jjty4pYnlg pic.twitter.com/BftfsLsBvp— 植田達郎@疲労困憊 (@weed_7777) 2017年7…