增强现实技术在傩文化保护中的应用

2021-09-22 09:36梁莉菁姚廷伟
蚌埠学院学报 2021年5期
关键词:萍乡面具组件

邱 望,邬 娜,梁莉菁,姚廷伟

(萍乡学院 信息与计算机工程学院,江西 萍乡 337000)

傩是一种远古的原始文化,是中国传统文化的一个重要组成部分,但如今逐渐被忽略和遗忘。萍乡傩是中国傩文化中的一部分,保存相对较完整,当地政府为了保护和宣传这一传统文化做了很多的工作,但效果并不理想,因此需要更多有效的方法来保护和传承傩文化。数字媒体技术的迅速发展使得现实事物能够以虚拟的形式向用户展示,并能以较低的成本进行快速传播,其中的虚拟现实(VR)和增强现实(AR)技术已经被运用在很多传统文化的保护工作中。本文以萍乡傩文化保护为例,基于傩文化中的傩面具,将AR技术应用在傩文化的保护工作中,采用Maya建模、Unity和Vuforia等技术,设计并实现萍乡傩文化展示系统。最后再通过线上进行宣传和展示,并将其应用在萍乡学院数字媒体技术专业的教学和实践中,让更多人了解傩文化,为其传承和保护提出一种可行的方案。

1 傩文化保护与增强现实技术

1.1 萍乡傩文化遗产的现状

经过漫长的岁月,每个地方都会有当地传统文化,这些文化往往会留下一些遗产和印记,但由于种种原因,很多传统文化的大部分内容和物质组成部分已经丢失,只有少部分被保留至今。为了保护和传承这些文化遗产,各地文化部门都在积极采取各种措施,不断探索和尝试新的方法和技术。赣傩文化始于汉代,以其历史悠远,内涵丰富,风格迥异,极具特色而成为江西传统文化遗产的重要组成部分之一[1],省内很多地方都将傩文化的传承与保护作为一项重要工作。萍乡傩文化传承相对较完整,至今仍保留傩舞、傩庙、傩戏和傩面具等,萍乡湘东傩面具也作为传统美术类别于2006年入选第六批全国重点文物保护单位第一批国家级非物质文化遗产录,当地相关部门也一直在努力地希望将这一传统文化更好地传承与发展下去。政府设立了萍乡傩文化博物馆、地方特色数字资源库进行展览和宣传,各学者也在不断研究傩文化的特点,提出了发展文化周边创意产品[2]、鼓励文化旅游[3]、促进将傩文化融入艺术创作[4]等方法。

