20220112のUnityに関する記事は5件です。

[Unity初級]Sceneビューが急に白黒になったら

概要 Sceneビューが急に白黒になって困った時には 本文 もしかしたら検索欄に何か文字が入っているかもしれません。その時は文字を消せば元に戻ります。 検索ワード 困ってる人が少しでもたどり着けるように.... シーンビュー、画面、色が無い、色が消えた、モノクロ、モノトーン
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

視覚拡張だけがARじゃない! -音のAR-

音をAR表現してみました。 昨年末に作ったコンテンツですが、せっかくなので共有します。 音のAR 最近AirPodsProを使い始めたのですが、ヘッドトラッキング機能に驚きました。 右側を向くと正面から聞こえていた音が左側から聞こえます。映画を観ている時、どんなに頭を動かしてもディスプレイから音が聞こえてきます。 音の定位がずっと固定されているので、"その場にいる感"があり臨場感が高まります。 (加速度センサーから頭の動きをトラッキングしているのですが、あの小ささの中に加速度センサーが載っているなんて驚きです...) 頭の回転運動を検出して音の定位を固定できますが、歩き回った時にも音の定位を固定できたら面白そうだと思い、音のARを作りました。 ちょうどショッピングモールで、クリスマスツリーのイルミネーションやライトアップがされていたのでここに仮想音源を配置し、音のARを作りました。 開発の流れ 使用した技術 Immersal 空間データの作成 スマホの自己位置推定 Immersalの概要についてはこちら ヘルシンキの「Immersal」が都市規模のARマッピングソリューションに照準! Unity AirPodsPro & iPhone AirPodsProだけでは3DoFしか出来ないので、今回はiPhoneと接続して使用することで6DoFを実現しました。 1. 空間マップ作成 今回スキャンしたいエリアの幅は約100mと広かったので3箇所に分けてスキャンし、後でそれぞれのマップを結合します。 1マップにつき約30枚程度撮影しました。 1歩進むごとに1枚撮影していたので周りから凄く見られましたが、もくもくと撮影し続けます。 こちらがスキャンした空間データ(点群データ)です。 クリスマスツリー 並木 並木道 2. マップ合成 ImmersalのDeveloperPortalで空間データを選択し、結合ボタンを押すだけで複数のマップを1つに結合されています。 各マップの境界もきれいに結合されています。 3. 音の配置 作成した空間マップをUnityに取り込み、音をそれぞれの場所に配置していきます。 空間マップをUnityで読み込み、マップ内にクリスマスソングと鈴の音の音源を配置しました。 MinDistance(上画像の内枠球)とMaxDistance(上画像の外枠球)を設定して、音源に近づくにつれ音量が大きくなり、範囲外に出ると音が聞こえなくなるようにします。 AudioSourceを以下のように設定しました。 - Spatial Blend 音源の位置によって左右から聞こえる音が変わる - 3D Sound Settings 音源からの音が減衰する距離を設定 開発Tips 夜のスキャンについて Immersalのスキャンでは、複数画像にある共通の特徴点を元に3Dデータを作成しています。 今回スキャンした場所はイルミネーションされていて色が頻繁に変わるので、特徴点が取れず3Dデータが崩れやすかったです。 対策として、近くの建物を利用しました。 今回の空間マップを見てみると、イルミネーションがされてる場所だけでなく、少し離れた場所の建物や看板もきれいにスキャン出来ています。「モールのライト+イルミネーションの光」があるので、周りの建物もある程度明るかったので認識できたようです。 3Dマップは結構粗いですが、Immersalを使う目的はスマホの自己位置推定することなので、 クリスマスツリー等の背景にある建物を認識して自己位置推定してくれれば十分目的を果たせます。 iPhone LiDARを使って補正マッピング Immersalは広い空間マップを作るには向いていますが、細かい箇所の精度はあまり高くないので、正確にオブジェクトを配置するのは難しいです。 そこでiPhone LiDARを使うこと有効だと思いました。 iPhoneのLiDARでは、数mm単位で綺麗にスキャンできます。Unity上でiPhoneでスキャンした3DモデルとImmersalの3Dモデルの位置を合わせることで、ARオブジェクトの位置を思った通りの配置できます。 デモ 今回は音のARなので、動画で伝えられないのが残念です。(体験を共有できないのが音のARの弱点かも...) ですが、やってみると結構面白いです。曲を聞きながら並木に近づくと、だんだん音がフェードアウトし別の曲や鈴の音が聞こえてきます。 スマホは、カメラが景色が写していればどんなに動かしても空間マップとの位置ずれはありませんでした。 まとめ 音のARは想像以上に面白く、今までに体験したことのないものだった ほとんどコードを書かず、簡単で高クオリティに作れるのが特徴的 視覚的なARコンテンツより没入感がありました。3Dモデルよりも音の方が現実感があって、脳が仮想世界を補ってくれる。位置づれの影響が少ないのも理由としてある。 AirPodsProのようにヘッドトラッキングすることで没入感が段違いに高まる。 SoundARというのが既にあったが、スマホの向き(姿勢)を元に音が出ているので横を向いたり、振り向いたりしても音は変化しないのでリアル感が減りそう。 観光地や美術館での音声案内など色んな場所に使えそう 建物内の別階でも、それぞれ自己位置を正しく認識できるのか試してみたい 複数の端末間で音源の再生タイミングを同期させれば、数人でも一緒に楽しめそう LiDAR搭載のiPhone欲しい
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Write Defaultsの有無で起こる挙動の違い

