2008年12月12日 星期五

雙核心(Twin Drive)啟動

最近新的動畫,鋼彈00驚險刺激的雙核心啟動可說是工作上的最佳寫照。

努力了一整個月,並在最後的兩天不眠不休地趕工。
然後在最後驗機日的上午0700左右,完成了所有教點,初步地讓整個系統自動運轉。
接著下午讓客戶觀看時,完整地展現了兩台2噸重的Robot手臂。
掛上走行軸(讓Robot手臂可整座移動的裝置)後,順暢地同步各別進行工作。
在這個的瞬間,真的有種Twin Drive發動的感覺。

雖然說同步使2個以機器人手臂同時動作在業界不算少見,
甚至進行的動作還比我們的精密。
不過在台灣,我們應該算是第一組讓這麼大的兩組還掛上走行軸進行作業,
想想還真是有種暢快感。

2008年11月20日 星期四

源氏物語千年記

http://genji-anime.com/
配音員發表

光源氏 役
櫻井 孝宏
弘徽殿の女御 役
藤田 淑子
紫の上 役
遠藤 綾
藤壺の女御 役
玉川 紗己子
桐壷帝 役
堀内 賢雄
頭の中将 役
杉田 智和
葵の上 役
平田 絵里子
六条の御息所 役
鶴 ひろみ

配音員列表一出來,這還真的是令人訝異耶
三位男角色還好,都是近年較常見的
重點是女角色的部分,竟然有許久不見的兩位老牌配音員
藤田 淑子是一休和尚
鶴 ひろみ則是布馬與阿圓(古靈精怪)
尤其阿圓竟然是配怨婦「六條御息所」
真是令人吃驚

雖然源氏物語的改編作品很多,電視劇、電影或是漫畫所在多有
但以較為接近原作(漫畫版 大和和紀:源氏物語)的部分來做成動畫卻是第一次
希望能夠成功
不過還不清楚動畫版人物設定是誰
少女漫畫的畫風要轉成動畫通常不太好掌握
要能成功這是個大重點啊

2008年11月11日 星期二

QuickGUI 8.09小試用心得


在搞定了Ogre 1.6.0之後,接下來就是曾經有投注過心力的QuickGUI測試。
不過因為版本大改特改,第二個release的版本已經從0.9.7一口氣跳到了8.09來了。
所以在重新使用上遇到了一些的問題,像是QuickGUI::registerScriptParser()的部分
要設法放在ResourceGroup讀取前,QuickGUI才能使用。
然後建立各視窗與按鈕等Widge類別前,
必須要先搞一個xxxDesc,才能建立。
重新習慣顯著有點麻煩。

當然不少地方也大幅改進,像是每個文字都可以獨立顯示其字型與顏色。
已經有辦法從寫好的Script檔直接著創建整個視窗Layout。
自定各各視窗Skin也有專屬的文字格可以使用等...
不過問題也不少,像是依然要自己想辦法動態載入新的中文字,無法像CEGUI直接處理。
Layout讀取的部分使用的是原Ogre的ScriptReader類別,遇上UTF-8的中文就死定了。

大體上還算是個不錯的GUI,效能上因為與Ogre緊密結合,還算OK。
那在稍微看過原始碼之後,開始覺得既然有把Ogre::Font給整合進去的話。
無法動態載入中文字感覺有點虛。來試著改改看吧。

2008年11月5日 星期三

Ogre 1.6.0 FINAL RELEASE


Ogre 1.6.0
在歷經了近兩個月後,1.6.0的最終版本終於問世,這個消息著實令人感到興奮。在上次RC1版本發表後,那些新的特色確實令人印象深刻。不過對於一直以GCC(Mingw)做為編譯器的我而言,RC1的版本還未完全相容於此一GNU的編譯器,是蠻傷腦筋的一件事。而另一個問題就是1.6.X版開始支援DX10,這對於大部分尚在使用XP的玩家,與使用Mingw來做編譯器的族群而言,實在是個頭痛的開始。雖然OpenGL的部分也有做強化,不過RC1跑Demo的經驗來說,會有著DX10 OK而OpenGL不能跑的狀況,反之也有發生。
但是,也才第一個版本,這些都可以慢慢來處理。而且在已經出社會,有工作在身的狀況下,我Ogre也還算一直在皮毛打轉,1.4.X還沒用的很熟咧。真的很佩服那些有工作還能投注相當心力於免費軟體開發的人們,謝謝你們。