现实情况却不容乐观,萍乡傩文化的保护与传承进展缓慢。根据一项对萍乡学院在校大学生群体的314份调查问卷结果显示,有88%的人不知道或者不了解萍乡傩文化,93%的人认为有必要采取一些措施保护这种文化,说明当前的保护工作效果并不好。超过70%的人对民间文化艺术感兴趣并表示如果有时间会去看展览,这说明人们并非对这种文化不感兴趣,超过一半的人认为原因在于缺乏宣传和了解的途径。因此最关键的问题在于人民群众对于传统文化是愿意去了解和接受的,但是缺乏合适途径去接触,现有的宣传方式还有待改进。结果中,观看视频、专家讲座、发放图册的效果都不好。31%的人认为效果最好的宣传方式是“每隔一段时间进行文化展览”,因为这种方式最为直观,可以近距离接触,显然效果最好。然而现实中的多种因素,如场地限制、缺乏专业人员、文物运输不方便、成本高等,导致这种方式无法大量地应用到实际中。36%的人认为采用数字媒体技术(VR、AR的方式)是一种良好的宣传方式,说明这也是一种人们接受度较高的方式。计算机硬件和软件技术的迅速发展为这种方案提供了支持,因此将数字媒体技术应用在傩文化的保护工作中是完全可行的。另外,很多相关的研究都是偏向于理论研究,研究结果的受众群体不明确,并没有应用在实际的场景中,导致方案虽可行但效果却不尽人意。本文认为大学生群体具有高素质、可控性、多元性、潜在性和动态性,如果将傩文化元素应用在高校实际的教学实践中,会取得更好的效果。(调查问卷数据:https://www.wjx.cn/wxloj/datafullscreen.aspx?activity=106665792)

1.2 增强现实技术

随着计算机相关技术的迅速发展,数字媒体技术被越来越多地应用在传统文化的保护上,其中VR和AR技术尤为显著。原因在于这种技术在解决问题的时候,可以不需要对实际的事物进行操作,只需要生成相应的方案模型,相关领域的专家和研究人员就可以根据生成的模型进行利弊分析,选择出最佳解决问题的方案,并且在选择模型时,不会产生实际成本[5]。相较于传统的平面静态展示,VR技术具有的多感知性和沉浸性特点,能有效地激发用户的兴趣,提升用户的体验度和感知度。但是VR技术通常适用于虚拟场景的构建,要求将目标场景中的关键点变成虚拟场景,然后使用特殊的设备进行体验和交互,成本较高,实现也较困难。AR技术通常只构建目标物体的模型,然后通过设备的显示器将模型融合在真实场景中,是对现实世界的增强和补充。相较于VR技术,AR技术具有实现简单、成本低等优点。

本文基于傩文化中的傩面具,应着重进行物体特征的表现,使用AR技术使开发者可以专注面具模型的制作,而不必花费大量时间制作虚拟的场景,用户也只需要用智能手机即可随时查看,十分灵活便捷。开发主要的步骤包括3D建模,软件框架搭建和具体功能实现。由于傩面具的体型较小,建模时要求3D模型尽可能得精确,采用Maya软件,具有功能完善、效率高、渲染真实等特点,制作出来的模型精细程度高,效果好。软件开发平台则采用Unity,实现界面UI、场景构建、音频效果、AR识别和交互功能。AR识别功能基于Vuforia SDK进行开发,该SDK提供了完善的AR功能,具有良好的跨平台性和兼容性,兼容当前主流的PC,Android,iOS平台。Vuforia与Unity之间可以进行快速地导入和导出,只要在Vuforia的云端上传了虚拟模型就可以在Unity中进行快速开发。

2 建立傩面具的3D模型

建立傩面具的3D模型,主要包括建模、雕刻和渲染等步骤。

建模是依据实物绘制的原画效果,在Maya中使用多边形建模技术制作出低模,该模型应能表现出物体的形状、轮廓和比例等基本特征。傩面具形象细节丰富,不同形象的面具在建模时需要注意的细节也不同。以“猴王”面具为例,头顶有4只姿态各异的小猴子,可以先找到共同点,建立模板,然后调整出不同的形态。帽子部分有很多凹痕,眼睛、耳朵、鼻子周边也有各种细节,这些细节可以先不用表现,只需要建立出多边形模型,在之后的雕刻中再来刻画细节。Maya中建立“猴王”面具的低模如图1所示:

图1 “猴王”面具的基础模型

低模的面数较少,较为粗糙,为了提高精度,需要进行雕刻[6]。在ZBrush中,通过雕刻低模可以表现面具的各个细节,使之成为高精度的高模,但也会导致模型面数和文件大小急剧增加,以致渲染难度大,也不适合在Unity中使用。可以导出雕刻后的法线贴图,将贴图附在基础模型上,这样就可以在体积小、面数少的模型上显示类似雕刻后的精细效果。雕刻后的面具模型如图2所示:

图2 雕刻后的“猴王”面具模型

完成雕刻后,需要为模型的不同部位赋予不同材质球,例如毛发、斑点通常赋予Anistropic材质,而皮肤则赋予Blinn材质。在Keyshot进行赋予材质和渲染,在编辑器中可以对各种材质球的属性进行编辑,得到更为逼真的质感。由于面具的实体是木质的,因此为模型赋予木纹材质。再加上灯光之后进行渲染,效果如图3所示:

图3 “猴王”面具渲染效果

完成以上步骤,将模型导出为fbx文件,导入到Unity中即可使用。

3 软件的设计与实现

本文将实现一款基于移动端(Android)的傩面具展示软件,在设计时应考虑如下的一些要素:软件在UI设计时,应当遵从界面美观、布局简洁、对用户友好的原则。首页中的元素和内容应当能够直接凸显主题,应将软件中最重要、最常用的功能和入口放在关键位置。AR识别是本软件最核心的功能,需保证较好的显示效果和较高的识别率。除此之外还应当加上一些交互功能[7],包括模型的旋转、放大缩小等。同时,本软件还加入了语音介绍功能,通过音频的方式来介绍傩面具的故事和文化背景。

3.1 主要功能实现

3.1.1首页

在Unity中创建Index.scene场景作为App的首页,放置Canvas组件,用于添加所有的UI组件,包括主背景图、帮助、开始识别和退出按钮。首页效果如图4所示:

图4 App首页

其中,“帮助”按钮用于弹出帮助界面,包括傩文化的概况、App的操作方式。使用一个Panel组件(Help),默认是隐藏的,点击“帮助”按钮时显示,点击“关闭”按钮时隐藏,如图5所示。“开始识别”按钮用于跳转到AR识别功能场景(ARScene.scene),“退出”按钮用于关闭程序。实现这些功能的步骤主要包括:首先创建一个空的GameObject,命名为MenuController。然后在Button组件中添加点击事件,将MenuController拖入On Click()面板中,选择对应的方法。这些功能对应的C#代码分别如下:

图5 帮助界面

//退出App

public void ApplicationQuit()

{ Application.Quit();}

//返回首页

public void ReturnMenu()

{SceneManager.LoadScene("Index");}

//开始AR识别

public void OnStart()

{SceneManager.LoadScene("ARScene");}

//打开帮助面板

public void OpenHelp()

{

GameObject parentObj=GameObject.Find("Canvas");

GameObject child=parentObj.transform.Find("Help").gameObject;

child.SetActive(true);

}

//关闭帮助面板

public void CloseHelp()

{

GameObject parentObj=GameObject.Find("Canvas");

GameObject child = parentObj.transform.Find("Help").gameObject;

child.SetActive(false);

}

通过以上方法就能实现App中的各点击和跳转功能,之后ARScene场景中的各按钮也是采用类似的方式进行实现。

3.1.2AR识别

创建ARScene.scene场景用于AR识别,其中最关键的组件是Vuforia Engine中的AR Camera组件,AR Camera是Vuforia引擎封装好的一个组件,其中除了挂载Camera、Audio Listener之外,还加上了Vuforia Behaviour控制器,在运行程序时该组件会调用设备的摄像头,根据摄像头的场景和物体控制AR模型的显示以及其他组件的调用[8]。

在加入AR Camera组件后,需要配置Vuforia Behaviour,作用是导入AR数据库。主要步骤为:

(1)注册/登录Vuforia开发者平台(developer.vuforia.com),创建开发密钥(license key),完成后将其添加到Vuforia Behaviour配置中。配置完成即可在本程序中使用该账号下所有的数据库。

(2)在网站中添加数据库(Add Database),添加目标图像(Add Target),将需要识别的图片上传。上传之后Vuforia会根据图片的特征点和对比度进行评分,评分越高越容易被识别,因此应尽量保证图片具有较多的特征点。

(3)当Vuforia接受了上传的图片之后,即可在Unity的项目中使用该图片作为识别点。在场景中新建Vuforia Engine/Image,会生成一个AR目标图ImageTarget组件,然后在该组件的Image Target Behaviour选择数据库中需要识别的某张图片。

(4)将构建好的傩面具3D模型放在ImageTarget组件下,调整其大小和位置。该模型将在摄像头扫描到目标图片时显示,在摄像头离开目标图片时隐藏,由此实现AR识别的功能。

3.1.3交互功能

交互功能主要包括模型的旋转、缩放和语音介绍[9]。旋转功能会在单手指左右滑动屏幕时触发,模型将会以自身的z轴进行旋转。由于模型的旋转是实时变化的,因此需要将旋转功能放在Update()函数中,关键代码如下:

//没有触碰

if (Input.touchCount<=0)

{return;}

//单点触碰,水平旋转

if (1== Input.touchCount)

{

Touch touch=Input.GetTouch(0);

Vector2 deltaPos=touch.deltaPosition;

this.transform.Rotate(-Vector3.up * deltaPos.x/2,Space.Self);

}

缩放功能则会在双手指触碰屏幕时触发,根据两个触碰点的距离变化来判断是缩小还是放大。与旋转一样,该功能也应该放在Update()函数中,关键代码如下:

//多点触摸, 放大缩小

Touch newTouch1=Input.GetTouch(0);

Touch newTouch2=Input.GetTouch(1);

//第2点刚开始接触屏幕, 只记录,不作处理

if (newTouch2.phase==TouchPhase.Began)

{

oldTouch2=newTouch2;

oldTouch1=newTouch1;

return;

}

//计算旧的两点距离和新的两点间距离,距离变大时放大模型,变小时缩小模型

float oldDistance=Vector2.Distance(oldTouch1.position,oldTouch2.position);

float newDistance=Vector2.Distance(newTouch1.position,newTouch2.position);

//两个距离之差,为正表示放大手势, 为负表示缩小手势

float offset=newDistance-oldDistance;

//放大因子,1个像素按 0.001倍来算(倍数可调整)

float scaleFactor=offset/1000f;

Vector3 localScale=this.transform.localScale;

Vector3 scale=new Vector3(localScale.x+scaleFactor,localScale.y+scaleFactor,localScale.z+scaleFactor);

//最小缩放到 0.01 倍

if (scale.x>0.01f && scale.y>0.01f && scale.z>0.01f)

this.transform.localScale=scale;

//记住最新的触摸点,下次使用

oldTouch1=newTouch1;

oldTouch2=newTouch2;

语音介绍功能是指,当成功识别显示3D模型时,同步播放介绍音频,失去目标时隐藏3D模型同时暂停播放音频。在Image Target上添加Audio Source组件,选择对应的语音介绍源音频,在追踪显示脚本(DefaultTrackableEventHandler.cs)中控制音频的播放,关键代码如下:

public AudioSource audio;

//识别成功时播放音频

protected virtual void OnTrackingFound()

{

if (!audio.isPlaying)

{

audio.Play();

}

}

//丢失目标时暂停音频

protected virtual void OnTrackingLost()

{

if (audio.isPlaying)

{

audio.Pause();

}

}

3.2 实现效果及实际应用

完成调试和开发之后,在Unity中将项目打包为apk安装包,即可在手机上进行安装和使用。该App可以识别各类图像源,包括实体面具、电子图像、真实照片等等,但是需要注意光线和对比度,当对比度低时会较难识别。使用App识别电脑屏幕上的傩面具图片时,效果如图6所示:

图6 AR识别效果

依托萍乡学院非物质文化遗产研究中心和数字媒体技术虚拟仿真平台,将本文的素材、方法、过程、结果和App等资源在线上(http://pxh5.com/vr/vrar.html)发布,所有人都可以通过该平台获取[10]。同时,萍乡学院数字媒体技术专业在Maya建模、虚拟现实技术等课程中都有以傩文化元素为主题的相关教学内容,大部分的学生在学习过程中对傩文化有了较深入的了解,相关作品如图7所示。相信通过这种方式,会有包括大学生在内的更多人了解傩文化,在未来的生活和工作中传播傩文化,为其保护和传承提供更多的可能。

图7 基于傩元素的学生作品

4 结论

傩面具是古傩文化的精髓之一,本文在进行萍乡傩文化的社会认知度调查后,指出了傩文化保护和传承中存在的若干问题,认为可以将增强现实技术应用在傩文化的保护工作中。主要使用Maya建立3D模型,使用Unity构建所需的场景和应用,借助Vuforia SDK进行AR识别功能的快速开发。本文的结果被应用在相关的教学和实践中,切实提升了学生群体对傩文化的认知,取得了一定的效果。本文的方法也可以应用在其他类似的场景和问题中。未来的工作将对相关软件和系统的性能进行优化,加入更多功能,同时也会不断寻找更多高效、快捷、低成本的方案,加入到傩文化的保护工作中。

猜你喜欢
萍乡面具组件
萍乡开放大学:为推进“五区”建设贡献开大力量
无人机智能巡检在光伏电站组件诊断中的应用
无人机快速巡检光伏电站中异常光伏组件的方法
我在萍乡过春节
Spring Festival in Pingxiang 我在萍乡过春节 Fawn Li
Kistler全新的Kitimer2.0系统组件:使安全气囊和安全带测试更加可靠和高效
用音乐唱响萍乡故事——《萍乡百年原创歌曲精选》新书首发
一种嵌入式软件组件更新方法的研究与实现
酷酷的面具
面具给我的惊喜