APP下载

动漫设计与制作中数字媒体技术的应用*

2022-02-25兰州工商学院陈克

数字技术与应用 2022年11期
关键词:脚本语言摄像机动漫

兰州工商学院 陈克

随着信息科技技术时代的到来,数学媒体技术也随之出现在人们的视野中,随着社会各大行业对于数学媒体技术的需求,数字媒体技术得到了广泛的运用,并且有了一定的运用效果。近些年来,随着我国对动漫产业发展的大力支持,动漫产业发生了很大的改变,传统的技术已经不能够进一步推动动漫产业的发展,而且也跟不上时代发展的需求了,基于此,动漫设计技术必须及时进行创新,将数字媒体技术有效的运用到其中就是很好的创新方式,通过运用数字媒体技术来进一步推动动漫产业的发展。

近年来,我国的综合国力一直处于持续增长的状态,科技信息技术也不断加强,数字媒体技术也得到了更广泛的运用,当前数字媒体技术已经有效的运用到动漫制作的各个环节中,包括人物设计、场景虚构等方面。可以说,数字媒体技术对于推动动漫设计具有创新性的意义。本文将对动漫设计中数字媒体技术的运用进行分析和案列的技术探讨。

1 关于动漫设计与数字媒体技术的概述

1.1 动漫设计

我们常说的动漫设计,就是将如今社会的时代艺术理念和具体的艺术实践相结合,形成一门专业性知识的学科,并通过让学生们学习这些艺术知识加强自己的审美能力,以及不断的创新自己的思维,通过自己对于事物的理解与鉴赏进行创作,通过使用专业的制作软件工具对自己所理解的艺术品进行进一步的设计与制作,最终将其设计为动漫作品。

1.2 数字媒体技术

我们所说的数字媒体技术,就是将信息科学与数字技术摆在首要位置,结合当今的大众传播理念,在现代艺术的有效引导下,将信息传播技术广泛的运用到我国的各种行业中的一门综合性的技术。数字媒体技术在各个方面都得到了广泛的运用,数字媒体慢慢的变成了一种像语言、文字一样的信息载体。

1.3 脚本语言与虚拟现实技术

脚本语言是为了缩短传统的编写-编译-链接-运行过程而创建的计算机编程语言。虽然许多脚本语言都超越了计算机简单任务自动化的领域,成熟到可以编写精巧的程序,但仍然还是被称为脚本。虚拟现实技术(简称VR),又称虚拟环境、灵境或人工环境,是指利用计算机生成一种可对参与者直接施加视觉、听觉和触觉感受,并允许其交互地观察和操作的虚拟世界的技术。

2 数媒技术提高动画作品的交互体验

运用虚拟现实技术(VR)、增强现实技术(AR)、综合现实技术(MR),将虚拟三维动画展现出来,给予作品新的生命,将会给人不一样体验。通过数字媒体技术,制作者将全方位的还原一个虚拟动画的环境或将虚拟与现实完美的结合,体验者可身临其境的感受并走进这个世界,从而能多角度、多层次的体验和欣赏作品,这种感觉给人一种直观和具有创新的体验和新鲜感。

3 数字媒体技术在动漫设计中的应用案例

案例:动漫作品中捕鱼场景的交互设计:

本例讲解三个重要技术:(1)将各种鱼做成Prefab(游戏预制体),用Instantiate()将其加载入场最,用Destroy()从场景中销毁;(2)鱼出现在屏幕中的随机位置,这里用到Random.Range()去生成随机数,搭号中填写随机数的大小范围,我们用这种方法生成鱼的X.Y 位置值(不超过屏幕边缘);(3)应用InvokeRepeating 函数来实现计时功能。

3.1 构建场景

(1)新建项目,导入素材。

步骤1 新建一个Unity 项目(3D 模式),命名为“Catch Fish”。进入之后,按“Crl+S”快捷键将默认场景另存为Game。

步骤2 将3 个金枪鱼素材,拷贝到项目Assets 文件夹下。

(2)创建一个Plane 并赋予材质。

步骤1 选择莱单中的“GameObject—3D Object 一Plane”命令,创建出一个Plane(背景板)。

步骤2 使用旋转工具将Plane 竖立起来,或者是在Inspector 窗口中设置Plane 的Rotation X 为-90,立在摄像机前方。

