Aqoole_Hateenaの技術日記

vulkan+raytraceで色々描いてます

3Dオブジェクトをタッチしているかの判定方法

結論

カメラーオブジェクトのベクトルとカメラータッチ位置をワールド座標に変換したベクトルの内積を計算し、1に近ければタッチしていると判定

補足

点と平面の距離を計算して、その距離が0に近ければ、なども考えたが、内積を考えるのが速そう。
Unityであれば、Rayを飛ばすという方法があるらしい。
クリック(スマホではタップ)したゲームオブジェクトを判定する方法 | ソフトライム
3D空間でタッチした位置というのは、1点に定まらないので、カメラータッチ位置の直線上にオブジェクトがあるかどうかを判断するしかないと思う。
レイトレーシングの構造体(AS)を準備しているのであれば、判定するだけのパイプラインを作成してもよいかもしれない。
オブジェクトが重なったときに前面のものだけタッチしているかどうかを判定したければ、空間上のオブジェクトをすべて認識している必要があるので、
レイトレーシングアーキテクチャーを使用するのがよさそうか。