タグ

ブックマーク / zenn.dev/meson (22)

  • 球体上に波エフェクトを実装する

    はじめに 上記のようなエフェクトをプロジェクトで作成する機会があり、いくつか発見があったのでそれを紹介しつつ、実装方法を解説していきたいと思います。 なお、ここで解説している実装は以下のGitHubのリポジトリにアップしてあるので、詳細は合わせてこちらも確認ください。 コンセプトと実装方針 まずは全体を俯瞰する意味で、実装方針とそのコンセプトについて解説します。 コンセプト まずコンセプトは、シャボン玉のような球体を使ってエリアを表現することでした。そして触れた際に、触れた位置を中心として波紋が広がるようにするというものです。 しかし普通のシャボン玉の儚さよりは強さを感じさせつつ、触れた際にアニメーションさせることが目的でした。 実装方針 実装方針はまず、色味の表現としてノイズの重なりを利用してシャボン玉のようなゆらゆらした演出を実現しようと考えました。また波紋については、球体の中心から触

    球体上に波エフェクトを実装する
  • Meta Questで空間アンカーの共有を行う

    1. 概要 Meta社がMeta Quest向けに提供しているShared Spatial Anchor(共有空間アンカー)の利用方法について説明します。この機能を使うことで、複数のユーザー間で空間の位置情報を共有し、同じ場所に仮想オブジェクトを配置することが可能になります。Meta社が公開している公式サンプルを参考にしながら、個人的にポイントと感じた部分を紹介します。

    Meta Questで空間アンカーの共有を行う
  • Meta Questで空間アンカーを使う

    1. 概要 Meta社がMeta Quest向けに提供しているSpatial Anchor(空間アンカー)およびShared Spatial Anchor(共有空間アンカー)を使用する方法を説明します。 Unity向けにMeta社が提供しているSDKの機能であるBuilding Blocksを利用することで、空間アンカーをノーコードで使用することができます。 共有空間アンカーはコア機能のAPIが提供されています。使用するにはアプリケーションへの組み込みは必要ですが、公式サンプルが提供されており、参考にすることができます。 この記事では、Building Blocksを利用して空間アンカーを使用する方法と、共有空間アンカーの公式サンプルを動作させる方法を説明します。 共有空間アンカーをアプリケーションに組み込む方法については、別記事として公開予定です。

    Meta Questで空間アンカーを使う
  • Meta Quest Building Blocks: コントローラーを活用したインタラクションの構築

    概要 UnityでMeta Quest向けアプリを開発する際、Oculus Integration v57以降で提供されているBuilding Blocksを利用することで、 パススルー、シーンモデル、インタラクション、空間アンカーなどある程度シーンを自動生成することができるようになりました。 この記事では、インタラクションの構築に焦点を当て、なぜか自動生成されないコントローラーのインタラクションをどのように構築するかを説明します。 環境構築 まずは、Building Blocksを利用するまでの環境構築について説明します。 今回は、以下の環境で構築します。 Unity 2022.3.21f1 Meta XR Core SDK V63 Meta XR Interaction SDK V63 Meta XR Interaction SDK OVR Integration V63 1. Uni

    Meta Quest Building Blocks: コントローラーを活用したインタラクションの構築
  • Reality Composer ProプロジェクトをXcodeに追加する

    概要 Apple Vision Pro向けアプリの開発にはReality Composer Proを利用してシーンを構築していくのが一般的です。 一方、PolySpatialを用いてUnityで開発を行う場合、基的なシーン構築についてはUnityが出力したコードおよびアセットですべてが管理されており、Reality Composer Proのアセットは含まれていません。しかし、PolySpatial 1.1.4からはSwiftUIとの連携機能が追加されるなど、Xcodeで行う開発フローを取り込むことが可能となりました。 これを利用しようと思い、自分が開発しているUnityプロジェクトが出力したXcodeプロジェクトにReality Composer Proプロジェクトを追加しようとしたところプチハマりしてしまいました。 調べても記事が見つからなかったので手順をまとめておこうと思います。知

    Reality Composer ProプロジェクトをXcodeに追加する
  • Unity PolySpatial 1.1.4を使ってC#とSwiftUIを連携させる

    概要 PolySpatial 1.1.4が発表されました。アップデートの中で注目なのが、SwiftUIの連携部分が追加された点です。 ただ、visionOSの仕組み上ちょっと癖のある実装となっています。今回は新しく追加されたSwiftUIと連携する方法について解説したいと思います。 SwiftUIはネイティブ実装 いきなり、Unityで開発するんちゃうんかい、という話ですがSwiftUIを利用するにはSwiftによる実装を行わないとなりません。しかし、visionOSの特徴である磨りガラス風のUIを利用できることを考えると一考の余地はあるでしょう。 UnityのオブジェクトとSwiftUIが共存している PolySpatialにおけるSwiftUIの仕組みを見てみると、やや力技と言わざるを得ない実装になっています。実装手順の概要を書くと以下のようなフローで実装していきます。 SwiftUI

    Unity PolySpatial 1.1.4を使ってC#とSwiftUIを連携させる
  • Unity PolySpatialを使ってハンドトラッキングする

    概要 MESONではApple Vision Pro向けの開発を積極的に行っています! 今月はApple Vision Proの発売記念ということで1ヶ月記事チャレンジを行っています。この記事はその2/19の記事です。 2/18の記事はこちら(純粋くんと西田はかせ ⋆ 第一話 ⋆) ちなみにアプリ開発も行っていて、第一弾として「SunnyTune」という天気を体感できるアプリを開発し、Apple Vision Proのローンチに合わせてリリースしています! 空間コンピューティング時代における新しい体験作りを今後もしていきたいと思っています! 自分は前回、Unity PolySpatialを使ってApple Vision Pro向けアプリを開発するという記事を書きました。今回はPolySpatialを用いてハンドトラッキングするためのあれこれを書いていきたいと思います。 開発環境 前回同様、

    Unity PolySpatialを使ってハンドトラッキングする
  • Unity PolySpatialを使ってApple Vision Pro向けアプリを開発する

    概要 いよいよApple Vision Pro、発売されましたね。MESONでは今後、Apple Vision Proの開発に力を入れていきます。第一弾として「SunnyTune」という、天気を体感できるアプリを開発し、Apple Vision Proのローンチに合わせてリリースしました! 空間コンピューティング時代における新しい体験作りを今後もしていきたいと思っています! X(旧Twitter)のポストを見ても、Apple Vision Proは好意的に受け入れられている印象です。結構街中で使っている動画なんかも上がっていて、意外と早く街中でARゴーグルやグラスが付けられる未来がくるのかな、とワクワクしています。 前述の通り今後もApple Vision Proに力を入れていく予定なのでその一環として、MESONでは1ヶ月毎日記事投稿チャレンジとして、Apple Vision Pro関連

    Unity PolySpatialを使ってApple Vision Pro向けアプリを開発する
  • visionOSでのハンドジェスチャ実装に関する調査

    概要 visionOS向けのアプリケーションでは、コントローラーが不要な仕様となっています。 基的な入力はLook & Tap、つまり視線と手を用いて行われるため、特にハンドトラッキングが重要となっています。 今回はそんなvisionOS向けアプリでのハンドトラッキング、特にハンドジェスチャ認識の実装について調査した内容をまとめます。 ハンドジェスチャ実装の柔軟性についてAppleが言及していること WWDC23の動画であるDesign for spatial inputで、ハンドトラッキングについても触れられていました。 デフォルトで使用できるジェスチャ 動画内では、基的な動作は使用できるということ、そしてジェスチャのカスタムは可能であるという風に触れられていました。 現状visinOS向けアプリの開発方法としては、Unityを用いる場合とXcodeのみを用いる場合の2通りが提示され

    visionOSでのハンドジェスチャ実装に関する調査
  • visionOS Reality Composer Pro でのShaderGraph

    visionOSのReality Composer ProにはShaderGraphの機能が備わっておりノードベースでシェーダーを作成することができます。 今回は公式の Explore materials in Reality Composer Pro の動画をもとにShaderGraphの使い方をまとめました。 導入 今回の説明では Diorama のサンプルコードをもとに説明をしています。 Diorama のサンプルコードはこちらからダウロードできるのでダウンロードしてください。 Diorama また Xcodeのバージョンは Xcode15 bata6 で試しています。 環境構築 Dioramaのプロジェクトを開いたらReality Composer Proを開きます。 Packages/Package を選択して Open Reality Composer Pro のボタンを押すと

    visionOS Reality Composer Pro でのShaderGraph
  • Oculus Interation SDKを使って、ノーコードで簡単にオリジナルのハンドジェスチャを実装する

    Scene上に必要なObjectとその構造は画像の通りです。 以下の記事に記載されている「OVRCameraRigを組み立てる」の1~8を参考にしました。 9以降の手順で行われている参照渡しは、私が開発を行ったバージョンでは必要がなくなっていました。 また、記事ではGrabやPokeには着目していないため、HandSyntheticを使用していない点に注意してください。 ハンドジェスチャ判定の仕組み Shape Recognizer + Transform Feature Configs Shape Recognizerは手の形、具体的には指の状態を検知するScriptableObjectです。 検知対象となる指の状態は以下の通りです。 Curl:指の2つの関節の曲がり具合 Flexion:第3間接(指の付け根の間接)の曲がり具合 Abduction:隣接する2の指のくっつき具合 Op

    Oculus Interation SDKを使って、ノーコードで簡単にオリジナルのハンドジェスチャを実装する
  • Unity Sentis入門 - PyTorchからONNXを自作して使うまで

    概要 Unityが発表したAIツール群。その中にあるSeintsは、Barracudaをリプレイスすることを目標に作られているもののようです。現在はまだβプログラムで、全員が利用できるわけではありませんが、運良く参加できたので早速試してみました。 が、今回の内容はほぼBarracudaでも同じような内容になります。ONNXモデルを利用したフローを自分が理解したかったのでちょっとやってみた、という内容の記事ですw 今回は利用方法というより、全体の構造を把握、理解することを目的としています。Barracudaでもそうでしたが、SentisでもONNX(Open Neural Network Exchange)を利用してAIを構築します。 そこでONNXを自作し、それをSentis上で扱うまでを解説しながら使い方や使うイメージを掴んでもらえればと思います。 PyTorchでモデルを作成する ON

    Unity Sentis入門 - PyTorchからONNXを自作して使うまで
  • visionOS Reality Composer Pro の試してみた

    visionOS で 3Dコンテンツを作成するときには Reality Composer Pro を使用して作成するのですが、実際にどうやって作成しているのか、実際に試してみました。 RealityComposerProとは VisionPro で 3D空間に3Dモデルを配置するには RealityComposerProを使用して簡単に配置をすることができます。 UnityやUnrealEngineのようなゲームエンジンのように3D空間上にオブジェクト(Entity)を配置し、オブジェクトに対してコンポーネントをつけることで、機能を付与することができます。 SwiftUI上ではこのRealityComposerProで作成したシーンを読み込むことで3D空間上にオブジェクトを配置することができます。 環境構築 visionOSの開発を行うには Xcodeのベータバージョンをダウンロードして使

    visionOS Reality Composer Pro の試してみた
  • visionOSでのTabViewStyleとPickerStyleの種類と見た目

    SwiftUIでvisionOS向けアプリの開発ができますが、ドキュメントにはTabViewStyleとPickerStyleの種類に対応するビジュアルが載っていないので、実際に試してみました。 筆者紹介: MESONでインターンをさせていただいております、さくたまです!ARとドラムとNeRFが好きです、よろしくお願いします! TabViewのデザイン TabViewは、visionOSでは、縦向きのOrnamentがデフォルトで推奨されています。 Ornamentとは、visionOS特有のUI要素で、Windowの周りに浮かび上がるようなUI要素です。 エミュレーターを使っているのでマウスで実行していますが実機では視線になります。 視線を合わせると、タブメニューの詳細が表示され、手元でタップすると内容が切り替わります。 TabViewの実装 TabView { ReceivedView

    visionOSでのTabViewStyleとPickerStyleの種類と見た目
  • Cesium for UnityとPLATEAUを連携して、GeospatialAPIで位置合わせを行う

    概要 MESONではGeospatialAPIを利用したコンテンツ制作や、プロトタイプ制作を意欲的に行っています。最近はMESON内でプロトタイプ作ろうぜ会が発足して、そこで出た案を「EmoBalloon」というものを作りました。これは街中でバルーンを立てて待ち合わせがしやすくなる、みたいなコンセプトのプロトタイプです。 Twitterに動画も投稿しているのでぜひ見てみてください。 上の動画を見てもらうと分かりますがGeospatialAPIの精度は相当ですね。 このプロトタイプでも実はPLATEAUを使ってビルの遮蔽を行っています。しかし、ビルモデルの位置については事前に計算して手動で合わせ、さらにアプリ内に配置した状態でビルドを行っています。 上記のプロトタイプではこの方法を使っています。その様子が分かりやすい動画も投稿してみました↓ しかし、これではせっかくのGeospatialAP

    Cesium for UnityとPLATEAUを連携して、GeospatialAPIで位置合わせを行う
  • Geospatial APIを用いたロケーションベースARのイテレーションを効率的に回す方法

    概要 2022年5月に行われたGoogle I/Oにて、「Geospatial API」というVPS(Visual Positioning Service/System)が発表されました。これまでのVPSとは異なり、事前スキャンの必要がなく、さらに精度も高いことから一躍脚光を浴びる存在となっています。 そんなGeospatial APIによって盛り上がりを見せているVPSですが、位置に紐づくという性質上デバッグのイテレーションが回しづらいという問題があります。そこでこの記事では、Geospatial APIと同じARCoreから提供されているRecording & Playback APIを用いて、2回目以降現地に行かずにロケーションベースARのデバッグを行う方法を紹介します。 Recording & Playback APIとは Recording & Playback APIを使ってロ

    Geospatial APIを用いたロケーションベースARのイテレーションを効率的に回す方法
  • Android Studio を利用して C++ のスタティックライブラリ(.a)をUnity(C#)向けに作成する

    なにが学べるの? Unity for Android の環境向けに、Android Studio を利用してスタティックライブラリを生成、使用するまでの方法を解説します。Android 向けにライブラリが公開されているものの、Unity 向けにまだ公開されていないような場合に、自身で Unity 向けにライブラリを使用するような場合に有用な知識です。 今回の知識を利用して、V8 エンジンを Android で動かしてみました。 環境 Windows 10 Pro (ver. 21H2) Android Studio 2021.2.1 Unity 2020.3.25f1 Architecture - ARM64 GitHub で公開 今回の記事で実装したものを GitHub にあげてあるので、実際に動くもので確認したい方は clone してお試しください。 Android Studio で空

    Android Studio を利用して C++ のスタティックライブラリ(.a)をUnity(C#)向けに作成する
  • C++ライブラリ(DLL)をUnity(C#)向けに作成して利用するシンプルな方法

    なにが学べるの? 自分自身でC++の実装を行うことはあまりないと思いますが、例えば、Unity向けのDLLが提供されていないなどの場合、そのラッパーをC++で記述してDLLとの橋渡しを自分で実装するというケースはあるでしょう。この記事では、そうしたC++を作成しそれをUnity上で扱うためのTipsを紹介します。この記事を通して、どうやってDLLを作成するのか、どうやってそれを利用するのかの知識が得られます。そうした際の参考になれば幸いです。 環境 Windows 10 Pro (ver. 21H2) Visual Studio 2019 (ver. 16.11.13) Unity 2020.3.25f1 Architecture - x64 C++プロジェクトを作成する まずはVisual StudioでC++プロジェクトを作成しましょう。Visual Studio 2019を開き、以下

    C++ライブラリ(DLL)をUnity(C#)向けに作成して利用するシンプルな方法
  • Unityの機能をawait可能にしてasync / awaitについて学ぶ

    概要 C#では非同期処理として async / await の仕組みが用意されています。しかし実はこの機能、コンパイラによってコードが変更され、コールバックという形に変換されて動作するようになっているのです。そのため、知らずに使っていると思わぬところでハマったり、エラーになってしまったり、といったことが起きえます。 今回はそんな async / await の機能の内部を探りながら、最後はUnityの機能を拡張する実装を通して非同期処理を理解していこうと思います。 安原さんと名雪さんのスライドがとても分かりやすく参考になるので、こちらもぜひ読んでみてください。 非同期処理の挙動を確認する 細かい内容に入っていく前に、しっかりと把握していないとどういうことが起きるのかということを確認しておきましょう。 上のスライドにも書かれている以下のメソッドを実行するとどうなるでしょうか? using S

    Unityの機能をawait可能にしてasync / awaitについて学ぶ
  • XRコンテンツで厳禁の処理落ちを軽減! AsyncReadManagerで画像を非同期読み込みする

    概要 AsyncReadManagerとは、アンマネージドなネイティブ側の機能を利用したUnityAPIです。これを利用して画像読み込み・表示の処理負荷を減らし、AR/VRの天敵であるFPSを改善します。 複数の画像を、標準のUnity APItexture.LoadImage(bytes))を使って読み込むとメインスレッドを止めてしまうため、プチフリーズ状態になります。これを回避しようというのが今回の記事の主旨です。 実際にAndroid端末で動作させてみたのが以下の動画です。Loadボタン押下時は同期的にすべての画像を読み込んでいるため若干カクついています。一方、LoadAsyncボタンを押した際は AsyncReadManager を使って非同期で画像を読み込んでいるためカクつきが発生していません。 また各テクスチャの読み込み時間もかなり短縮され、Pixel3aでテストしたところ

    XRコンテンツで厳禁の処理落ちを軽減! AsyncReadManagerで画像を非同期読み込みする