2019-09-30 (月)
memo
https://github.com/jsantell/THREE.IK これを使ってみた.
THREE.jsのBoneをそのまま使えるのとインターフェイスがシンプルなので使いやすそうだけど,色々足りなさそう.とりあえずはBoneのZ軸が先端を向いている前提の実装なのと,初期状態が計算時に無視されてるあたりをいじれば動いたので使えそうかも.
この日記はフィクションです.登場する人名・団体名・地名・職業などはぜんぶ架空のものです. なので実際のものとは何も関係がありません. それから,写真のように見える画像はCGもしくは念写によるものです.
memo
https://github.com/jsantell/THREE.IK これを使ってみた.
THREE.jsのBoneをそのまま使えるのとインターフェイスがシンプルなので使いやすそうだけど,色々足りなさそう.とりあえずはBoneのZ軸が先端を向いている前提の実装なのと,初期状態が計算時に無視されてるあたりをいじれば動いたので使えそうかも.
https://github.com/binzume/aframe-xylayout
折返し処理が欲しくなったのでwrapモードを追加したりしてとりあえずCSS Flexbox相当のよく使う機能がだいたい揃った気がする.Flexbox互換にするつもりじゃなかったのでデフォルトの挙動はだいぶ違うけど.
そういえば,JavaScriptのモジュールを動的にimportする場合は,scriptタグのtype="module" いらないのか.
A-FrameのコンポーネントはDOM構築前に登録する必要があるせいで,スクリプトにtype="module" つけるとdefer扱いになってまともに動かなくて残念なのだけど,中でモジュールを読むことはできるので少し便利.
VRMファイルを読んでWebGLでレンダリングしてみる.といっても,THREE.jsのGLTFLoaderに突っ込んで終わりだった.物によってはマテリアル周りの対応が必要っぽいけど,とりあえず表示は一瞬.
アニメーションさせるためにボーンの情報を取得する必要があるのだけど,UnityのHumanoid互換のボーンのリストがuserData.gltfExtensions.VRM.humanoid.humanBones に入ってる.ただ,GLTFLoaderで読み込んだ後のオブジェクトからはノードIDの情報が失われてるので困る.glTFのjsonデータの中を見ればIDからオブジェクト名がわかるので,さらに名前から探し出すようにする.
アニメーションは一旦BVH形式のデータを読み込んでみる.BVHは右手座標系なのでOpenGLでそのまま使えると思ったけど,多くのデータが+Xが左で+Zが前になっていた.あと単位もメートルじゃないことが多い.この辺はファイルフォーマットでは規定されてないみたいだった.ボーン名の作法は何通りかあるっぽいけど,とりあえず大雑把に変換テーブル用意.
とりあえず,公式のモデルのニコニ立体ちゃんを読み込んでみた.
BVHはもともとモーションキャプチャ用に作られたものだけあって,各ボーンのパラメータを毎フレーム並べただけの単純なデータなので,扱いは楽だけど拡張性はあまり無さそう.使わないCHANNELにデータ入れて無理やり何かすることはできそうだけど.
眠い...
Multi-channel signed distance field generator
これ使ってみたけど,SVGのフォーマットの制約が厳しいので気をつける必要あった.pathが一つしか使えなのは書いてあるとおりだけど,さらにg要素がネストしてると動かなかったり,transformも全て無視されてるので,Inkscapeとかで作ったsvgは少し加工しないと使えないことが多い.
左の画像が生成された32x32のテクスチャ画像で,右がレンダリング結果.
アイコンとかのテクスチャサイズ小さくできるので良さげ.
だいぶマシになった.
だるいけど痛みは少しマシになった気がする.痛み止めの薬が効いてるだけかもしれないけど.
https://github.com/binzume/webvr-skymap
一昨日の続き.惑星を表示するようにする.角速度だけ補正した円軌道にしてるので冥王星の軌道はちょっと怪しいけど,準惑星だし良いか.公開されてる軌道要素入れて計算したらすんなりそれらしい場所に表示された.
36.9℃.動けないこともなさそうだけど,昨日は痛みであまり寝れなくてとても眠いので寝る.
https://github.com/binzume/webvr-skymap
地球の歳差運動を考慮するようする.長い期間でだいたいそれらしく動くようになった.恒星の固有運動はデータサイズ増えてしまうので一旦入れないでおく.
なんか痛みがひどくなってきたので,痛み止めをもらってくる.レントゲン撮った.
原因になりそうな異常は見つからず.
37.1℃.ずっと同じような値なのでこれが平熱な気もしてきた.
最近,仕事から帰ってすぐ寝て,夜中に目が覚めて寝たり起きたりしてるせいで日付感覚がよくわからなくなってる気がする.
病院で薬をもらうついでに,なんか右脇腹が痛い気がするので診てもらう.
診察時に念の為体温測ったら37℃...そういえば,8月下旬に熱出てからしばらく微熱が続いたりしていた.まだ治ってなかったのかも.
微熱続いてるのも良く無さそうなので,念の為血液検査と尿検査と,腹部エコーを取るために八重洲まで行く.
検査結果,CD-ROMで渡されて自分で持ってくのか.サイズ的にはインターネットで1分もかからず送れそうだけど難しいのかな...
とりあえず病院に持っていく前に中身を確認しておく.(前に膝のMRIを撮ったときと同じ流れ)
ひさしぶりにautorun.infが入ったCD-ROMを見た.というかCD-ROM自体を久しぶりに見たような気がする.画像フォーマットはDICOMというやつで,医療系の画像フォーマットとしては一般的なものっぽい.中身覗いたら無圧縮のピクセルデータとメタ情報が色々入っていた.
ついでに,前回の薬局での会計間違ってたと連絡が来てたの思い出して領収書を探してから薬局に.
疲れたけど検査だけで何も良くなっていないというか,歩きまわったぶん体調が悪化した一日だった.
Oculus Questのブラウザ,ハードウェア的にはサポートされてるサイズなのに解像度が高い動画再生できないのなんでだろと思ってたのだけど,Android版Chromeがテクスチャの解像度を4096x4096に制限してるのか.WebGLのMAX_TEXTURE_SIZEも4096になっている.
Firefox Realityだと再生できるしWebGLでも高解像度のテクスチャ作れる.
メモ
https://blog.google/products/google-ar-vr/bringing-pixels-front-and-center-vr-video/
最近YouTubeとかで見かけるフォーマットはただのキューブマップじゃなくてEqui-Angular Cubemapというやつらしい.