步骤3 使用缩放工具将Plane 拉长并扩大,直到在Game 窗口中预览时充满整个屏幕。

步骤4 双击进入已有的文件夹Materials,在空白处单击鼠标右键,在弹出的菜单中选择“Create-Material'”命令,创建出一个材质,命名为Hai,然后将Hai 拖给场景中的Plane。

步骤5 在Assets 窗口中回到顶层级Assets 在Scene 窗口中单击选中Plane,在右侧Inspector 窗口中展开它的材质组件,然后从Assets 窗口中将资源Ocean(大海)拖到材质组件下的Albedo 栏上释放完成A1bedo 贴图的指定。

(3)创建并填充游戏预制体。

我们在场景中加入金枪鱼的做法不同于以往从Assets 窗口中直接将资源拖到Scene 窗口、手工放置的方式。而是采用游戏制作中的主流方法一把资源转成Prefab(预制体)后放在Assets 窗口中的Resources 文件夹下,然后用代码动态地加载到场景。

步骤1 在Assets 窗口空白处单击鼠标右健,在弹出的莱单中选择“Create 一Prefab”命令,创建游戏预制体,命名为myFi。将原始素材“金枪鱼.FBX”拖到myFi 上释放,这样就用金形鱼的内容填充了游戏预制体myFi。

步骤2 在Assets 窗口空白处单击鼠标右键,在弹出的莱单中选择“Create-一Folder”命令,创建文件夹并命名为Resources(代码动态加载Assets 资源,一般是放在Resources 文件夹中),从旁边将游戏预制体myFi拖到Resources 文件夹中。

(4)调整摄像机。

步骤1 本例制作的是2D 游戏。选中Main Camera主摄像机,在Inspector 窗口中将它Projection(发射方式)设置为Orthographic(无透视)。

步骤2 因为无透视,所以可以用移动工具中把主摄像机稍微拉远,使其远离Plane,保证主摄像机和Plane之间有足够大的空间。

(5)尝试摆放鱼的位置,记录位置。

本例将以代码方式加载金枪鱼。在这之前,我们先手动向场景中添加了金枪鱼,目的是观测鱼在画面中合适的位置、大小。然后记录下这些数据,以便在代码中使用,观测完之后删掉场景中的鱼。

步骤1 从Assets 窗口中的Resources 文件夹中,将myFi 拖入Scene 窗口中,使用移动工具摆放它到主摄像机和Plane 之间。可以看到,鱼的体型明显有些偏大。

步骤2 选中鱼,在Inspector 窗口中调整它的Sca1e为“X=0.2,Y=0.2,Z=0.2”。鱼的尺寸变得比较合适了,记录此时的缩放值为0.2。

步骤3 在Scene 窗口中,使用移动工具调整鱼的位置,先把它放到主摄像机拍摄画面的左上角。

步骤4 保持鱼为选中状态,在Inspector 窗口中读取一下条鱼的位置。以我们本次制作的场景为例,鱼在左上角时它的Position 是X=-9.6,Y=5.07m,Z=11.1。记录下这个鱼在左上角极限位置时的坐标值,然后再依次调整鱼到右上角、左上角和右下角的极限位置,读取坐标值。我们得到了鱼在屏幕中4 个角的位置,也就得到了它在场景中的X 和Y 的极限值,在生成随机数时需要用到它们。

步骤5 选中场景中的那条鱼(myFi),按下Delete 键删除它。

3.2 代码开发

(1)创建捕鱼游戏的主脚本,我们把它挂在主摄像机上。

步骤1 在Assets 窗口中单击鼠标右键,在弹出的菜单中选择“Create-C#Script”命令,创建新脚本,命名为GameControl。

步骤2 选中场景中的Main Camera 主摄像机,然后从Assets 窗口中将GameControl 拖到Inspector 窗口的底部释放。

(2)编写代码。

在Assets 窗口中双击GameControl 打开MonoDevelop编辑器,编写代码,核心代码如下:

