IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> MRTK开发LeapMotion -> 正文阅读

[游戏开发]MRTK开发LeapMotion

1.资源导入

导入SteamVR

MRTK:Microsoft.MixedReality.Toolkit.Unity.Foundation.2.7.2.unitypackage

LeapMotion:Core.unitypackage

MRTK: Microsoft.MixedReality.Toolkit.Unity.Examples.2.7.2.unitypackage

解决报错:删除报错的代码

2.集成MRTK和LeapMotion

MixedReality->Toolkit->Utilityies->LeapMotion->IntegrateLeapMotionUnityModules

3.添加LeapMotion数据提供程序

3.1打开HandInteractionExamples场景->Hierarchy的MixedRealityToolkit身上的MixedRealityToolkit.cs右侧的Clone,克隆该脚本,然后Hierarchy的

MixedRealityToolkit身上的MixedRealityToolkit.cs上就是新克隆的,可更改

3.2Input-> Clone 自动改成新的Profile

InputDataProviders->AddDataProvider->Type->LeapMotionInput->LeapMotionDeviceManager ??

Clone->选择不同的模式:放在桌子上/头盔

?

4.安装

Leap_Motion_Installer_v4-2020-release-updates_public_win_x64_4.1.0+52211_ah1889.exe

5.应用

5.1近距离交互

ObjectManipulator.cs

ManipulationType:单手、双手

AllowFarManipulation是否允许远距离

OneHandedManipulation 旋转模式

Constraints约束管理器 EnableConstraints使用约束管理器

ConstraintManager.cs约束管理器 可以添加约束条件

AutoConstraintSelection自动添加,选择之后约束脚本自动添加到物体上

ManualConstraintSelection手动

FixedRotationToWorldConstraint.cs ?HandType选择哪只手约束哪只手

Physics:物理效果,需要添加Rigidbody

ManipulationEvents?事件

NearInteractionGrabbable.cs

CursorContextObjectManipulator.cs 显示光标

5.2关闭跟随摄像机的显示面板

MixedRealityToolkit->Diagnostics->EnableDiagnosticsSystem去掉勾选

6.新建MRTK场景

6.1??MixedReality->Toolkit->Add to?Scene and Configure

6.2 配置MixedRealityToolkit.cs 选择新建的

NewMixedRealityToolkitConfigurationProfile

ExperienceSettings -> TargetExperienceScale 可改Room/Standing

Camera->Clone->DisplaySettingsProviders->QualitySetting ->VeryHigh

6.3让物体可抓取、移动、旋转、缩放

添加ObjectManipulator.cs自动添加约束管理器ConstraintManager.cs

Add?Near Interaction Grabbable 允许近距离抓取

7.BoundsControl组件 根据boxcollider显示包围框 选中包围框上的点进行移动、缩放、旋转

TargetObject

Activation?什么情况下显示

BoundsOverride 把碰撞盒放进去

BoxPadding?修改显示框的大小

FlattenAxis?在指定轴对包围框挤压

UniformScaleOnFlattenedAxis 是否统一缩放

Visuals:

ScaleHandlesConfiguration:缩放操纵柄

LinksConfiguration 包围框点与点之间的连线

ShowWireframe是否显示这个连线

ProximityConfiguration手或者Point接触到物体时包围框的点的效果

ProximityEffectActive是否启用该效果

BoxConfiguration

8.缩放约束

ConstraintManager.cs -> Add Constraint to GameObject ->MinMaxScaleContraint

Relative To Initial State 勾选的话,每次缩放,以上次缩放的大小为基础,继续缩放,不勾选,以原始大小为基础进行缩放

9.PressableButton组件

PressableButtonHoloLens2.cs检测手,不能检测射线

PhysicalPressEventRouter.cs?检测Interactable.cs的事件

Interactable.cs检测射线、语音识别

General->SpeechCommand:在MixedRealityToolkit->Input->Speech->Clone->

Add a New Speech Command

Profiles

Events

OnClick仅支持远距离交互需要使用PhysicalPressEventRouter.cs,其他事件不影响

Receivers

ButtonConfigHelper.cs

OnClick与Interactable.cs的OnClick关联,删除就会一起删除

10.创建Theme与States

10.1创建Theme?

Project面板Create->MixedReality=>Toolkit->Theme,将创建的State拖到Theme的States里面

在State里添加状态

将Theme拖动给物体Interactable?General States

在物体里面编辑 ThemeRuntime?->InteractableScaleTheme Easing√

10.2创建State

Project面板Create->MixedReality=>Toolkit->State

11.Cube按钮

? ? ? 11.1 PressableButton近距离点击按钮

给物体Cube添加PressableButton.cs, Add NearInteractionTouchable component

MovingButtonVisuals?移动的按钮Cube托上去

双击Cube,

DistanceSpaceMode World 最远距离就是MaxPushDistance的位置

浅蓝 StartPushDistance控制,开始点击的动画距离

深蓝 MaxPushDistance控制,最大的移动距离

黄色PressDistance,执行Press事件的距离, DistanceSpaceMode?Local模式

离StartPushDistance近才能触发,World模式远也能触发

11.2 Interactable.cs远距离 触发按钮

SpeechCommand添加一个语音关键词

Profiles

Traget 拖入Cube?,CreateandAssignNewTheme,ThemeRuntime选择

ScaleOffsetColorTheme,

远距离事件

