2020年10月29日 星期四

郊山小走:坪林老街上烏窟子山,經崩山坑到籟狸尖山

秋芒隨風搖 遠眺蕭瑟群山

郊山獨行,由坪林老街始,上烏窟子山,經崩山坑,至籟狸尖山再由坪碇路五小時返回。行程起因是,兩個月後將參加茶茶越野跑,因為是初體驗,藉著爬山進行探路。

路線前段為水柳腳登山步道,從老街到步道頂端觀景涼亭,高度提升雖然快但仍有階梯和清楚可辨的山徑,這種路能夠跑嗎?心中雖然存疑,腳下還是加緊速度走著。途中經過涼亭,休息拍照,只見滿眼無盡群山下,一帶綠水併著坪林街區蜿蜒流過,茶園和檳榔樹面積比想像中來的小,倒是高壓電塔和電纜線非常煞風景的切割著畫面。

別被起初階梯騙啦

此處標高240公尺,由出發點坪林國中算來已上升50公尺,離目標710公尺籟狸尖山還有很長距離呢。行前觀察路線資料(連結 連結),大致上都是緩上坡,若都是類似路況應該可無意外到達目的地。不過,計畫總是趕不上變化的,通過涼亭後路況越來艱難,隨著兩旁雜草高度從膝蓋逐漸升到半腰,滑倒次數越來越多了,連拉繩都出現了。

後段盡是類似"路"況

更有甚者是不少路段只見叢生的樹枝和密林,初次探查且是獨行就要面對這種完全不知腳要往哪踏的窘境。若不是下載了清晰明確的路徑,沿途也始終有通信訊號,換成平時早就撤退回家啦。最後也是拖拖拉拉還是到的了山頂。

很難想像坪林街區周邊就保留著如此大面積原始低海拔闊葉林,行走其間也會不時想著先民當時披荊斬棘,日日夜夜也都是面對著如此情景吧。與一小時車程外的台北市車水馬龍相比,這裡完全是大自然的世界。若撇開獨行的恐懼,今日氣候涼爽,身處其間應該無比的享受。

難得有心情拍著小花
當然也不是全程都是恐怖的山路,坪林號稱茶的故鄉,這次野跑野名為茶茶路跑,當然要有茶園陪襯才行。路程中,烏窟子山附近就散佈著不少茶園,這些被小山嶺環抱的茶園,因為附近的與世隔絕,成為荒山野嶺中顯得較溫馨的小區域。平時除了登山客無人煙吧,見到我都有些興奮的和我聊著,看著他們熟練的動作,讓我回想起去年在日本靜岡縣也是在山嶺茶園中穿梭的情景(連結)。
涼亭附近茶園

烏窟子農路邊一景


崩山坑附近茶園

大約兩小時後離開崩山坑,接上黃櫸皮寮步道,此處地勢更高,林相也轉為杉林,再向上就是籟狸尖山觀景台,匆匆一撇,拍個到此一遊照就循著文山禪寺方向下山回程。

採茶人拉著我看大蜂窩

黃櫸皮寮路徑上廢棄車輛,由內部長出山蘇

既然是探路之行,還是回到野跑來分析,高度提昇來看,雖然都是向上,但因為新奇和興奮並不覺得疲累,但路徑狀況實在遠遠超乎預期的糟糕,連拿著登山杖都沒辦法走的路線,該怎麼跑起來呢?除了換穿野跑專用鞋、厚且不勾紗運動褲、併加掛水袋外,可能得挑時間多練習幾次,才能稍稍掌握野跑的訣竅吧。

諸天神佛請保佑我跑完茶茶路跑啊

雖然平時有在慢跑,但野跑的方式似乎完全不同。近期將開始在家附近高峰植物園進行練習,之後再擴大到飛鳳山跑山,總之先求諸天神保佑跑完年底的茶茶路跑,再來考慮其他路線。

後記:2020/12/12茶茶山徑野跑活動紀錄(連結)。

2020年10月22日 星期四

閱讀筆記:雪國

雪國,故事情節簡單,幾句話就能說完,(遊手好閒)中年大叔持續三年秋末時節,闖入雪國,闖入純愛女孩(藝妓)心中,發展著若即若離欲拒還迎關係,直到被另外充滿靈性少女闖入自己心中的故事。全書沒有龐大故事情節,也無關時代背景,既不討論階層與社會化等議題,更無說理、象徵、現代性文學手法。認真地說,很像缺乏高潮起伏與激情色情描述被寫壞的輕小說。