public class GameControl:MonoBehaviour{

float xx: //创建浮点型数据变量xx,鱼的位置坐标的X 轴数值

float yy: //创建浮点型数据变童yy,鱼的位置坐标的Y 轴数值

f1oat zz=53: //创建浮点型数据变量zz,鱼的位置坐标的Z 轴数值,这里为固定值

Gameobject myFish;

Quaternion xuanzhuan=new Quaternion(-150,120,-40,80):

//创建四元数对象,指定鱼的旋转角度,四个旋转角度值可在后期反复尝试修改

void Start (){

InvokeRepeating ("EmergeFish",2f,2f);

//倒计时2 秒后执行EmergeFish 函数创建鱼,每2 秒钟创建一次

InvokeRepeating ("DestroyFish",3f,2f);

//倒计时3 秒后执行DestroyFish 函数,即销毁鱼,每2 秒销毁一次}

void Update (){

void EmergeFish(){ //创建鱼的函数

xx=Random.Range(-9.6f,9.5f); //xx 赋值为-9.6 ~9.5 之间的随机数

yy=Random,Range(-2,9f,5); /yy 赋值为-2.9 ~5 之间的随机数

myFish=(GameObject)Resources.Load("myFi",typ eof(GameObject));

/游戏物体myFish 加栽Resources 中的游戏预制体

Gameobject yu=GameObject.Instantiate(myFish,new Vector3(xx,yy,zz),xuanzhuan)as GameObject; //Instantiate()方法为实例化,就是把物体从Assets 中添加进场景,该方法括号中应填入3 个值:加载资源名、位置的三维向量、旋转角度的四元数

yu.transform.localScale=new Vector3(0.2f,0.2f,0.2f);

//创建出来之后,再调整尺寸,将X、Y、Z 轴的值都修改为0.2

yu.name="fish"; //给添加进场景之后的实际游戏物体命名}

void DestroyFish(){ //销毁鱼的函数

GameObject destroyTarget-GameObject.Find("fish");//找到场景中已添加的游戏物体 fish

GameObject.Destroy(destroyTarget,0); //立即销毁鱼,延迟时间为0 }}}

(3)代码分析。

在Start 函数中,我们使用计时法InvokeRepeating去调用创建鱼的函数EmergeFish。在创建鱼的函数中,主要是以Instantiate 方法从Assets 加载资源并创建到场景中,创建出来的鱼的位置是Random.Range 随机生成的,旋转角度是一个四元数,当中四个数据可以自己测试,大小是之前测试时记录下来的0.2。

另一个计时方法InvokeRepeating 调用销毁鱼的函数,销毁鱼比创建鱼的初始执行慢了1s,即允许鱼出现在场景中1s,然后销毁。间隔2s,又开始创建鱼。这样,鱼每隔2s 出现在随机位置1s,我们就可以捕鱼了。

(4)测试捕鱼效果。

按下播放按钮,进行测试,观看鱼的随机出现效果。

4 数字媒体和动漫设计中的脚本语言

由上面的案例可以看出,在动漫设计中为了提高受众的参与度和交互性,使用到了大量的脚本语言,现在应用比较广泛的脚本语言有很多,各种脚本都有自己的特点和优势,只是应用的领域和场景不同,正确的技术就是用在了合适的任务点上。C#语言在动画、数字媒体领域,包括图形图像处理、游戏开发等领域,都有广泛的应用,成为了动漫设计专业学生学习、教师教学的很好选择。

5 结语

综上所述,随着我国信息科技的不断发展,媒体的传播方式也发生了很多的变化,数字媒体技术被广泛的应用与各个行业中,在这些背景的衬托下,动漫产业要想得到进一步的发展,就应该积极的运用数字媒体技术,结合人们的当今社会的需求,创作出更多高质量的动漫作品。对于动漫设计来说,数字媒体技术,脚本语言的助力,虚拟现实技术的介入是一个很好的机遇,动漫企业应该牢牢的把握好这次机遇,将动漫设计产业与现代科技技术紧密的结合,通过不断的创新来提升动漫产业在社会中的地位,以此来实现动漫产业的经济价值。

猜你喜欢

脚本语言摄像机动漫
一种面向SSC的电信增值业务的生成方法及实现
摄像机低照成像的前世今生
新安讯士Q6155-E PTZ摄像机
锋绘动漫
锋绘动漫
浅析计算机技术在flash动画中的应用
基于SiPESC平台的Python扩展模块开发
高清新阵营