2009年6月21日星期日

翻墙才能干事情!

总是遇到这样的问题,
刚刚更新了几次,有点动向了,blogspot这个平台却被大陆gfw给封禁了。

于是在大陆上互联网,必须学会掌握一门技能,那就叫做翻墙。翻得不好的,至少得能看到墙外面的东西,翻得好的,那就可以在内外自在畅游。

前两天翻出来更新了下youtube,忙碌的工作之外,终于能翻出来更新一下av三皇祖师会的大本营。
说起更新其实也没什么,就是贴来几个视频吧:
http://www.youtube.com/andmaliang
这个是长期有效的youtube链接。

下面贴来youku的链接:


是为一个作品的测试

2009年5月14日星期四

平台维护-- 实现 xp mac linux 3系统。

浪费了2天2夜的时间,为了实现3系统在1台电脑。
主要是因为第一,我不想格掉整个硬盘,xp 和 ubuntu我维护的都还行,不想毁掉其他系统。
还有就是引导的问题,特别想实现通过xp or linux grub 某一个引导工具来引导,但最终这个方法是没成功,目前是通过grub 引导 ubuntu + xp, 进入xp后 利用 xp mbr (boot.ini)实现引导 mac.

具体方法;
0,准备工作,mac x86 安装盘, linux 安装cd,如果有xp启动盘就更好。(我的准备是ideneb 1.4 10.5.6;ubuntu 8.10 live cd,没有xp启动盘)

1,保留xp的系统分区 跟 linux的分区不要碰,将其中一个闲置(跟系统无关的) xp分区格式化(用partition magic 格式化时注意盘符设为AF) ;xp,mac 各自是主分区,linux 的几个分区属于扩展,逻辑分区。(大概因为mac 也为主分区,所以grub导致不了?)

2,拷贝mac的引导文件tboot(远景论坛里搜),到xp系统的根目录(我的是c:\).修改xp 下 boot.ini 文件, 在xp系统硬盘的根目录下,取消“隐藏系统以及受保护的文件”,可以看到隐藏的文件boot,ini ,用记事本打开,在末尾回车后加入: c:\tboot="Mac OS X",保存退出。

