1. 3D对象导入
1.1 Unity3d支持的三维模型格式
| 种类 | 网络 | 材质 | 动画 | 骨骼 |
|---|---|---|---|---|
| Maya的.mb和.mal格式 | √ | √ | √ | √ |
| 3D Studio Max的.maxl格式 | √ | √ | √ | √ |
| Cinema 4D的.c4dl 2格式 | √ | √ | √ | √ |
| Autodesk FBX的.dae格式 | √ | √ | √ | √ |
大部分都采用FBX格式的三维模型
2. 3D对象放置
- MRTK建立了一种以
MixedRealityPlayspace中的Main Camera为中心的三维坐标系,摄像头代表用户的头部. - Unity中的1个单位在物理世界中大约为1米
3. 3D对象操纵
3.1 实现步骤
实现的主要步骤是:
- 添加
Collider组件, 例如:Box Collider - 添加
Object Manipulator (Script)组件 - 添加
NearInteractionGrabbable组件 - 按需(是/否 需要边框)添加
BoundsControl组件
3.2 Object Manipulator (Script)组件
3.2.1 组件功能
- 使用一/两个手实现对象的移动、扩展、旋转
- 可以将对象操纵器配置为控制对象如何响应各种输入。
- 该脚本应适用于大多数形式的交互,例如HoloLens 2关节手,HoloLens 2手射线
3.2.2 组件使用注意事项
- 首先确保向对象添加碰撞器,使其与可抓取边界匹配。
- 要使对象对手势输入的响应更精准,请同时添加
NearInteractionGrabbable脚本。 - 可以通过向对象添加刚体组件,启用对象操纵器的物理行为。
- 可以通过向对象添加操纵约束组件来约束操纵。
3.2.3 组件属性
操纵事件:
- OnManipulationStarted:操作开始时触发。
- OnManipulationEnded:操作结束时触发。
- OnHoverStarted:当手/控制器将可操纵的鼠标悬停在附近或远处时触发。
- OnHoverEnded:当手/控制器将可操作的,接近或远离的鼠标悬停时触发。
用于操作的事件触发顺序为:
OnHoverStarted- > OnManipulationStarted- > OnManipulationEnded- > OnHoverEnded
如果不进行任何操作,您仍然会按照以下触发顺序获得悬停事件:
OnHoverStarted- > OnHoverEnded
3.3 NearInteractionGrabbable组件
功能:向任何具有可碰撞对象的GameObject添加一个NearInteractionGrabbable组件,以使该可碰撞对象接近可抓取对象。
Class NearInteractionGrabbable | Mixed Reality Toolkit Documentation
3.4 BoundsControl组件
3.4.1 功能
- 该BoundsControl.cs脚本提供了在混合现实中转换对象的基本功能。
- 边界控件将在全息图周围显示一个框,以指示可以与之交互。盒子角落和边缘上的手柄允许缩放,旋转或平移对象。
- bounds控件也会对用户输入做出反应。例如,在HoloLens 2上,bounds控件响应手指的接近程度,提供视觉反馈以帮助感知与对象的距离。
3.4.2 主要组件属性
3.4.2.1 Activation behavior属性
有几个选项可以**边界控制接口:
- 在开始时**:一旦场景开始,边界控制就可见。
- 近距离**:当关节的手靠近物体时,边界控制变得可见。
- 指针**:当指针指向边界时,边界控制变得可见。
- 由接近和指针**:边界控制变得可见时,它是由一个手射线指针或一个铰接的手接近对象。
- 手动**:边界控件不会自动可见。你可以手动操作
3.4.2.2 Bounds override属性
对于复杂对象,自动边界计算的行为可能不符合预期。使用现有的BoxCollider(甚至在子对象上)手动确定边界控制的边界
3.4.2.3 Visuals属性
当前的边界控制提供配置对象选项为以下功能:
- Handles:Scale handles/Rotation handles/Translation handles
- Links / Wireframe
- Box display
- Proximity effect
HoloLens2 style得边框属性风格: