hololens整理

来源:互联网 发布:高速令牌传递网络 编辑:程序博客网 时间:2024/06/02 16:07

点击remove按钮关闭程序:这东西很像电脑的应用窗口

Adjust:调整这个app的大小位置的,所有的2dapp都是这样的

—————————————————————————————————————————————————————————

1创建一个随视线移动的光(凝视)

· 让物体感知凝视

· 如何凝视更小的物体

· 方向标

HoloLensCamera.prefab:设置好摄像机

InputManager.prefab:输入管理器,用来管理视线、手势等输入源。 

Cursor.prefab:工具包自带光标之一,主要实现凝视物体时,出现附着圆环,否则光标发亮。

本节完成,测试运行!

—————————————————————————————————————————————————————————————

· 凝视被感知后,给用户一定的反馈(凝视、点击等操作后,缩放Cube)

进入凝视放大1.25倍,退出还原;点击放大1.5倍

public class Cube210 : MonoBehaviour, IFocusable, IInputClickHandler

{

    // Cube原始缩放

    private Vector3 origScale;

    void Start()

    {

        // 保存Cube原始缩放

        origScale = gameObject.transform.localScale;

    }

    /// <summary> /// 凝视进入事件 /// </summary>

    public void OnFocusEnter()

    {

        // 凝视进入后,Cube放大1.25

        gameObject.transform.localScale = origScale * 1.25f;

    }

 

    /// <summary>

    /// 凝视退出事件

    /// </summary>

    public void OnFocusExit()

    {

        // 凝视退出后,Cube还原缩放

        gameObject.transform.localScale = origScale;

    }

/// <summary>

 /// 单击事件

/// </summary>

    public void OnInputClicked(InputEventData eventData) 

 {

        // 点击后,Cube放大1.5 

gameObject.transform.localScale = origScale * 1.5f;

    }}

——————————————————————————————————————————————————————————————————————————————————————————————————————————————————

2点击CubeCube坠落(手势识别)

在点击方法里给Cube加刚体,点击掉落

using HoloToolkit.Unity.InputModule;

using UnityEngine

public GameObject gameobject;

public void OnInputClicked(InputClickedEventData eventData)

if (!this.GetComponent<Rigidbody>())
{
var rigidbody = this.gameObject.AddComponent<Rigidbody>();
rigidbody.collisionDetectionMode = CollisionDetectionMode.Continuous;//刚体检测方式 =碰撞检测模式.连续

}

将脚本拖拽至Cube 

——————————————————————————————————————————————————————

点击按钮,播放动画

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class bo : MonoBehaviour {
    private Animator _animator;

    void Start () {
        _animator = this.GetComponent<Animator>();
    }

void Update () {
        if (Input.GetKeyDown(KeyCode.R))
                  {
                        _animator.SetTrigger("k");
                }
    }
}







- 是否已检测到手势动作 
- 使用导航手势来旋转物体 
- 手势超出检测区域的处理 
- 手势移动物体

IInputClickHandler:点击事件处理接口,需要实现OnInputClicked(InputEventData eventData) 方法 


——————————————————————————————————————————————————————————————————————————————————————————————————————————————————

3语音命令控制Cube坠落(声音)

打开Player Settings…面板,在Publishing Settings>Capabilities中,勾选Microphone

public class Cube : MonoBehaviour, IInputClickHandler {

// Cube原始位置

Vector3 originalPosition;

void Start()

{

// 保存Cube原始位置

originalPosition = this.transform.localPosition;

}

public void OnInputClicked(InputEventData eventData)

{

OnDrop();

}

// 重置Cube位置

public void OnReset() {

// 删除Cube的刚体,取消掉落效果

var rigidbody = this.GetComponent<Rigidbody>();

if (rigidbody != null) { DestroyImmediate(rigidbody);

}

// 重置Cube位置

this.transform.localPosition = originalPosition;

}

// Cube掉落 public void OnDrop()

{

// Cube增加刚体,产生掉落效果

if (!this.GetComponent<Rigidbody>())

{

var rigidbody = this.gameObject.AddComponent<Rigidbody>();

rigidbody.collisionDetectionMode = CollisionDetectionMode.Continuous;

} } }

个人喜好,方便管理..空的GameObject,命名为:”Controller” +KeywordManager.cs(设置OnClick

在Inspector面板修改keyword Manager.

Keyword对应的语音命令,Response()面板中设置响应的对象及方法


- 语音命令(目前仅支持英文 
- 操作麦克风

——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

4Cube变成音乐盒,随着Cube的坠落,声音消失(空间声音)

Edit > Project Settings > Audio”,将Spatializer Plugin修改为:MS HRTF Spatializer

找到声音文件:Vocals.wav”, 将其拖拽到Cube上,点击Cube,调整Audio Source组建: 

spatialize勾选

play awake勾选

Loop勾选

Spatial Blend :调整声音的3D效果:1

max distance:20

Volume Rolloff :音量衰减模式

- 感受空间声音 
- 感受声音被遮挡的效果

______________________________________________________________________________________________________________________________________________________________________________________________________________________________________

5扫描房间,将Cube放置在房间地面、墙体等地方(空间映射)

找到文件:SpatialMapping.prefab” 
拖拽到Hierarchy 根级

空间映射完成,测试运行!

找到文件:WorldAnchorManager.cs” ,拖拽到Controller上 
找到文件:TapToPlace.cs” ,拖拽到Cube 上 
单击Cube,在Inspector面板上,去掉Cube (Script)的勾选(否则在点击Cube时会出现异常)

放置物体完成,测试运行!

注意:需要等待空间映射效果出现后,才能放置Cube



· 完成空间扫描

· 替换三角面材质

 

SpatialMapping.prefab:内置空间映射组件

WorldAnchorManager.cs:内置空间坐标管理器
拖拽到Controller 
TapToPlace.cs:单击并放置物体到空间的脚本,内置的

拖拽到Cube  

单击Cube,在Inspector面板上,去掉Cube (Script)的勾选(否则在点击Cube时会出现异常)

放置物体完成,测试运行!

______________________________________________________________________________________________________________________________________________________________________________________________________________________________________

小结

Holograms 101 是整个官方教程系列中最重要的一篇,要能达到闭着眼睛都能完成。

注意:需要等待空间映射效果出现后,才能放置Cube

 

0 0
原创粉丝点击