概要 (アニメーションステートマシンのざっくりとした説明) Write Defaultsって何? VRChatではON/OFFどっちを使う? はじめに 初投稿です!ソーシャルVRプラットフォーム「VRChat」でアバターの改変(自分好みの服を着せるなど)をしたり、ダンスをしたりして楽しんでいる者です。 Unityを用いてアバターの改変をしているのですが、私がアニメーションを触っていて一番謎だった「Write Defaults」について、自分なりに調べたりまとめた情報を書いてみました。 環境 Unity 2019.4.31f1 VRCSDK3-AVATAR-2021.11.24.16.20_Public Write Defaultsって何? 下の画像は、VRCSDK3.0を導入した際に生成されるvrc_AvatarV3HandsLayerの、Right Handレイヤーの中身です。 販売・セットアップ済みのアバターの表情アニメーションはこの中に組み込まれていることが多いです。 この画面ってそもそも何をしているのかについてもまとめてみました。 アニメーションステートマシンについて 右の、グリッドが背景に描かれている領域にはステートマシンと呼ばれる長方形と矢印の組み合わせからなる図が構成されています。 矢印に沿って遷移(状態を移すこと)することで、再生するアニメーションを変化させることができます。 長方形のパーツにはノードとステートの二つの種類があります。 ノード Entryノード 緑色の長方形です。ステートマシンが開始されたときに、オレンジ色の長方形に遷移して動作を開始します。 Exitノード 赤色の長方形です。ステートマシンの終わりを示します。 ステート ステート 灰色/オレンジ色の長方形です。アニメーションクリップを関連付けることで、遷移時に設定したアニメーションを再生します。  Any State 水色の長方形です。どのステートに遷移している状態でも、このステートからつながっているステートに遷移することが可能です。 つまり、すべてのステートから矢印を引いた状態と同じということになります。(下の図はどちらも同じ意味) 遷移についても触れておきましょう。 ステートマシン上の矢印が遷移(Transition)です。ここには、ステートからステートへの切り替わりのタイミングや条件、アニメーションのブレンド方法を設定することができます。 条件には、アニメーションパラメーターという変数を設定することができ、このパラメータに設定した値が条件(=、<、>、≠)を満たす(True)なら遷移を行います。 アニメーションパラメーターには複数の型(とりうる値ごとに分かれている)があります。用途に合わせた型を使用します。 (オンオフの動作ならBool、多種類の分岐ならIntで複数に遷移できるようにするetc...) 型 特長 Int型 整数値(0-255)をとる。 Float型 小数部分を持つ数値(-1.0~1.0)をとる Bool型 true、false の値をとる1 Trigger型 遷移によって消費されたときにリセットされるBool型2 条件はCondition内に設定します。 条件 Trueとなる条件 Greater Conditionの値より大きいとき Less Conditionの値より小さいとき Equals 値が等しいとき(=) NotEqual 値が等しくないとき(≠) 本題です。Write Defaultsとは何のことなのでしょうか。 Unityユーザーマニュアルによると、 Write Defaults アニメーションキー3が設定されていないプロパティーにデフォルト値を使用します。 アニメーションステート - Unity ユーザーマニュアル より とあります。 ざっくりしてますね... アニメーションを動かしてみてみましょう。 準備 オブジェクトを用意します。 親オブジェクトRoot(空)に、子オブジェクトのキューブA、Bを入れ子にしてあります。 アニメーションを作ります。 キューブA、キューブBのオブジェクトを表示させるアニメーションクリップを作成します。 アニメーションステートマシンを組みます。 アニメーターコントローラーを作成(右クリック→Create→Animator Controller)し、以下のように組みます。 各ステートのWrite DefaultsをONにしておきます。 Rootにアニメーターコントローラーをアタッチし、キューブA,Bをこの後の検証のため非表示にします。 準備は以上です。 実行 Write DefaultsがONの場合 Playを押し、実行します。 キューブAが表示されました。次に、ShowCubeパラメーター(Animatorウィンドウ左上)にチェックを入れ、Trueにします。 キューブAが消え、キューブBが表示されました。 このとき、再生されたのはキューブBを表示させるアニメーションです。キューブAに関して何も触れていないのですが、デフォルトの状態、非表示に戻す処理が(勝手に)行われました。この「戻す処理」がWrite Defaultsの特徴です。 Write DefaultsがOFFの場合 それでは、Write Defaultsがオフのときはどうなるのでしょうか。 ステートのWrite Defaultsのチェックを外し、実行します。 キューブAが表示されました。ここまでは一緒ですね。 ShowCubeパラメーター(Animatorウィンドウ左上)にチェックを入れ、Trueにします。 キューブAはそのまま残り、キューブBが表示されました。 Write Defaultsがオフのため、非表示状態(デフォルト)に戻す処理が行われなかったということになります。 キューブBだけ表示させたい!という場合は、キューブAを非表示にするアニメーションキーを追加してあげましょう。 VRChatではON/OFFどっちを使う? ON・OFFにそんなに差がないような気がしてしまう機能ですが、VRChatではすべてのステートでWrite DefaultsをOFFにすることが推奨されています。 Write Defaults on States VRChat does not use "Write Defaults" in our built-in and example animators. This means that only the actual properties that are in animations get played by any one animation node. We recommend that creators also follow this workflow, as it is easier to keep track of what properties will be animated through any specific layer. https://docs.vrchat.com/docs/avatars-30#write-defaults-on-states これに従ってOFFにしよう!と思っても、例えばすべての表情のアニメに干渉しないようアニメーションキーを追加する必要があるなど、アニメーションの数・キーフレームが数倍になったりするので正直しんどいです...私はツールと時間を使って頑張っています... すべてのステートからWrite DefaultsがONのステートを探してきたり、OFFにしてくれるツールをBoothで見かけました。時短は大事。 https://booth.pm/ja/items/3436890 VRChatで小物の出し入れをしたい!となったときには、必ず表示のアニメーションと非表示のアニメーションを作成するようにしましょう。 まとめ Write Defaultsはアニメーションキーのないもの(言及されていないもの)には最初の状態を適応する! Write DefaultsがOFFのとき、「初期化(リセット)」するアニメーションを作る必要がある! おわりに Write Defaultsについてまとめました。 エンジニアに役に立つ記事ってなんだ...?ってなりながら書いていました...難しい... 今一番アニメーションが面白いと感じています( ˘ω˘ ) Avatar3.0わからん!アニメーションわからん!って声をフレンドから何度か聞くのでわかりやすい記事でも書いてみようかなぁと考えています。既出のことが多そう Editor拡張を作ってみたかったのですがかなり時間がかかりそうだったので断念しました…近いうちに挑戦したいです。 参考記事 Avatars 3.0 - VRChat Documentation Hub アニメーションステート - Unity ユーザーマニュアル ステートマシンの遷移 - Unity ユーザーマニュアル Markdown記法 チートシート - Qiita(Qiita株式会社) チェックボックスのオン・オフで表現されていることもあります。 ↩ VRChatでは現在(2022/1/7)使用できない型です。 ↩ アニメーションの遷移の始点または終点を示すフレームのこと。 ↩
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

