Center CLR Try!開発 #2に参加した

Center CLR Try!開発 #2に参加 先日行われた「Center CLR Try!開発 #2」に参加してきました。 場所は#1とは違う場所で金山駅の目の前でアクセスしやすかったです。 ただし目指すビルが工事中で入り口が見つけづらく数分迷いました。。。(方向音痴なので最初違うビルに行ってしまった) 当日の参加者は3名(MatsuiさんとMatsuokaさんと私)とすごい方お二人とご一緒で少し、いやかなり緊張しましたが、人数が少ないおかげで色々とお話もでき有意義な1日でした。 自分のやったこと この日はもともと1日Unityで開発中のアプリ制作をやる予定でしたので、それをやりました。 自分の会社の部署の忘年会で使うための景品抽選アプリを作っています。 今までゲーム開発ツールはUnreal Engineをずっと使っていますが、Unityは未経験だったためUnityで今月始めからTryしてみました。 (* Unreal Engineはものすごーく使ってますが、ゲームは作ったことはありません) ちなみに自分で設定した納期は11月末なので、期間は1ヶ月です。 もうちょっと詳細 UnityのUI機能(UnrealでいうところのUMG)を使って、忘年会参加者登録画面を作っていて、そこにスマホのカメラで撮った写真を登録する機能を作っていました。 カメラ撮影はOS依存のAPI使わなきゃいけなかったらイヤだなあと思っていたのですが、Unityの機能だけであっさりと実現可能! (事前にアプリにカメラ使用のための許可確認をやってます) // 実行デバイスに付属のカメラ(最初に複数ある場合は1個め)を取得 var cameraDevice = WebCamTexture.devices[0]; // カメラ映像を投影するテクスチャを作成 cameraTexture = new WebCamTexture(cameraDevice .name, 1280, 720); // 撮影スタート cameraTexture.Play(); // カメラ映像をUIに表示(taregetImageはUI上のRawImageの参照) taregetImage.texture = cameraTexture; 上のコードを実行すると、UI上のRawImageにカメラ映像がリアルタイムで表示されます。 多分カメラ映像を毎フレームRawImageのテクスチャに転送してくれているのだと思います。 今回は静止画を保存したいので、UIのボタンが押されたタイミングで以下のコードを実行して画像データを保存しました。 // その時点でのカメラ画像のピクセルバッファを取得 Color32[] color32 = cameraTexture.GetPixels32(); // カメラ画像を表示するためのテクスチャを作成 var cameraImage = new Texture2D(cameraTexture.width, cameraTexture.height); // テクスチャにピクセルバッファをコピー cameraImage .SetPixels32(color32); cameraImage .Apply(); // カメラの撮影を止める cameraTexture.Stop(); これでcameraImageにカメラで撮影された画像がテクスチャとして入っているので、これをUIのRawImageに差し込むことで目的の機能が実現できました。 ...

2018-11-12 · 1 分 · 79 文字 · ayumax

Qt CreatorでのFBX SDKの設定