2008年11月1日 星期六

塔塔加高山洗禮

在經歷過上週騎過台中縣三坑的復健練習
把近一個多月沒騎過上坡路段的感覺找回來後
終於是有一點點的信心可以挑戰一下海拔2600多公尺的塔塔加
不過對於同伴從水里出發的邀約還是敬謝不敏
我想,還是乖乖地從同富出發就好
畢竟海拔高度差近2000公尺可不是開玩笑的

清晨5:30分起床,起了個大早,準時於0600上龍井交流道
然後在0635到達名間交流道下與同伴會合
耶,終於輪到不是我睡過頭,不過這種事情其實也沒什麼好高興的
稍微等了一下同伴後重新出發,接著完成與補給車會合
與從水里出發的同伴相會,並發出上車邀約等事情後
0830終於到達了同富國中小學前,正式地開始了一整天的行程

一開始只覺得還算相當輕鬆,相較於上週的坡度,實在相當的小兒科
但是總長超過40KM的上坡旅程還是不可小看
尤其海拔漸漸上昇之後,空氣相對稀薄,所以一開始算放慢了一點點的速度
大約以9~12Km/H的速度一路向上
由於初始總是體力滿滿,不到兩個小時就來到了台21線116K的望高茶園
這邊大約騎了15公里左右


稍做休息,補充水分與糖份,並等後落單同伴確認一下狀況後
1030開始再做出發。
這時實在是太輕敵與看得起自己的體力了。
此時速度仍是不變,想說已經騎了大約1/3的路程了,還是生龍活虎地
腿力仍然沒有什麼異狀,應該是OK啦
一路騎上到觀峰開始休息就覺得不太對勁
雖然對於只剩下約一半多一點(25km左右,全長約45km)
但已經不敢再堅持逼近9Km/H左右的速度
開始以8Km/H為主,然後比較徒一點就6~7Km/H
然後大盤退到最小,開始祈禱腿力不要耗盡

果不其然,在接近中午12點過後,於1230開始正式覺得腿在酸了
雖然還沒有到痛的境界,也只是隱隱約約,明顯是個警訊了
同時感受到的還有速度方面,也一整個降低,此時只來到127Km左右的距離
騎了同樣的兩小時左右,只有推進不到15公里
還逼近到只有10Km的距離
不過肚子餓了,還是得先填飽肚子,就小休一下再說

休息了片刻,再騎了一個小時左右
終於順利穿過某個遂道,不過也只有這一個小時左右的腿力可以發揮
接著開始進入毅力決定一切的關鍵時刻
是的,此該恨不得從觀峰出發的同伴可以馬上下滑
開著補給車連人帶車把我接到塔塔加上
我騎得好酸啊~~~~~~~~~~Orz
是沒有同伴說高海拔所特有的空氣稀薄,吸不到氧氣的感覺
休息個片刻,也是馬上可以上鐵馬來騎個100多公尺
可是馬上腿就會酸,明顯已經沒力了,跟跑20KM半程馬拉松差不多

再這樣休休騎騎一個半小時左右
中途終於看到第三出發點出發的同伴終於下滑,準備開補給車
也遇到了從水里上來的同伴從後面追了上來
看到了友人的加油簡訊,稍稍產生了連續騎3公里的拚勁...
瞄到山壁上標高2310公尺的牌子,訝異於已經爬這麼高的實力
還有自己已經沒力了,還騎在車上心虛地接受開車上來旅客的加油聲 XD
1500左右,此時還差倒數第二站,夫妻樹約不到3公里了

當然這也意味著離最高點,今日的終點塔塔加已經只剩下5公里了
可是無奈於現實的殘酷:
  1. 晚上還要上課
  2. 我是自己一個人開車
  3. 還有天生的惰性 XD
最終我還是妥協只止於夫妻樹,畢竟最終的2公里可是要上昇140公尺的高度
就算我用牽的上去,只會超過預定的離開時間1600
同時山上天黑的快,而天黑的山,是很危險的(都是理由嘛 XD)

終於放開一切,拚著預留的最後腿力
1530左右,到達了夫妻樹

飲恨於此呀 Orz
不過,對於一位體重超過80公斤的胖子
已經相當不錯了嘛,對吧(自我安慰中)