請原諒我的淺薄,畢竟這類典型的敘事文學總是平淡,且男女曖昧主題也不是我的菜,所以早幾年,既使明知這是諾貝爾文學獎光環加持的巨著,也無法耐心看完。最近卻不然,不只翻看完,之後幾天更恍恍惚惚,始終沉浸在那淡淡似水的況味中。

雖然覺得故事事件和人物還是單純,也讀不出作者具體想表達內容,但那遙遠空間發生的故事,卻確實的搖晃著自己心靈深處不曾開啟過的區域。好像無聲的漣漪在心中緩緩四散著,擾動著我習以為常的生命態度,刷上朦朦朧如霧的光彩。

故事發生地,雪國,具體地點應是日本新潟到群馬之間山村旅館,就在秋末冬初,白雪開始覆蓋靜謐大地前,主人翁是東京文學家,到此度假,並且與山村藝妓發展出幽微的關係。或許是季節吧,作者筆下的世界,總是充滿著冷寂且渺渺茫茫的意象。

主角和藝妓駒子,起初互有好感,慢慢發展到互有愛戀,過程都是淡淡寫來,不露骨但總能精確抓到那個感覺。這類詳細描寫感官刺激和心緒的技法,是川端康成所謂新感覺派的特徵。前幾年日曜日式散步者提到的風車詩社,以及川內倫子或景光攝影作品,也都是類似手法。

而隨著故事情緒堆疊,幾次兩人就要越界時,雙方最終卻都尬然而止,只有將情感深埋心中。這種怪怪的,不舒服,刺激著到我們道德界線的描述,不只挑動著主人翁,更讓讀者沉入其中,領會那游移和不確定的氛圍,讓人覺得餘韻無窮。

一直以來,我都是習慣於道德明確和積極充滿的人生,那裏有秩序和邏輯,卻少有美。而在川端康成的筆下,秋末白雪的凋零感是美,身而為人不得不有的內心曖昧複雜也是美。他總是能用簡潔的語言和敏銳的感知抓住這種特質,透過細膩的筆觸,一點一滴呈現出來。

更有甚者,川端康成的美,不只是表象的美,而是內心深處的哀傷和幽情、以及對人世無常的感慨累積成,討論生存意義和價值的美。人生短暫,稍縱即逝,佛說無常。但仍有許多人堅定的做著讓外人覺得徒勞的努力,捕捉那美的瞬間,化為文字、或藝術,使其更加絢麗奪目,成為永恆。

而我,在這心如荒漠的人生期間,能有機會透過雪國這美麗作品,感受到人生之美,真開心。(最近常聽音樂 連結)

技術筆記:Structure from Motion

以視覺方式取得3D模型方式中,除結構光和雙眼立體視覺外,最常見就是SFM。下列是接觸COLMAP(連結)時紀錄。

SFM最大特點就是全軟體計算,主要是三步驟,取出特徵點,特徵點匹配,3D重建,至此可生成能旋轉瀏覽的PLY檔案。若要針對每個PIXEL進行分析,可以前面結果為基礎,利用照片光影資料將其細緻化。

先以south building為範例,下載測試資料(連結),約有一百多張照片,每張照片解析度為3072X2304,內容是環繞著一棟建築物逆時鐘拍攝照片,平均算來建築物每面約30張。

File->New Project->設定image為image目錄 新project放在base目錄名為 house (產生house.db)

File->Save Project 會成為 house.ini ( 奇怪,new沒有要save才有)

Feature detection and extraction

Processing->Feature Extraction ,使用SIFT演算法,可調整介面如下。不到一分鐘 完成,過程紀錄在db(sqlite) house.db。

Processing->Database Management,點選任一圖片後,再點擊show image,可以視覺化觀察SIFT後的標記點。以範例來說,標記出的點密密麻麻恐有上萬點,如此多的特徵點讓後續match和接合都異常順利。但自己拍攝口腔模型後,發現特徵點僅有數十個,大大影像實驗效果。

提取特徵點和三個項目有關,包括照片解析度(清晰),拍攝角度(廣角),及場景內容(豐富程度,以及反光狀況如材質)。colmap範例照片解析度3099 2314且為廣角拍攝,建築的紋理也多,容易成功。口腔相機僅有640X480且成像品質差,FOV又窄,更重要是口腔牙齒都光滑且缺少對比。若拍攝月桃種子,效果很好,相對的積木就很糟糕,若改用石膏牙齒口腔模型且加入雜點,成功率就大大提昇。
 