QtでのFBX読み込み 最近QtではもっぱらQt3Dを使ってますが、FBXファイルを直で読み込みたくなり設定してみました。 以降覚書です。 FBX SDKのインストール AutoDeskのダウンロードページよりSDKをダウンロードします。 FBX Software Developer Kit 2018.0 | Autodesk Developer Network 最新のSDKはVisualStudio2015用で2017用はないです。 ただVC++2015と2017は互換性があるということなので2015用を使ってみます。 VC++2015と2017についてはこちらに記述があります。 Visual Studio 2015 と Visual Studio 2017 の間の C++ バイナリ互換性 | Microsoft Docs まずはVisualStudioで使ってみる こちらのサイトを参考にVisualStudio2017のC++プロジェクトで使ってみました。 FBX SDK準備編 – ファイルからデータを取得しよう – Code Labo ところがビルドするとエラーが発生!! こちらの記事にドンピシャのことが書いてありました。 FbxSdkがVisualStudio2017でビルド出来なかったお話 - Qiita FBXSDKがVisualStudioの非標準のC++構文を使っているためだそうです。ふーん。 Qt Creatorへの設定 FBX SDKのインストールされたディレクトリをみると、サイズ的に動的リンク版(libfbxsdk.lib)と静的リンク版(libfbxsdk-md.lib, libfbxsdk-mt.lib)があるようです。 今回は静的リンク(libfbxsdk-md.lib)で試してみます。 環境はWindows10でコンパイラはVisualStudio2017の64bitを指定。 Qt Creatorのプロジェクトで「ライブラリの追加」を選択し「外部ライブラリ」を選択。 「ライブラリファイル」にlibfbxsdk-md.libへのパスを入力 「インクルードパス」にfbxsdkの「include」フォルダへのパスを入力。 プラットフォームはとりあえずWindows Only リンク方法は「スタティック」を選択 これで「次へ」を押して進むと、~.proファイルにFBX SDKへのリンク情報が書き込まれます。 あとはmain.cppに以下のコードを書いてビルドし実行してエラーが発生しなければOK。 FbxManager* manager = FbxManager::Create(); manager->Destroy(); 実行すると正常に動作しました。Qt CreatorではVisualStudio2017の時に見られたエラーも発生しませんでした。 まとめ Qt CreatorにFBX SDKを設定することができました。 これを使ってFBXファイルを使って遊んでみます。 ...

2018-10-17 · 1 分 · 83 文字 · ayumax

Xamarin FormsでのViewのスケーリング

Viewのスケーリング 今作っているアプリで、Window内に仮想的な大きさのキャンパスを作りその中のレイアウトは崩さずにウィンドウのサイズに応じて全体のスケールを変えたいって思って色々探ってみました。 WPFだと、下のように書けば一発で中身の表示のスケーリングを調整できるので便利だったから、、Xamarinでもあるかなぁと思ったら、、、ない。 <DockPanel> <DockPanel.RenderTransform> <ScaleTransform ScaleX=“{Binding Scale}" ScaleY="{Binding Scale}" /> </DockPanel.RenderTransform> </DockPanel> VisualElementのscaleについて ではコントロールに自分自身のスケールを設定するプロパティはあるのかなと思ったら”Scale”というプロパティがありました。 試しにサイズが半分になる事を期待して値に0.5を入れてみました。 が、見た目変わらず。 Scaleプロパティがx, yに分かれていない事にも違和感があるし用途が違うのかな? これはこれ以上は深追いするのはやめて別のアプローチを探すことに。 代案 泥臭くサイズ調整する いろいろ考えた結果素直にContentViewのSizeChangedを拾って、等倍のときの大きさからの変化率を計算し調整することにしました。 SizeChangedをViewにアタッチしたBehavior内で受け取って、それをCommandでViewModelに伝えています。 その際、PrismのEventToCommandBehaviorを使ってViewModelとつなげようとしたのですが上手く行かず(EventArgsに値がなくEventArgsConverterにsenderを渡せなくて断念)、SizeChangedに特化したBehaviorを新規で作り対応しました。 今の所この手法で期待する動作が実現できています。 さらに別の方法 実際に試してはないのですが、Xamarin Formsのコントロールとして画面に描画するのではなく、一旦Bitmapに表示を全て描画すればスケーリングも簡単にできそうかなと思ってます。 (変更規模が大きいのとXamlでのUI作成ができなくなるので、しばらく試す予定はなし)

2018-10-16 · 1 分 · 30 文字 · ayumax

ニコニ立体ちゃん(アリシア・ソリッド)をQt3Dで表示する

