#创新实训#VR漫游项目汇报3

这一周,成员们按照已经分配好的任务开始了各自的学习安排。以下是学习报告——

##1.总结整理关于游戏优化相关的知识——加强对项目的优化意识

VR游戏的流畅度是影响用户体验的一个很重要的因素,而且,三区的场景模型也是一个有很多面的模型,运行起来会相当占资源,为了解决运行卡顿的问题,就必须在代码以及系统的搭建中时刻注意对资源的合理使用。




接着有针对性的学习了关于不同优化技术的知识



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

##2.基于VRTK 的 Unity HTC Vive模型拼接 (组件的抓取交互)

在 VR虚拟场景中,设想做一个三维物体的展示功能,通过手柄的交互,抓取物体中的一部分,可以各个角度观察。方便在项目展示模块中,模型等资源的展示。

VRTK插件中,提供了VRTK_InteractGrab和VRTK_InteractableObject。当需要物体和手柄进行交互的时候,会使用到该脚本,要将VRTK_InteractableObject脚本绑定到交互的物体上;Interact Grab脚本绑定在【CameraRig】下的手柄游戏对象上,并且手柄游戏对象必须绑定VRTK_ControllerEvents脚本,来监听手柄上按钮的事件,抓取/释放可交互物体等。它监听的是AliasGrabOn和AliasGrabOff事件,当这两个事件被触发,那么本脚本内委托给这两个事件的方法就会被回调。

Touch Options:触摸交互Highlight On Touch:如果勾选,这个对象在控制器触摸它时就会高亮。

Touch Highlight Color:对象被触摸时高亮的颜色。

Rumble On Touch:控制器触碰对象时触发振动反馈,x表明时长,y表明震动强度。(x和y将来会被自定义编辑器代替)。Allowed Touch Controllers:允许交互的手柄,Both表示允许两个手柄任一个交互。

Hide Controller On Touch: 是否覆盖手柄相关设置 (触碰物体时隐藏手柄)。也可以选择总是隐藏或总是不隐藏。

Is Grabbale:决定对象是否能被抓握。


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

##3.进行了项目代码管理软件github的学习

gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。

国内的话推荐码云管理自己的项目,能拥有更多的存储空间以及更快的速度。如果想要系统的学习可以参照菜鸟教程进行学习。或者在git-tower中学习也是可以的。

https://img-blog.csdn.net/20180410141609513?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Nhcm90YWRyZWFt/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

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

##4.Unity使用百度云语音识别


在unity中新建一个脚本

private string token;                           //access_token  
    private string cuid = ";        //用户标识  
    private string format = "wav";                  //语音格式  
    private int rate = 8000;                        //采样率  
    private int channel = 1;                        //声道数  
    private string speech;                          //语音数据,进行base64编码  
    private int len;                                //原始语音长度  
    private string lan = "zh";                      //语种  
   
    private string grant_Type = "client_credentials";    
    private string client_ID = ";                       //百度appkey  
    private string client_Secret = ";                   //百度Secret Key  
   
    private string baiduAPI = "http://vop.baidu.com/server_api";  
    private string getTokenAPIPath = "https://openapi.baidu.com/oauth/2.0/token";  
   
    private Byte[] clipByte;  
   
    /// <summary>  
    /// 转换出来的TEXT  
    /// </summary>  
    public static string audioToString;  
   
    private AudioSource aud;  
    private int audioLength;//录音的长度 
以上是需要声明的变量。其中AppKey和SecretKey需要你注册成为百度的开发者,然后再应用管理中去看
/// <summary>  
    /// 获取百度用户令牌  
    /// </summary>  
    /// <param name="url">获取的url</param>  
    /// <returns></returns>  
    private IEnumerator GetToken(string url)  
    {  
        WWWForm getTForm = new WWWForm();  
        getTForm.AddField("grant_type", grant_Type);  
        getTForm.AddField("client_id", client_ID);  
        getTForm.AddField("client_secret", client_Secret);  
   
        WWW getTW = new WWW(url, getTForm);  
        yield return getTW;  
        if (getTW.isDone)  
        {  
            if (getTW.error == null)  
            {  
                token = JsonMapper.ToObject(getTW.text)["access_token"].ToString();  
                StartCoroutine(GetAudioString(baiduAPI));  
            }  
            else  
                Debug.LogError(getTW.error);  
        }  
    }  
上面这段代码用于获取百度的Token,有了Token才有权使用API。

然后是发送转换请求的方法:
/// <summary>  
    /// 把语音转换为文字  
    /// </summary>  
    /// <param name="url"></param>  
    /// <returns></returns>  
    private IEnumerator GetAudioString(string url)  
    {  
        JsonWriter jw = new JsonWriter();  
        jw.WriteObjectStart();  
        jw.WritePropertyName("format");  
        jw.Write(format);  
        jw.WritePropertyName("rate");  
        jw.Write(rate);  
        jw.WritePropertyName("channel");  
        jw.Write(channel);  
        jw.WritePropertyName("token");  
        jw.Write(token);  
        jw.WritePropertyName("cuid");  
        jw.Write(cuid);  
        jw.WritePropertyName("len");  
        jw.Write(len);  
        jw.WritePropertyName("speech");  
        jw.Write(speech);  
        jw.WriteObjectEnd();  
        WWWForm w = new WWWForm();  
   
   
        WWW getASW = new WWW(url, Encoding.Default.GetBytes(jw.ToString()));  
        yield return getASW;  
        if (getASW.isDone)  
        {  
            if (getASW.error == null)  
            {  
                JsonData getASWJson = JsonMapper.ToObject(getASW.text);  
                if (getASWJson["err_msg"].ToString() == "success.")  
                {  
                    audioToString = getASWJson["result"][0].ToString();  
                    if (audioToString.Substring(audioToString.Length - 1) == ",")  
                        audioToString = audioToString.Substring(0, audioToString.Length - 1);  
                    Debug.Log(audioToString);  
                }  
            }  
            else  
            {  
                Debug.LogError(getASW.error);  
            }  
        }  
    }  
到目前为止,链接百度云语音就完成了,之后我们再继续实现unity麦克风录入音源以及具体的识别过程。




阅读更多
个人分类: 实训
上一篇#创新实训#VR漫游项目汇报
下一篇#创新实训#VR漫游项目汇报4
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