仕事の準備

Unity Learnでジュニアプログラマ向けの仕事の準備についてのチュートリアルがあったので,「個人的に」メモしておく. 実際に学びたい方は,こちらのリンクから学ぶことを推奨します. 概要 このチュートリアルのガイダンス: 上達を証明する ポートフォリオと履歴書の更新 面接の準備 はじめに Junior Programmer Pathwayの終了です.お疲れさまでした. ここでは,プロフェッショナルとしての成長を振り返る絶好の機会であり, たとえこの時点で職務に就くつもりがなくても.これまでの歩みを振り返ることができます. 認証取得の検討 キャリアリサーチと準備で検討したように, 資格は自分のスキルを証明し,採用担当者に自分の能力をアピールするために検討したいもの. このLearning Pathwayを修了することで,成長する機会が得られる: Certified Associate: Programmer certification によって検証されるすべてのスキルとコンピテンシ1 Certified Associate: Game Developer certification によって検証するスキルとコンピテンシの大部分 Unityの認定試験を検討する: 認定模擬試験の受験 認定コースウェアを修了し,試験への準備を万全にする 過去の学習教材や関連する演習を見直し,主要なコンセプト,プロセス,アクティビティの理解を深める. 履歴書とポートフォリオの見直し 今すぐ応募する予定がなくても,この機会に進捗状況を確認し,これらの書類を更新する. 適切な職務の特定 まず,キャリアリサーチと準備で始めたキャリアリサーチの資料に戻る. 調べたことを振り返り,今の自分に最も適していると思われる職務を検索しよう. このパスウェイに沿った一般的な職務は以下の通り: ジュニアプログラマ ジュニアUnityデベロッパ ジュニアUnityソフトウェアエンジニア ジュニアゲームプレイプログラマ ジュニア3Dプログラマ Tip: 求人情報を検索する際には,「Unity」「C#」などのキーワードを使うと,適切な職務を見つけやすくなる. 様々な求人情報を見て回る中で,興味のある職務について,以下の情報をキャリアリサーチに書き込む: 必要な資格を伴う具体的な職務内容 期待されるスキルセット 期待される技術的知識 必要な研修や資格 期待される・一般的な給与範囲 ポートフォリオと履歴書の更新 次に,前のステップで調べた仕事の要件と,この経路で進んだことの両方を振り返ってみる: 自分のポートフォリオを更新し,見直す. 最新のもので,応募する仕事に必要なスキルを紹介するものであることを確認する. このパスウェイで学んだスキルを反映させるために,新しい履歴書を作成するか,既存の履歴書を更新する. 多くの履歴書テンプレートがオンラインで提供されている. 自分のポートフォリオにレジュメを埋め込んでもよい. 応募の準備 調べたことをもとに,応募したい仕事を決まる. 応募の準備するとき: 職務や会社に併せたカバーレターを書くよう要求された場合は,それを書く. 履歴書,ポートフォリオ,カバーレターを校正する. 友人,家族,同僚,その他信頼できる人に,応募書類や職務経歴書をチェックしてもらう. 自分のスキルを売り込み,興味のある職種やプログラムにアプローチするための,その他の方法を確認する. 面接の準備 応募の第一段階が成功すると,面接に進む. 面接を臨む上で重要なことは,準備! 企業研究 面接の前に,時間をかけて会社についての知識を深めておく: 主要な製品を知る 自分でアクセスできるものは何でも試してみる. コストがかかる場合は,レビューをみるのもいいかも. 会社のホームページで,ミッションやバリューを時間をかけて研究する. LinkedInを使って,その会社にコネクションがあるかどうかを確認する. そのような場合は,実際に働いている社員からアドバイスをもらったり, 会社のことをもっと知ることができるように,連絡を取ってみる. 自分の役割を知る 職務内容,特に必要とされる主なスキルや知識について研究してみる: 求められるスキルやコンピテンシに基づき,面接での質問候補リストを作成する. 面接官は「時間的なプレッシャーの中で締め切りに間に合わせたときのことを教えてください」といい, プレッシャーの中で成果を出し,時間を効果的に管理する能力について知ることができる. 以前の職務,学校,または本パスウェイにおいて,それぞれの主要なスキルを発揮した時を特定する. 自分の経験をもとに,質問に対する回答を作成する. 会社に順番に質問するリストを作成する. テストの準備 職種によっては,特にプログラミングの職種では,テストが必要な場合がある. 若手プログラマによく行われるテストの種類を調べ,できる限り練習と準備をする. Note: このガイダンスは,スタッフとしてではなく,フリーランスとして仕事を探している場合にも当てはまる. ポートフォリオと履歴書を更新し,リサーチを行い,面接の準備をする必要がある. 定評のあるクリエイタの視点を取り入れる 元記事にUnity Social ImpactチームのコンテンツプロデューサーであるJames Turnage-Lannanさんが, 初めてQAテストを担当したときの心構えを語っていました. ぜひ,読んでみてください! 最後に 就職活動を始めたら,ここに戻ってきて,この旅を始める人たちを助けてあげてください. コメント機能を使うか,Unity Learners Connect Groupに投稿する: 就職活動や面接の経験を共有する. 学んだことをアドバイスする. 次のジュニアプログラマの就職活動を支援する. リアルタイム体験デザイン入門で学んだことを活かして, 「Design and Publish Your Original Game: Unity USC Games Unlocked course」を受講して, 次のリアルタイム作品を制作してみる. アジャイルデザインプロセスを紹介し,ゲーム制作をガイドする. ゲームに特化しているが,デザインプロセスを利用してあらゆるリアルタイムプロジェクトを制作することができる. ポートフォリオに掲載するための追加プロジェクトを構築するために受講することをお勧めする. これでUnity Learnのチュートリアルをまとめるだけの記事を書くのは終わりです. 次に記事を書くのは,おそらく個人的にゲームを開発するので,開発の備忘録を交えながら, 読者の皆さんに役に立つ情報をお届けできたらなと思っております! ありがとうございました. 行動特性のこと ↩
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Unityチュートリアル:就職準備 (Job preparation: Junior Programmer)