然後車子上補給車,到達塔塔加後
開心地享用熱騰騰的湯麵
與不是很冰涼的啤酒
真的通體舒暢呀
如果腿的耐力再高一點,早上出發再早一點
這目標應該可以達成吧
不過,這樣就有個理由來個第二次啦!

2008年10月13日 星期一

假日的小探險~高美濕地~

週日下午,該辦的事都差不多了
對於自己又沒有早起去騎個山路感到後悔
決定延續上週騎到火力發電廠的平地探險之旅
但火力發電廠邊實在太無趣啦
隨手翻開地圖再瞄了一下
瞬間就想起同在台中港區附近的高美濕地

拚到高美濕地再回來
跟想像中的差不多,除了東北季風的強勁讓我覺得有些吃力外
也只比火力發電廠稍稍遠一點,來回大約1個小時半左右
人很多,尤其是情侶,所以風景很不錯(什麼嘛.....)
還有看到有人在拍婚紗照,那個長長的禮服就這樣整個垂到地上
沾到泥土,碰到海水,我想洗的人會很嘔吧(真沒浪漫情懷....)

提到高美濕地,那個巨大的風力發電機是著名的景色
那對新人在拍婚紗照的同時,也是以此為背景主題
可是無可救藥的我,怎樣都揮之不去的印象
是村雨良與城茂的戰鬥
假面騎士Spirits第二部最後一話,ZX vs 強人
果然無可救藥啦

2008年10月8日 星期三

Ogre中文輸入 Final

最新的精簡修改版本→Ogre中文輸入Final修改
想看長篇心得的可以繼續看

嗯…還是從頭講起好了
Ogre是個免費而又強大的OpenSource 3次元圖像引擎
但對於想開發中文(或所有其它多字元)的程式來說
輸入法的無法使用是個大問題(現在顯示已經沒什麼大問題)

原先,所有Ogre的Windows訊息全部被封裝在OgreWindowEventUtilities裡(1.4.X版)
所以實行中文輸入所必須取得的IME訊息均無法正常取得
目前由免費打工仔在簡體網站所製作修改支援中文輸入的部分主要是從這裡切入
不過必須修改原始碼而動到LGPL授權是一個問題
這邊作者也透露了另一個不修改原始碼的可能,直接自行建立自己的視窗,然後手動建立Ogre的Render視窗為子視窗,就這樣取得母視窗的主控制權,進而建立自己想要的訊息處理。

OK,講起來很容易,問題在於要怎麼寫?
Ogre的中國網站只先簡單地點出這段程式。
//假设之前已经执行完创建窗口以及Ogre::Root对象的过程
//hWnd为窗口句柄,root为Ogre::Root类型实例
Ogre::NameValuePairList params;//构造参数
std::stringstream ss;
ss<<hwnd; //窗口句柄
params["externalWindowHandle"] = ss.str();//把窗口句柄做为字符串形式设置到参数中
root->initialise(false);//Ogre::Root对象初始化参数为false,表示手动创建渲染窗口
//下面创建渲染窗口
Ogre::RenderWindow * window = _root->createRenderWindow("name", //名称
        width,//宽度
        height, //高度
        false, //是否全屏显示
        &params);
後續交給讀者...

喔,這可是個說簡單不簡單,說難也不會很難的問題。
如果已經直接讀完ExampleApplication與ExampleFrameListener範例程式碼的人。
手動建立一個Ogre視窗不會很難,你只要照著那個步驟,一個一個建立就行。
可是完全沒用到Windows的基本型式,這也無法先手動產生一個母視窗。
更何況訊息處理咧?還有IME的處理啊!
對於初學者來說,全部都很陌生領域。

所以這邊就大概講一下怎麼繼承ExampleApplication與ExampleFrameListener來做中文輸入。
以改造核心處理的ExampleFrameListener開始。首先建立一個檔案ExampleCFrameListener.h,
並用檔名做繼承的類別名稱。然後除了繼承的,我們需要再加入Singleton與IME用的表頭檔。
#include "ExampleFrameListener.h"
//為了使用Singleton
#include "OgreSingleton.h"
//使用IME函式庫
#include "imm.h"  

建構式建立的地方請直接參考後面的程式碼。
接著就是我們必須設定兩個空的函數去取得轉換完成與還在轉換中的字串
///這邊是取得轉換完成的字串,直接傳給GUI System的injectChar
virtual void GetIMECompResultString(const Ogre::UTFString& tempString) { } ///這邊是取得轉換中的字串,主要是給像新注音需要另外產生視窗來顯示暫時性文字的 virtual void GetIMECompString(const Ogre::UTFString& tempString) { }

