【UE4】Widget Interaction Component の衝突判定を自前で処理する

3DUIとのインタラクションを可能にする Widget Interaction というコンポーネントがあります。

VRプロジェクトでよく使用され、 VR Template ではモーションコントローラーから3DUIへインタラクションの実装として使用されています。

docs.unrealengine.com


デフォルトではコンポーネントのプロパティで設定されたチャンネルでレイトレースを行ってその結果を参照するようになっています。

f:id:shuntaendo:20211123113147p:plain


Widget Interaction Component には Set Custom Hit Result という関数が用意されており、こちらを使うことで自前で衝突判定を行った結果を参照させることができます。

まず Widget Interaction Component のプロパティから Interaction SourceCustom に設定します。

f:id:shuntaendo:20211123113937p:plain


次に自前で衝突判定する処理を作り、その結果を Set Custom Hit Result に渡してあげます。
デフォルトと同じ Line Trace ですが、これでこちらの結果を参照してくれるようになります。

f:id:shuntaendo:20211123114137p:plain


Line Trace 以外を使いたい場合や、トレースの過程が複雑な場合などに活用できるかと思われます。

また、こちらを使用するに至った経緯ですが、
UE4.27.1 の VR Template プロジェクト(OpenXR)ですと、デフォルトのレイトレースがうまく機能してくれませんでした。(角度によって当たったり当たらなかったり)

開発環境依存の問題かなど十分に検証できていないので原因はわかりませんが、もしうまくいかない場合はこちらの方法を試していただけたらと思います。






UE Version : 4.27.1-17735300