發表文章

日誌:飛行評鑑

圖片
這篇只是簡單紀錄一下參加飛行評鑑的過程,飛行評鑑內容其實網路上也大多有更詳細的敘述就不詳述,主要細節都在實機,因為這部分是唯一有錄影紀錄的。  前言 一直以來很想試試開飛機的感覺,其實就連單純搭飛機也已經超過十年沒搭過了。最近發現生活中很多事情要是認為準備好才去做恐怕會準備一輩子,趁著規畫人生第一次獨旅後也放飛自我排定飛行評鑑的計畫。 之所以不是選擇單純搭小飛機體驗主要還是因為我想要實際體驗飛行,不只是坐著,而是從停機坪、滑行、起飛甚至降落的過程都可以了解到。順便看看自己有沒有成為飛行員的潛力,當然是只是偏向愛好,進公司什麼的我年紀太大了,我就是想學開飛機這樣子,先看看自己體質行不行再做打算。  飛行評鑑主要分成三個部分。學科就是在教室上課、術科則包含模擬機和實機各 1.5 小時,測驗則有COMPASS 測驗 。術科的部分比前幾年的時間短了不少。 課前 與業務敲定學科與術科時間後會先收到課本與 Log Book,就可以安排交通與住宿了。 學科 學科基本上在教室講解航空基礎知識,使用的是澳洲的課本,敲定時間後我差不多隔了兩個月才到台東豐年機場上學科,那時候課本我先預讀了一半左右。學科雖然可以遠端,但我還是比較推薦現場,可以及早適應環境,而且可以跟其他學員面對面滿有趣的。  另外推薦大家住機場對面民宿,因為機場離台東市很點距離,甚至連便利商店都沒有,當初我從其他地方的民宿走到機場時發現步行的環境有點可怕。 術科 模擬機 基本上會教官簡單帶過 Checklist 熟悉流程與一些 ATC 的對話。然後從起飛開始到降落,主要在熟悉飛機的各項操作。 我還記得我 Trim 做得很好,但是在進行高度控制時有時候會在低空沒注意到 Bank Angle 變大。 實機  當天凌晨天氣開始轉差差點取消,在我以後的飛行就取消了,機場開始下雨。 當天滿多空域都條件不是很好,後來轉向 鹿野空域 (可以詳見該連結),當時也有其他學員正在低空訓練。 一開始先到機坪先檢查飛機、上飛機放包包行李然後上機準備,再來從機坪請求許可後滑行起飛。 起飛後從側彎開始,從 10、20、30 到 40 度,60 度則是教官操作。之後也做了 Stall 恢復的操作,教官也做了幾次 0G 讓我體驗。Stall 本身是沒有太大感覺,據說是與機型有關。 最後做了幾次五邊進場 Touch ...

Unity:製作可相交的視差遮蔽貼圖 Shader 續 (Parallax Occlusion Mapping Shader with Pixel Depth Offset)

圖片
前言 在 幾年前的文章 曾有提到嘗試製作可相交的視差遮蔽貼圖(以下都簡稱 POM) Shader,然而當時一直留下一個疑問,就是計算深度偏移的量一直不是很正確。 本文新的實現方法,與幾年前的看起來相似,但是有穩定的深度位移 多年後終於有能力重新整理過一次,看了 Unity 的原始碼才發現當年已經離問題的所在很接近了,在後來版本的 Unity 裡面可以看到解決方法,在 Shader Graph Parallax Occlusion Mapping 這個 Node 的參數可以看到問題的所在。 POM 控制垂直偏移高度的參數(Unity 中為 Amplitude)在本文章使用的是物件空間座標,如果偏移高度參數是 0.6,代表著表面到最底部距離在物件空間的座標下相差 0.6 公尺。   原始碼 有關原始碼,請詳見 Github 專案 。    問題根源-如何計算逐像素的世界空間座標偏移量 這個問題關鍵就在於 UV 空間座標的 U軸 和 V 軸這兩個基向量在物件空間的長度。當要計算各個像素位移後的深度時必須知道各個像素在偏移後的世界座標是多少,然後再計算出深度。 提醒一點:U 軸 和 V 軸基向量在某些條件對應到切線與副切線,但不是絕對,因為 U軸 和 V 軸可以沒有正交,切線與副切線卻必須正交,這個限制了使用 POM 的模型不能有太多 UV 扭曲和法線調整 從 POM 的計算裡會得到射線(viewDir)與位移後表面交點的高度(Tp 點的高度),可以藉此高度值計算 T0 到 Tp 的位移向量 T0Tp ,如果這個位移向量的長度正好就是世界空間的長度,那麼只需要將是世界空間的射線向量乘以這個長度,然而在將射線的向量轉換的過程中會令這個長度可能沒有符合世界空間的長度,所以要在轉換過程中確保轉換後的長度一致。 Unity 版本的視差遮蔽,由物件表面為 1 起始 Created by modifying " LearnOpenGL " (©  JoeyDeVries ( Licensed under CC BY 4.0 ))   用來計算 POM 的射線一開始為世界空間的單位向量(viewDirWS),如果使用此向量,得到的偏移高度會是世界空間,無法跟隨物體縮放,於是一開始先除以...