然後在這邊加入視窗訊息處理函式。
static LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

這邊有點麻煩的是此函式必須為static設定,所以在裡面的處理需要取得指標來運算。
我們為了把GetIMECompResultString與GetIMECompString往這裡丟,所以才設定此物件有Singleton功能以方便馬上利用(註1)。如果還有其它的方式,麻煩請告知。

既然都到這裡了,那當然,就是把上面那兩個函數放在WM_IME_COMPOSITON的訊息裡囉。
不過當然還是要加一些IME本身的字串取得與處理。
//自己處理的IME轉換
case WM_IME_COMPOSITION:

HIMC hImc = ImmGetContext(hwnd);
//正式取得轉換的字串
if (lParam & GCS_RESULTSTR)
{
//ImmGetCompositionStringA( hImc, GCS_RESULTSTR, tCharPtr, dwBufLen );
DWORD dwBufLen;
wchar_t* tCharPtr;
dwBufLen = ImmGetCompositionStringW( hImc, GCS_RESULTSTR, 0, 0 );
if(dwBufLen > 0)
{
tCharPtr = new wchar_t[dwBufLen];
memset( tCharPtr, 0, sizeof(wchar_t) * dwBufLen );
ImmGetCompositionStringW( hImc, GCS_RESULTSTR, tCharPtr, dwBufLen );
tempString = tCharPtr;
ExampleCFrameListener::getSingletonPtr()->GetIMECompResultString(tempString);
}
}// if(lParam...
//取得轉換中的字串
else if (lParam & GCS_COMPSTR)
{
//ImmGetCompositionStringA( hImc, GCS_RESULTSTR, tCharPtr, dwBufLen );
DWORD dwBufLen;
wchar_t* tCharPtr;
dwBufLen = ImmGetCompositionStringW( hImc, GCS_COMPSTR, 0, 0 );
if(dwBufLen > 0)
{
tCharPtr = new wchar_t[dwBufLen];
memset( tCharPtr, 0, sizeof(wchar_t) * dwBufLen );
ImmGetCompositionStringW( hImc, GCS_COMPSTR, tCharPtr, dwBufLen);
tempString = tCharPtr;
ExampleCFrameListener::getSingletonPtr()->GetIMECompString(tempString);
}
else
ExampleCFrameListener::getSingletonPtr()->GetIMECompString("");

}// if(lParam...
ImmReleaseContext(hwnd, hImc);
break;

之所以要取得轉換中的字串,其實是為了新注音。
因為那個還沒轉好的字(正式輸出)是不可能就主動顯示在要輸入的地方,而舊注音有子視窗飄著沒問題。當然按上下鍵選字時,新注音的視窗也會跳出,不過還是看不到一整串的字。
所以才加了GetIMECompString來加以處理這部分。
先不管Singleton的額外設定,輸入中文最主要的部分在此。

再來是ExampleApplication的改造。一樣建個ExampleCApplication.h的檔案,然後引入舊的ExampleApplication.h與剛剛的ExampleCFrameListener.h。
單純繼承的部分就不說了,然後重點首先在於變數。
請加入
protected:
HINSTANCE mHInstance; // HInstance of application, for ime
HWND hwnd;//HWND of appliction for the new windows


然後再建立一個configure的函式修改如下:
if(mRoot->showConfigDialog())
{
// If returned true, user clicked OK so initialise
// Here we choose to let the system create a default rendering window by passing 'true'
/// But the chinese need a manual window. Set it false for manual.
mWindow = mRoot->initialise(false);

/// then create a new window for IME
setupWindow();
return true;
}


接著就是手動建立視窗的重頭戲了。
理所當然我們建立一個setupWindow()的新函式在後面。
接著取得目前的 hinstance
mHInstance = GetModuleHandle( NULL );

註冊一個WNDCLASS如下:
WNDCLASS wincl = { 0, ExampleCFrameListener::WindowProcedure, 0, 0, mHInstance,
LoadIcon(0, IDI_APPLICATION), LoadCursor(NULL, IDC_ARROW),
(HBRUSH)GetStockObject(BLACK_BRUSH), 0, "OgreChineseWnd" };

RegisterClass (&wincl);

