这个随便包括: gaze,gestures,voice input,spatial sound 和 spatial mapping。
准备:去看一下HoloLens开发入门。必须的软件。开发设置等等。
下载工程:地址: https://docs.microsoft.com/zh-cn/windows/mixed-reality/using-visual-studio#enabling-developer-mode.
"Holo" world
1.解压下载下来的文件,找到Origami,我把文件夹Copy到了D盘中
2.启动Unity, 选择Open, 找到Origami文件夹。加载完毕后创建新的场景,命名Origami。
3.在层级面板(Hierarchy Panel),选中Main Camera,设置位置 0,0,0。找到Clear Flags 设置为Solid Color.
4.设置Background R,G,B,A 都为0.
5.创建新的空物体,重命名为OrigamiCollection。
6.在Holograms文件夹下,找到Stage,Sphere1,Sphere2 都放到OrigamiCollection下面。作为它的孩子。
7.删除原来的Directional Light。 添加Holograms中的Lights到Hierarchy Panel中。
8.设置OrigamiCollection的位置 0,-0.5,2.0。点击Play按钮预览一下。
9.导出工程到VS中,如果不明白,请参照上一节。
Gaze 事例。
1.接着"Holo" world 工程。
2.在Holograms文件夹中找到 Cursor预制物,拖拽到Hierarchy Panel中为根目录一级。
3. 在Project面板中右键,选择C# Script. 命名为WorldCursor.不需要添加文件后缀。
4.在 Hierarchy panel中选择Cursor, 拖拽WorldCursor脚本到 Inspector panel。
5.双击脚本,进行代码编辑如下:
public class WorldCursor : MonoBehaviour
{
private MeshRenderer meshRenderer;
void Start()
{
meshRenderer = this.gameObject.GetComponentInChildren<MeshRenderer>(); //获得当前对象显示的Mesh
}
void Update()
{
var headPosition = Camera.main.transform.position; //当前相机的位置
var gazeDirection = Camera.main.transform.forward;//当前相机的正方向
RaycastHit hitInfo;
if (Physics.Raycast(headPosition, gazeDirection, out hitInfo)) //从相机当前位置,沿着相机的正方向(forward)发射摄线,射线是否hit到物体。
{ //如果hit到物体
meshRenderer.enabled = true; //设置Cursor可见
this.transform.position = hitInfo.point; //设置Cursor的位置
this.transform.rotation = Quaternion.FromToRotation(Vector3.up, hitInfo.normal); //设置Cursor的Rotation
}
else
{
meshRenderer.enabled = false; //设置Cursor不可见。
}
}
}
6.导出到VS中,在模拟器或者HoloLens中运行。