ColorUsageAttributeの使い方が変わってた

昔(Unity5.xの頃)作ったスクリプトを修正してたら気が付いたが

ColorUsageAttribute(bool, bool, float, float, float, float)は旧形式です と言われるようになった

最近では

ColorUsageAttribute(bool showAlpha, bool hdr) だけで良いようだ。

EmissionColor周りをいじるときはHDRカラーがほぼ必須になるので覚えておきたい。

劇場版「僕のヒーローアカデミア」見てきました

こんばんは。お前技術屋じゃないんかい。これ技術ブログなんじゃないんかい。な浅葱です。

本日――というか昨日、劇場版「僕のヒーローアカデミア」見てきました。 あんまり漫画とかいっぱい読む方じゃないんですが、僕のヒーローアカデミアと、もう終わっちゃいましたがアイアムアヒーローはある分は全巻揃えました。特にヒロアカは読む度1話ごと号泣する程度には好きです。あと「映像研には手を出すな!」非常におすすめです。

そんな感じですが、今回運よく公開初日である8月3日金曜日、友人がチケットを取ってくれたので一緒に行ってきました。

普段は映画の感想とかは吐き捨てて終わりなのですが、ヒロアカ好きなので、ちょっと興味でブログ書くことにしました。

色々あって辛口な感じになってます。そのうえネタバレもあるので、読む際はご注意ください。 一応、映画見に行ってから読んでいただくのを推奨、ということで。

続きを読む

Microsoft HoloLens アプリケーション開発コンテスト応募した

応募した。

・アプリが解決する課題、背景 ...?

・技術的に考慮した点、特にアピールしたい点 ...??

・既存のアプリやソリューションとの違い、差別化ポイント ...?????

もう何か本当何も考えてなくってすみませんって感じです。 本当に何も考えてなかったので特に何も書かずに送信しました…。大丈夫なのか。

とりあえず応募用に動画作ったので見てください。 こんな感じのアプリです。

youtu.be

今後の展望ですが、 とりあえず

  • 日本語対応
  • ステージの追加
  • サポート機能の強化

あたりを考えています。

あと、これはアプリの配信とかコンテストの応募には直接関係はないのですが、今回パブリッシャーとしても使った "00a3af Soft" という名前は今後も使っていこうと思っているので、ロゴデザインなどを一度ちゃんとやろうと思っています。

一応Twitterアイコンなどで使っているこいつ

f:id:mtwand:20180426021452p:plain

もあるのですが、これは某雑誌さんのゴニョゴニョをごにょごにょしてて権利ゴニョゴニョがごにょごにょしそうなのでたぶん使えないだろうなとか、たとえ怒られなかったとして使うべきではないだろうなとか思っているので、なんか別の何かを用意できればと思っています。

いじょ

【人生初】HoloLensアプリリリースしました!

ヒュ~~~やったぜ! 人生初だよ! 個人的なアプリをストアとかに出すの! 作るの楽しいね~~。そしてつらいね~~~。大変だね~~~~~!!!!!

でもまあ、なんとか出しました。 ちょっとまだ最終的な脳内の完成図にはずっと遠いんだけれども、とりあえず出してしまって今後のアップデートでより完成度を上げて行ければなぁと思っております。

-- 追記 --

デモムービー公開しました

www.youtube.com

アプリ概要

作成者:00a3af Soft