ニコニ立体ちゃん(アリシア・ソリッド) 今回Qt3Dの学習をするのに使う3Dモデルを探していたところ、とても良さそうなモデルを発見しました。 ニコニ立体ちゃん特設サイト - ニコニ立体 映像作品や自作ゲーム、技術デモ、同人活動などの様々なシチュエーションにおいて表記不要で無料で使える3Dモデル「アリシア・ソリッド」を公開します。 使用は無料で、2次加工なども認めている、かなり利用しやすいライセンスです。 3Dモデルの配布形式は以下の3種類あります。 FBX MMD Unity Package 今回はこの中のFBXを利用します。 MMDはアドオンを追加することでBlenderでも利用できますが、オブジェクト名に日本語が含まれる等今後の利用にマイナスな点があるため今回は利用しません。 Unity PackageはUnity専用のためこれも利用はしません。 Qt3Dで読み込む(FBX編) まずは以下の感じでfbxを読み込んでみました。 Entity { components: [ SceneLoader { source: "/FBX/Alicia_solid_MMD.FBX" }, Transform { translation: Qt.vector3d(0, 0, 0) } ] } 結果、画面には何も表示されず、fbxは読み込めないようです。 (よく調べると時間がかかりすぎているだけで読み込みは行われていました。ただしダウンロードした素のfbxではテクスチャ読み込みでエラーが発生し結局表示はされませんでした) Blenderで読み込む 次にQt3Dでそのまま読み込むのが無理ならいったん加工しようとBlenderで読み込んでみました。 すると、、、 ASCII FBX files are not supported. うーん、FBXにも種類があるのでしょうか? 調べるとFBXにはASCIIタイプとバイナリタイプがあるということ。 (今までそんな事は気にしたことがなかったです) FBXの変換 BlenderでFBXを読みたいので、調べるとAutoDeskがFBXのコンバーターを公開していました。 またASCII→バイナリの形式変換だけでなく、テクスチャなどのリソースファイルも外部か埋め込みか選べるようです。 FBX Converter Archives | Autodesk Developer Network 使い方は対象のファイルを追加してFBX Save ModeをBinaryにし、Convertを押すだけです。 Blenderで読み込む(2回目) バイナリ形式にしたFBXをインポートすると、今度はエラーなく読み込みが完了しました。 Qt3Dで読み込む形式にエクスポート Qt3Dで個人的に以前に読み込み実績のあるobj形式でエクスポートしてみました。 するとやはりテクスチャの読み込みでエラーが出ている模様。 objファイルのテクスチャ情報はmtlファイルに書かれているらしいので、mtlの中身を見てみるとイメージファイルの参照が.tgaと.psdの2パターンありました。 ...

2018-09-16 · 1 分 · 180 文字 · ayumax

Qt勉強会の成果 Qt3Dを使ってみた

Qt3D StudioとQt3D 以前Qt3D Studioを使って3Dの表現を試したことはあったのですが、今日はQtCreatorでQt3Dを使ってみました。 Qt3D Studioはタイムラインを使って3Dモデルを動かすシーケンサーのような印象を持ちましたが、Qt3Dはもっとプラグラマがゴリゴリ実装する感じ。 サッと3Dを使った表現を作るにはQt3D Studioは向いてそうですが、1個のアプリとして色々やるにはQMLでQt3Dを使ったほうが良いのかなと今は思ってます。 実装したプロジェクトはこちら できたもの 自分ではモデリングできないので、フリー素材を利用させていただきました。 雰囲気をだすために建物を置いて、道路を車が直進していくというものです。 ただ真っ直ぐ走るだけでは面白くないので、マウスクリックすると車がジャンプするアニメーションを追加してみました。 {{< x user=“ayuma_x” id=“1033362618197524480” >}} 実装の中身 今回はC++は使わず全てQMLで書いてます。 車や建物の3Dモデル やっている事はSceneLoaderのsourceにファイルを指定するだけで、あとはQtが勝手に読み込んでくれてます。便利! 車については、移動させたいのでTransformのtranslationの値を外から触れるようにプロパティにしてます。 rotationも指定してるのは、3Dモデルを普通に読みこむと横を向いちゃったので90度回転させてます。BlenderなどのモデリングツールでちゃんとQtと座標系をあわせてあげれば、これは必要ないとは思います。 余談ですが、普段Unreal Engine触っているのでX, Y, Zの座標系がいつもと違い戸惑いました。YとZがUnrealとQtでは逆でした。 車の3Dモデルを読み込む部分 Entity { components: [ SceneLoader { source : "/model3d/track.obj" }, Transform { id: myCarTransform property real locationX: 0.0 property real locationY: 0.0 rotation: fromAxisAndAngle(Qt.vector3d(0, 1, 0), 90) translation : Qt.vector3d(locationX, locationY, 0) } ] } 道路 地面と道路と白線は板ポリに色付きのマテリアルを貼って表現してます。 ...

