(一张最原始的Unity3D中音乐可视化粒子海的图,想象一下,如果这幅场景出现在虚拟设备中,辅以根据音乐频谱变化的色彩与悦动频率,会是怎样的效果呢?)

Unity3D有着非常完备的虚拟三维场景交互开发功能,以Oculus为代表的虚拟现实设备又有着极强的视觉感染力,一副不错的耳机可以产生身临其境的听觉效果(在这里我使用的是森海塞尔头戴式耳机),我认为结合这三者进行开发可以对人的情绪产生非常显著的影响效果,“机器情绪安抚师”系统的开发就是基于这个比较理想化的想法,这套系统经过实验证明可以在一定程度上让人的情绪趋于缓和,从而更专注于需要做的事。我与几位小伙伴曾经基于这套系统撰写论文并投稿给人机交互领域顶级会议SIGCHI,最终并没有被接收,但我依然相信这种思路是可行的,并且会随着硬件的进步以及人类情绪识别技术的发展变得更加吸引人。

总框架设计

总体上说,我们是通过移动端来识别用户情绪,然后通过情绪模型获知用户情绪的反向情绪,再通过反向情绪精准地匹配服务器中的音乐,然后将音乐传至虚拟现实设备端,再通过音乐可视化算法输出音乐可视化内容。细节内容在下面这张系统架构图中有所展现。

情绪识别

