GodotでのOpenVRのOverlayのやりかた

ども

自分の性格をいつも嘆いてる者です

今回は、昔やろうとしてできなくて投げてたGodotでのVR Overlayができたので、まとめておきます

同じような人が居るとは思えないけど、日本語情報少ないし少しでも足しになればみたいな

 

さて、今回のステージはGodot_v3.2-stable_mono_win64です

なんでもいいと思いますが、たぶん3.2以降な気がするのでそんな感じで

やり方は公式GitHubWikiに書いてあったんだけど

全然気付けなくてうえ~~~んってなってた
github.com
こちらにありますので、ここだけでいい人はこちらで

若干説明足らんなって思ったので日本語で砕いて書いときます

どうやらVR Overlayは板を出す事しかできないようです......


こちらのWikiの通りにプロジェクト作ってOpenVRのアドオンを入れます

入れ方わからないから解説しろって感じならコメントかTwitterにリプください記事書きます

 

ほいでシーンのルートにいつもどおりで適当にSpatialとか置いといてください

それにGDScriptをアタッチ

中身はWikiの通りで

func _init():
	var open_vr_config = preload("res://addons/godot-openvr/OpenVRConfig.gdns").new()
	open_vr_config.set_application_type(2)
	open_vr_config.set_tracking_universe(1)

	var server = ARVRServer.find_interface("OpenVR");
	if !server or !server.initialize():
		return false

application_typeはそのままです

0がOther(?)、1がScene(?)、2がOverlayです

デフォルトは1が入ってるようですね

tracking_universeは、プレイスタイルでしょうか

0が座ってる、1が立ってる、2がRaw(?)

表示位置をこちらで制御する事を考えると1の立ちがいいかもですね

 

あといつもの _ready(): でなく _init(): に書きましょう

これはARVRが初期化する前にapplication_typeを変えないといけないからですね

 

次にViewportを足します
f:id:nozomi_hiragi:20200404142918p:plain
ScriptにAddonの中のOpenVROverlay.gdnsを当てます

Sizeはお好きにですが、正方形になるので、比率変えたいときは後記の方法で対応してください

1:1じゃない場合は内部のControlのRectのScaleとかで比率対応すればいけます

今回はColorRectのScaleで対応
f:id:nozomi_hiragi:20200404143603p:plain

中にLabel入れときました
f:id:nozomi_hiragi:20200404143720p:plain

あとコントローラとかとりたいなってなると思うのでARVR系はいつもどおり入れてたほうが良いと思う(ここらへんWikiで書いてなかった気がした)

f:id:nozomi_hiragi:20200404143905p:plain
こんなかんじのヒエラルキー

こうしとけばコントローラはいつものノリで取れるので、
こんな感じの事をMainのスクリプトに書いとけば、Overlayの板が手に乗ります

onready var viewport = $Viewport
onready var controller = $ARVROrigin/ARVRController

func _process(delta):
	var controller_transform = controller.global_transform
	controller_transform.basis = controller_transform.basis.transposed()
	controller_transform.basis = Basis.IDENTITY.scaled(Vector3(1, 0.5, 1)) * controller_transform.basis
	viewport.overlay_position_absolute(controller_transform)

ここでこねてるのは、OpenVRは左手座標系で、Godotは右手座標系なので、それの対応ですね

あと正方形から比率変えたいときはここで変えときましょう

右手座標系なので掛け順注意(DirectX出身並感)

 

多分コードはこれで以上になると思います


こんな感じになるはず

僕に分かる範囲なら不明点聞いてもらえれば答えれるかと思います

では