2018-08-26 · 1 分 · 180 文字 · ayumax

F# 今日の勉強(パターンマッチ)

F# の復習 今日はパターンマッチに初めて触れました。 C#にもあるけど、F#らしい機能なんだなって感じました。 F# のパターンマッチ これすごいなぁ。C#だとswitch式のパターンマッチが似てるって思ったけど、きっとF#からC#にいった機能なんだよね。 match式 match式はよく使うと思うのでしっかり覚えなきゃなー。 あとはorパターンとかasパターンとかパターンにも種類があるみたいなので、これもしっかり 記憶。 let testFunc param = match param with | &#39;a&#39; -> 0 | &#39;b&#39; -> 1 | _ -> -1 let ret = testFunc &#39;b&#39; printfn "%A" ret function式 簡単にいうとfun式とmatch式の合体らしいです。 functionなしでもifでも作れそうと思ったけど、どうなんやろ?? let testFunc = function | value when value > 0 -> 1 | value when value &lt; 0 -> -1 | _ -> 0 let ret = testFunc 2 printfn "%A" ret レコード C#でいったらclassにあたるのかな? ...

2018-08-22 · 1 分 · 133 文字 · ayumax

Essential Phoneを注文した

Essential Phone ちょっと前のAmazon prime dayの時にAmazon.comで激安販売していたEssential Phone(PH-1)ですが、このときは迷っていたら安売りが終わってしまい購入できませんでした。 この端末は技適も取得済みでAndroid 9 Pieにも対応と、とてもそそられるスペックです。 (更新)米AmazonでEssential Phoneが223.99ドルで販売中 きょうTwitterを見ていると279.99ドルで売られているとの情報をみて、迷っていたら夕方再度確認すると223.99ドルに。 送料とかも込みで約3万円とスペックから考えると激安です。 即ポチりました。 ちょうど今作っているXamarinアプリの動作確認にAndroid端末ほしいなあと思っていたので、ほんといいタイミングでした。 これ見つけなかったらHUAWEI P20 liteあたりを買っていたかも。こちらもとても良い端末だと思いますが。 最速発送でポチったので週末には触れそうです。

2018-08-20 · 1 分 · 19 文字 · ayumax

はてなブログProにしました

Proにアップデート このブログは去年の年末にはじめて、ようやく10件記事を書くことができました。 こういう継続する系のものはなかなか続けるのが苦手なので、自分としてはよくやっているほうだと思います。 これを期に「ちゃんとこれからも書き続けるぞ」という意思表示をこめて、ブログを有料版にアップして独自ドメインを設定してみました。 ドメインは数年前に取得したことがあるけど、久しぶりすぎて色々調べてしまいました。 ついでにデザインも少し変えて気分を新たに。 いまのところ8ヶ月で10個なので、今後はもう少しペースアップして記事を書きたいと思います。

2018-08-19 · 1 分 · 7 文字 · ayumax

F#はじめました