为了完成情绪识别方面的工作,我开发了一款安卓端的手机应用,其中主要采用的是Emokit情绪检测接口(http://www.emokit.com/),实现了用户可以利用智能手机随时随地对情绪进行多通道的检测与记录,客户端的几张截图如下所示。

情绪模型

在获知了用户情绪后,需要将情绪在某个权威的情绪模型中进行精准的定位以及数字化存储,这里采用的是心理学领域具有权威性的普拉奇克情绪三维模型。

普拉奇克(Plutchik)认为情绪是多维的,它包括强度、相似性和两极性三个维度。即(1)所有的情绪都能表现出不同的强度,如不同程度的愉快或悲伤;(2)不同的情绪在感受上的相似性,如快乐和期待、厌恶与惧怕等;(3)两极性是指感受完全不同的两种情绪,如悲痛与狂喜等。普拉奇克采用一个橘瓣体来形象的描述三个维度之间的关系(类似于八色相环),每个橘瓣体代表一类基本情绪,即狂喜、接受、惊奇、恐惧、悲痛、憎恨、狂怒和警惕。在这个橘瓣体中最强烈的情绪位于上部,越往下情绪强度越弱;对角位置的情绪表现出两极性;相邻的情绪具有相似性。

这个模型非常适合用于数字化地表示与存储用户情绪,原因主要是它可以很好地映射在二维坐标系中,并可以利用情绪点距离清楚地表现情绪激烈程度。在实际运用过程中,我们发现这个模型的效果确实是卓越的。

音乐可视化

(系统实际使用照片)

音乐可视化是本项目中非常重要的一环,从某种程度上说,音乐可视化效果的优劣直接影响用户沉浸感的好坏。由于本项目的音乐可视化内容是展现在Oculus端,所以有关音乐可视化的开发主要是基于Unity3D平台进行的。所运用到的原理主要是在Unity场景中构建粒子系统,然后根据音乐的频谱去改变光影粒子系统中各粒子的高度与颜色进而产生音乐可视化效果。

注:我乐意将这里的音乐可视化代码进行开源,需要的可以在博客下评论告诉我。

最终,通过两种方式进行了系统有效性的实验,一种是依靠高性能中心中的沉浸式旋转座椅与心电设备做了专业级别的测试与比对,另一种是找到了40位志愿者进行测试,我们通过情绪刺激、情绪检测、情绪调节、二次情绪检测的方式对每一位志愿者进行测试,最终结果表明,这套系统确实对于帮助用户情绪趋于稳定具有显著的效果。其中在消除负面情绪方面的作用效果要优于在舒缓激烈情绪方面的作用效果。

备注:本人非常乐意分享我的文章,转载请注明我的博客地址:http://www.cnblogs.com/matthewli/与原文地址:http://www.cnblogs.com/matthewli/p/7247622.html,谢谢!

利用Unity3D与Oculus实现机器情绪安抚师的一种方案的更多相关文章

  1. 利用Unity3D实现多平台增强现实网络游戏的一种方案

    这几天去厦门参加了VALSE2017会议,对于其中某个环节展示的有关增强现实游戏的部分印象深刻.因为前两年一度沉迷于利用各类引擎开发游戏,所以也曾经以Pokemon GO为模板开发过一款多平台增强现实 ...

  2. [20171221]利用rman实现2台机器文件拷贝.txt

    [20171221]利用rman实现2台机器文件拷贝.txt --//昨天使用rman duplicate建立dg,我看到执行如下代码: RMAN> duplicate target datab ...

  3. 利用Unity3D制作简易2D计算器

    利用Unity3D制作简易2D计算器 标签(空格分隔): uiniy3D 1. 操作流程 在unity3DD中创建一个新项目 注意选择是2D的(因为默认3D) 在Assets框右键新建C#脚本 在新建 ...

  4. 利用Powershell获取公司内部机器的资源信息,作为企业兴许资产管理的基本途径!

    今天一个哥们问我是否用Powershell 实现.我好久没有写脚本,脚本的协作和调试还是费了一些时间,兴许调试了下.运作没有问题,大家能够參考以下的脚本来丰富您企业须要做的一些事情,脚本代码例如以下: ...

  5. 【Unity3D游戏开发】之全局管理类的几种方式 (十六)

    如何在Unity中实现全局管理类?由于Unity脚本的运行机制和面向组件编程(COP)的思想,实现起来和普通的方式略有差别. 第一种方式是使用静态类.适合存储一些全局的变量,如游戏当前关卡.玩家得分等 ...

  6. 利用Telnet来模拟Http请求 有GET和POST两种

    利用Telnet来模拟Http请求---访问百度.       1.打开"运行"->cmd进入命令环境:       2.输入"telnet www.baidu.c ...

  7. 【淡墨Unity3D Shader计划】五 圣诞用品: Unity在Shader三种形式的控制&混合操作编译

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/42060963 作者:毛星云(浅墨)  ...

  8. 在Scrapy中如何利用Xpath选择器从HTML中提取目标信息(两种方式)

    前一阵子我们介绍了如何启动Scrapy项目以及关于Scrapy爬虫的一些小技巧介绍,没来得及上车的小伙伴可以戳这些文章: 手把手教你如何新建scrapy爬虫框架的第一个项目(上) 手把手教你如何新建s ...

  9. 利用adb查看手机设备ip和连接手机的两种方式

    电脑安装adb(查看菜鸟adb教程) [cmd]->输入adb devices (设置了path,否则需要 ./路径/adb devices)如图: 查看ip两种方法(可能有更多,目前我还没看到 ...

随机推荐

  1. idea无法正常使用SVN的解决方法

    问题描述: IntelliJ IDEA安装之后,使用SVN进行提交或更新以及检出代码的时候会出现如下错误: Cannot load supported formats: Cannot run prog ...

  2. 前台跨站点获取session

    var sessionId = System.Web.HttpContext.Current.Response.Cookies[System.Web.Security.FormsAuthenticat ...

  3. HTML5 jQuery+FormData 异步上传文件,带进度条

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link href ...

  4. IAM

    IAM 与 权限访问控制机制 IAM , Identity and Access Management 基本概念 ARN, Amazon Resource Name : 在 AWS 里, 创建的任何资 ...

  5. 学容器必须懂 bridge 网络 - 每天5分钟玩转 Docker 容器技术(32)

    上一节我们讨论了 none 和 host 类型的容器网络,本节学习应用最广泛也是默认的 bridge 网络. Docker 安装时会创建一个 命名为 docker0 的 linux bridge.如果 ...

  6. 关于MATLAB处理大数据坐标文件201762

    经过头脑风暴法想出了很多特征,目前经过筛选已经提交了两次数据,数据提交结果不尽如人意,但是收获很大. 接下来继续提取特征,特征数达到27时筛选出20条特征,并找出最佳搭配

  7. .NET C#转Java没那么难,开发环境篇

    .NET C#转Java没那么难,都是面向对向的语言,而且语法还是相似的,先对比一下开发环境,再到Servlet,再到MVC,都是一样一样的,只是JAVA的配制项比较多而已,只要配好一个,后面都是co ...

  8. Android 7.0 安装器安装过程分析 (com.android.packageinstaller)

    1 安装入口PackageInstallerActivity,这个类只是在安装前做准备.通过各种校验,然后弹出被安装应用的权限框,等待用户安装.具体的流程如下 1.1  求mSessionId 如果是 ...

  9. ASP.NET Core 源码学习之 Options[3]:IOptionsSnapshot

    在 上一章 中,介绍了 IOptions 的使用, 而我们知道,在ConfigurationBuilder的AddJsonFile中,有一个reloadOnChange参数,设置为true时,在配置文 ...

  10. ASP.NET Core 源码学习之 Options[4]:IOptionsMonitor

    前面我们讲到 IOptions 和 IOptionsSnapshot,他们两个最大的区别便是前者注册的是单例模式,后者注册的是 Scope 模式.而 IOptionsMonitor 则要求配置源必须是 ...