Blender:Geometry Node 應用於營造法式生成大木作構件初探-小結

摘要 本文對過去 Blender 客製化 Geometry Node 探究的過程做小結。     Blender 客製化 Geometry Node 的部分目前打算不會進行製作其他構建的嘗試,原本是已經開始在動工栱的部分,然而去年發生不少事情,目前已經沒有太多時間處理,最近終於有一些時間於是決定在這個階段收尾。    文章 Geometry Node 應用於營造法式生成大木作構件初探-梭柱篇 :初步使用 Geometry Node 生成建築構件 Geometry Node 應用於營造法式生成大木作構件初探-卷殺折線標準化篇 :初步探討如何透過程式碼 添加客製化 Geometry Node Geometry Node 應用於營造法式生成大木作構件初探-斗篇 :簡單探討如何呼叫其他程式碼撰寫的 Geometry Node   Git repository YingzaoFashi-Blender-Procedural-Model :放置了程序化生成的建築構件  blender-self-use-custom-geometry-node :添加客製化 Geometry Node 的 Blender   完成與未完成的研究  基本上目前至少可以知道,在客製化節點方面已經達成了兩件事: 如何使用 C++ 結合 Python 撰寫客製化的節點 如何在客製化的節點中呼叫其他 Geometry Node 節點的方法 未完成的部分還有這幾項: 如何在客製化節點中生成 UV、法線或切線數據 如何呼叫在節點編輯器中製作的節點 未來發展方向 未來 Geometry Node 程序化生成可能不會朝向零件也這樣做,因為工時上耗費的關係。比較可能的發展方向是採取混合,建築零件手工製作而建築整體採用程序化生成的方式。  

Blender:Geometry Node 應用於營造法式生成大木作構件初探-斗篇

圖片
摘要 本文進一步探索 Blender 客製化 Geometry Node,包含呼叫其他 Geometry Node 的功能,能夠將原本的 Node Graph 轉為單一 Node。 前言 繼上一篇處理完卷殺折線的程序化生成後,原本想要進一步處理栱的部分,不過發現栱與抖有依賴的關係,栱的一部分數據需要來自枓,主要是枓底的尺寸。 製作這些枓的程序化生成模型,首先要看看這些枓有沒有共通點? 枓的規則 枓的構成與尺寸示意 《營造法式》所有枓基本上都可以分成從上到下三個部位耳、平、欹,形狀上可以分為方或圓(現實實例的話則不只)。 基本上變化除了榫卯(包含包耳)以外還有尺寸的差異,而尺寸依然使用材分決定。整體尺寸上各種枓長寬高不同,會以相對比例決定耳、平、欹的尺寸,但在高度上耳、平、欹比例均各為 2:1:2 分配。欹䫜也不同。   枓的參數 從上面大致上整理一下,可以得到幾個可能的參數: 枓的種類:角櫨枓(方圓)、櫨枓(方圓)、散枓、交互枓、齊心枓、平盤枓 幾等材(U) 斗的長寬高:可從枓的種類求得 欹䫜的深度:可從枓的種類求得  包耳與開口的尺寸 :可從枓的種類求得,但開口寬為固定一栔(栱或枋寬) 底部尺寸:可從枓的種類求得  附註 我在翻閱營造法式相關文獻時發現有對包耳功用的討論,有相關文獻指出可能是對斗耳的拉結加固,然而相關論文我目前上無法取得,不過的確是有趣的論點。   轉換成 Geometry Node 枓的模型會以 Geometry Node 來生成,為了介面方便會使用客製化的 Node。 Node 輸入輸出與屬性(Property) 這個 Node 有屬性,主要是因為沒有想要透過輸入的方式修改枓的類別,另外使用屬性儲存類別,可以依照條件顯示輸入輸出的 Port 和屬性,在此會來開關顯示選項。 輸入: Unit(cm)          : Float (單位公分) Quality Level     : UInt Has Joinery       : Boolean (不勾選則不開榫) 輸出: 枓     ...

Blender:Geometry Node 應用於營造法式生成大木作構件初探-卷殺折線標準化篇

