2016年6月29日 星期三

在 http server 提供 app.cache 檔案方便離線瀏覽

參考: https://msdn.microsoft.com/zh-tw/library/hh673545(v=vs.85).aspx
1. 首先在要開啟的 html 檔案裏面(例如index.htm)的 < html > 標籤內標示快取檔案名稱(例如app.cache)
               < html  manifest="app.cache" >
2. 編輯 app.cache 檔案內容, 將 CACHE MANIFEST 單獨寫在開頭第一行, 隨後將 CACHE: 也單獨寫成一行, 其後跟隨要讓瀏覽器準備快取(cache)的內容(URI), 範例如下:
                  CACHE MANIFEST
                  # comment, 這行式註解
                  CACHE:
                  /cache/index.htm                              
3. 架設好 http 伺服器(假設伺服器的 ip 是 192.168.0.1 將所有檔案放入上述指示的 cache 目錄內. 讓手機去瀏覽該目錄(cache)的網頁 http://192.168.0.1/cache/index.htm 瀏覽器便可快取到目錄的內容. 之後離線也可以瀏覽.




p.s.
linux 版 chromium-browser 若無法執行 webGL, 在網址列輸入chrome://flags/ , 找到:
Override software rendering list Mac, Windows, Linux, Chrome OS, Android
將它改成 enable, 再重啟看看
開啟網頁 get.webgl.org 看能不能看到旋轉的方體圖形, 如果可以就成了

2016年6月28日 星期二

手機版 firefox 讓 Javascript 可以讀取檔案

1.  Javascript 在手機版 chrome 裏面,基於安全因素, 不可以讀取任何檔案, 只好改用 firefox.
2. 使用 firefox 先開啟頁面 about:config 做設定.
3. 找到  security.fileuri.strict_origin_policy, 將他預設值改成 true
4. 這樣就可以了, 但要謹慎使用. 瀏覽網際網路時, 最好不要開啟

2016年6月17日 星期五

紀錄 Gnu Editor 常用快捷鍵, 熟記之後, 可以加速並方便編輯文字檔

寫程式時常用檔案比較工具來比對差異, 在Linux 底下用 diff ,如同 windows 的 fc 命令,都是比較兩個檔案相異處, 為了編寫程式方便,可以用Gnu Editor (gedit),它是Linux mint 內建文字編輯器.以下列出常用快捷鍵,方便寫程式時使用:

               F1 是求助鍵, 同 Windows 常用快捷鍵
               Ctrl+z 是 undo, 同 Windows 常用快捷鍵
               Ctrl+Shift+z 是 redo, 但 Window 用 Ctrl+y, 有點不同.
               Ctrl+c 是 copy , 同 Windows 常用快捷鍵
               Ctrl+v 是 paste, 同 Windows 常用快捷鍵
               Ctrl+x 是 cut, 同 Windows 常用快捷鍵
               Ctrl+a 是 select all, 同 Windows 常用快捷鍵
               Ctrl+f 是交談式尋找文字, 類似 Windows 上常用快捷鍵,
               Ctrl+d 是刪除一列, 並將全數文字往上提, Windows 無此功能
               Ctrl+k 立刻輸入找尋文字串
               Ctrl+g 立刻找尋下一個文字串
               Ctrl+Shift+g 立刻找前一個文字串
               Ctrl+h 找尋與取代
               Ctrl+Shift+K 取消亮點 (highlight)

2016年6月10日 星期五

學習 Blender 的: UV mapping

UV mapping 的目地是將作為材質紋理的貼圖檔,貼到物體上時,遵循一定的方向去貼圖.

1. 首先開啟物體編輯模式將物件攤平(unwrap),再另外開啟UV/Image editor,將展開後的方位圖輸出作為貼圖的底稿.

2. 用其他製圖軟體(例如GIMP)將上述底搞當背景,新增一個層面去製圖,製作好貼圖後輸出圖檔準備給blender製作貼圖.

3. 將製作好的貼圖,輸進blender材料(material)裏面的紋理(texture)參數內,因此要先新增一個材質,然後再新增一個紋理.

4. 在紋理選項裡,型態(type)改用 Image or Movie,經由Image指示來開啟上述貼紙的檔案.同時在紋理的Mapping指示裏改用 UV 選項,目的就是將貼紙要貼的方位與物體相互對應好.

5. 將視界渲染(Viewport shading)改成 Material,就可看到貼圖成果.

6. 如果出現黑色面看不到是因位光線照不到, 調整物體方位或增加燈光都可以將它展現出來

7. 如果貼紙出現不如預期,要不是在紋理裏面沒有對應好(UV mapping),再不就是沒產生 UV unwrap,或者可能是 UV 展開位置的不對.

2016年6月6日 星期一

學習用 blender

Blender 是一套 3D 建模軟體, 也可以產生動畫.為何要學 blender 呢?因為它免費! 老實說, 剛開始使用 blender 時, 如果不心平氣和用的話,一定會氣死,會很想把它炸掉,想說怎麼會有這麼糟糕的使用者介面,還要折磨自己去適應.但一套免費又強大3D建模軟體,夫復何求? 就只好順著它囉!另外最好透過 youtube 觀看人家怎麼去使用, 或許勉強可以慢慢學習.有幾點初學者可以先嘗試看看:

1. 先用滑鼠右鍵點選物件, 不要以為是取消點選. 因為他就要用滑鼠右鍵點選物件,滑鼠右鍵點選物件,滑鼠右鍵點選物件!!!, 因為很重要, 要說三次

2. 滑鼠中間鍵可以旋轉視界(Viewport)

3. 'Shift' 鍵加 '滑鼠中間' 鍵可以移動泛視圖(pan view)

4. 滑鼠滾輪可以將鏡頭拉近及拉遠(Zoom In/Zoom out)

5. 右邊鍵盤數字鍵可以從不同角度來觀看

6. 右邊數字鍵 5 可以在'透視圖'或'垂直面視圖'之間作切換(perspective view/orthogonal view)
    數字鍵 1 切換前視圖
    數字鍵 3 切換右視圖
    數字鍵 7 切換上視圖
7. 右邊數字鍵 0 切換成鏡頭視窗(camera view)

8. 快捷鍵 s 是放大倍數(scaling),快捷鍵 x 選擇沿著X軸(axis-x),快捷鍵 y 選擇沿著Y軸(axis-y),快捷鍵 z 選擇沿著Z軸(axis-z)

9. 快捷鍵 r 用來旋轉物件(rotation)

10.全選/取消全選(All)可以用快捷鍵 a 來切換,不是Esc,不是Esc,不是Esc,也很重要,再說三次.

11.快捷鍵Shift+d 可以產生物件副本(duplication), 相當於複製物件

12.快捷鍵 n 切換物鍵特性編輯工具是否顯示

13.模型要修改時必須在 Edit 模式下, Object 模式只能觀看不能修改.快捷鍵 Tab 鍵用來切換 Edit 或 Object 模式. 或在視窗底下有個狀態工具欄,點選成Edit模式.在編輯模式下要先確認的是: 所點選的物件是 '頂點' 或 '邊緣' 還是 '面', 避免誤選, 可以在編輯狀態的'立方體圖示'去確認 

14.編輯模式下快捷鍵按 b 後(box selection), 可以再用滑鼠點選物件

15.編輯模式下, Ctrl + r 可以將線段/面分割區段(sub divide)

16.編輯模式下,快捷鍵按 e 後, 可以拉伸物件(extrude),

17. Ctrl+j 將兩個物件合併成一個以利編輯(join)

18. 快捷鍵 f 可以將兩端邊緣連接接一起(find, fine ???)

19. 快捷鍵 Alt+m 可以合併(merge)

20. 背景圖只能在 camera view 或 orthogonal view 才看的到.

21. Shift + 滑鼠右鍵可以累積選擇物件, 又是滑鼠右鍵,又是滑鼠右鍵,又是滑鼠右鍵, 再說三次.
選擇到的物件會用橘色顯示.

22. 物件用滑鼠右鍵點選後再拖著物件移動, 可以將它鎖定在移動模式(transform, 此時可以放開滑鼠右鍵)., 或是用快捷鍵 g 鎖定目標物(grab)移動, 之後點擊滑鼠左鍵或是鍵盤Enter鍵放置物件讓它定位.


23. 在編輯工具列有一個磁鐵圖示指示現在抓取(snap)功能是否運作,用滑鼠點擊它變成橘色就表示在運作. 旁邊有針對不同目標物設定約束方式, 可以換看看:
      Volume: 物體內
      Face: 面
      Edge: 邊緣
      Vertex: 頂點
      Increment:累積,也就是前進/後退相對距離的意思(position  += d , 當 d 是負數時是後退)

用快捷鍵 g 來鎖定目標物後,再輸入移動距離(distance)就完成轉移動作.例如 gx2 就是沿著X軸移動2單位.如果同時移動3個座標軸. 可以用 g 搭配TAB鍵. 把逗號用 Tab 鍵取代.例如要前進 1,1,1 單位,可以這麼按: g 1 Tab 1 Tab 1

當抓取(snap)到約束點時會用橘色圓圈表示接點,如果抓取功能不是在increment 模式時,旁邊會再跳出一個工具, 約束物體本身靠近物體時抓取的方式:
      Active:
      Median:當選取多樣物件時,一群物件中心點就是 median
      Center: 物體本身中心點
      Closest:最接近點
物件在移動中,Ctrl鍵用來切換抓取功能是否要啟動或取消. 按住Shift鍵可以讓抓取功能距離更加精細(移動速度會變慢).例如要將物件放在地平面上,可以這樣做:
          1. 產生一個地平面(只要確認 z=0 就可, x, y 其實就是該平面的尺寸).
          2. 開啟抓取功能設定在 Face 約束,本身物體用 closest 就可.
          3. 滑鼠右鍵點選物件,再按快捷鍵 g,開始移動滑鼠將物體與地平面接觸.
          4. 抓取點一旦鎖定,物體便在該平面上移動,最後按滑鼠左鍵就定位.
在旁邊還有一項 Align rotation with the snapping target, 勾選後.當要抓取目標物時,會跟著物件旋轉.這樣就可牢牢將物體放在旋轉平面上了.

24. Shift-s 快捷鍵可以跳出進階的抓取功能, Ctrl + Alt + Shift + c 跳出功能表可以改變中心點.

25. 移動物件時千萬不要抓取中心點那個圓圈, 因為在 3D 空間並無法讓你隨便定位, 唯一可以定位的是靠3軸座標軸(紅藍綠三色箭頭)用滑鼠去拉或旋轉或沿伸,讓物件前進後退旋轉與放大,隨著座標軸跑,這樣才能精確掌控物件所在位置.透過視窗底下編輯列的圖示去切換三種改變物件轉置方式(transformation):
        1. 沿著垂直座標移動 (translate), 使用的圖示是箭頭指標, 功能同快捷鍵 g
        2. 沿著極座標旋軸轉移動 (rotate),使用的圖示是弧線, 功能同快捷鍵 r
        3. 沿著垂直座標軸放大(scale),使用的圖示是方塊斜線, 功能同快捷鍵 s

26. 在3D視窗有一個十字小圈圈稱為3D游標,當新的物件產生時, 就會放在它所指示所的位置..萬一看不到3D游標時,就很麻煩.有時新物件產生時會找不到放那,這時可以用Shift+c將3D游標歸位回到原點的地方.直接按句點會將導航設定到3D游標.Alt+句點會將導航設定到作用中物件的中心.移動或放大或旋轉時都會以導航點當中心.所謂'作用中物件'就是最後挑中的那一個物件.

27.快捷鍵 Shift+a 可以增加新物件, 等同使用滑鼠點選 Add 功能表

28.右上角場景的物件選單裏,眼睛代表物件是否可見(visible)或是隱藏(hide), 箭頭代表物件是否可以被選取(selected),相機圖示代表當製成影片(render to movie)是否成為其中一個角色.

29. 功能表左上角有一個樹狀目錄符號(稱windows type)可以切換成喜好呈現的視窗內容.

30. 在視窗右上角有條斜線區域,使用滑鼠拖拉,可以複製(duplicate)分割出另一個視窗出來, 往下拉就成上下兩視窗,往左拉,則成左右兩視窗. 若要將分割的視窗合併,可以將剛剛斜線區域的地方用滑鼠拖拉(drag&drop)到想要合併的區域就可以了. 如果要讓該視窗消失,拖拉時滑鼠不要放掉,先往上拉再往下放開後, 就不見了.
31. 視窗中上處有個 Screen layout可以選擇不同的呈現方式,也可以自訂或新增.

32.快捷鍵 t 用來切換是否顯示左邊的功能視窗

33. 有幾個選項預設沒有打開:
      a. File -> User Preferences -> Interface  -> Rotate Around Selection
          可以的話將它勾選, 當旋轉視界時是隨以所選物件當中心, 而非原點.
      b. File -> User Preferences -> Editing  -> Global Undo Steps 數量修改大一點: 64
      c. File -> User Preferences -> Input -> Orbit style 改成 Turntable
      d. 如果要修改 Zoom In/Zoom out倒過來, 往下拉到最下面有兩個 invert 選項可以勾選
      e. 如果不喜歡內定的快捷鍵, 可以自行修改:
           File -> User Preferences -> Input -> Window
      f. 將上面數字鍵也摹擬出視圖功能
           File -> User Preferences -> Input -> Emulate Numpad
      g. 鏡頭拉近拉遠以滑鼠為中心,把他也勾選,才不會失去焦點
           File -> User Preferences -> Input -> Zoom to Mouse Position
      h. 修改後在 System tab, Save User Settings 將他存檔,下次打開就生效了

34. 在編輯模式下, 按快捷鍵 w 跳出一些工具選單

35. 快捷鍵 i , inset 像是用 offset 工具

36. 使用 subdivide loop cut 工具 Ctrl+R 時, 若按完滑鼠左鍵,往旁邊拉,接著直接按滑鼠右鍵, 它會正好切成兩半.

37. 編輯工具列(Limit selection to visible)點選後,可讓 box select 選到後面的元件.

38. 右邊板手工具, 可以加入 Mirror modifier 產生對稱物體. 勾選 x 軸直產生左右對稱物, 勾選 y 軸產生上下對稱物, 勾選 Z 軸產生前後對稱物, 對稱物不能修改或選取, 直接改原體就好.勾選 clippin可以避免原體超出界線跑到對稱物那邊去, 但這樣有個問題,當使用 extrude 工具時, 他也不會產生接面間的face.

39. 加入的文字,剛開始是'TEXT', 要在 Edit 模式才能修改該文字字串.中文字型必須要將字型檔路徑設定好, 輸入時要在其他 Editor 上先編輯好.
參考 https://www.youtube.com/watch?v=vDY9CXcG364

40.利用 boolean modifier 可以將兩個物體做邏輯運算得出新的物件.

41. 快捷鍵 x 刪除物件

42. 快捷鍵 p 可以將母子件相互連結

43. Ctrl+Alt+Shft+c 設定原點,物體的本體原點並不會改變,只是暫時切換過去.
      Geometry to Origin: 當編輯模式時, 可以重設編輯區的座標原點
                                       在物件模式時, 物件原點回歸使用本體原點
      Origin to Geometry: 將原點設在幾合本體原點
      Origin to 3D Cursor:將原點設在3D游標處
      Origin to Center of Mass:將原點設在幾合元件的重心
   
44. 如果真的無法忍受右鍵選物(select)困擾的話,那就將它改用左鍵吧.但這時的3D游標就只能用滑鼠右鍵來放置了,改完記得要存檔(Save User Settings),否則下次重開又不見了:
       File -> User Preferences -> Select With -> Left


45. Alt+C 將文字轉成 mesh

46. Ctrl+U 可以將視窗配置設定存檔

46. 改掉預設的場景 File -> User Preferences -> Themes -> Presets 挑一個喜歡的. 否則用預設的場景灰灰白白,選了東西還搞不清楚,到底是在那種狀態, 我喜歡用 Elsyium,簡單明瞭.選完記得要按Save User Settings存檔

後記:
1.Linux mint17.3用apt-get install blender所安裝版本是 2.69 版, 要升級的話要從 ppa 升級:
sudo add-apt-repository ppa:thomas-schiex/blender
          sudo apt-get update
          sudo apt-get install blender

Youtube 教學影片參考: https://www.youtube.com/playlist?list=PLda3VoSoc_TR7X7wfblBGiRz-bvhKpGkS

2.在Linux mint17.3用Blender輸入中文前要先將中文字型檔設定好.將 Font Regular 的路徑設成:
 /usr/share/fonts/truetype/wqy/wqy-microhei.ttc
插入中文字串方式是增加一個Text 物件,再選擇Text物件,用TAB鍵切換成Edit模式,就可以輸進去了.試了gcin中文輸入法的確沒問題.輸入完記得再用TAB鍵切回物件模式(Object Mode).

3.但是每次重開 blender 都要設定一遍, 挺麻煩的,設定系統default設定檔:
File -> User Preferences -> File -> File Path -> Font
只能先設定好路徑到:  /usr/share/fonts/truetype/wqy/ 存檔後(Save User Settings),等到要用時還是要在 Font Regular 選取一遍,但不用再找路徑

4.視窗下最下面的 Time line 如果用不到就把他關掉: 滑鼠左鍵點擊右上角不要放,先往上拉,等到大箭頭出現再往下拉,最後再放掉滑鼠鍵, 左邊功能表暫時不用,先按 t 關掉,需要時再按一次t.
這樣子功能表就只剩最下邊邊處, 從最左邊開始,依次序是:

視窗類型圖示:可以將主視窗畫面重新定義

     立方體圖示:3D View
     時鐘圖示: Time line
     圖形圖示: Graph Editor
    ...

 View選單:可以選擇從那個角度去看物體(透視圖)

也可以利用右邊鍵盤數字鍵1,3,7分別是:前/右/上來切換視圖,右邊鍵盤數字鍵5用來切換垂直觀看(Orthogonal View)還是遠景觀看(Perspective view)模式(當要畫元件圖時應該切到垂直觀看模式,分別去看上下左右前後的表面),左上方會顯示目前3D視窗是在那一種觀看模式,最好將數字鍵盤按鍵熟記起來,才能方便切換製圖面,

Select選單:選取物件,快捷鍵a用來全選或取消全選 

通常用快捷鍵比較方便, 但如果忘記,可以打開選單來看看

Add選單:增加物件,通常是用快捷鍵 Shift+a 叫出選單

例如mesh裏面就包含很多基礎繪圖元件,像是立方體(Cube),球體(Sphere),柱狀體(Cylinder)等等

Object選單:有很多功能,可以對物件做一些額外處理

模式選單:通常用快捷鍵TAB來切換物件瀏覽(Object)或編輯(Edit)模式

視圓渲染選單:針對視圖裏物件的渲染

常用的Wireframe(線條),Solid(固態)等.當元件在製圖時通常切換到Wireframe,避免受表面渲染的干擾

導航選單:當旋轉或放大物件時的中心點,該點會當作導航點

Active Element:作用中物件的中心,最後一個挑選的物件視為作用中物件,顏色跟其他挑中的不同,左下角也會顯示.或是按 Alt+句點符號
Media Point:一群選中物件的中心
Individual Origins:個別物件的中心
3D Cursor: 3D游標點, 或是直接按鍵盤句點符號
Bounding Box Center:各物件邊界中心點

雙箭頭圖示:撥弄物件的中心.

當作用時.可看到一群物件旋轉時,其相對位置會隨著變動,但作用中物件不會跟著旋轉.

紅藍綠座標圖示:切換開關

紅色是X軸,藍色是Z軸,綠色是Y軸,當切換到起作用時,旁邊會多出三個圖示:箭頭將它切換成垂直座標軸移動模式(沿著X或Y或Z軸移動),弧線則是切換成球形旋轉模式(固定軸,圍繞物體圓心運動),而線段方塊圖示是切換成物件放大或縮小模式,透過點擊滑鼠去拉紅藍綠線來調整物件放置的位置(translate,rotate,scale)

Transform Orientation:

圖層方塊圖示:共有 20 個方塊,代表不同的製圖層

每個製圖層,一旦有物件放到該圖層, 該方塊圖示就會另外出現一個小圈圈在裡面,單擊滑鼠就可以切換使用中的層面.或是按鍵盤上面數字鍵 1 ... 0 (代表第一層到第十層).配合 Alt鍵,就可以切換第十一層到第二十層.只有被選到的圖層裏面的物件才可被看到(Visible),搭配Shift 鍵可以選取多個圖層一次全部顯示出來.要將選用的物件換到別層,用快速鍵 m.如果要將一個物件放在多個層面,可以用右邊Properties功能面板上第5項的立方體圖示按一下,會出現該物件編輯視窗,在關聯(Relations)面板也有圖層方塊,搭配Shift鍵點選想要置放的層面就可.

圖層鎖鏈圖示:Locking to Scene

Proportional Editing Object Mode: 

磁鐵圖示:啟動移動時智慧卡點模式(Snap),就好像有磁鐵吸住一樣

智慧卡點條件設定選單:當移動物件遇到下面狀態產生智慧卡點

   a. Volume:別的物體內
   b. Face:別的物體的表面
   c. Edge:別的物體的邊線
   c. Vertex:別的物體的頂點
   d. Increment: 座標軸格子點(Grid)
只有當設定不是在 Increment 條件時,才會另外跳出下面要說的圖示(本身物件的對齊點)

移動物件的對齊點選單:

  a. Active: 
  b. Media:一群物件的中心點
  c. Center:物件中新點
  d. Closet:最接近點

當移到別的物件表面時是否跟著旋轉來對齊圖示:在物件旋轉時,要定位在該旋轉面時就相當有用