特徵點和畫面複雜度有關,塑膠平面幾乎無效

塑膠口腔模型,完全達不到SFM要求

Feature matching

此階段是對上述已標記特徵點照片,兩兩一組測試是否為相鄰,並將可能是同一特徵點但僅因視角不同而移動的點,記錄入資料庫。Processing->Feature Matching 可選擇參數如下圖。開始狂操GPU,過程中並沒有產生新的目錄,但有兩個新檔案產生(shm wal),且db持續更新增大,15分鐘後,db檔案達到250M(或更大),前兩個暫存db檔案則被移除。最後記得Save Project。

操作上,Processing->Database Management,點選任一個圖片,再點擊overlaping images,可以看到某一照片例如編號9和那些照片重合。系統並且依照重疊數量由大致小排序。

選擇其中一項後,點選show matches可見到以視覺化接合的方式。


從簡易的操作說明中,可以發現,上述接合過程是一對多進行,也就是說每張圖片都要和其他圖片進行比對計算,複雜度為NXN,所以拍攝的照片越多,處理時間為指數性上升。此時可以考慮引入另外一種模式(tab中第二項sequential),即每張照片都與上一張是相鄰,因為接合範圍縮小,要處理的項目變少,處理時間應該也大幅改進。

Python Code for step 1 and 2

將兩張2D影像組合並且並列顯示,可參考連結

Initiate SIFT detector
Find the key points and descriptors with SIFT
Apply FLANN for feature matching
Store all the good matches as per Lowe's ratio test
Find 2D points corresponding to good matches
Store points retrieved from the good matches
Find essential matrix and mask to remove outliers
Recover rotation and translation matrices from the essential matrix
Convert image coordinates to normalized coordinates
Find Extrinsic matrix of second camera, first camera aligned with world co-ordinates
Find projection matrix as a product of intrinsic and extrinsic matrix
Remove outliers
Find 4D homogeneous points and convert to 3D points

程式中需要的Calibration資料,可參考連結

Spare Reconstruction

最後步驟是將所有可能的照片進行真正接合,計算過程會為每張照片決定當時拍攝角度,並且透過多張照片,動態修正且排除誤差。

Reconstruction->Start reconstruction 過程中檔案系統並沒有變化,但畫面上陸續會出現模擬的照相機,位置也是系統模擬出的當時位置,除相機外,特徵點也陸續出現,且接近融合成3D建構物體。

目前COLMAP範例約花6分10秒,完成128張照片,共86000特徵點運算。因為資料庫檔案容量沒有變化,推測視角資料和點雲等應都還留在記憶體中。且也完成adjust。File->Export model 選base目錄,不須指定檔名,產生新檔案cameras.bin images.bin points3D.bin。這些也就是spare內容(雖然目前為止並沒有spare目錄)。下面是128張86000個點的點狀圖集合(spare)。

外圈是計算後每張照片原始拍攝位置

目前最大困擾是,範例照片或高解析照片都能順利完成接合,但實驗所需要的照片往往會出現。  => No good initial image pair found.  應該是找不到合適的接合點,推究原因則是牙齒材質太均一,無法產生數量足夠的特徵點。

export model as 可選擇PLY格式,選擇合適的位置後,填入檔案名稱包括副檔名.ply,即可用meshlab開啟瀏覽。立體圖如下,理論上來說,若點的數量越多越密集,呈現的效果越好。另外,畫面中的顏色是取出當時拍攝點的顏色,若特徵點不足,就會產生空洞。

程式結束後,若要繼續處理可先File>打開xxx.ini(project.ini似乎是預設,讀取的是另外指定名稱的例如 house.ini ),即可讀取資料庫。並且使用import model讀入先前資料目錄。

Dense Reconstruction

上述方案僅能呈現由特徵點構成的畫面,如何將更細部的紋理貼上表面,可參考理論基礎(連結),繼續執行dense reconstruction,可取得每張照片的圖面深度,達到立體化視覺。Reconstruction->Dense reconstruction,先select設定到base目錄,開始依序執行各個步驟undistortion很快的產生spare和stereo兩個目錄,並且將bin檔拷貝到spare中。

Reconstruction->Dense reconstruction->點選 stereo,子目錄中會對各照片依ID進行處理,先增加陸續增加檔案。格式如P1180320.JPG.photometric.bin(約二小時) geometric(約一小時),耗時非常久,結束後並沒有產生類似ply檔案。Save Project。

