Unreal VSP VRKit 底层交互

VRKit

0. FVRKitInteractionInputProcessor

  • VRKit \ Private \ Framework \ VRKitInteractionInputProcessor.h
    继承 IInputProcessor //Slate 输入处理程序的接口
bool FVRKitInteractionInputProcessor::HandleKeyDownEvent( FSlateApplication& SlateApp, const FKeyEvent& InKeyEvent )
  • 响应输入 与 世界交互

成员变量: class UVRKitWorldInteraction* WorldInteraction;

1. UVRKitWorldInteraction

  • VRKit\public\VRKitWorldInteraction.h
bool UVRKitWorldInteraction::InputKey(FKey Key, EInputEvent Event)

2. UVRKitInteractor

  • VRKit\Source\VRKit\public\VRKitInteractor.h
(1)
bool UVRKitInteractor::HandleInputKey(const FKey Key, const EInputEvent Event)
  • 成员变量:TMap KeyToActionMap;
    根据输入键的名字,映射 出 FVRKitActionKeyInput(行为类型; 行为状态)

UVRKitInteractionManager
VRKit\public\VRKitInteractionManager.h
void MapHMDKeyAction() //键的名称 与 行为类型绑定
在 这个类 的 Init(); 中掉用,而Init() 又是被 VRKit模块加载的时候被调用。
{ 成员变量 : class UVRKitInteractor* LeftHandInteractor;
class UVRKitInteractor* RightHandInteractor;
}

(2)
  • UVRKitWorldInteraction 中的 委托 OnPreviewInputAction
    VRKit\Private\VRInteraction\VRUI\VRKitUISystem.cpp 界面的调用函数OnPreviewInputAction( )挂在 上述委托上。
(3)SetupComponent

创建组件、Mesh 、材质 调用 UVRKitInteractionManager下面的CreateMotionControllerMesh() 函数。

3. UVRKitInteractionManager

VRKit\public\VRKitInteractionManager.h

(1)

下列函数被 CreateMotionControllerMesh() 函数调用,同时这个函数也作为外部的接口使用。

//获取 用户手柄的数字 静态 网格体
UStaticMesh * UVRKitInteractionManager::GetMotionControllerMesh()
{
// 根据设备类型,返回对应设备的 StaticMesh
UVRKitAssetContainer  AssetContainer; //数据 资源接口 类
if (GetDeviceType() == VRKitDevice::OculusDeviceType)
    return AssetContainer->OculusControllerMesh;
}
(2)设置控制器类型

设置控制器类型:手柄、VRHand、球形。且此函数体内 有一 广播 将类型信息广播出去。

void UVRKitInteractionManager::SetInteractionType(EInteractionType type)

4. UVRKitAssetContainer

VRKit\public\VRKitAssetContainer.h
数据资源VRKitData 蓝图可编辑

  • 声音
  • 材质
  • 网格

5.

咋Q·

你可能感兴趣的:(Unreal VSP VRKit 底层交互)