- 收藏
- 加入书签
基于VR交互设计的景德镇学院派艺术瓷传统生产方式再现研究
摘要:本文将视角放在景德镇学院派艺术瓷传统生产方式再现的角度,将景德镇传统烧制工艺转化为虚拟仿真形式,让学生能够通过电脑屏幕和VR虚拟设备一步一步地体验生产过程,巩固所学知识,强化科学研究素养,进一步提高学生的创新思维和实践动手能力,利用数字技术保护和传承景德镇陶瓷文化。
关键词:VR交互设计;景德镇陶瓷;生产方式
景德镇传统烧制工艺是启迪学院派艺术瓷创作的一个非常好的载体,通过这个载体的学习,有助于培养学生综合素质和动手能力,挖掘地方文化,培养学术创新思维和科研能力的。考虑到景德镇传统烧制工艺流程在传承、传播和教学过程中往往伴随着诸多重点和难点,传统教学方法和视频解决不了,同时部分实验步骤中包含有安全性差、材料成本高等特点,学生得到充分的实验操作学习机会相对较少,因而对于学院派艺术瓷的传统方向的设计创作存在阻碍。
针对上述问题,笔者团队成员本实验通过虚拟仿真方式实现实验过程全景漫游与动态实时交互设计,不受时间空间限制,利用虚拟仿真实验技术辅助线下实验教学,为多样化的教学方式提供了新的思路。使得历史悠久的传统制瓷工艺结合现代技术更好的传承与发展。
本实验通过虚拟仿真方式实现实验过程全景漫游与动态实时交互设计,不受时间空间限制,利用虚拟仿真实验技术辅助线下实验教学,为多样化的教学方式提供了新的思路。使得历史悠久的传统制瓷工艺结合现代技术更好的传承与发展。
同时,将传统镇窑烧制工艺与现代虚拟现实技术相结合,使学生更容易接纳传统工艺知识。在虚拟仿真技术的指导下不仅能够体会到景德镇传统制瓷工艺的魅力,学习到制瓷文化,也能加深自己对虚拟现实技术的理解。
第三,在社会中,以虚拟仿真教学系统的软件形式帮助传播景德镇传统制瓷文化,让世界各地的陶瓷制作爱好者体会到镇窑烧制的文化底蕴。
交互部分代码编程节选
在完成了镇窑的基本逻辑构建之后,我们将所有操作流程根据实现难度进行了一系列的测试,最终通过小组讨论得到了一套相对较严谨的交互设计方案。我们以现有的技术针对这个方案进行开发,完成了整套交互流程。
整体逻辑并不复杂,对于第一步——装坯入匣,我们认为,关键的部分则是表现出匣钵摆放的细节。于传统工艺而言,较小的瓷器可以直接用手进行摆放,而较大的瓷器则需要用绳子吊入。我们通过if语句的判断,玩家会得到一个瓷器的序列,需要分别把这些瓷器装入匣钵中。逻辑上的表达就是,对于当前瓷器,会先判断它是一个大瓷器还是小瓷器,如果是大瓷器,那么玩家点击左边的用手放入按钮时,则会提示警告,提醒玩家需要用绳子吊入,所以点击另一个用绳子吊入按钮才会播放大瓷器被放入匣钵的动画,以达到教学目的。
装坯入匣代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using cakeslice;
using UnityEngine.Video;
public class TheFirstStep:MonoBehaviour {
private GameObject loadingBlankIntoBox;
private GameObject handButton;
private GameObject ropeButton;
private GameObject exit;
private GameObject finish;
private GameObject cam1;
private GameObject cam2;
private GameObject player;
private GameObject buttomTip1;
private GameObject tip1;
private GameObject tip2;
private GameObject p1;
private GameObject p2;
private GameObject p3;
[HideInInspector]
public int index=0;
private PlayerIsTrigger playerIsTrigger;
private GameObject currentP;
private GameObject fullKilnCollider;
void Start(){
loadingBlankIntoBox=GameObject.Find("Canvas/Steps/LoadingBlankIntoBox");
handButton = GameObject.Find("Canvas/Steps/LoadingBlankIntoBox/PutByHand"); ropeButton = GameObject.Find("Canvas/Steps/LoadingBlankIntoBox/PutByRope");
exit = GameObject.Find("Canvas/Steps/LoadingBlankIntoBox/ExitTheStep") finish = GameObject.Find("Canvas/Steps/LoadingBlankIntoBox/Finish");// 找到装坯入匣结束提示框
cam1 = GameObject.Find("Player/Main Camera");// 获取主摄像机
cam2 = GameObject.Find("Model/Camera2");// 获取第一步装坯入匣摄像机
player = GameObject.Find("Player");// 获取玩家
buttomTip1 = GameObject.Find("Canvas/Base/ButtomTips/ButtomTip1");// 找到底部提示image
tip1=GameObject.Find("Canvas/Steps/LoadingBlankIntoBox/Tips/ButtomTip");
tip2=GameObject.Find("Canvas/Steps/LoadingBlankIntoBox/Tips/ButtomTip(1)");
p1 = GameObject.Find("Model/boxPorcelains/Porcelain1");
p2 = GameObject.Find("Model/boxPorcelains/Porcelain2");
p3 = GameObject.Find("Model/boxPorcelains/Porcelain3");
playerIsTrigger=GetComponentInParent<PlayerIsTrigger>();
currentP=GameObject.Find("Model/CurrentP/Square");
fullKilnCollider=GameObject.Find("Model/Triggers/FullKiln Collider");
}
void Update(){
if(Input.GetMouseButtonDown(0)) //若按了鼠标左键
{
Ray ray = GetComponent<Camera>().ScreenPointToRay(Input.mousePosition);// 由摄像机面向方向发出一条射线
RaycastHit hit;// out关键字传入一个空的碰撞信息类,然后碰撞后赋值。可以得到碰撞物体的transform,rigidbody,point等信息。
if(Physics.Raycast(ray,out hit))
{
GameObject rayCollision = hit.collider.gameObject;
if(rayCollision.tag == "Sagger") // 若射线碰到的碰撞体的标签为Sagger
{
loadingBlankIntoBox.SetActive(true);
cam1.SetActive(false);// 关闭主摄像机
cam1.GetComponent<AudioListener>().enabled = false;
cam2.GetComponent<Camera>().enabled = true;// 打开第一步装坯入匣摄像机
cam2.GetComponent<AudioListener>().enabled = true;
player.GetComponent<PlayerMove>().enabled = false;// 关闭脚本
buttomTip1.SetActive(false);
currentP.SetActive(true);
playerIsTrigger.index++;
}
}
}
}
public void HandButton() // 拿手放入按钮
{
if(index==0){
tip1.SetActive(true);
}
if(index==1){
tip1.SetActive(true);
}
if(index==2){
p3.GetComponent<Animator>().enabled=true;
tip2.SetActive(false);
tip1.SetActive(false);
Invoke("FinishInterface",2.1f);
}
}
public void RodeButton() // 拿绳子吊入按钮
{
if(index==0){
p1.GetComponent<Animator>().enabled=true;
tip1.SetActive(false);
}
if(index==1){
p2.GetComponent<Animator>().enabled=true;
tip1.SetActive(false);
}
if(index==2){
tip1.SetActive(false);
tip2.SetActive(true);
}
}
public void FinishThis(){// 结束第一步
cam1.SetActive(true);
cam1.GetComponent<AudioListener>().enabled = true;
cam2.GetComponent<Camera>().enabled = false;
cam2.GetComponent<AudioListener>().enabled = false;
player.GetComponent<PlayerMove>().enabled = true;
loadingBlankIntoBox.SetActive(false);
playerIsTrigger.index++;
fullKilnCollider.SetActive(true);
}
void FinishInterface(){
finish.SetActive(true);
handButton.SetActive(false);
ropeButton.SetActive(false);
}
}
参考文献
[1]《景德镇瓷录》
[2]张敬萱.浅析传统文化视野下的游戏设计与开发[J].电脑知识与技术.2019,(7).110-111.
基金项目:本课题系2021年景德镇陶瓷大学大学生创新创业训练项目《赛博世界的窑火》和2022年景德镇陶瓷大学大学生创新创业训练项目《学院派艺术瓷线上陶艺馆》的研究成果。
作者简介:刘智聪(2001.09—)汉,江西省上饶市,景德镇陶瓷大学信息工程学院数字媒体技术专业学生;袁啓星(2002.9—)汉,江西赣州信丰,景德镇陶瓷大学信息工程学院信息与计算科学专业学生。