Reconstruction->Dense reconstruction->fused,以前面產生的bin和geometric為基礎,進行貼圖。執行時間約三十分鐘,完畢後會詢問是否要生成ply。生成檔案為fused.ply,可用meshlab瀏覽。


移動視角可以看到立體畫面,效果驚人
用640*480低階相機,拍攝大花紫薇。

Reconstruction->Dense reconstruction->Possion,以前面產生的bin和geometric為基礎,進行貼圖。執行時間約三十分鐘,完畢後生成meshed-poisson.ply,可用meshlab瀏覽。

Reconstruction->Dense reconstruction->Delaunay(德勞內三角化),以前面產生的bin和geometric為基礎,進行貼圖。執行時間約三十分鐘,完畢後生成meshed-delaunay.ply,可用meshlab瀏覽。

COLMAP編譯安裝使用

編譯非常惱人,順便紀錄過程,工作環境ubuntu 18.04 cuda 10.1 已安裝conda(會造成後續困擾,但沒辦法)。依指示進行(連結)。

git clone https://github.com/colmap/colmap

sudo apt-get install \
    git \
    cmake \
    build-essential \
    libboost-program-options-dev \
    libboost-filesystem-dev \
    libboost-graph-dev \
    libboost-regex-dev \
    libboost-system-dev \
    libboost-test-dev \
    libeigen3-dev \
    libsuitesparse-dev \
    libfreeimage-dev \
    libgoogle-glog-dev \
    libgflags-dev \
    libglew-dev \
    qtbase5-dev \
    libqt5opengl5-dev \
    libcgal-dev

sudo apt-get install libcgal-qt5-dev

在colmap目錄下,功能是大量非線性計算求最佳解
sudo apt-get install libatlas-base-dev libsuitesparse-dev
git clone https://ceres-solver.googlesource.com/ceres-solver
cd ceres-solver
git checkout $(git describe --tags) # Checkout the latest release
mkdir build
cd build
CC=/usr/bin/gcc-6 CXX=/usr/bin/g++-6 cmake .. -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF  (稍微改)
make -j
sudo make install

在colmap目錄下
git clone https://github.com/colmap/colmap.git
cd colmap
git checkout dev
mkdir build
cd build
CC=/usr/bin/gcc-6 CXX=/usr/bin/g++-6 cmake .. (稍微改)
make -j   (這時後會失敗找不到TIFF.so 因為被conda干擾 所以先把home下面anaconda3隨便改名 重新執行成功後 要記得改回來)
sudo make install  (理論上連LIB都安裝完畢)

在colmap目錄下
colmap -h
colmap gui (用command也可以歐,只是還沒有嘗試過)

以Command Line操作COLMAP sparse

COLMAP是純C語言專案,各項動作以database為資料交換,詳細動作可全由參數控制,API(連結),FAQ(連結)。

91張640 480圖檔,目前位置是在,/home/kayjean/project/colmap_utils/warehouse_test,直接console目錄中。time colmap feature_extractor --database_path ./database.db --image_path ./images 第一次執行2秒 第二次執行0.1秒

time colmap exhaustive_matcher --database_path ./database.db 第一次執行3秒 第二次執行0.2秒  依照這種方式繼續進行3D重建mkdir ./sparse   time colmap mapper --database_path ./database.db --image_path ./images --output_path ./sparse 花費時間22秒。

產生的檔案,sparse/0 裡面有四個檔案 cameras.bin(相機位置)   images.bin(影像照片位置)  points3D.bin(所有計算出來的點雲)  project.ini這是紀錄這三個檔案產生時,相關檔案參數。所謂0的意思是,系統認為這次3D重建可區分成幾個子部份的第0個(就是首項)。啟用GUI模式,直接file->import model 選擇sparse/0/目錄,即可看到經過計算後的3D畫面。

time colmap model_converter --input_path ./sparse/0 --output_path ./test.ply --output_type PLY   時間約0.01秒,產生PLY檔案,啟動meshlab file->import mesh->xxx.ply就能看到點狀雲。

另外一種matcher方式為sequence    time colmap sequential_matcher --database_path ./database.db  第一次執行時間為3.4秒,效果和exhaustive差距不大,後續的mapper也沒有比較快,很難評價其效果。

以Command Line操作COLMAP register/merge

register是在原本已有的大3D結構中,隨意搜尋或添加新2D影像,不太符合線階段使用狀況。而merge是將兩個有部份結合的部份,接合在一起。

