.NET Core 3.0が正式リリースされたのでBlazor Server触ってみた
知り合いとWebサービス作らねえかって話になって、最近は何か面白そうなのあるのかなと探しているうちにBlazorを見つけた。 つい先日までBlazorの基盤である.NET Core 3.0がPreview段階だったので、まだ使えないかな~と思っていたがまさかの今日、 .NET Core 3.0が正式リリースされたとのことで触ってみることにした。
Step1 - VS2019を入れる
まだ入ってない場合は こちら Visual Studio 2019 | Visual Studio からVS 2019を入れます
ASP.NET CoreとかBlazorとか書いてある奴が必要なので適宜入れましょう。
Step 2 - Docker Desktopを入れる ※必須ではない
まだ入ってない場合はこちら Docker Desktop for Mac and Windows | Docker からDocker Desktopを入れます
Step 3 - Hyper-Vを使える状態にする ※必須ではない
まだ使える状態にしていない人は使える状態にします。
Step2-3はDocker環境を使用しない人には必須ではないです
Step 4 - Dockerを起動しておく
Step 5 - プロジェクトを作成する
Step 6 - プロジェクトを起動してみる
Step 7 - Dockerを使える状態にする
※この際、Dockerを起動していなかったりするとビルドが失敗するのであらかじめ起動しておく
Step 8 - ページにアクセスしてみる
セキュリティ警告などが出るが、たぶん大丈夫なので、証明書を信用する・証明書をインストールするなどする
Step 9 - ページをちょっと改造してみる
Project > Pages > Index.razor
を開く
@page "/" <h1>Hello, world!</h1> Welcome to your new app.
のように書かれているので
@page "/" <h1>Hello, world!</h1> <div> Omae no namae ha kyoukara SEN da. </div> Welcome to your new app.
のように書き足す。
再起動ボタンを押すと、ページも更新される。
以上、終わり。 ページビューが処理部分と別に作れるのがうれしいのと、Unityとかでやってるのと同じC#で処理が書けるっぽいのがうれしそう。 今回作るサービスにマッチするかどうかはまだ分からないのでもうちょっと触ってみないとだけど、簡単なウェブアプリとかには良さそう。 とにかく使ってみたい。
GitのSubmoduleのディレクトリを動かそうとして失敗したので備忘
状況
- Gitレポジトリに登録したSubmoduleを移動させたい
- 何を思ったのか、手作業で移動させてしまった
- アホなのでその移動をコミットした
- ファミマのバナナフラッペをキメてたので、その後普通に作業をして、コミットログがいくつか溜まっている(全部Resetとかかけてやり直すの無理)
- 上記のようなことがあったので、Submoduleに登録していたはずのファイルがすべてレポジトリ
やりたいこと
できればつらい思いをせずに移動後のあれそれをSubmoduleとしてまた扱えるようにしたい
やったこと
参考にしたのはこちらのページ
まずは方法1にある通りのことを一通り行った。
しかし手順7-8あたりで、書いてあるような動作をしなかった(renamedにならない)ため、この方式をあきらめる
次に方法2を見たが、Submodule自体を移動してしまっているため、方法2で示されている手順を追うことができなかった。
結論 - 手順
- まず現状を受け入れる
- ブランチを切る(よくわからない作業をするため)
.gitmodules
の中身を
削除してコミットgit rm -r your/submodule/dir
を実行(ディレクトリを消したいので --cachedは使わない )し、コミット.git/config
からSubmodule関連の記述を削除- 作業ブランチに戻ってmerge
上記のような手順でたぶん行けます。
劇場版「僕のヒーローアカデミア」見てきました
こんばんは。お前技術屋じゃないんかい。これ技術ブログなんじゃないんかい。な浅葱です。
本日――というか昨日、劇場版「僕のヒーローアカデミア」見てきました。 あんまり漫画とかいっぱい読む方じゃないんですが、僕のヒーローアカデミアと、もう終わっちゃいましたがアイアムアヒーローはある分は全巻揃えました。特にヒロアカは読む度1話ごと号泣する程度には好きです。あと「映像研には手を出すな!」非常におすすめです。
そんな感じですが、今回運よく公開初日である8月3日金曜日、友人がチケットを取ってくれたので一緒に行ってきました。
普段は映画の感想とかは吐き捨てて終わりなのですが、ヒロアカ好きなので、ちょっと興味でブログ書くことにしました。
色々あって辛口な感じになってます。そのうえネタバレもあるので、読む際はご注意ください。 一応、映画見に行ってから読んでいただくのを推奨、ということで。
続きを読むMicrosoft HoloLens アプリケーション開発コンテスト応募した
応募した。
・アプリが解決する課題、背景
...?
・技術的に考慮した点、特にアピールしたい点
...??
・既存のアプリやソリューションとの違い、差別化ポイント
...?????
もう何か本当何も考えてなくってすみませんって感じです。 本当に何も考えてなかったので特に何も書かずに送信しました…。大丈夫なのか。
とりあえず応募用に動画作ったので見てください。 こんな感じのアプリです。
今後の展望ですが、 とりあえず
- 日本語対応
- ステージの追加
- サポート機能の強化
あたりを考えています。
あと、これはアプリの配信とかコンテストの応募には直接関係はないのですが、今回パブリッシャーとしても使った "00a3af Soft" という名前は今後も使っていこうと思っているので、ロゴデザインなどを一度ちゃんとやろうと思っています。
一応Twitterアイコンなどで使っているこいつ
もあるのですが、これは某雑誌さんのゴニョゴニョをごにょごにょしてて権利ゴニョゴニョがごにょごにょしそうなのでたぶん使えないだろうなとか、たとえ怒られなかったとして使うべきではないだろうなとか思っているので、なんか別の何かを用意できればと思っています。
いじょ
【人生初】HoloLensアプリリリースしました!
ヒュ~~~やったぜ! 人生初だよ! 個人的なアプリをストアとかに出すの! 作るの楽しいね~~。そしてつらいね~~~。大変だね~~~~~!!!!!
でもまあ、なんとか出しました。 ちょっとまだ最終的な脳内の完成図にはずっと遠いんだけれども、とりあえず出してしまって今後のアップデートでより完成度を上げて行ければなぁと思っております。
-- 追記 --
デモムービー公開しました
アプリ概要
作成者:00a3af Soft
画像の背景色を浅葱色(#00a3af)にしたのに、HoloLensで見ると色の暗さが表現されずにシアンに近い色になるのが不満
アプリ名: The Sound Piece
アプリURL: https://www.microsoft.com/store/apps/9NLRFKFLRR3X
アプリ内容:
こんな感じのモノ
に案内されながら、部屋の中で音探しをするちょっとしたゲームのような内容。
Spatial Mappingされた部屋の情報をもとに、部屋に「音」が配置されるので、 プレイヤーは耳を頼りに部屋のどこかに隠された「音」を探し出し、すべての「音」を集める。
そんなゲームです。(ストアにはエンタメ作品として登録されてますが)
思い: あんまりモデリングとかそういうのができないので、最低限自分で何とかできそうな音楽分野で何かやりたかった次第。 HoloLensの視野角の問題から、宝探し系のゲームは結構ハマるんじゃないかと前々思っていたので、それを音と組み合わせて、音探しという感じのものになりました。
技術的には難しいことはしていなくて、ほとんどがMRTKとUnity標準機能で賄われているようなアプリです。
一番頑張ったのはどういったアプリにするか? とか、スケジュール管理(全くできなかったけど)とか、そういった開発以外の場所です。
技術的に一番難しかった場所も凹みさんのブログ
をパク参考にさせていただいたおかげで何とかなりました(というか本当に丸っとそのまま使わせてもらってしまっているので早めに自分でShader書いて直します)。
本当にありがとうございます。
SpatialMappingの壁に穴をあけたりとか、その向こうにあるオブジェクトを取得したりとか、音を聞いて音を探すとか、結構楽しい(本当に結構楽しいです)ので、ぜひ一度遊んでいただけると嬉しいです。
一応ですが、すべての「音」(今のところ4つ)を集めるとちょっとした仕掛けが発動するので、楽しみにしていただければと!
制作や申請の流れについても、今度のHoloLens meetupでLTさせていただこうと思っているので、来られる方はよろしくお願いします。
近いうちにブログにも書こうと思います。
最後にもう一度、
The Sound Piece は https://www.microsoft.com/store/apps/9NLRFKFLRR3X にて公開されております。HoloLensをお持ちの方、ぜひ一度遊んでみて下さい!よろしくお願いします!!
Unityでメッシュを生成する[1]
長い;前置き
メッシュについて
言うまでもないことですが、3DCGという概念は頂点・頂点をつないだ面・面をまとめたメッシュによって構成されています。 正確にはもっといろいろ(カメラとか質感とかライティングとか)ありますが、そういう難しいことは私にはわかりません。
とりあえず私たちの肉体にあたる部分はコンピュータ上ではそういった頂点とかいうやつの集合と連結によって作られているそうです。 そしてそれを「メッシュ」と呼ぶそうです。
Unity上でのメッシュ
Unity上でメッシュに触ることはほとんどありません。 何か物体を置きたいのなら、もともと用意されているオブジェクトを使うか、FBXなどのモデルデータを読み込むのが常です。 これは非常に優れた技術であり、私が大学時代に経験したような「さあDirect Xを使ってウィンドウを生成して描画領域をクリアしカメラの位置を決定したらメッシュを規定し投影変換で表示してみよう」などとやらなくていいわけです。もう二度とやりたくない。
――ちょっと本音が出ましたが話を戻すと、つまりそういった非人道的な、もとい泥臭い、非常に大変な処理はUnityがやってくれているわけですね。
いつもは。
メッシュ触ってみたい
とはいえ、Unityを使っていれば一切メッシュに触れないのか? というとそういうわけでもありません。 アセットストアなどを見ていてもわかるように、結構メッシュをゴリゴリ動かして何か動かす処理を作っている人は少なくありません。 なんと驚くことにUnity上でモデリグンできるアセットもあるらしいです(なんと無料) 他にも、例えばシェーダーやボーンを用いないで揺れものや流体なんかを動かそうと思うと、メッシュをいじる必要があります。
まあ色々とそういった先行事例がありますが、なんというか、まあ、触れるなら触りたくない? という気持ちになりませんか。なりますよね。私はなりました。 ということで、Unity上でスクリプトから直接メッシュをあれこれする何かを作ってみたいと思います。
メッシュを生成する
メッシュとは
メッシュは先ほども書いたように頂点の集合とその連結です。 具体的にはUnity上では
Mesh -- メッシュ Mesh.vertices -- メッシュを構成する頂点群 Mesh.triangles -- メッシュを構成する三角面群
のようにデータが作られています
vertices
頂点群です。 Vector3の配列として定義されています。
triangles
三角面群です。 intの配列として規定されていて、面数×3個値が保持されます。 verticesのindexを連続して代入することでその3個ずつを1面として認識します。
例
vertices = new Vector3[] { (1, 1, 0), (1, -1, 0), (-1, 1, 0), (-1, -1, 0) } triangles = new int[] {0, 1, 2, 2, 1, 3};
詳しくは メッシュ - Unity マニュアル このあたりを読んでいただけると私の説明よりわかりやすく詳細に書いてあるかと思います。
実際に何かを生成する
上記の例をもとに実際にこれを生成してみましょう。
適当にスクリプトを作って以下のコードを貼り付けてみてください。
[SerializeField] Material material; // Use this for initialization void Start() { GameObject obj = new GameObject(); MeshFilter filter = obj.AddComponent<MeshFilter>(); MeshRenderer renderer = obj.AddComponent<MeshRenderer>(); MeshCollider collider = obj.AddComponent<MeshCollider>(); Vector3[] vertices; vertices = new Vector3[] { new Vector3(1, 1, 0), new Vector3(1, -1, 0), new Vector3(-1, 1, 0), new Vector3(-1, -1, 0) }; int[] triangles = new int[] { 0, 1, 2, 2, 1, 3 }; Mesh mesh = new Mesh(); mesh.vertices = vertices; mesh.triangles = triangles; filter.sharedMesh = mesh; collider.sharedMesh = mesh; renderer.material = material; }
これをなんでもいいので適当なオブジェクトにアタッチして、マテリアルを指定してゲームを実行すると
はい。こんなものが現れたかと思います。 おめでとうございます! これで私たちはUnity上でメッシュを生成することに成功しました!
今日から「Unity上でメッシュ生成できる」と豪語していきましょう。いえぃ。
…さて、今だれか面白い冗談だと思いましたね。そうですね。 実はまだやらなければいけないことがいくつかあります。
そのあたりはまた今度にしましょう。 次回上記コードの解説も書くだけ書いてみたいと思います。