圖片
摘要 本文探索了透過修改 Blender 原始碼來實作客製化的 Geometry Node。 前言 上一篇文提到計算卷殺的折線非常麻煩,需要計算各個等分點並計算交點。不過其實《營造法式》中提到的卷殺的折線其實十分固定,不同部位的折線只要等分的數字相同,皆可以被視作同樣的折線經過線性變換,也就是說我們只要計算一個折線後透過仿射變換就能套用到其他構件上的不同位置上,只要等分數相等。 另外我們也可以透過調整等分數來調整折線的柔化程度,例如實例中有些栱頭卷殺的等分點就不是 4 * 4,可能是 3 * 3,藉由簡單的線性變換也能控制卷殺曲線的長寬。 那麼不同等分的折線有沒有辦法找出各點的座標的公式呢?我發現其實可以。以下就用長寬相等的矩形,以二等分和三等分的卷殺為例。 二與三等分的卷殺推導公式  簡單繪製兩等分與三等分的卷殺如下圖: 若以 Start 為原點,矩形為 1 * 1 的正方形,Start 和 End 在圖中只有繪製在三等分的圖上,實際上二等分亦同樣位置。 Start 和 End 的點座標為: Start(0, 0) End  (1, 1) 二等分的 D1 點座標為: D1(1/3, 2/3) 三等分的 T1、T2 點座標為: T1(1/6, 3/6) T2(3/6, 5/6) 此時還未看見規律,但是依照順序從 Start 到 End 逐一計算座標差值即可以發現規律: 二等分的座標差值: D1-Start(1/3, 2/3) End-D1  (2/3, 1/3) 三等分的座標差值: T1-Start(1/6, 3/6) T2-T1   (2/6, 2/6) End-T2  (3/6, 1/6) 從此可以發現各個點的座標會是等差級數。當有 N 等分,分母就是前 N 個自然數的和,而各個點由 Start 開始到 End 的 Index K 為 [0, N],共 N + 1 個點。 X 的分子便是前 K 個自然數的和,而 Y 的分子為反向,為由 N 開始 K 個的遞減自然數和,而這樣才能使得最後一個點座標為 (1, 1)。 折線點公式 N為自然數時,對於 N 等分的卷殺其產生的折線上, Index K 由 0 開始時,其第 K 點 P K 座標為: P K (S K /S N , T N /S N ) S K =...

Blender:Geometry Node 應用於營造法式生成大木作構件初探-梭柱篇

圖片
摘要 本文初步探索了透過使用 Blender 內建 Geometry Node 來程序化生成建築構件。 前言 最近正在學習 Blender 的 Geometry Node,使用程序化生成模型非常的吸引我,看了一些教學後在想時不是要做些什麼當作練習。第一個想到的其實是應用在建築構件的生成。 營造法式的大木作構件感覺就是一個很好的題材,因為大木作構建本身在營造法式中已經很詳細載明了做法。所以很適合做成程序化生成模型,此外我想到另一個優點是可以快速透過調整參數控制品質,例如曲線的段數和榫卯可以透過參數調整,便於處理 LOD 或是不同使用情境。 這次初探會針對梭柱嘗試製作程序化生成模型,首先我們要了解營造法式中針對梭柱的規則,再來藉由這些規格轉化成程程序化生成模型的邏輯。  該專案也有上傳至 Github 術語簡單介紹 因為再來會很常使用到中國傳統建築的一些術語,所以先在此簡單解釋: 卷殺:是指對構件砍削出折線或曲線的行為,藉以柔化外觀 材分 :宋代《營造法式》中使用的這個建築尺度單位,主要用來控制建築構件尺寸的模數。1 材可細分為 15 分,但是這個一材的大小隨著等級可大可小。另外還有栔,為 10 分。 梭柱的規格 梭柱的規定在 《營造法式》第五卷·大木作制度二 有敘述,這邊只擷取與梭柱相關,亦不擷取與升起側腳相關的部分。 凡用柱之製,若殿閣即徑兩材兩栔至三材,若廳堂柱即徑兩材一栔,餘屋即徑一材一栔至兩材。若廳堂等屋內柱,皆隨舉勢定其短長,以下檐柱為則。(若副階廊舍,下檐柱雖長,不越間之廣。 …… 凡殺梭柱之法,隨柱之長,分為三分。上一分又分為三分,如栱卷殺,漸收至上,徑比櫨枓底四周各出四分;又量柱頭四分,緊殺如覆盆樣,令柱頭與櫨枓底相副。其柱身下一分殺令徑圍與中一分同。 …… 從以上敘述可以知道柱子有三個主要的參數,直徑與高(長)、材分等級來決定一分(U)的大小,然而高卻沒有非常詳細的規定,此處以實例常見的直徑(D)與高度(H)比為 1:9 假定。 H = 9 * D D = 42 ~ 45 * U 有關卷殺,柱身上方寫的非常清楚,柱身下方卻不是很明瞭,我們此處假設只有上方有卷殺,也就是如上敘述的柱身上方 1/3 的部分進行卷殺。 另外一個問題來了「徑比櫨枓底四周...

閱讀心得:王無邪 《平面設計原理》

這本書的內容主要是偏向理論性的手法,與實作較無關聯(畢竟叫原理)。作者提到內容主要是理性嚴謹的分析,較不探討感性與直覺的部分,而且著重黑白。所以這本書基本上不會去談怎麼配色好看、字體怎麼選用、如何排版的東西,那類是偏實作。而是探討一個複雜或簡單的平面圖象是如何被設計出來的,背後使用了哪些手法。 裡面談到的每項原理都有提供簡單的示意圖,每章也有提供較為複雜的習作,藉由分析這些習作可以思考這些原理是如何被使用的。 我認為這本書裡面歸納的原理可以用來分析日常生活上看見的那些眼花撩亂的平面設計,思考是怎麼設計出來的。