colmap feature_extractor --database_path ./database.db --image_list_path list.txt --image_path ./images   這其中雖然images有九十張,但是list.txt 內容是(001.jpg 002.jpg.. 沒有目錄資訊) 這次作業就只會處理其中45張,此時資料庫應該只有45張照片資料

因為檔案數量只有一半,time colmap exhaustive_matcher --database_path ./database.db 的時間也只花費一半

time colmap mapper --database_path ./database.db --image_path ./images --output_path ./sparse1 --image_list_path ./list.txt  大約10秒,注意我把資料先放在sparse1  看起來很正常

開始處理第二組,colmap feature_extractor --database_path ./database.db --image_list_path list2.txt --image_path ./images   list.txt改為list2.txt名單是後面一半,包括了中間十張左右重疊    time colmap exhaustive_matcher --database_path ./database.db  也是正常的  time colmap mapper --database_path ./database.db --image_path ./images --output_path ./sparse2 --image_list_path ./list2.txt  大約7秒,注意資料是放入sparse2  list2

 time colmap model_merger --input_path1 ./sparse1/0 --input_path2 ./sparse2/0 --output_path ./sparse3/  東西會直接放入sparse3,但merge是沒有project.ini

 time colmap bundle_adjuster --input_path ./sparse3 --output_path ./sparse4  這步驟花了4秒

time colmap model_converter --input_path ./sparse4/ --output_path ./test.ply --output_type PLY 結果正常,預計作法是,有個單獨的process,會一直監測目前images目錄,一開始超過10張照片或是有新檔案就開始運作,就會開始合併作業,並且紀錄一個目前已經處理的pointer。處理完畢後,如果前面還有別的model就會合併變成新的model,並且取出PLY顯示在畫面上,並且將自己設定為所謂前一個model,重複這個循環。過程中物件會逐漸長大。

以Command Line操作COLMAP dense

sparse的結果只是個骨架,並不適合放大瀏覽,所以有接下來的dense作業。mkdir dense

1.colmap image_undistorter --image_path ./images --input_path ./sparse/0 --output_path ./dense --output_type COLMAP 時間約1秒。

2.time colmap patch_match_stereo --workspace_path ./dense --workspace_format COLMAP --PatchMatchStereo.window_radius 3  --PatchMatchStereo.window_step 2 --PatchMatchStereo.num_samples 5 --PatchMatchStereo.num_iterations 3 時間約2分半。

前面精簡版本,手冊建議指令是colmap patch_match_stereo --workspace_path ./dense --workspace_format COLMAP --PatchMatchStereo.geom_consistency true 不過耗時太長。

3. 接下來有三種PLY檔案,需要照順序進行,第一種類似雜點 time colmap stereo_fusion --workspace_path ./dense --workspace_format COLMAP --input_type geometric --output_path ./dense/fused.ply 時間約31秒

4.time colmap delaunay_mesher --input_path ./dense --output_path ./dense/meshed-delaunay.ply 時間約11秒 著重貼面,最適合呈現

5.time colmap poisson_mesher --input_path ./dense/fused.ply --output_path ./dense/meshed-poisson.ply 效果不明顯 不需要

以Python操作COLMAP:colmap_utils

參考專案(連結),範例應該是人工建造的環境,並且有每張片的拍攝角度。

以Python操作COLMAP:MISC

連結  加入CNN概念

Hierarchical Localization(連結)

2020年10月13日 星期二

閱讀筆記,末世男女 Oryx and Crake

故事描繪未來世界,生物基因改造盛行,人類所需要的食物、疾病治療、性需求、甚至是延年益壽的產品,都可被大量生產和製造。所有的人,無論是為求溫飽的底層民眾,滿足年輕身體虛榮心的中產階級,或是夢想長生不老的上層權貴,都被這些產品鼓舞,不再節制慾望,世界也因此益發混沌,如脫韁野馬般雜亂。

而這一切的推手,跨國生物科技企業,在資金挹注和社會氛圍允諾下,成立一個個擁有治外法權的園區,與圍牆外雜市的紊亂相比,園區內綠草如茵、井然有序,掌握科技知識的專家在其中如同扮演上帝般,肆意創造新物種和藥物。這也是後續偏執天才科學家研發出足以消滅人類致命病毒的環境。

上世紀末以來,文學作品中,總不乏科技進步衍生的憂慮,從最早的全球性核彈災難,到人工智慧統治人類,或是這本小說中提及的致命人造病毒,無不以終結人類種族為主題。我們或許可以把這些當成是作家杞人憂天一笑置之,畢竟核彈或是大規模智能系統都需要國家等級力量才能推動且過程中有著重重關卡,但病毒不然,一間中等程度的大學實驗室就有能力培育出新物種狀況下,打開潘朵拉盒子的設備已垂手可得,說不定哪天,真的就從哪個小鎮,冒出無法處理的新種病毒。

小說從全世界人類都被病毒消滅後,僅剩雪人和少數克雷科人開始,新環境並不如想像中輕鬆,相反的因為有前人遺留的基因改造動物會取人性命而存在著危險,雪人僅能依靠少許文明殘跡如打火機、帆布勉強活下去。

只不過這類荒野求生的劇情,例如電影浩劫重生或火星任務,都會在日復一日的情節後,穿插進主人翁想突破現狀的橋段,也就是雪人冒險重回當初的實驗基地之旅。最後,故事在個奇怪的轉折處終止,算是為下部小說開了個頭。

全書寫作技巧精湛,作者並沒有採用引言或旁白敘事,而是利用雪人在四處遊蕩或挫折困頓時不同間隔中偶然出現的回憶,例如幼年時期園區內生活,與父母的關係,和Crake認識,以及大學和工作後等等,逐步拼湊出故事全貌。類似現實的白描和過往哀傷間穿梭擺盪,信手寫來看似溫和,但那淡淡的荒涼感卻緊緊抓住了我的思緒,搭配最近常聽音樂,真是欲罷不能(連結)。

從寫作目的來看,作者當然是想闡述人類掌握科技後,因著能控制物種,讓慾望與意識也無限擴大的反思,有些書評會嘗試分析Oryx、Crake和吉米三人的行為,反應出對文明何種態度,例如Oryx代表人性的黑暗,吉米代表文明的沒落與人生的無奈,Crake象徵人性的墮落與無知。他們的人生軌道時而交叉時而分離,卻也共同完成了催毀人類和創建新人種的使命。(連結 連結順便學英文)。但我個人更喜愛的是,當獨自一人存活在世上時,存在的目的是什麼呢?這混合著絕望與無能為力眼光所描述的灰暗世界,讓我深深著迷。

2020年10月8日 星期四

玩具:搭建市售科技磚套件

對科技磚有些概念後,雖然嘴巴嚷嚷要設計屬於自己的成品,但那總是太難(連結),先不能免俗的買些市售組裝套件來感受何謂科技磚。

最先入手是黃吊,當時正逢女兒暑假,就請她開箱組裝,只見她立刻埋首其中像是沉入積木大海中。不旋踵傳來張照片,問我這是什麼,如下。搜尋後得知為"差速器",是車輛中重要零件,但出現在兒童使用的積木中,$%@$@。新手就挑戰如此高難度經典款,的確有些吃力啊。

時間繼續,車體內部逐漸塞滿各式齒輪和十分精巧且緊密的傳動組,我開始懷疑,如此多複雜組件結合的成果真的能運作嗎?擔心女兒受窘,慈父開始說很少有人第一次就成功啦,叭啦叭啦,這種安慰預防針。那知二十多小時完成後,確實是個能動的成品。

只不過,短暫玩耍後就會發現這類工程車輛的大缺點,就是不耐久玩。相較於漫長的組裝時間,可操作的時間實在太短,看來就是只有展示功能,淪為鎮宅巨物。對我這類車輛沒熱情的人,既然熟悉傳動概念了,不久後應該會是殺肉當成零件使用。

購買的第二組大型套件為RH400挖掘機(連結  連結)。新手就要組裝零件數目超過四千,且被積木老亮稱為最有挑戰性的套件,實在是不知天高地厚啊。果然一上場打開安裝手冊第一頁,就發現不對勁,怎麼圖案都看不清楚呢?原來是老花眼作祟,人家說初生之犢不畏虎,對老眼昏花還想玩積木的人,得說是老驥無力啊,還好家中備有放大鏡工作燈才順利解決。

還沒完,進展三分之一後,主體變大,難免就會遇到安裝手冊中說明模糊的部份,老手能自動猜測出理想順序,但新手如我就容易忽略跳過,等到二三十個步驟後再發現錯誤,得再退回到當初位置,拆解和重組都是欲哭無淚啊。幾次後學到的經驗是,再遇到疑惑時,當下就務必要釐清,不能拖延。