請注意那個ExampleCFrameListener::WindowProcedure就是加在這裡。

接著我們建立並指定視窗的大小位置與視窗類別等等
取得其HWND
hwnd = CreateWindow("OgreChineseWnd", "", WS_OVERLAPPEDWINDOW,
left, top, width, height, HWND_DESKTOP, 0, mHInstance, 0);

這時我希望有個不同過去的中文化標題
SetWindowTextW( hwnd, L"Ogre中文輸入測試視窗");

再來就是照著最先的部分,讓Ogre設定一個同樣大小的視窗,為子視窗
Ogre::NameValuePairList params;
params["externalWindowHandle"] = StringConverter::toString((int)hwnd);
mWindow = mRoot->createRenderWindow("Ogre Render Window", width, height, false, &params);


最後不要忘了,讓母視窗顯示,才不會什麼都看不到
ShowWindow (hwnd, SW_SHOWNORMAL);


這樣大致上的設定就差不多了。
接下來的部分,首先要繼承上面的新類別(廢話 XD)
然後編譯的參數要加入imm32,這樣IME才有作用。
當然也不能忘了,要讓GUI System或Ogre能顯示中文字才有辦法看得到輸入
這部分就不加贅述了
要補充的是輸入的部分。
以CEGUI為例:
在CEGUI::System::getSingleton().injectChar( arg.text );前請加入這一行
if ( !ImmIsIME(GetKeyboardLayout(0)) )
讓IME啟動時,無法輸入英數,才不會在轉換前多了一堆自己Keyin的亂碼。
加入GetIMECompResultString的函式如下:
void GetIMECompResultString(const Ogre::UTFString& tempString)

Ogre::UTFString temp = tempString;
for (int i = 0; i < temp.size();i++)
{
CEGUI::System::getSingleton().injectChar( temp[i] ); }

injectChar只能處理單一字元,所以才會用迴圈一個一個輸入整個字串。
另一個GUI System "QuickGUI"的部分大同小異,要多記得把Ogre的中文顯示設定好(它沒辦法像CEGUI本身自己支援Unicode轉碼,要靠Ogre自已顯示),並使用setSupportedCodePoints
把要中文的字碼先往裡面塞,不然就算有輸入,它也會因為找不到對應的,而自動取消,會白忙一場。

最後,修改的完整範例在這裡:
ExampleCFrameListener.h
ExampleCApplication.h

一些地方略有差異,最主要就是第二個檔案的setupWindow的函式有參考RenderSystem的原始碼
可以自動生成置中且與一開始設定相同大小的視窗。
我想在Win32的環境下,使用中文輸入應該就這樣子吧。
當然還有一些IME的功能沒有很完整地利用,不過我想這個任務就交給其它有更深需求的人來做吧。我想寫的東西只要能輸入名字就很足夠了。

感謝在我研究IME過程給我幫助的網友,不然現在可能還是尾巴會帶出一堆亂碼來的版本。
另外測試的電腦有灌過Unicode補完計畫,我不清楚是否對IME有所影響。因為我所寫的是專門給寬字元(Wide Char)用的GetIme的函式,有可能會在不支援unicode的輸入法出差錯。
還有我的編譯器是mingw的gcc,VC還沒試著跑過,不過我想問題應該不大。

這東西其實搞起來難度不高,而且看來在1.4.X版出來後,就有辦法實做出來。
到底是搞中文的人少呢?還是即然已經有修改程式碼的辦法,就無所謂呢?
總之,斷斷續續,忙裡偷閒地搞了至少3年Ogre。
能實現一種中文輸入成功真的很高興。在此分享給大家。

註1:其實我還是個半生不熟的學習者,只知道可以拿來用,還不知道為什麼可以用,以及是否有其它延伸的問題。還忘多多海涵。

2008年10月7日 星期二

Ogre的中文輸入 Part2

這次花了點時間修改了ExampleApplication與ExampleFrameLisntener的範例用檔案,讓可以使用IME的視窗自動產生。然後把WindowProcedure直接放入ExampleFrameLisntener裡,本來是想讓這個訊息處理直接使用ExampleFrameLisnetner裡面的函式,可是失敗了,因為它必須為Static宣告。
所以只好再用Singleton的方式解決,然後把函式宣告為virtual,內容為空,讓範例可以直接修改使用。
另外新注音無法顯示尚未結束轉換的字,目前還是只能用另一個StaticText(CEGUI)或是TextBox(QuickGUI)來幫助顯示,比較起來日文的IME還是比較好啊,可以浮空顯示。
最後的最後,參考了MSDN上的IME範例,還是沒辦法解決那個IME轉換後,會有隨機不確定的亂碼產生,反正產生出來殺了就OK,就先放著不管好了。