Receivers ->AddEvent ->EventReceiverType ->InteractableOnPressReceiver,

InteractionFilter?->FarOnly

? ? ?11.3 OnClick?远近距离都使用

删除之前添加的Press/Release上的声音事件

在Interactable的OnClick添加点击事件,此时,只是远距离可以触发。

添加PhysicalPressEventRouter.cs,将Cube拖入RoutingTarget,在

PressableButton.cs的Events添加事件,拖入Cube,

PhycalPressEventRouter.OnHandPressTouched/ PhycalPressEventRouter.OnHandPressUntouched/ PhycalPressEventRouter.OnHandPressTriggered/ PhycalPressEventRouter.OnHandPressCompleted

12.让TextMeshPro支持中文:

Window?-> TextMeshPro -> FontAssetCreator

SourceFontFile拖入字体文件,字体文件不能包含中文

AtlasResolution 8192*8192

CharacterSet改为CharactersfromFile,拖入中文文本

GenerateFontAtlas

Save

将新生成的字体给TextMeshPro

13.和UGUI交互

将Canvas转为MRTK支持的

ConverttoMRTKCanvas

AddNearInteractionTouchableUnityUI

NearInteractionTouchableUnityUI ?-> EventsToReceive ->Pointer

14.跟随摄像机

跟随物体上添加FollowMeToggle.cs

15.TouchInteraction.cs

Cube:

HandInteractionTouchRotate.cs:将cube拖入TargetObjectTransform

NearInteractionTouchable.cs

16.PinchSlider:3D滑动

SliderTrack:SliderAxis轴向;SliderStartDistance起始点;SliderEndDistance终点

17.听写

DictationExample场景

在MixedRealityToolkit->Input中有WindowsDictationInput,添加

LeapMotionDeviceManger

运行,点击StartRecording,开始听写

DictationPanel->DictationHandler.cs->RecordingTime一次听写时间

连续听写:

RecordingTime 改为0,运行听写报错,通过报错位置,修改

WindowsDictationInputProvider.cs

Microphone.Start(deviceName, false, recordingTime, samplingRate)中的false改为true

RecordingTime改为非0.就会连续听写,但仍然手InitialSilenceTimeout和

AutiSilenceTimeout限制

事件触发:

OnDictationHypothesis 说话时一直触发

OnDictationResult说话停顿时触发

OnDictationComplete说话停止Timeout之后触发,Microphone.Start??false才会执行?

OnDictationError

18.关闭/启用手射线、抓取、戳 功能

DisablePointersExample场景

将DefaultMixedRealityToolkitConfigurationProfile改成新建的

NewMixedRealityToolkitConfigurationProfile

Input添加LeapMotionDeviceManager

Interactable.cs Receivers ?OnSelect?OnDeselect

19.物体跟随手指关节点

PointerResultExample场景

将DefaultMixedRealityToolkitConfigurationProfile改成新建的

NewMixedRealityToolkitConfigurationProfile

PointerHandler.cs OnPointerClicked

点击在面板上,生成方块

HandJointChaserExample场景

将DefaultMixedRealityToolkitConfigurationProfile改成新建的

NewMixedRealityToolkitConfigurationProfile

RightHandChasers->?IndexChasers/?MiddleChasers/?RingChasers/?PinkyChasers/?

ThumbChasers/?OtherChasers下的子物体们的->SolverHandler.cs->

TrackedTargetType->HandJoint右手的

TrackedHandness?->Right

Left Hand Chasers左手的

物体跟随关节

20.TextToSpeechExamples场景

文本转语音

需要发布UniversalWindowsPlatform出来才行

21.滚动对象容器

ScrollingObjectCollection场景

换成NewMixedRealityToolkitConfigurationProfile

新建空对象GameObject,添加ScrollingObjectCollection.cs,

ScrollDirection设置上下还是左右滚动

Pagination设置CellsPerTier几行/TiersPerPage几列/PageCell模型大小

?在GameObject自动生成Container和ClippingBounds,?在ClippingBounds范围内的渲染,其大小由PageCell控制

在Container创建滚动模型Cube,调整Cube位置,让ClippingBounds能包围Cube,共创建3个Cube,调整位置,Cube超出ClippingBounds自动隐藏

移除Cube的boxcollider

在GameObjec下创建空物体FrontPlate,添加Interactalbe.cs,

NearInteractionTouchable.cs,Boxcollider

NearInteractionTouchable.cs Fixed

Boxcollider拖动到NearInteractionTouchable.cs的TouchableCollider里面

调整FrontPlate?Pos0.05 -0.05 0 大小0.1

Cube 用MixedRealityToolkit/Standard的shader的材质,移除Cube上的

MaterialInstance.cs,可以将超出部分的模型切割

GridObjectCollection.cs 改数据,需要点击下面的UpdateCollection才能生效

22.MRTK网址:

MRTK2-Unity 开发人员文档 - MRTK 2 | Microsoft Docs

下载包 ?包->MRTK包->资产包->GitHub

注意MRTK与LeapMotion的版本对应:支持的设备概述

23.运行出现HTC的提示框,是因为Input的兼容问题,将ProjectSettings->Player->ActiveInputHandling改为Toth;SteamVR的动作没有写入json

Edit->ProjectSettings->Player->ActiveInputHandling->Both,

Window->Steam VR?Input?->Save and generate

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:42:50  更:2022-09-04 01:44:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/17 3:41:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码