最後一點,也是最令人困擾是,通篇充斥著以極其複雜手法完成的高難度零件,讓人預期會有驚人用處,事實卻不然,新手都能看出,這可以用很簡單結構即可完成,那前面大費周章的設計,究竟有何用處呢?更明顯狀況是,車輛總是左右對稱的,預期中做完左邊拷貝複製右邊即可,但作者卻總是要另闢蹊徑,一次兩次還好,但RH400是"全車"如此啊。對有心投入積木設計和製作的人來說,這或許是台隨處充滿驚喜和可深入學習的經典教案,對新手來說卻是整人的炫技秀。這種因自身程度和設計師差距太大導致的灰心疑惑和不耐煩,幾度讓人想放棄,因此,實在不推薦新手組裝RH400。

當然,凡走過必留痕跡,經過RH400洗禮後,往後不論何種套件都是小菜一碟了。題材上,避開常見的工程、車輛等等,希望是以生活化,能闡述齒輪、連桿運運作精神為主。例如,下圖這個小品顯微鏡(連結),作者Nico71是我最崇拜MOC製作者,外型維妙維肖,功能上則是巧妙利用蝸桿模擬出載物台升降的功能,若找到合適的玻片,將鏡筒改成RH400的管徑,或許真能當成顯微鏡使用。

Nico71另一精彩神作,時鐘,則是目前為止尋覓到最能結合齒輪和實體世界原理原則的作品,利用擺盪和重力的制衡,創造出持續及穩定的齒輪轉動,此速度經過微調即是所謂秒針,再透過一系列齒輪轉為分針和時針。只是重力的來源會逐漸枯竭,觸底之後會透過馬達將自己抬升,不斷循環。據說完成後每天誤差僅幾分鐘。

還有是能承載重物的展示台,原始資料連結。簡易的展示台約六十個零件就能完成,但承重有限,加上重物就完全無法動彈,這個套件就是為解決這問題而生,它的驅動部分由單一齒輪改為多齒輪由各個方向同時推動,轉盤則由單層改為雙層,且在中間加入滾輪。如此改動後,即使放上幾公斤石頭都順利運轉,讓人讚佩。

陸續接觸科技件後,因緣際會又拚了個太陽鳥,牠充分利用積木多形狀、多色彩的特性,讓小鳥栩栩如生。隨著類似鳥種越來越多,甚至有人號召舉辦鳥類博物館呢。

看著這作品,心中不免浮起類似完美還原真實世界的行為,究竟有什麼意義呢?的確,開始時我也質疑並認為這只是維妙維肖沒有任何實際用處。不過看久了,慢慢也能看出一些興味。目前的想法是,類似化煩為簡、屏除外部雜訊、直取核心的能力與素描類似,看似無用,但卻能產生出讓人驚艷的成品。繼續又拼裝了好多好多,每一個都花費不少時間,但卻又覺得非常有趣。

立體書作品,巧妙的結合科技磚的可動性和一般磚外型設計,讓人大開眼界外,也可餽贈老婆大人,也開啟了追蹤JK Brick(連結)的歷程。同類概念還包括童話故事等。

荒川的西伯利亞征服號,簡稱西征。同樣是大型的車輛,與挖掘機相比,荒川的西征不論是結構或外觀仿真度都合理許多,拼裝的境界更向上提升一個層次。其底盤是呈對稱設計,預計改動方案是拆掉後半部,僅保留一半測試效果。

歷經七個項目後,逐漸發現自己規律是,會在動件和仿真模擬中擺盪。完成西征後,又開始想尋找大小適中,擬真度高但又有些動作的項目,在鋼琴和打字機間徘徊一陣,入手打字機。其中連結件設計精巧,若結合鍵盤薄膜開關和小型螢幕,說不定能在募資平台上發售呢。

JK Brick的行星運轉模型,連結,球體設計別出心裁,更重要是齒輪組設計,能夠同時實現三個星球,太陽(自轉),地球(公轉+自轉),月球(公轉)。

因為太喜愛JK Brick,之後更陸續搭建他的MOC作品,如奔馳的白馬,連結,此白馬的踩踏方式完全符合運動流程。若是移除動件,調整腿部肌肉,增加腳下的燕子,即可完成如中國女創作者的馬踏飛燕作品。(還要包括噴漆 連結)。

而JK Brick男人與除草機,則是希望學習他人體和地面同時移動的經驗,可以用在自行設計跑步專題中。其人體造型獨特,因為配合關節轉動,變成前後較長,而兩組地面區分為雜草和平整兩區,搭配跳動的割草機和人,三個會動的東西組合再一起,簡直是神來之筆。

