creative framework 開發進度

名字還是難產….。

我目前把實作processing 1.5 的範例當作目標。稍微計算了一下processing的範例有101個..目前的進度是…4 (T_T)這樣要做到何年何月啊XD 不過後來應該是會越來越快啦!! 前一個在寫hsv ->rgb的時候因為對go data type 不熟 卡住好久…。不過他要一直轉換來轉換去的很繁瑣,像是:

a float64 = 4/3 (X 不行 ) 簡單的說就是一定要相同類型。所以常常會 float64, int, uint8(用在色碼上) 轉來轉去,有點在考慮是不是數字就一律 float64 uint8 就好.. 。 不過寫好 hsv->rgb的時候感覺很開心!! 底下就是目前四個範例的畫面。

p.s go-ui 裡面的qt 的 drawPoint 畫出來的點跟processing的不一樣,怪怪的….

 

go-framworks

Screen Shot 2013-04-26 at 3.07.24 PM今年雖然沒有寫展望,不過一直有一個目標在我的心中,就是自己寫一套自己的 creative coding framework 。之前一直卡在 跟qt去對接。目前最近有高手寫了一個很完整的版本 – qt-ui ,初步都可以使用。所以我就得以繼續下去了!!  上面就是仿造processing 教學的第一個作品(http://processing.org/learning/gettingstarted/ )。 程式碼長這樣(go還沒非常熟!!):


package main
import (
 "../goframework"
)
func Draw(){
 goframework.Fill(0,255,255)
 if goframework.MousePressed() {
 goframework.Fill(0,0,0)
 }else{
 goframework.Fill(255,255,255)
 }
 goframework.Ellipse(goframework.MouseX(),goframework.MouseY(),80,80)

}
func main(){
 goframework.FrameRate(60)
 goframework.Draw(Draw)
 goframework.Win(400,400)
}

不過我還是修改了qt-ui的幾個部分。

  1.  設定背景繪圖的時候不會會清除。
  2. 設定滑鼠 move事件 在不按下左右鍵的時候也會觸發。

未來大概還要改不少吧@@  qt 這邊對我就比較難了 。 目前的計劃是先把2D的部分api給完成。再來是參數化設計 , 影像處理的api  , 內建使用go 寫的 簡易的電腦視覺的lib(像是找邊緣之類的。) ,  最後跟硬體 Arduino對接。  最後是3D的部份,要有3D的部分才有辦法做投影校正的lib阿!!

creative coding II

之前提過今年的新希望是想要用google-go寫一個自己的creative coding的framework。 今天想好code name了 就先叫做 Lu_Ban (魯班),正式名字再請老闆來命名。 期望它可以成為一個有用的工具啊!!

最近的進度還是在追如何產生視窗(其實是go-native window的溝通),今天終於有了一些進展。搜尋之下找到一些go的 gui /drawing framework

https://github.com/skelterjohn/go.wde

https://github.com/skelterjohn/go.uik

https://github.com/zozor/hgui

http://code.google.com/p/draw2d/

http://golang.org/doc/articles/c_go_cgo.html  (用go去叫c)

其中go.wde給我許多啟發,我終於知道怎麼做了。  不過go.wde是採用原生的mac視窗,我想我就直接去接qt看看了。明天一早來試試看啊!!

creative coding I

新年新希望有一個就是寫一套自己的 creative coding framework。順便學習新的語言(google go )以及把圖學阿視覺阿等基礎的東西給弄懂。首先要先研究一下各家framework是怎麼做的,目前的鎖定的對象有: openframeworks, Cinder,  PolyCode (都是C++),processing(這邊只注意框架設計 )。  目前最基礎一課就是弄清楚他們如何產生視窗以及繪製2d/3d圖形。

 

Openframworks

2d使用 cairo來繪製(code), 3d 當然就是 opengl囉。

Cinder:

2d使用  gdi 的樣子(code),3d還是使用opengl。

PolyCode:

2d 使用SDL (code), 3d 一樣是使用opengl。

他們啟動視窗在windows上都是呼叫 windows的api 。

目前看起來各家在2d上都有不同的選擇,我自己這邊的也不知道該選哪種@@ , sdl or cairo都不錯。

 

視窗的部份我想接…..  Qt …。我覺得實際上有gui的需求。舉凡像是想要調整一些參數或什麼的? 或是載入圖片的按鈕之類的。 是說也可以用osc另外做一個來控制,但我覺得還是有一個比較完整的gui 系統比較好, 因為這樣也可以把套件的管理程式給做在裡面。 本來想用XULRUNNER 來做,但是好似繪圖那邊不知道怎麼接起來?不然的話用html/javascript來做gui似乎是很方便的事。

目前大概會先來接 Qt 看看。 接好了再來看看2D繪圖那邊要使用哪一套。

 

 

基礎

vgod 最近寫了這篇  過早最佳化是萬惡的根源  。其中這段話我最近深有感觸:

很多人說大學教的東西沒用,但我一直覺得,大學教的東西不是沒用,只是看你會不會用。而決定你會不會用的關鍵,就在於你的「眼界」。我每次想要突破自己的 舒適圈時,都會遇到新的挑戰,而以前沒學好的「基礎知識」就會在這時跑出來咬我幾口,強迫我把它學好才能繼續前進。如果你老是覺得做的事很無趣,用不到大 學的知識,那很有可能只是你鑽得不夠深,想得不夠多而已。

現在回想起自己的大學生涯的確就是眼界的問題。我四年來幾乎都不知道數學可以用在我喜歡領域的哪邊,眼界窄的可憐。 但我現在知道了,切身的知道了,因為我一直被數學咬,一直被資訊的底層知識咬。

最近學Grasshopper, 基礎的3D空間的概念、3D圖學都不太懂,難的東西都做不出來。 曲面的建模有哪幾種,怎麼與其他物件連動、怎麼描述?
想要做一些有趣的衍生性計算。數學都不太會算了,基本的三角函數都有點模糊了。
明明可以透過計算少走冤枉路(一直在那邊測試)的一些小東西,也往往花了過多時間。

我覺得老天爺待我還算不錯,他給了我一條適當的路,不過當中出點了差錯,讓我沒有意識到我進了寶山(我跟偏微分完全不熟….)。

不過現在我懂了,真正的懂了。 有些關卡你一定要過,差別只是早過還是晚過。

ojs 升級到 2.3.7 邊欄消失的問題

這陣子把系上的期刊系統(ojs) 從2.1.2升級到 2.3.7 。結果發現原本的theme不能用了,所以之前的一些訂正都要重來,也就是說只能升級資料庫,其他就要自己重做了。

 

這其實事小…。後來負責修改樣式的學弟發現..邊欄不見了,怎樣設定再前端都找不出來。後來我這幾天花了很多時間….(四個小時有了吧…)一直在找這個問題,一路從php版本懷疑到php.ini設定…。  後來才發現是資料庫升級後有些資料官方的升級程式沒有補回去。

是的,就是version這個table, 他就是兇手….。  只要從新的安裝的ojs把 這個資料庫的內容覆蓋過去即可。

 

謝謝大家。…

Grasshopper 學習筆記

最近跟同事一起學習 rhino +grasshopper 。 這是一套可以透過參數化、視覺化、來寫程式建模的軟體(簡單講是這樣),詳細可以參閱moca 這期展覽介紹 – 衍序建築展。投影片根據算法建模一書而來,目前我負責第三章,底下有投影片,第三章因為後面的範例對初學者來說比較複雜,所以就分成上下兩集了~~。

https://speakerdeck.com/u/crazylion/p/grasshopper

Mosh !!

今天看到網路上在討論 mosh 。一用之下驚為天人!! 這套 remote shell 適用在網路不好的時候,例如使用3G網路,訊號斷斷續續的。 他會自己重連,重連沒什麼他還會保留當時的工作狀態。 不過今天我測試遇到一點問題。 在公司的時候使用 mac osx 10.6 都沒問題。回到家用10.7 一直連不上,都會出現這種錯誤:

setlocale: No such file or directory
Connection to xxx.xxx.xxx.xxx closed.
/usr/local/bin/mosh: Did not find mosh server startup message.

找了找資料覺得是setlocale的問題。雖然我mac改成英文語系但其終端機的預設語系還是: zh_TW.UTF-8 (鍵入 locale 去看),但是遠方伺服器沒有產生這個語系的相關檔案,所以出錯。找到了這篇資料,只要在遠端伺服器上鍵入:   sudo locale-gen zh_TW.UTF-8   即可(這邊可以代換成你的系統語系)解決這個問題。

這樣用起來就相當順暢了, MIT真是太威了!!

[openframeworks] ofxbundler

最近要開始來學習 openframeworks了。 不過還是遭遇跟 processing類似的問題,就是 addon(lib)  的安裝要自己不斷地的複製。不同的專案會用到不同的 addons ,全部混在一起相當不優雅。

processing 2.0之後可以透過介面安裝,不過因為正在新舊版本的過渡期,所以其實有另外一個問題就是 lib 版本衝突的狀況(ex: 給 1.5用的lib 用在2.0會有點問題,可能package name 會衝突 )。

我覺得ruby的 bundler 很方便,vim  的 vundle 也很棒。所以就畫葫蘆寫了一個這個 ofxbundler (當然很多部分還在學習中…)。

code:  https://github.com/crazylion/ofxbundler

安裝就 gem i ofxbundler 即可。(已經有48 次下載了~~~  ,不過大概有十幾次是我自己的….)

目前支援的平台有:

mac,linux  。 windows 的話 等我之後在windows上開發在來改了~~~

目前支援以下的指令:

ofxbundler list :  顯示最新的openframeworks 版本

ofxbundler search keyword :  根據keyword 去搜尋可能的addons , 結果如下:

ofxbundle search Ani

 ofxbundle install : 根據當前目錄底下的 OfxFile 去下載 openframeworks &  addons

舉例來說,  OfxFile 的檔案內容如下:

ofx “007″ #下載 007 版本的openframeworks , 舊版本號還不支援…XD

addon “armadillu/ofxAnimatable" #  使用 git clone 去  拉下這個 addons

還有一些計畫,像是之後希望透過指令來新增/刪除 addon ,不用去修改檔案。   以及搜尋結果顯示更多的addon 資訊,像是最後更新日期等等…