2008年10月5日 星期日

九月的噴射氣流攻擊(ジェットストリームアタック)

九月份真不是個騎自行車的好日子啊!
一連來了三個颱風不說,還大部分都往假日撞啊。
週六都已經因工,因為工作而無法出門
還來這套噴射氣流攻擊實在讓我整個人活力降到了幾近谷底。

這時候要是有鋼彈就好
「是呀,爸爸做的鋼彈是無敵的(湯尼調)」
只要我的自行車像鋼彈一樣
連颱風天都能出門啊,哈哈哈哈哈
....妄想結束
不過現實終究是現實,颱風當天先不管
颱風走後,山區均是一片殘破
大雪山那邊據說也是處處坍崩
13KM就斷了的樣子(一週前左右的消息)
今年初剛開放的雪見游憩區(司馬限林道)也是暫時封閉
看來要深秋或是入冬才有辦法再去朝聖

最近就先在自家附近的小丘崚地好好地練習吧

2008年9月21日 星期日

Ogre輸入中文的辦法

如果還沒什麼人創新辦法的話,目前總共有三種
一種是直接修改源碼,讓已經被封裝的WindwosEvent可以被使用。
一種也是修改源碼,過去有個所謂i18n的patch版本(1.0.x到1.2.x左右的事吧)
這是利用SLD的Input來做,理論上是跨平台的最好做法。
最後一種,也是最麻煩的一種,改在建立Ogre視窗時動手腳
不破壞Ogre原始碼,可以直接使用PreBuilt SDK的辦法,雖然只能用在Windows。

這是從Ogre的中國非官方站看來的
應該也是修改源碼讓其可以支援中文輸入的"免費打工仔"寫的
就是利用Ogre最初就有的特性,可以內嵌成為子視窗的辦法
讓我們直接利用父視窗的一切來取得IME的文字

喔...這樣講起來很容易,可是實作起來...
如果不是對Windows的訊息運作有一定的了解
還有對如何取得IME的文字有相當的認知
同時對於如何手動建立Ogre而不使用ExampleApplication的繼承的話,
還真的是不知從何開始著手。

就這樣,斷斷續續搞了我半個多月才起來....
正式說起來是三天左右
而且還是個不完全的缺陷範列
第一天從一開始我著手方向就錯誤了,所以一直做不出來,就此中斷
第二天是前天,工作到一半忽然靈光一動發現錯誤的地方
然後成功地補捉了WM_IME_COMPOSITION訊息,顯示了個MessageBOX出來
第三天是昨天,花了一個下午的時間,把中文成功地在QuickGUI裡輸入
是用injectChar輸入喔,不是用setText喔。
之所以不完全,是我只有處理IME轉換的部分訊息,所以新注音不能正常使用
沒辦法做還沒轉換前的暫存編輯(就是選字看不到)
也沒做UNICODE轉換,所以萬一輸入法不支援Unicode也不能用。
但總算是實現長久以來的夢想

不過話說回來,這與我真正寫遊戲,好像沒多大關係喔
如果不是非常執著於在Ogre裡面輸入,搞個DialogBox也可以辦到啊
我也不用處理什麼IME訊息,頂多要做BIG5轉UTF8而已
所以我在幹什麼啊!

2008年9月2日 星期二

Ogre 1.6.0 RC1釋出


Ogre 1.6.0 RC1
千呼萬喚始出來。
最新版本的Ogre3D終於出來了。
不虧是大改版。
新的概念與東西一大堆。
稍微研究一下,還蠻令人訝異的。
像新的Script Compilier已經進化到,具有簡單的物件導向概念,能繼承與使用變數。
還有全新屬性Portal Connected Zone的ScneneManager(PCZSM)。
這PCZSM簡單地說,就是將類似LOD的模型(Model)概念整個使用與室內場景與Terrian上。
LOD是離愈遠,模型會簡單化以節省資源,而PCZSM則是鏡頭(Camera)看不到的東西全部省略,
並不是被材質擋住了,是連線架構(Wireframe)都看不到。
另外還新加入了Parallel-Split Shadow Map等等的新東西。
可惜最近工作比較忙,看來只能忙裡偷閒,找空白時間來研究研究。