除了跑步,也希望能把五峰天際線的情景描述出來,所以又做了魔戒白城項目,可大致分成山體和城堡兩方面,都有另外專章描述。

六人行The Television Series - Monica's Apartment,連結,這是第十三個項目了,主要是因為六人行幾乎就是我的青春啊(洩漏年齡)。風格上,此為娃娃屋類型,顏色桃紅居多,空間架構也與拍攝場景相似。可學習到如何製作小物件。未來會希望外加隻小馬。也希望能套用這設計做出自家廚房。



第十四,JB辦公室打字員。

第十五,天外奇蹟中,因著大批氣球冉冉飄升的小洋房。

第十六,製作大量花朵和植物套件。

第十七,製作盆栽。

縱觀整理按圖索驥組裝套件的經驗,有幾點想法。首先,這真是玩物喪志,怎麼說呢?以我來說,即使明知還有好多事情得處理,但一有空閒就自動會沈浸在組裝的世界中,即使這過程十分耗費心力,也有許多困難,例如組裝RH400時,沒日沒夜的接合積木時,甚至覺得比騎一日北高還累。但拼裝的過程,能隨時看到進度並且得到回饋的心流感受,像極了跑步和寫程式般,讓人欲罷不能。

另外,目前為止都是循說明書組裝,過程太單向,只有設計者發揮創意,其他人只是圖個爽。這感覺和玩遊戲非常類似,樂高和遊戲設計公司的概念都是,蒐羅各地人才,竭盡心力創造出精美絕倫套件,並且編撰安裝手冊,讓我們這些有錢有閒的人用時間換取成就感(連結)。

旁支任務:隨著零件累積,書房混亂程度也與日俱增。為了解決零件散置問題,曾經考慮過購買零件櫃,但又覺得自己是三分鐘熱度,擔心退坑後零件櫃反而尾大不掉。正好公司組裝廠有成山般的零件盒,就DIY了個零件櫃,最新計畫是安裝滾輪方便移動。

整理資訊:手邊積木零件購買管道與圖紙來源(暫時先排除LEGO)。

  • 秤斤買零件,或僅購買某類產品如齒輪,或指定特定編號。
  • 購買大廠家現成套件,如宇星,他們已將MOC轉化成可販售的程度,如黃吊、挖掘機和西征等。說明書詳盡,也沒發生過缺件,重點是零件幾乎都是高級材質,價格低廉。
  • 購買小型商家自組包,同樣是將MOC轉化為可拼裝程度,如時鐘和展示台等,但積木材質較差,CP值不如大商家,但只要選擇多,就能吸引我購買。
  • 由商家代客選件,顧客只要上傳零件表,商家收到後會盡量搭配,顧客拿到手的就是完整可拼裝項目,雖然沒實際經歷過,聽來非常吸引人。
  • 殺肉,來源可以是全新未組裝套件的或已完成組裝的二手品,二手品需要拆解,以宇星13090來說,需要花費七小時才能拆解回原本三千多的零件,右手更是費了幾天,經濟效益並不高。
  • 圖紙,連結
kinetic sculpture 連結 (到某個頂點後,可以轉向或是等等,墨西哥人唱歌應該也是這樣)      kiss 2.0  連結      walking 連結      極致 連結      下雨 連結        river 連結      魚跳起來  連結   鳥系列 連結 玻璃樹屋  連結 連結  蒸氣腳踏車MOC-48400   計算機 連結   生蛋的雞 連結  蓋山(連結)  CAMERA 連結 阿凡達場景 連結   連結 海底的山 這裡還有很多動物  C4744 連結 NICO 紡織機    連結 寶寶新生兒   連結 連動的鎖 連結 漂亮的花 連結 保險箱 連結 連結機制 連結 JB會動的花 連結 JB的船 連結 一般機械運動 連結 CAMERA 連結


重複簡單的動作,例如打字機小人(連結 連結)
走路的連續動作(連結) 幾何的特殊美感(連結)
時鐘 clock escapement 時鐘,利用重力的力量會慢慢的轉變成擺盪的力量,這是仲多項目中,最有物理特性的一個。(連結)
SIN 連結  連結 拆解 連結 氣動組 連結 連結

教學影片 (連結) 包括1個入門介紹和15個作品,都沒有使用到馬達,真有需要,用橡皮筋或手就能做到很酷的成果。

Nico71(連結) ReBrickable(連結)