2022/7/19(火)

OpenXRのコードのC++化が(出来る範囲で)完了した。OpenXR-Hppはちょこちょこ未完成さを感じさせるところがあり、Vulkanに対するVulkan-HppのようにOpenXRに同梱するまでにはまだちょっと至らないなというのが理解できた。

xrLocateViewsに対応するxr::Session::LocateViewsという関数があるのだが、これの引数がxr::ViewではなくXrViewのままになっている。こういうのがたまにいる。ほとんどの関数はちゃんとC++化されているのだが、一部の関数は実装的に機械的な置換が難しいせいかC言語形式だ。

それから拡張機能関係に若干の難あり。例としてxrGetVulkanGraphicsRequirements2KHRに対応するxr::Instance::getVulkanGraphicsRequirements2KHRなどがあるのだが、こうした拡張関数はDispatchLoaderとやらを指定しないと使えない。どういうことかというと、まず大本のC言語APIであるOpenXRにおいて、こうした拡張関数はxrGetInstanceProcAddrで動的に読み込んで実行することになる。プラットフォーム次第で使えないのだからある種当然といえる。で、この読み込みには当然XrInstanceなどが必要になる。なのでそうした読み込みに必要な情報をDispatchLoaderとしてあてがわなければいけない訳だ。事情はまあ分かるがもうちょっとどうにかならんものか。

他こまごまとした不満点は

  • #define XR_NULL_ASYNC_REQUEST_ID_FB 0 を定義しないとコンパイル時になんか死ぬ
  • 他のヘッダとのインクルードの順番次第でコンパイル時に死ぬ

このへん。

あとこれはさすがに過度な要求だとは思うが、Vulkan-Hppとの連携もできたら嬉しいと思う。今は中間項として例えばvk::Instanceを得るためにVkInstanceを挟んでいる。


今週の胎界主を読んだ。

「今のたまき気に入ってるし~」はジョークとしてもいろいろ酷い。純子が話数を重ねるたびにみんなから嫌われてる必然性を強化していくの、なに?

ルーサーはちゃんと子供の身の安全を心配している。こういうあたりほんといいやつというか常識人。

たっちゃんめっちゃちゃんと球体使いしとる…


ザ・フォーククルセイダーズにはまっている。「あの素晴らしい愛をもう一度」「悲しくてやりきれない」あたりは前から知っていたが、新しく知った曲として「花の香りに」「七色の光の中で」「花嫁 さらば恋人」が気に入った。


今日解いた競プロの問題。

ABC247-F: 解説AC。さすがに各サイクルに関する算出方法は自力で考察した。

単純に1~Nを頂点とし、各カードに対応して辺を張ったグラフを作成する。いい感じに辺を選んでどの頂点も含まれるようにしようということになる。任意の頂点から無向辺が2つ伸びており、サイクルの集合になる。サイクル長1(自己辺)やサイクル長2(多重辺)もあり得るので注意。あとは各サイクル長(最大N)について有効なパターン数を調べて全部かけるだけ。

以前に見た目上は少し似ているABC260-Eを解いたが、あちらは「2つ組」であることはあまり本質ではなかった。それに対し、今回の問題は割と「2つ組」であることが本質となる問題だった。

1~Nまでの整数を2つずつ並べてカード通りに線で結ぶくらいのことはしたんだけどなー。問題で自己辺・多重辺のないグラフを見慣れすぎてそうでないグラフが頭になかったかもしれない。その辺の認識が凝り固まってなければもっとシンプルに考えられた気がする。実際diffはあまり高くないし。


すらりんラボのVulkan入門本4冊(Vulkan Programming 1~3 とVulkan Raytracing Program 1)を電子本でポチった。モデルのスキン変形に関する有益な情報が得られるかもしれないと思って買ったのだが、そこまで丁寧な感じの解説ではなかった。実装を並べてある部分はかなり良いと思う。でも個人的にはシンプルで具体的な数値例と計算例を示してほしかった。まあ、この本はVulkan全体に関する解説情報としてまた別の機会に役立てよう。

英語であまり頭に入らないのでしり込みしていたが、やはりスキニングについてはKhronos Group公式のglTF Tutorialを目を皿のようにして読み込む方が個人的には性に合っていそう。

https://github.com/KhronosGroup/glTF-Tutorials/blob/master/gltfTutorial/gltfTutorial_020_Skins.md

Categories: