后未来数字内容创作体
Intro: The future has to, post-humans and post-life transformed by artificial technology will become reality; the avatars of humans will also multiply and multiply in the meta-universe. Is this the result of people’s growing desire for immortality or is it being manipulated by technological machines? All this seems to be caused by people alone, and it seems to be controlled by some invisible force; from daily behavior to as large as the rules of species evolution, people seem to be unable to escape the fate of being machined and digitized by technology. Reflections based on these issues are the clues of my current creation. The creative topics involved include artificial intelligence, algorithmic life, cybernetics and other fields. Human intervention is often placed in complex machine systems to generate system failures, in order to explore life characteristics outside of machine logic, construct or deconstruct technological order and logic, make people look back on ontological consciousness, and trigger the recognition of the relationship between humans and artificial machines. Know and think.
作为功能性的互动应用 缘起:大概是对那种在屏幕前挥挥手、跺跺脚的互动“艺术”作品产生了审美疲劳。这类型的作品我把它们称为被“游戏化”的或“应用式“的”互动艺术作品“(我也做很多这种类型的作品)。这里的“游戏化”是指去除互动行为本身意义的游戏化,就好比把互动艺术中的“艺术”这层含义去掉,那么剩下的就是"互动"了,这时的“互动”更多的与游戏的“操控”趋同。而不能把它(互动行为)定义为一种艺术表达语言。“应用式”这里指过多的强调互动作品的功能性应用,例如推广、展示、娱乐等功能。在游戏中的互动行为可以看作是对游戏内容的“操控”行为。就如同双击鼠标打开软件一样的人机互动行为(不过当你做一个需要连续单击一千零九次鼠标才能打开的程序的时候,或许可以认为这个“连续单击鼠标1009次”的动作是具有艺术表达意图的)。 列举一些以往做过的“应用式”互动案例 1. 被互动形式驱动的互动应用:这可能就是那种在屏幕前挥挥手晃晃腿的互动应用的典型代表了吧。在这个交互应用的案例中,参与者的行为是“迷茫”的,或者说屏幕上的图形并没有明确互动行为暗示,虽然在文字图像的上层实时生成了具有碰撞属性的粒子,可以与被kinect抠出来的人形轮廓产生碰撞运动,但粒子的碰撞运动并没有明显的带动参与者与之互动。而参与者更多的把注意力放在人形mask里面的文字内容。通过kinect抠像,再把需要推广宣传的内容填充到抠出来的人像里面,这也是惯用的互动应用手段。 制作工具 vvvv 1.1 做这个作品的时候我的出发点是图形,而不是参与者的互动行为,与上一个案例不同的是,这个案例具有明显的图形运动效果暗示,流体的视觉动态张力在很大程度上塑造了参与者在互动过程中的肢体行为。 制作工具 processing 2. 作为游戏的互动应用,这种类型的交互案例更多的是互动技术在游戏玩法上的创意应用。下面这个案例通过雷达或者红外摄像头对球体的坐标定位,观众通过往画面扔物体来与画面中的虚拟物体进行互动。先不管游戏好不好玩。最起码这也是对研究游戏不同玩法的尝试。从拿着手柄或是点击屏幕这种操控游戏的形式而言,又往屏幕之外扩展了一步: 任何介质都可以是操控图形运动的媒介。虽然不同的玩法会带来不同的操控行为,但这里侧重点是游戏的玩法和游戏怎么好玩。 制作工具 processing 制作工具 unity 3. 作为舞台效果的互动应用,介于游戏和舞台特效之间,服务主体更多的是观众的感官体验,而不是参与作品互动的舞者自身。 制作工具 unity 3.1 互动应用空间的转移: 聊聊做过的地面互动,参与者往前移动,图形效果在他的身后生成,这考虑更多的是给予观众的视觉反馈。而参与者的体验感则是有所欠缺的。我见过很多的地面交互作品,几乎都会把图像效果放在参与者身后出现。而参与者如果知道这是实时互动的,那么他还要时不时把头拧到身后看地面上有没有图形在与他实时交互。换种思路,如果生成的效果是在参与者的正面出现,那样体验感会不会好一些呢,这只是一个举例。 制作工具 touchdesigner 4. 作为内容推广的互动应用。这类型的互动作品其侧重点在于推广的内容,至于与内容互动的形式则显得比较次要,虽然立足点是创新,但在创新方法上是立足于互动为内容服务的,这就导致了只在内容上挖掘创意点,而没有考虑互动的创新性。或者说是被推广内容所限制的互动形式。但是对于传统的广告宣传方法而言,互动则引入了新的广告阅读方式,它可以让观众实时的参与到广告内容的构建中去。例如通过观众的行为实时干预电影的情节也是可以实现的,同时也可以改变观众与电影单一的视觉交流方式。 制作工具 processing 制作工具 touchdesigner 作为艺术语言的互动行为 当把互动行为作为一种艺术的表达语言的时候,你会得到另一种创作思路。互动艺术之于传统的架上艺术和装置艺术的不同在于,它可以不局限于只通过视觉与作品沟通的对话方式。它能够把观众与作品的单方面的视觉交流扩展到参与者与作品多感官的实时反馈的交流。就像人与人的交流一样,有聆听有辩驳,是实时反馈的。这也是一种参与者感官的扩展,也是一种艺术创作形式的转变。当把交互行为作为一种艺术表达语言的时候。我时常会先考虑参与者在空间中的互动行为,在基于互动行为的基础上再去构建互动内容的逻辑。所以我在做交互创作的时候,时常会把观众的交互行为优先考虑到交互内容的逻辑的构建中,而不是单纯的站在互动内容(指代不包括参与者互动行为的内容)本身去考虑。但同时也不能忽视互动内容给参与者带来感官层面上的含义(例如上文提到的流体交互的案例)。 而你可以把作品的则重点放在整个互动过程中的各个环节,例如从参与者的感官出发或者从互动内容本身对参与者所产生情绪影响出发等等。。。艺术没有绝对性,互动艺术也没有。这里只是分享我个人平常的创作思路。 案例一 1.与光的对话行为: 把可互动的地面空间缩小,压缩到只能容下四个人,在紧凑的空间中如果有人移动那么紧挨着的人也必须移动,就如同上下班高峰期挤地铁一样,要么大家都站着别动,要么一起前后左右的挤个你死我活。参与者在狭窄的可互动范围内与激光投射在地面的几何图形进行实时对话。参与者紧挨着移动,呈现出绕着图形转圈的互动行为。 制作工具 touchdesigner 案例二 2.空间中的互动行为: 这个作品中玩家同时进入两个空间,一个是程序营造的虚拟数字空间,另一个是真实存在的物理空间。创作以互动行为作为观念表达的起点,通过对行为的限定去制作引导参与者互动行为的视觉内容。这里的参与者包括观众和玩家。 游戏一:玩家在这个游戏中完成前进和往后移动的互动行为. 观众视觉:观众会看到玩家做前后移动的行为,并且看到三面墙的画面随着玩家的移动,色彩也产生由亮到暗的变化。 玩家视觉: 玩家根据游戏提示,先站在圆形按钮上,游戏开始,远处贴有不可回头logo的墙体向玩家袭击过来,在这堵墙到来之前,玩家必须快速退回安全区,在退回的过程中不能转动头部,脸必须往前看,否则Game Over。 制作工具 unity 游戏二:玩家在矩形的边上或矩形的对角线来回游走。 观众视觉:观众会看到玩家在空间的边上移动,并且时不时的伸出手来,并且看到三面白色的墙随着玩家的移动实时的染上墨迹,玩家在空间中位置,就是墨点在二维平面对应的落笔点。 玩家视觉: 游戏中有四根柱子分别摆在矩形的四个角(此处的矩形和真实空间的矩形需要进行比例大小匹配,不然玩家有可能会撞墙)。玩家在规定时间内,用手柄接住带有红、黄、蓝、绿四种色彩的色块得分,分数到达规定值则过关。 制作工具 unity 游戏三:玩家在空间中交错行走,并交替伸出左右手。 观众视觉:观众会看到玩家在空间中穿插行走,并且时不时的伸出手来,同时观众看到三面墙上的大小不一的白色圆形随着玩家的移动而产生流体状的变化,流体的流动方向对应着玩家的运动方向。 玩家视觉: 在罗马柱的上空有一只粉红色的猪在柱子间来回穿梭,并且产下粉红色的几何体,玩家在规定时间内接住几何体得分,满分通关。 制作工具 unity 游戏四:玩家绕着空间做圆周运动,而且在这个过程中需要不断的蹲下来捡东西,然后还要跳起来扔东西。 观众视觉:观众会看到玩家围绕着空间做圆周运动,并且时不时的蹲下来捡东西,然后又跳起来往上用力扔东西,并且周围的墙体画面也随着玩家蹲下和跳起产生图形的色彩运动,动感十足。 玩家视觉:玩家看到金色的十二生肖围绕着一个圆形地面依次摆放,而且每个生肖底下都有一个难以名状的影子。玩家需要在规定时间内把影子依次捡起来,然后把影子扔上金色的房顶。扔出去以后影子消失不见则得分,规定时间内扔完十二个影子即可通关。 制作工具 unity 结语 最后需要说明的是,以上的内容是本人多年来在互动艺术创作实践中的一些经验之谈,有缺乏严谨和片面之处。这也算是这些年来自己对于互动艺术和新媒体艺术在商业性和艺术性方面的阶段性总结吧。如果你有关于新媒体艺术的创作想法或是技术性的问题,欢迎交流。 —— The end —— 关注公众号了解更多
初等函数的视觉实验 y=pow(2,x) y = log(x) y=sqrt(x) 函数的数值变化规律 pow(2^x) 简单版水波扩散 //processing IDEArrayList<PVector> pos;ArrayList<Cs> cs;void setup() { size(640, 290); pos = new ArrayList<PVector>(); cs = new ArrayList<Cs>();}void draw() { background(0); generate(); for (int i = pos.size()-1; i>=0; i--) { cs.get(i).editvalue(pos.get(i).x, pos.get(i).y); if (cs.get(i).Dead()) { cs.remove(i); pos.remove(i); } } fill(255); text(nfc(frameRate, 1), 20, 20);}void generate() { float d = dist(mouseX, mouseY, pmouseX, pmouseY); println(d); if (d > 12) { cs.add( new Cs()); pos.add(new PVector(mouseX, mouseY)); }}class Cs { float r; float alpha = 255; float zs = 0; float bs = 0; Cs() { r = random(1, 170); } void editvalue(float x, float y) { bs = pow(2, -zs); noFill(); stroke(255, alpha*bs); strokeWeight(2); ellipse(x, y, r*(1-bs), r*(1-bs) ); zs+=0.06; } boolean Dead() { if (alpha*bs <=1) { return true; } else { return false; } }} 三角函数周期性运动 x=sin(angle)*r y = cos(angle)*r 三角函数周期性的视觉实验 视频素材来自傲视网 关注微信公众号了解更多实验
牛顿第二定律的实现 虽然各种形态的相互转换这种创作方法已经在艺术创作领域被广泛的运用,例如声音可视化,色彩声音化,情绪可视化等,只要有数据都可以进行形态的转换。但这里着重讲视觉化编程的实现思路。 说到力就不得不提牛顿三大定律,其中最常用的就是牛顿第二定律f = ma 。其中 f 是合外力,m 是物体的质量,a 是加速度,当质量为1的时候 f = a 。即力等于加速度。 首先要在程序里面实现加速度,就要理解程序的运行原理。这里就要引入 "帧" 的概念。暂且可以把一段程序的运行规则理解为跟一部电影一样,是逐帧运行的,而电影是在有限的帧数里面运行,程序则没有帧数的限制,只要程序打开,它就会一直运行下去,直到你退出程序或者关机,所以在写程序的时候“帧”的概念非常重要。 我们可以忽略公式,用视觉化的思维来描述加速度:一个小球从静止到移动并且移动的速度越来越快。 要让小球移动首先就要给小球一个速度,然后再通过加速度让速度变得越来越快或者越来越慢。 以每帧速度为 1 做匀速运动: 小球的初始坐标: x y velocity = 1; x+=velocity; ellipse(x, y, r, r); 加速度可以理解为改变速度的量: acceleration = 0.2; velocity+=acceleration; 让速度每帧加上一个加速度 x+=velocity; 每帧加上一个速度 ellipse(x, y, r, r); 如果x一直累加velocity,小球就会一直匀速移动,velocity一直累加acceleration,速度就会越来越大,直到无穷大。因此在速度和加速度上乘以一个小于1的浮点数实现速度和加速度的衰减。 x+=velocity; velocity+=acceleration; acceleration*=0.99; velocity*=0.96; 引力的实现 小球往标方向做加速移动 //引力模拟PVector org = new PVector();PVector vel = new PVector(1, 0);PVector accf = new PVector();PVector subforce = new PVector();void setup() { size(900, 400); org = new PVector(random(0, width), random(0, height));}void draw() { background(0); display(); editval(); chckedge();}void editval() { PVector inpos = new PVector(mouseX, mouseY); PVector force = inpos.sub(org); float attrat = force.mag(); float strength = 0.03; float limitforce = pow(2, -attrat*0.05)*strength; subforce.mult(-limitforce*10); accf.add(subforce); force.mult(limitforce); accf.add(force); vel.add(accf); org.add(vel); accf.mult(0); if (accf.mag()==0 && vel.mag() >1.0) { vel.mult(0.98);//衰减 }}void display() { fill(255); noStroke(); ellipse(org.x, org.y, 20, 20);}void chckedge() { if (org.x >= width || org.x <=0 || org.y >=height || org.y<= 0) { org= new PVector(random(0, width), random(0, height)); }} sin(x) cos(x) pow(2^x) 实现的力场及引力交互 用来发射的力 这里需要引入向量的概念,向量和标量的区别可以理解为标量只有大小,而向量不仅有大小还有方向。同样力也是有大小和方向的,这样我们就可以用向量来描述力的轨迹。 通过帧差法,求出鼠标运动的方向:(体现出理解帧的概念非常重要) PVector nowpos = new PVector(mouseX,mouseY); PVector direction = PVector.sub(nowpos,prepos); PVector prepos = nowpos; //把当前帧存下来,留到下一帧与nowpos做运算 processing当中可以用pmouseX,pmouseY 获得前一帧的鼠标坐标 通过牛顿第二定律 f = ma 即 a = f/m 质量越大加速度越慢,速度越慢。 //在鼠标按下的位置生成粒子,并往鼠标移动的方向射出;PVector pos;PVector vel;PVector emitforce;float r;float mass;float presstime;float d;void setup() { size(900, 400); pos = new PVector(mouseX, mouseY); vel = new PVector(0, 0); emitforce = new PVector(); r = 20; mass = 10;}void draw() { background(0); speedadd(); display();}void editvalue() { emitforce = PVector.sub(new PVector(mouseX, mouseY), new PVector(pmouseX, pmouseY)); d = emitforce.mag(); float limitD = 1-pow(2, -d); emitforce.mult(limitD/(mass*0.03)); pos = new PVector(mouseX, mouseY);}void speedadd() { vel.add(emitforce); pos.add(vel); vel.mult(0); emitforce.mult(0.98); //如果不做衰减那么emitforce则会在鼠标松开后保持一个甩出去时候的值。 //vel会每帧都会累加这个值,以至于停不下来。}void display() { noStroke(); fill(255); ellipse(pos.x, pos.y, mass, mass);}//拖动鼠标蓄能void mouseDragged() { editvalue(); mass+=0.1;}void mousePressed() { mass = 10;//初始质量} Optical flow 检测像素运动方向 《是不是 ? 》 关于互动行为的实验,通过x轴和y轴的运动幅度判断动作是摇头还是点头。 点头则发射“不”,摇头则发射“是”。为什么要这样?因为.......嗯。 关注公众号了解更多