3,插入准备好的 mac x86 光盘插入,(提前设置光驱引导),安装mac系统,我选择的是ideneb v1.4 ,系统是10.5.6,正确引导后,会出现选择语言,可以选中文,我选的是英文,引导进入后,在顶部工具栏里的utilities选择disk utility ,格式化你的 空白mac 分区为 mac os 日志式,(千万注意别把整个盘给格了,注意确认选中的是你之前建立的空白分区

4,退出disk utility,非会安装主页面,选下一步,然后选择格式化好的mac 分区,下一步后,选择cunstom,进入系统安装列表,从中选则适合你电脑的kernel video audio chipset 等等的具体文件(这里还是先在pc下通过everest查看自己硬件的具体信息,然后到远景,macfan等专业论坛去学习,查看,选择相应的系统文件。)选择好之后再下一步就进入安装了,对了,安装之前会校验光盘,(verify cd),取消掉,然后就进入直接安装了。关于mac安装就不多说了。

5,如果你这几个步骤执行正确的话,重启之后面对xp 的 mbr 选单,就有了xp 和 mac 的选项,选择 mac 就能进入 mac 系统了。 如果遇到boot error 0 ,那么可以(1)先放着,不要管(通过grub引导linux后进入修复,利用linux里的partition 什么,名字没记全,够选xp分区后点那个flags,选中root;貌似通过grub里的makeactive也能激活);(2),拆下硬盘,做为外置硬盘接入其他电脑,激活xp分区后就好了。(关于boot error 0, error 1之类的,google搜一下就有解决方法了。)

6,现在我们无法进入ubuntu,这时候我们可以使用之前的ubuntu live cd 来引导,然后修复grub,让grub引导ubuntu 跟 xp (本来是想引导3者,但是没成功,就先引导2者吧,然后通过进入xp,就有了mac的选项,一个网友说这个引导法是“多按一次回车”)。
修复grub方法:用live cd 登录,打开terminal,
键入:sudo -i
这是获得root权限。然后
[root@ubuntu~]# grub
grub>find /grub/stage1
find /grub/stage1
(hd0,5)
grub>root (hd0,5)
grub>setup (hd0)
grub>quit
注意,通过find, 我们可以看到下面(h0,5),这个就是你的的ubuntu主分区,可能是其他数字(hx,y),x代表硬盘,y代表分区
然后通过,root 和 setup 恢复 grub, quit grub后,
直接键入 reboot
重启,推出 live cd,
就又重新看到grub引导的附标画面了,选择ubuntu 就进入你的系统;选择xp 后,进入xp 的mbr 引导画面,进而可以选择进入xp or mac
就这样了。

真他妈的耽误时间呀!

体验,相比较而言,还是linux分区是最安全的,最容易维护的。

2009年5月5日星期二

ipot touch 控制Geo (三)



先上图片(点击可100%显示)。
再简单介绍:
首先我们看到了3个窗口,1个gemwin,2个patches的窗口,一个是我们的play_Gem,另一个是OSCemote跟pd沟通的窗口,如果想链接touch 跟pd or max/msp, 我们需要有一个ipod touch端的app,可以是 TouchOSC (http://hexler.net/software/touchosc)或者OSCemote(http://lux.vu/blog/oscemote/),可以在itunes store 里购买,或者自己寻找其他特殊版本。

同时,注意pd的extra文件夹里需要有OSCX 库,2者都具备了才可以进行连接。

在图中,左下角的patch就是让touch 跟pd 建立最近比链接的patch,这个在OSCemote的官网里面就有下载。

然后再右侧,是Play_Gem的主patch,分为这样几个部分:
1,gemwin 创建
2,世界光源
3,一个立方体和一个球体
4,立方体和球体变化的控制运算

这里的原理非常简单,就是基于之前的patch,给立方体和球体分别贴视频和贴图。

在送出讯息从touch到pd时,首先我们需要知道laptop跟touch的ip,然后在OSCemote or TouchOSC 中设置好访问ip跟接入端口,并且在pd or max/msp端的patch中将检查端口是否一致。例如图中的3333

这里我只用到了OSCemote的2组参数,一个是button,另一个是acceleration, 我分别将这两组数据通过之前提到的[send somename],[ receive somename]物件来传送到play_Gem 的主patch中。

而在button 讯息中,touch 则送入了一组讯息,一个是告诉我们哪个按键(A/1,A/2...B/1,B2,...C3,C4...),另外则告诉我们案件是否被按下(0、1)。因此我们需要将这两个数据类型(symbol 与 float)分开,所以我们看到[r button]之后紧接着接入了[unpack s f](s=symbol,f=float).

只后,我们通过[select]物件进行判断。[select]物件就好象我们在其他编程软件中的if...else... 语句,在这里很简单,如果/A1按钮被触发,则讯息通过左边第一个出点送出。如果是/B1按钮被触发,则讯息通过中间的出点被送出,触发其他按钮的讯息则通过右出点送出。

基本就是这样了,就是这样很简单的东西可以出有趣的效果呵呵。


之所以在图中我调出了pd的控制台,因为我print了从touch中或许的数据,没做一次触发,pd都会在控制台上进行一些非法勾当呵呵

2009年4月28日星期二

用 ipod touch 来控制 我们的 geos (二)

今天继续放上2个视频, 拍其中1个的时候差点儿没把touch 扔出去 。。。

第一段



地址: http://v.youku.com/v_show/id_XODc2MTU4MTI=.html


第二段



地址: http://v.youku.com/v_show/id_XODc2MTYwOTI=.html
---------------------------------------------------------------

另外,晚上去了daito的讲座在中央美院cafa media lab, 挺好.

其实电脸的最初想法很棒的,就是复制自己的表情,电脸只是一个小衍生物而已。顶daito的 复制脸 的观念。

---------------------------------------------------------------

对了,音乐是一个朋友的,请尊重版权。

2009年4月27日星期一

用 ipod touch 来控制 我们的 geos

先放出测试视频,由于youtube在大陆被封锁了,虽然可以看但是上传没有成功,因此在youku注册了帐号,速度比youtube快很多。
patch等过两天再跟上,具体是用OSCmote 与pd 沟通, 读取touch 的传感器信息, 还有oscmote的触垫。

2009年4月19日星期日

Play Gem -- texture 贴图初体验

我们先看一下gemwin中的效果:







看到效果还是有意思的,其实,这个patch中只是给两个基本geo 分别做了视频贴图(to cube),和图像贴图(to sphere)。
上一篇中我们学习了简单的让geos 运动起来,今天来接触pd 的基本贴图功能,并且通过简单的贴图,让我们玩转一些有趣的视觉效果。

今天涉及到的主要物件:
[pix_texture] 就是我们主要学习的贴图物件。
[pix_film]: 在gemwin中 渲染影片
[pix_image]: 渲染图像

先说结构,我们可以看到,gemhead的结尾总是以一个cube or 一个 sphere 结尾的,为什么在gemwin中显示一张图片,都要以一个geo结尾呢?
其实,我们在gem中也可以直接读取图像, 通过[pix_image <路径>] 直接接入到[pix_draw] ,此时图像就会渲染在gemwin中。但是,这样做实际上是非常不可取的,我们不论在何时都要避免直接绘制图像在gemwin.这样直接绘制,是非常占用cpu使用率的,因为这样的方式不被显卡所支持,是直接用cpu运算的。
因此,我们不论显示图像,或者视频,我们都需要通过“贴图”的方式,通过显卡来渲染,合理的利用计算机硬件,因此在gemhead的结尾总是一个基本geo, 经常以 [ ractangle ]为结尾。

接下来我们注意物件的名称,都是以 pix_ 为开头的,这也是gem编写者为了让大家逻辑清晰,特意注明了前缀。凡是带有pix_ 前缀的物件,都是 跟图像相关联的物件。

不论 [pix_film],或者[pix_image],我们都是通过 openpanel 来打开 我们的图像、视频文件。
在[pix_image]中,我们看到那个[open <路径>( 信息物件 ,其实我们不需要写那么长的一个路径,只需要写 :[open somefile.jpg], 然后通过[bang]打开openpanel, somefile.jpg也规定了打开文件的类型。因此我们在这里只能选中*.jpg的文件。
在[pix_film]中,我们注意那个小小的[toggle]+[auto $1( ,这里如果选中的话,打开的视频就会自动循环播放,如果不选中,选中的视频就会停留在第一帧上。

最后我们看看patch的整个结构:


你要做的就是导入你自己的图片和视频,做出自己喜欢的visual effects.

2009年4月16日星期四

PD Gem 让小物件动起来 --第一个循环(loop) 和数组(array)

之前我们在 Gem 中建立了物件,但是都是静止不动的,我们只能给定其具体的参数,定义其位置,大小,旋转,色彩等。
那么,今天希望可以让这些小东西动起来,并且学习我们接触的第一个循环(loop),和数组(array)。

先看patch:



首先,create or destroy gemwin 部分,gemhead, 等我们应该已经很熟悉了。
但是有几个物件是这里没提到的:
[separator] : 直接看意思就明白了,是分离的物件,为什么 在 square 之后要加入[separator]呢?因为,在上一个基本Geo之后直接连接新的geo,他们两者之间会有父子关系,即从属关系,也就是说父系的属性会影响到子geo,我们在这里需要给不同的geo不同的参数,并且希望不要相互影响,因此在一个[gemhead]下,我们把2者分开。
[s arrayto] [r arrayto], 这两个物件其实很简单,就是 send 和 recieve 的意思,分别给定对应的变量名称,就可以送出和接受相应的数据。
[world_light] :在gemwin里创建一个全局光,这样我们会看到立体的物件效果。最后我们会让他旋转。
[abs]: 绝对值物件,在这里把负值转换为我们需要的正值。

好了,从左向右的三组树形构架的陌生数据我们简单分析了,接下来具体分析最右边的一组。也就是因为它,最终实现了动态效果。

首先我们需要注意的是这一行: [ i ] [ + 1] [% 360 ] 注意他们的链接方式,[ i ]的出点接 [+1 ]的左入点,[+ 1]的出点接 [% 360] 的左入点,最后 [% 360]的出点返回给 [ i ]的右入点。
这一系列的行为具体是什么意思呢?其实很简单,如果用常用的脚本表达(这里用flash action script 的形式) :

for ( var i= 0; i <360; i++) {
}

也就是说,我们在这里给定了i 这个变量一个范围,让他在0-359之间不断循环。 而上一级的 [metro] 则 限制了循环的速率。

我们继续往下走,会发现[ i ]的出点还送出到 另外一个物件 [ trigger ],这个物件也很好理解,就是触发我们收到的数据,转换为我们想要的数据类型,在这里,f = float ,以后我们还可能遇到 s = symbol, b = bang , l= list 等等。

我们现在将 triggger的左出点送出的信息,通过 [s float2] 送出,发送到 [r float2]这一对应的接受物件,在将其发送给需要的入点。这就好像在两个物件之间连了一根线。
当设置好 [send ] 和 [recieve] (就是 [s] 和 [r])之后,可以选中toggle 你会发现动画效果终于实现了!(这里我们是让光线围绕世界坐标中心旋转。)

据诶下来,我们又遇到了一个陌生的物件:[tabread array1]
这个也是一看名字就知道了,就是read a table which name is array1, 也就是说通过这个物件,我们读取了 array1 这个数组里储存的数据。
对准 array1 点右键选择属性(properties),会弹出2个窗口,一个叫 array,一个叫canvas,同样的我们通过其名称就知道了,一个是储存的数组(array),另一个是放置数组的“盒子”或者说“画布”,“区域” (canvas),


我们自己可以随意的设置一下里面的数字,首先在array窗口中,是对数组的设置,我们给定数组有360个值(从某方面可以理解为对应的位置),名字为array1,其他的选项分别是:储存内容(勾选),绘制点,多边形,贝塞尔曲线,删除。
在 canvas 窗口中, graph on parent 就是在我们的 patch中绘制,如果勾选掉,就会在patch外部新开一个窗口。而具体的选项是x,y坐标的相应信息,边距,等等。
很重要的是:Y轴的"from to"信息就是我们所谓纯村的数组的每个值的信息。我们将其限制在1 和 - 1 之间。

此时我们可以发现区别:在 s 或者 r float2的地方,我们直接用了0-359这个数据。而在array1里面,我们是通过0-359,的触发,来读取每个位置储存的数据。

整个patch的逻辑就是这样。不妨尝试将数据给定不同的属性,尝试一下吧。

2009年4月12日星期日

Pd Gem basic Geos

Gem 内建了很多基本的Geo(Gem Object),这里我列举一些:
[circle] 、[colorSquare]、[cone] 、[cube]、[cuboid]、[cylinder]、[model]、[teapot]、[curve]...
每个geo都有一些公共的属性和自己的属性,通过 [message 1 2 3( 送入 每个物件相应的入点,取得你想要的效果。

除了绘制最近本的曲线,方,方体,圆,三角,我最感兴趣的是[model]物件,它能够直接将 *.obj 3d文件直接导入到pd, (*.obj可以直接从3DS Max, Maya ,Blender等3d软件中直接导出),
进而进行有趣的操作与设计。



图中,我们在gemwin中绘制了1个圆,一个圈,一个方形,我们分别给了这3者不同的属性定义:圆的位置,以及是否填充;圆环,设置了9个点,将其颜色改蓝色,并且以点的形式渲染;而方形,我们则让其以线框的形式渲染。很简单,不妨试试其他的Geos

2009年4月10日星期五

PD Gem -- [gemhead]

之前我们通过[gemwin]创建了Gem渲染视窗,这里,我们将要创建[gemhead]物件,通过它做为启始,来连接一连串Gem物件的。
[gemhead]总是做为连接gem其他物件的第一个初始物件存在,它总是在其他gem物件的最前列,打头阵。
每一次的渲染周期(一般在每秒20帧左右),[gemhead]将触发一次输出,被称为Gem表单(Gem-list)。这个Gem表单是一种特殊的信息,它只能被Gem物件所识别。
通常情况下,一个Gem物件想要运作的话,只有在其第一入点(the first inlet of a Gem Object)收到Gem表单的讯息。

2009年4月9日星期四

PD Gem -- A first Gem-patch-- [gemwin]

现在我么可以来通过完成第一个Gem patch 来学习 Gem 的专属 物件。
1: [gemwin]
这是一个使得Gem正常工作的最最必要的物件。它生成一个窗口(“Gem-window”)用来显示渲染出的Gem场景.
要创建一个Gem窗口,我们需要给[gemwin]物件一个信息:[creaate( ;要想关闭这个窗口,只需要送出[destroy( 到 [gemwin]。
尽管我们建立了Gem 的 渲染视窗(一般被称作"Gem"),但是这个窗口里面在初始的时候是都不会绘制。
要想在Gem窗口里显示内容,我们必须得送入讯号,让Gem window 打开渲染功能-- 通过送入 |1( 到 [gemwin] 来打开渲染,|0( 来关闭渲染。 或者我们也可以用 1个 [toggle] 来控制 :)
当我们创造gem 窗口以后,我们才可以打开渲染,而当我们直接关闭窗口,渲染也会自动停止。


大家不妨可以按照图片的完成第一个自己的patch.

接下来,我们可以通过给[gemwin]送入不同的讯息来改变Gem窗口的属性:
如果想改变gem窗口标题栏的名称,可以送出[title title-message( 到[gemwin];如果想改变尺寸, 可送出[dimen width height( 到[gemwin] (这里只是举了两个很简单的例子,还有其他属性可以由我们自己订制)

注意那个gem-window的窗口名字已经改为first-Gem,并且窗口的尺寸大小是320*240。还有,之前的那个我把destroy拼写错了:)

另外:尽管我们可以编写多个有效的[gemwin]物件,但是它们只会在同一个gem窗口中显示效果;也就是说一次只可以创造一个gem窗口。

PD Gem start

Pd Gem 初级学习开篇
这里主要是学习《Gem-- Graphics Environment for Multimedia》(IOhannes m zmolnig,forum::fur::umlaute,April 10,2003)一书,是学习Gem最初始的教程。
序幕
1,在教程的最初,作者假设我们的电脑已经安装了pd,并且对于pd的基本构架、观念有一定的基础,知道如何在pd建立物件,组成patch。
2,其次,
2.1我们对于OpenGL应该有一定的了解,这里附上wiki的链接:
http://zh.wikipedia.org/wiki/OpenGL
2.2 关于具体的尺度,坐标,在Gem里面我们面对的都是相对尺寸,不像一些3d应用软件里面,会有具体的meters,inches之类具体的度量单位。