Portfolio

Portfolio

ポートフォリオを一から作り直しました。
前回は自分の部屋を3Dにしたものでしたが、今回は自分の机をそのまま3Dにしています。
前のポートフォリオの記事からちょうど1年くらいですね。w

3D表示

3D表示を押すと、こんな感じで自分の作業デスクが表示されます。

3D表示

机の上の4画面(32インチ / 24インチ / iPad / iPhone)には、画像を貼っているわけではなく、
本物のReactのアプリをそのまま映しています。なので触れます。w

遊び心

自分の机

一番のこだわりは、自分が実際に使っている机をそのまま再現したところですね。
モニターも、キーボードも、iPadも、実物に寄せて作っています。
キーボードはタイピングに合わせて1キーずつ沈みます。※ 誰も気づかないと思うけど。w
Blenderと睨めっこしている時間が、一番長かったかもしれません。。。

VS Codeの中のChat

24インチのモニターに映しているVS Codeですが、ターミナルが動きます。
chatと打つと、AIと話せるようになっています。
このPlogのチャットと同じようなノリですね。w

iPadの中身

iPadには、勉強に関するものは一切入っていません。
写真とYouTubeしか詰め込んでいないです。w
実物もだいたいそんな感じなので、正直に再現しました。。。

軽量版

3D表示はやっぱり重たいので、テキスト主体の軽量版も用意しました。
入口でどちらを見るか選べるようにしているので、スマホの方は軽量版のほうがいいと思います。

構成

フロント側はAstro+React+Three.jsで描画しています。
バックエンド側はLaravelで、さっきのAIChat機能を実装しています。

てこずった部分

iOS Safariのメモリ制限

一番大変だったのはこれですね。
PNGのテクスチャが185枚あるのですが、GPU上でRGBA8に展開されてVRAMを圧迫してしまい、
iPhoneで見るとタブごと落ちる状態でした。。。
テクスチャをKTX2(BasisU)に圧縮する変換パイプラインを組んで、GPUメモリを約1/5にして解決しました。

iOSだけCSS3Dの画面がズレる

同じくらい苦しんだのがこれです。
WebKitはpreserve-3dの入れ子が合成レイヤ化した瞬間に遠近を落としてしまうらしく、
iOSだけ画面がズレて表示されていました。
遠近・カメラ・姿勢を1枚のmatrix3dに畳む、自前のCSS3Dに作り替えて解決しています。

iOSにはほんとに泣かされました。。。w