这一周,成员们按照已经分配好的任务开始了各自的学习安排。以下是学习报告——
##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中学习也是可以的。
——————————————————————————————————————————————————
##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;//录音的长度
/// <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);
}
}
/// <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麦克风录入音源以及具体的识别过程。