f:id:mtwand:20180419235915p:plain 画像の背景色を浅葱色(#00a3af)にしたのに、HoloLensで見ると色の暗さが表現されずにシアンに近い色になるのが不満

アプリ名: The Sound Piece

アプリURL: https://www.microsoft.com/store/apps/9NLRFKFLRR3X

アプリ内容:

こんな感じのモノ

f:id:mtwand:20180420000109p:plain

に案内されながら、部屋の中で音探しをするちょっとしたゲームのような内容。

Spatial Mappingされた部屋の情報をもとに、部屋に「音」が配置されるので、 プレイヤーは耳を頼りに部屋のどこかに隠された「音」を探し出し、すべての「音」を集める。

そんなゲームです。(ストアにはエンタメ作品として登録されてますが)

思い: あんまりモデリングとかそういうのができないので、最低限自分で何とかできそうな音楽分野で何かやりたかった次第。 HoloLensの視野角の問題から、宝探し系のゲームは結構ハマるんじゃないかと前々思っていたので、それを音と組み合わせて、音探しという感じのものになりました。

技術的には難しいことはしていなくて、ほとんどがMRTKとUnity標準機能で賄われているようなアプリです。

一番頑張ったのはどういったアプリにするか? とか、スケジュール管理(全くできなかったけど)とか、そういった開発以外の場所です。

技術的に一番難しかった場所も凹みさんのブログ

tips.hecomi.com

パク参考にさせていただいたおかげで何とかなりました(というか本当に丸っとそのまま使わせてもらってしまっているので早めに自分で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;
    }

これをなんでもいいので適当なオブジェクトにアタッチして、マテリアルを指定してゲームを実行すると

f:id:mtwand:20180330192711p:plain

はい。こんなものが現れたかと思います。 おめでとうございます! これで私たちはUnity上でメッシュを生成することに成功しました!

今日から「Unity上でメッシュ生成できる」と豪語していきましょう。いえぃ。

…さて、今だれか面白い冗談だと思いましたね。そうですね。 実はまだやらなければいけないことがいくつかあります。

そのあたりはまた今度にしましょう。 次回上記コードの解説も書くだけ書いてみたいと思います。

Mixed Reality Toolkit 2017.2.1p2 Upgrade memo

Web系の会社辞めてホロ転職した話

こんにちは、浅葱( @asagi_00a3af )です。 最近寒さも増してきていよいよ冬本番って感じですね。西や北の方は雪がヤバいって聞きますが大丈夫ですか? 釈迦に説法かもしれませんが、雪はたやすく現金10万円を奪うので気を付けてくださいね。私と同じ轍は踏まないように。

さて、さっそく本題ですが、本記事は退職者アドベントカレンダーhttps://adventar.org/calendars/2158#list-2017-12-07 )の8日目の記事としての公開です。縁起がいい数字もらえて嬉しいです。

私は今年の5月、半年とちょっと前ですね。バイト時代もあわせて2年半ほどお世話になっていた某Webメディア系の会社を辞め、現在の会社に入社いたしました。現在ではHoloLensを中心にxRといわれる界隈のものをいじっております。VRやARそしてMRといったものです。

今回は退職者アドカレなので現職については深く掘り下げませんが、現職についても今度書く機会があればなーと思います。

余談ですが、それにしても四日目の人

icarium.hatenablog.com

といい今回濃すぎですよね。これ以上の読む価値ってやつを提供できる気が全くしないです…。

なぜ転職したのか

転職した理由はいくつかありますが、一番大きいのはHoloLensの日本上陸です。

私はもともとグーグルグラスなどをはじめとした眼鏡型デバイスに大きな関心を持っていて、できるならばこういったブツを扱える仕事がしたいなーとぼんやりながら考えていたのですが、なんにせよHoloLens以前の眼鏡型端末って正直使えなかったんですよね。

特に国内系のはどうだろなーという感じで、それが仕事になるって感じがしなかったんです。

ところが、某Microsoftとかいう会社がそれを全部ひっくり返しちゃいまして……と語ると長くなるので割愛しますが、そんなこんなで世界で初めてといえるだろう、実用的な眼鏡型端末の登場にテンション上がっちゃいまして、その時現職の面接でも言ったのですが

「今始めないと後から何を言っても私は後乗りの人間になってしまう」

と思ったんですね。

要は、いざHoloLensが世間に認知され人気デバイスになったとき、自分はこの製品の初期型をいじってたんだって言いたかったと、ほとんどそれだけです。

退職する不安はあった?

これめっちゃあった!

というか聞いてほしいんですけどね、私の前いた会社超ベンチャー企業で、現場監督=上司=社長だったんですよ。 何言うのも何話すのも何相談するのも社長です。

不満があればそれはたいてい社長にまつわることだし、前職の誰かにお礼を、と言われたらやっぱりその相手は社長なんですよね。

そして誤解のないように言っておくと、ちょいちょい意見の合わないところはあるのですが、基本的に社長はいい人で、いい社長だったんですよね。それ故に、

「転職先が見つかったので会社辞めます」

っていう一言を言うのがとても怖かったです。

殴られると思ったし、あきれられると思ったし、あと直前に社用PC新調してもらったばっかだったのでその申し訳なさもヤバかったです。

でも、結果的にそれは言わなければならないことでしたし、今考えても、いろいろな理由があって前職を続けることには少し限界は来ていたとも思うので、なんとか不安に勝てて良かった…と今では思っています。

転職してよかった?

あまり大きな声では言えませんが、ひたすらただ良かった、とは思ってないです。

それはやっぱり今回の趣旨ではないのでやはり今回は省きますが、かといって転職しなければよかったとも思わない(というか決断に対する後悔をするのは完全に時間の無駄)ので、結果的に悪くはなってないという何となくあいまいなのですがこういう答えを置いておこうかなと思います。

やらずになんちゃらよりやってなんちゃらですね。

あと25分だよ

8日、このブログが公開されるまでの時間です。

今後の目標とか

今後という点でいうと、

  • 給料上げたい(あればあるだけうれしい)
  • 自分の制作したい(これは自分の問題)
  • 痩せたい(びっくりするくらい個人的な問題)

あたり考えています。

そのためになら(合法な範囲で)手段は問いません。

なんというか、人の役に立つことがしたいというか、自分が得しつつ他人に利益を提供できることをしたいなーと長々思い続けているのですが、果たしてそれって自分が主体にならずにやっていけるのかとか、でも自分が主体になるためには主に金、主に技術力、主に人徳なんかが足りてないんじゃないかとか思ったりしています。

最近は今まで多くの困難から逃げ続けてきたツケを強く感じる日々を送っています。もしこの投稿を読んでいる私より若い人で、私のように困難から逃げる癖がある人はいれば、老婆心ながら、困難にこそぶち当たるべきなんだと、一言添えておこうと思います。

転職について

最後に転職、というか職探しについてだけ少し書いておきたいのですが、やっぱりもう少し慎重に探すべきだったかな、という後悔があります。というか面接時にもっと質問とか要望とか言うべきなんだと。

具体的には

  • 給与交渉
  • 見込み残業代は含まれるのか?
  • ボーナス等あるのか?
  • 裁量労働なのに定時が存在する…?
  • 作業開始から納期までの平均的な時間は?

以上5点くらいは確認・意見すべきだったなと。

あ、いや、別に現職とは関係ないですよ。ええ、本当に。

そして当然ですが、上記の点は第一面接、人事面接で確認すべきです。

面接の回数が伸びれば伸びるほど疲弊するのは誰でもない自分ですからね。

最後に

最近ブログを更新していなかったのですが、今回をきっかけにまた更新していけるようになればと思っています。 個人製作はしよう。仕事も頑張ろう。冬休み中は毎日走ろう。

また、Twitterなどはじめとして開発者仲間といいますか、募集してますのでいつでも話しかけてください

Twitter麻木浅葱 (@asagi_00a3af) | Twitter

MinecraftのxR鯖も稼働中ですのでご興味のある方はぜひー。