catalinaの備忘録スマートフォン用の表示で見るcatalinaの備忘録ソフトウェアやハードウェアの備忘録。後で逆引きできるように。C++3Dモデルが出せたのでモチベーション上がり始めています。やって何かが出ると「アプリ作ってる」感でてきますね。UWPでのDirectXの扱いに慣れていなかったので、詰まったポイントを整理していきます。DirectX11そのものの扱いはほかにもっと詳しいサイトがありますし。shaderですが、VisualStudio2015でHoloLens向けのテンプレートを生成すると、なぜかこれが2つ生成されます。VertexShader.hlslVPRTVertexShader.hlsl何者かというと、"VertexShader.hlsl"のほうがシミュレータで走らせるためのもののようです。"VPRTVertexShader.hlsl"はHoloLensで実行するものです。VPRTって何なのかよくわかっていません。シミュレータで動くけど、実機で動かない(レンダリング周りの初期化でエラーになるとか)って時はこの2つのファイルの整合性を確認すると幸せになれそうです。入力アセンブリの初期化で失敗する(CreateInputLayout)先ほどのVertexShaderへの入力レイアウトの定義をもとにCreateInputLayoutするとシミュレータではうまくいくけど実機ではうまくいかないという罠にハマりました。これもVertexShaderの入力が上記2種類で違いがあるために起きていました。戻り値だけみても具体的に何が悪いのかわかりません(E_INVALIDARG)が、デバッグモードで起動していれ出力ウインドウに詳細を出してくれるので、よく読めばわかる問題でした。実機でのレンダリング結果が壊れる(像がブレるなど)HololensではDrawIndexedではなくDrawIndexedInstancedという関数を使います。これは複数のインスタンスをレンダリングするときに使うものです。シェーダーでどちらのインスタンスを参照してレンダリングするかを決めています。(min16float4)pos;推測になりますが複数インスタンスとして左レンズと右レンズ用のインスタンスを作っていてそれを使い分けているのでしょう。このあたりのインスタンスの参照先をうっかり書き換えてしまうと、像がブレる(というか、壊れて見える)ので要注意です。あとは引数がやたら多いので、間違えないように注意です。感想と今後の展望とりあえず3Dモデルのレンダリングという基礎的な部分は作れるようになりました。モーションはシェーダの勉強と平行して実装していきたいところです。あとHoloLensのSpatialMapping(空間認識)はちょっと独特(実際の物体よりも大きく空間を認識している)なので、アプリ側でもうちょっと改善できないか試してみたいところです。最後にどうでもいいことHoloLensの空間認識は赤外線によるもの(Kinnectのような仕組み)だということなので調べてみました。本当に赤外線出してるのかどうかスマホのカメラで見てみました。アプリを起動していない状態では何も出ていないので、空間認識のサンプルアプリを起動した状態で撮影。写真のように光っています。これは一定のインターバルで点滅していました。赤外線なんでしょうね。ほかのセンサがどう動いているかはこの写真ではわかりませんが。22:33HololensでMMDモデルをレンダリングしてみる[c++/UWP]Tweet広告を非表示にする関連記事2018-05-13hololensの空間マッピングに触れる久しぶりのブログ記事です。Hololensの空間マ...2017-06-18Hololensでカメラの解像度を変更する前回つくったカード検出器をHololensで使ってみました。かたり...2017-05-26DirectXのHLSLシェーダーをデバッグするDirectXのデバッグが捗る便利な機能があるのを知りました。HoloLensでARをやってみました。»プロフィールid:Catalina1344ソフトウェアやハードウェアの備忘録。後で逆引きできるように。OpenMVSで3D再構築するOpenMVGを試してみる(環境構築+α)父の日ですね月別アーカイブ忍者AdMaxはてなブログをはじめよう!Catalina1344さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。