関数型プラグラミング 正直まだよくわかっていません。 どんな場合に選択すればよいのか。 また、どんな利点があるのか。わかっていないのが正直な感想です。 Webを検索すると、「副作用がないロジックがかける」「コードが理解しやすい」「テストがしやすい」とか出てきますが、いまいち本質を捉えていないような気もします。 自分のイメージとしては、「手続き型言語とは全く考え方、使いみちの異なる言語」であって、例え任意の該当するプログラミング文法のいみ覚えても、使えるって事にはならないのかなあと思ってました。 そんな感じの自分には手を出せない領域って感じのモノという印象が大きいです。 F# ずっとC#を使ってきたにも関わらず、恥ずかしながら存在を知ったのは最近でした。 去年参加したCenter CLRの.Net600の勉強会にて初めて知りました。 その時は「.Netで関数型言語がつかえるんだー」と感動して、自分のVSの環境に使える準備はしたものの、それ以降触っておらず今に至っております。 多分触らなかった理由としては、関数型言語を使うには背景にある考え方を理解しないといけないって思っていたことが大きかったのかなあと思います。 参考書 F#をちゃんと勉強したいなあと思って書籍を探していたところ、少し前にでた書籍でしたが前述した.Net600にも登壇されていた荒井さんが書かれた本を見つけ購入してみました。 (ホントはちゃんと新品で買いたかったけど、見つけられず仕方なく中古で) まだ全部読めていませんが、本のタイトルにもあるように入門者向けに書いてくださっているので、今の所ちゃんと頭に入ってきている感じ! 後半にいくと難しくなっていくのかなあと思ったりもしますが、挫折せずに読破するつもりです。 最近はWebで大抵の情報は手に入りますが、個人的には書籍があったほうが集中して情報を頭にいれれるので好きです。 とりあえずやってみる 関数型言語はかなり難しいっていう固定概念が頭を専有していため、なかなか手を出そうとしていませんでしたが、今のままでは永久に使えるようにはならないよなあと思い、とりあえず触ってみる事にしました。 幸いC#はずっと使ってきているので、同じ.Netを使うF#はとっつきやすいと思うし、 やってみないとどんなモノなのかわからないので。 やってみて壁にぶつかったらまたどうするか考えよう!

2018-08-17 · 1 分 · 24 文字 · ayumax

CenterCLR勉強会でLTしてきた

勉強会参加 8/11にCenterCLRの勉強会に参加してきました LTに申し込み 今回は最初は通常枠で申し込んでいたのだけど、ある日ふと確認したらLT枠が空いていたので申し込み。 この時点ではまだ何を話そうか決めてなかったけど、とりあえず題材決めと当日の資料作りを開始した。(ここの時点で2週間前くらい) 勉強会当日 スポンサーセッションがあった後、登壇者のセッションが開始されました。 植田さんのHoloLensを使った授業の紹介は、凄く楽しみにしていて、すごいなあと思ったし一番感じたのが、自分が中高生の頃にこういったモノがあったらよかったなーと思いました。 松井さんのお話も、今自分が始めてみようと思っていた者に関してだったので興味深く聞いてました。 自分の番 勉強会の間に1回休憩を挟んで、休憩後がLTの時間でした。 ちょっと直前になって緊張が高まり過ぎてしまい、休憩時間にHoloLens見せていただこうと思っていたけど無理でした。。。 はじめてのLTということで、事前に練習したとおりやって5分という時間も守ることができました。 ただ緊張しすぎてて、喋りはじめのころカミカミでやばいって思ったのと、デモやったときに、手が震えてマウスがうまく使えなくてちょっと焦りました。 あとはずっとディスプレイみたまま喋ってしまったので、もう少し余裕が自分にできたら、聞いていただける方を見て喋れるようにしないかんなと思いました。 今日喋らせてもらったスライドはこちら Markdownでパワポ資料を作る from AyumaKaminosono www.slideshare.net 懇親会 勉強会終了後の懇親会に参加させてもらって、いろんな話をお聞きできました。 自分には理解できないハイレベルな話もありましたが、楽しい1日になりました。

2018-08-13 · 1 分 · 23 文字 · ayumax