不過這麼大改的東西,我拿用修改舊的專案會改不完
我看還是先用1.4.X來持續目前的計畫,反正這只是RC1
要跳等1.6.1 Release再說。

2008年8月31日 星期日

8/31 萬人泳渡日月潭

聞名以久的大活動,今天終於如願以嘗地參加,並游完全程。
不過全長3300公尺的橫渡之旅,實在稱不上是個快樂的旅程,尤其是在這次準備不足之下。

首先,活動並不提供置物的地方。我們這次組隊又沒有補給後勤組。還要自行準備防水袋帶一些重要的配備,如領中餐與衣服的票卷、坐船回出發點的船票錢等等。在只有兩個防水袋的狀況下,可以說相當的不方便,遊過去還要找人拿東西,而大家實力又不盡相同,雖然說主辦人很盡力地第一位游過去。
再來,活動終點的地圖實在太過簡單,而且與實際配置有不小差距,在沒有事前探勘過活動現場的狀況下,大家都找不太到事前約點的集合地點。當然,現場兵荒馬亂的情況可見一斑。我也是靠著直覺才與同伴們相會。
最後,那個鳥證書是怎麼回事。什麼叫:因為參加人數眾多,所以決議發空白證書,名字回家自己寫。喂!加印個名字有這麼難嗎?光這一點就讓這活動的品質下降不少的感覺。

不過,總算是有參加過,並拿到證書。
雖然不是十分美好的回憶,卻也達成了長年的一項願望。
還有住了間不錯的民宿。

國片的新希望-海角七號

這是一股難得的風潮。
近來很少有國片在短短一週之內達到1200萬的票房成績。
如此閃耀的成果,真的該歸功於導演的不放棄。
據說他為這部電影,先賣房子代墊3000萬...

嚴格說來,這片子的缺點或許真的不少,確實無法是國外大片相比
不過,那又如何,這依然是一部對本地人來說歡樂無比的娛樂片(不懂台語者例外)
在不成熟的地方,仔細品味仍然可以感覺到導演的用心
中間或許有些冷場,可是最後的氣氛營造,仍然為此作品留下令人可以細細回味的結局

實際支持過之後,期望這片能為國片再帶來新的遠景
雖然不夠完美,但做為國片的引爆劑,相信它絕對夠力夠勁,
有足夠的能量為國片未來開創新的格局

海角七號官方部落格

2008年8月26日 星期二

太看得起自己的體(腳)力了

8/23,晴
本想在難得的假日下,好好挑戰一下上次沒戰完的大雪山林道。
結果,唉~~
果然是太看得起自己的腳力,與看輕這山道的恐怖。

為了這次的挑戰能順利一點
我把原本的外胎,俗稱「巧克力胎」的越野用顆粒寬胎(胎寬2.1)
換成了一組胎寬1.5的一般胎。
同時,儘量減輕背包的負重,所以水也帶不多。

從底下往15KM處的中繼站,還算十分順利
6點40幾分出發,8點半多一些就衝上去了
不過,真的太看輕15KM之後的路段
接下來的速度就連7KM都達不到
然後就這樣一路咬緊牙,努力苦撐,直到功敗垂成於25~26KM處
整個腳的持續力無法撐過連續300公尺的上坡為止。

我認了,全是腳力不足的關係。
接下來真的要花點時間練一下腳力。
附近有個又長又夠力的上坡,加油加油。

2008年8月18日 星期一

你準備好開戰了嗎?



才剛看完TDK,趁著餘興未消
趕緊去出租店找開戰時刻來了解新版本的開頭

一開始還真的很不習慣,這真的是英雄片嗎?
忍者大師?影武者聯盟?啥鬼啊
不過小時候那段的經歷,個人覺得比起舊版的來得更貼切
一切源於(自身的)恐懼才造就的英雄

然後韋恩宅邸被燒那一幕,也算是一種與舊版訣別的意味
因為不論漫畫、影集或動畫版,好像都還沒有老家被燒得這麼慘的蝙蝠俠
雖然配合著那句「之所以跌倒,是為了學會站起來」
一瞬間感覺有些刻意,不過還是跟著發出會心一笑