Unity Learnでジュニアプログラマ向けの仕事の準備についてのチュートリアルがあったので,「個人的に」メモしておく. 実際に学びたい方は,こちらのリンクから学ぶことを推奨します. 概要 このチュートリアルのガイダンス: 上達を証明する ポートフォリオと履歴書の更新 面接の準備 はじめに Junior Programmer Pathwayの終了です.お疲れさまでした. ここでは,プロフェッショナルとしての成長を振り返る絶好の機会であり, たとえこの時点で職務に就くつもりがなくても.これまでの歩みを振り返ることができます. 認証取得の検討 キャリアリサーチと準備で検討したように, 資格は自分のスキルを証明し,採用担当者に自分の能力をアピールするために検討したいもの. このLearning Pathwayを修了することで,成長する機会が得られる: Certified Associate: Programmer certification によって検証されるすべてのスキルとコンピテンシ1 Certified Associate: Game Developer certification によって検証するスキルとコンピテンシの大部分 Unityの認定試験を検討する: 認定模擬試験の受験 認定コースウェアを修了し,試験への準備を万全にする 過去の学習教材や関連する演習を見直し,主要なコンセプト,プロセス,アクティビティの理解を深める. 履歴書とポートフォリオの見直し 今すぐ応募する予定がなくても,この機会に進捗状況を確認し,これらの書類を更新する. 適切な職務の特定 まず,キャリアリサーチと準備で始めたキャリアリサーチの資料に戻る. 調べたことを振り返り,今の自分に最も適していると思われる職務を検索しよう. このパスウェイに沿った一般的な職務は以下の通り: ジュニアプログラマ ジュニアUnityデベロッパ ジュニアUnityソフトウェアエンジニア ジュニアゲームプレイプログラマ ジュニア3Dプログラマ Tip: 求人情報を検索する際には,「Unity」「C#」などのキーワードを使うと,適切な職務を見つけやすくなる. 様々な求人情報を見て回る中で,興味のある職務について,以下の情報をキャリアリサーチに書き込む: 必要な資格を伴う具体的な職務内容 期待されるスキルセット 期待される技術的知識 必要な研修や資格 期待される・一般的な給与範囲 ポートフォリオと履歴書の更新 次に,前のステップで調べた仕事の要件と,この経路で進んだことの両方を振り返ってみる: 自分のポートフォリオを更新し,見直す. 最新のもので,応募する仕事に必要なスキルを紹介するものであることを確認する. このパスウェイで学んだスキルを反映させるために,新しい履歴書を作成するか,既存の履歴書を更新する. 多くの履歴書テンプレートがオンラインで提供されている. 自分のポートフォリオにレジュメを埋め込んでもよい. 応募の準備 調べたことをもとに,応募したい仕事を決まる. 応募の準備するとき: 職務や会社に併せたカバーレターを書くよう要求された場合は,それを書く. 履歴書,ポートフォリオ,カバーレターを校正する. 友人,家族,同僚,その他信頼できる人に,応募書類や職務経歴書をチェックしてもらう. 自分のスキルを売り込み,興味のある職種やプログラムにアプローチするための,その他の方法を確認する. 面接の準備 応募の第一段階が成功すると,面接に進む. 面接を臨む上で重要なことは,準備! 企業研究 面接の前に,時間をかけて会社についての知識を深めておく: 主要な製品を知る 自分でアクセスできるものは何でも試してみる. コストがかかる場合は,レビューをみるのもいいかも. 会社のホームページで,ミッションやバリューを時間をかけて研究する. LinkedInを使って,その会社にコネクションがあるかどうかを確認する. そのような場合は,実際に働いている社員からアドバイスをもらったり, 会社のことをもっと知ることができるように,連絡を取ってみる. 自分の役割を知る 職務内容,特に必要とされる主なスキルや知識について研究してみる: 求められるスキルやコンピテンシに基づき,面接での質問候補リストを作成する. 面接官は「時間的なプレッシャーの中で締め切りに間に合わせたときのことを教えてください」といい, プレッシャーの中で成果を出し,時間を効果的に管理する能力について知ることができる. 以前の職務,学校,または本パスウェイにおいて,それぞれの主要なスキルを発揮した時を特定する. 自分の経験をもとに,質問に対する回答を作成する. 会社に順番に質問するリストを作成する. テストの準備 職種によっては,特にプログラミングの職種では,テストが必要な場合がある. 若手プログラマによく行われるテストの種類を調べ,できる限り練習と準備をする. Note: このガイダンスは,スタッフとしてではなく,フリーランスとして仕事を探している場合にも当てはまる. ポートフォリオと履歴書を更新し,リサーチを行い,面接の準備をする必要がある. 定評のあるクリエイタの視点を取り入れる 元記事にUnity Social ImpactチームのコンテンツプロデューサーであるJames Turnage-Lannanさんが, 初めてQAテストを担当したときの心構えを語っていました. ぜひ,読んでみてください! 最後に 就職活動を始めたら,ここに戻ってきて,この旅を始める人たちを助けてあげてください. コメント機能を使うか,Unity Learners Connect Groupに投稿する: 就職活動や面接の経験を共有する. 学んだことをアドバイスする. 次のジュニアプログラマの就職活動を支援する. リアルタイム体験デザイン入門で学んだことを活かして, 「Design and Publish Your Original Game: Unity USC Games Unlocked course」を受講して, 次のリアルタイム作品を制作してみる. アジャイルデザインプロセスを紹介し,ゲーム制作をガイドする. ゲームに特化しているが,デザインプロセスを利用してあらゆるリアルタイムプロジェクトを制作することができる. ポートフォリオに掲載するための追加プロジェクトを構築するために受講することをお勧めする. これでUnity Learnのチュートリアルをまとめるだけの記事を書くのは終わりです. 次に記事を書くのは,おそらく個人的にゲームを開発するので,開発の備忘録を交えながら, 読者の皆さんに役に立つ情報をお届けできたらなと思っております! ありがとうございました. 行動特性のこと ↩
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む