トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

react-three/xrのWebARの画面に2DUIを置けるのか→普通における

Three.jsのWebARをやったとき、画面に2DのUIを置けるのか。

vroid hub仮名に使っているかわからないが、WebARモードでは戻るボタンもない。

Googleのやつみたいにいろいろボタンを置けるのか

ReactThreeFiberのXR

素じゃなくてreact three fiber経由でthree.jsを使う。

docs.pmnd.rs

qiita.com

yarn add three @react-three/fiber @react-three/drei
yarn add -D @types/three

でインポート。下のほうはめっちゃ時間かかった。

 

VRやARにはこれも必要

@react-three/xr"

github.com

 

意外とシンプルなARをやっているサンプルが見当たらない・・・

とりあえずこちらのコードを試した。ButtonのVR部分をARにしたらWebARになった。

zenn.dev

localのビルドではHTTPS neededとボタンに出て動作確認できない。

ちゃんとインターネットにupしたら表示されてARもVRもできた。

ARから抜けるときはExitARを押す

VRのほうもQuestで見れた。真っ黒な空間に真っ黒なSphere

2DUIを出す

copilotに聞いた

これを提示してきた

                    <Html position={[0, 0, -5]}>
                        <div style={{ color: '#ffffff', fontSize: '24px' }}>Tap the floor</div>
                    </Html>

positionってある時点で絶対違うだろうと思いつつビルド。

やっぱり空間に表示された。

 

zennの記事をまねしてCanvasの外に<h1>WebARテスト</h1>と書いた。

そしたら普通にAR時も描画された。あ、そうなんだ・・・

AntDesignも置けた。

でもEnterARと被るな~

EnterARボタンカスタム

Enter ARというボタンを変えたい。

入るときはvroid hubのやつみたいにアイコンだけのボタンにしたい。でもお前の端末ではつかえないよという表示するには文字部分いるのかな・・・使えないなら最初から表示しないという風にすればいいのかな・・・

 

最初のzennにも、公式githubにも元の形を保ちながらデザインを変える方法は書いてある。

zennの記事にあったものをそのまま使ったら普通の素のHTMLのボタンみたいなのが画面の左下の隅っこに表示された。

Copilotに聞いたらtailwindを使っているらしい。本当か?

とりあえず普通のCSS?の書き方でデザインを変更してもらった。

これでデザイン変わったし場所も変わった~

ただ、入るときと出るときで様式を変えたり、アイコン使ったりはどうしたらいいのだろう。

寄り道:ARで平面検出(できてない)

ARは平面検出するには、useHitTestというのを使うらしい。

GitHub - pmndrs/react-xr: 🤳 VR/AR with react-three-fiber

これをどこに書いてどう使えばいいんだ!!

reactと関係ない元のAPIのページのサンプル見てもわからない

XRFrame: getHitTestResults() method - Web APIs | MDN

 

ver5.0でのいいサンプルがないよ!って聞いているスレッドがあった

stackoverflow.com

これをまねする。

https://codesandbox.io/p/sandbox/react-xr-usehittest-demo-5iff9?file=%2Fsrc%2FApp.tsx%3A6%2C28-7%2C29

そしたらVSCodeでははエラーは出ないが、yarn build-allしたときにエラーが出て、それをcopilotに伝えて直してもらったらそれはvscodeでエラーが出て・・・わからない

びっくりしたのが

// @ts-expect-error

と書いてあるとこの記述がコメントアウトなのに意味があるということ。消したらエラーが出る。どういう仕組みなんだろう・・・

 

ちなみに平面認識は以下のブラウザで動くみたい

developer.mozilla.org

最後に

react-threeやっている人思ったより少なそう

 <XRButton mode="AR"/>っていう書き方もできるのか

zenn.dev