在看完後,有著這麼強烈的感覺是
這Begins與TDK其實算是上下兩集的新系列開頭
Begins勾勒出新版的外形,而TDK則注入更完整的血肉
是不該這麼說,可是遇上TDK的小丑的慘事
讓整個蝙蝠俠一切更為完整是事實

記得Discovery有做過美國十大英雄排行榜的節目
裡面蝙蝠俠雖然不敵金鋼狼、蜘蛛人等平民超級英雄
可是仍有排面進前五名的高人氣
印象中在節目裡大約是這樣描寫的:
「他是第一個背負著暗黑面的英雄,展現許多『人』的陰暗面;之所以贏過超人
就在於他近於人活生生的一面。」

舊版的蝙蝠俠,並沒有對不殺有所堅持
並沒有被警方視為壞人而追補
然而新版的...怎麼說,雖還沒達到「我不入地獄,誰入地獄」之境界
可是背負著莫須有罪名,仍然不忘初衷,硬是一肩扛下
黑暗的騎士~The Dark Knight~

2008年8月15日 星期五

目標:大雪山全程

終於驗完機台了,接下來就是把上次的目標完成。
這是第一次從15km往上的路徑。

接著是第二次從豐原出發的路線

這次就是要把它合成一條線


加油加油,GOGOGO!

2008年8月12日 星期二

是英雄般的死去,還是活著看著自己變成壞人


一直對於新版的蝙蝠俠相當有興趣
今年續作The Dark Kight(暗黑騎士)
在看過不少人對於IMAX版的大力贊賞後
趁著剛好要北上看VGL,就和朋友一同觀賞

這畫面之熱血與震憾是不用再提
劇情更是一等一的好,經典的台詞不少
其中最震撼的台詞之一,個人覺得就是標題這句話
劇中是以凱薩為例,在為人民出征取得兵權後成了羅馬的獨裁者
從此羅馬從共和轉為帝國,成了所謂的壞人
而說出這句話的哈維,也如原作一般最後成了...

不過呢,那些古人與虛擬角色先放一邊
眼光拉近的話,有時候在想,是否我們也正在「活著看著自己變成壞人」
有時候檢視目前行為與小時候所期望的「大人」不同時
還真的有點變成壞人而無法走回頭路的感覺

這比喻其實相當不倫不類
因為反過來說,逃離「社會化」的算是「英雄般的死去」嗎?
嗯,或許該說真懷有崇高理想的人,在理想未果,而從社會消失
這樣才算是英雄般的死去吧

可是到現在還沒找到心中真正能追尋的理想的我
應該是沒這資格說什麼
胡言亂語就到這裡吧

2008年8月5日 星期二

Code::Blcoks 正式版

其實已經是舊聞中的舊聞了。
不過應該那時在忙就沒有注意。
直到最近在找Ogre相關資料時,才發現已經發正式版了。
而且一跳就是從1.0RC2到8.02版。

看一下目前的版本:2008年2月6號的Nighty Build。
而正式版是同月的28號 Orz。
不過真的很久沒有開Ogre來玩玩,有空的話,還是努力寫個東西出來吧。

2008年8月3日 星期日

接著強襲魔女(Strike Witches)後

這死K社,連MGS都搞下去啦!
而且某人沒提醒還沒注意,都是裸足耶!
METAL GEAR SOLID 4 GUNS OF THE PATRIOTS × FIGUMATE Sweet Snake

不過這個Snake好可愛啊。

福音戰士新劇場版:序

終於買回家了。
第一時間就拿起特典往光碟機送。
這...我是很想說有些騙錢啦,不過看著那些特別註解的文字。
享受著與本篇稍稍不同的氣氛,這點小浪費還OK啦!
而且設定還有點詳實到令人噴飯的程度。



而且還有人物介紹

地點設定

當然兵器也...

連新第三東京市的設施






2008年7月21日 星期一

轉眼又是一個月

果然還是不太習慣使用blog當做個人心情或其它記事。
目前還有另外使用Joomla!建立自己的多功能網站。比較起blog,那種站台似乎比較合乎我的個性。
不過這邊還是將就點用,就當做狡兔的第三窟吧!

2008年6月28日 星期六

第一次使用Blog

偶爾還是不要與現代生活太脫節的好

何況有些東西也想給大家看看,雖然也不是什麼了不起的東西

總感覺這blog與BBS個人板差不多,只是比較Open, 而其它人不人發文只能加註意見

就用用看吧