1 / 19

Module - VPython

Module - VPython. 編者 : 張修為 修訂 : 江清水. Contents. 1. Vpython 簡介 2. 建立 一個球體 3. 給 定球體的 屬性 ( 含 材質及自建材質 ) 4. 視 線 (眼睛位置及看的方向) 5. 給 定 光源 6. H ome Work: 球體 的 運轉. 1. Vpython 簡介. 提供繪製 3D 圖形的函式庫及模組 透過寫好的函式直接呼叫出 3D 物件. 1. VPython 下載點及安裝. http :// www.lfd.uci.edu/~ gohlke/pythonlibs/

slade-dale
Download Presentation

Module - VPython

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Module -VPython 編者: 張修為 修訂:江清水

  2. Contents 1. Vpython 簡介 2. 建立一個球體 3. 給定球體的屬性(含材質及自建材質) 4. 視線(眼睛位置及看的方向) 5. 給定光源 6. Home Work: 球體的運轉

  3. 1. Vpython簡介 • 提供繪製3D圖形的函式庫及模組 • 透過寫好的函式直接呼叫出3D物件

  4. 1. VPython下載點及安裝 • http://www.lfd.uci.edu/~gohlke/pythonlibs/ -64位元電腦選擇VPython-5.74.win-amd64-py3.3.exe -32位元電腦選擇VPython-5.74.win32-py3.3.exe 下載完後一直選擇下一步便可安裝成功

  5. 2. 建立球體-範例 from visual import * sphere() 以上程式便可以直接做出如右圖的3D球體 試著按住滑鼠左右鍵後移動滑鼠(Zoom in/out)試著按住右鍵後移動滑鼠(Moving Camara)

  6. 3. 建立球體-屬性範例 from visual import * scene = display(title='test',x=0, y=0, width=600, height=600,background=(0,0,0)) ball = sphere(pos=(0,0,0), radius=0.5) 以上程式便可以直接做出如右圖的3D球體

  7. 3. 內建material • materials.woodmaterials.roughmaterials.marblematerials.plasticmaterials.earthmaterials.diffusematerials.emissivematerials.unshadedmaterials.chromematerials.blazedmaterials.silvermaterials.BlueMarblematerials.bricks

  8. 3. 基本程式-範例 from visual import * sphere(color=color.orange, material=materials.wood) 以上程式便可以直接做出如右圖的3D球體

  9. 3. 自建材質 • 我們可以透過設定texture來自行建置材質 materials.texture(data=參數設定, mapping=貼圖方式, interpolate=False) 我們可以透過改變上列紅色的部分來做設定 參數設定可以是改變透明度(四格陣列),也可以直接給予顏色值(如給定color.red)貼圖方式有三種:(1)rectangular:矩形貼圖,貼一整面,多用在平面及立方體的某一面 (2)sign:類似rectangular,但不受到原本物體的顏色跟角度影響以及只能貼一面 (3)spherical:環繞貼圖,將設定套用到整個物件上

  10. 3. 自建材質範例 範例如下: from visual import * checkerboard = ( (0,1,0,1), (1,0,1,0), (0,1,0,1), (1,0,1,0)) //設定四格格子 顯示出透明度 1為不透明 tex = materials.texture(data=checkerboard, mapping=“rectangular”,//建立texture 資料來源為以上的checkerboard interpolate=False) box(axis=(0,0,1), color=color.cyan, material=tex)//建立一個box 貼上材質

  11. 3. 自建材質範例結果 可以看到box的材質變成間格狀

  12. 4. 視線-CNTER/FORWARD • 一般來說視線是由起點與終點所組成的一條射線 • 我們可以透過設定center設定我們視線的起點 (代表著我們人的眼睛位於何處) • 並透過設定forward設定我們要視線的終點 (我們看向的位置) • Vpython起始的center都是正中央center(0,0,0),終點forward都是(0,0,1) • 我們可以透過更改場景的此兩變數達到做出視線改變的效果 • 範例: • 如右下圖, 我們繪製藍色X軸,紅色Y軸,綠色Z軸起始的視線是由Z軸(0,0,0)直接射向(0,0,-1)位置所在

  13. 4. 視線-CNTER/FORWARD-範例 修改範例如下: from visual import * New = display(title=‘view example’, //設定新的場景NEW x=0, y=0, width=600, height=600,視線起點(1,1,1)看到終點(-1,-1,-1) center=(1,1,1), background=(0,0,0),forward=(-1,-1,-1)) New = display.get_selected()//將New顯示 curve(pos=[(-10,0,0), (10,0,0)], radius=0.2,color=color.blue) //畫出x軸顏色藍色 curve(pos=[(0,-10,0), (0,10,0)], radius=0.2,color=color.red) //畫出y軸顏色紅色 curve(pos=[(0,0,-10), (0,0,10)], radius=0.2,color=color.green) //畫出z軸顏色綠色

  14. 4. 視線-CNTER/FORWARD-範例 範例結果如下: 可以看到視線換到座標的(1,1,1)並望向(-1,-1,-1)斜對角

  15. 5. 光源-lighting • Vpython起始會幫我們打一道光源,因此才看的見物件 • 我們可以透過增加場景的光源達到照射物體產生陰影的效果 • 範例: • from visual import * • scene2 = display(title='view example', • x=0, y=0, width=600, height=600, • center=(0,0,1), background=(0,0,0),forward=(0,0,-1)) • scene2 = display.get_selected() • scene2.lights = [] //將原本起始光源取消 • lamp = local_light(pos=(5,5,5), color=color.red)//設置新的光源來自(5,5,5) 為紅色 • ball = sphere(pos=(0,0,0), radius=1)//顯示球體在(0,0,0)

  16. 5. 光源-注意事項 1.光源的設定是會重疊累加的,因此不將預設的光源取消會造成視覺的錯覺 2. 物體會擋住光源因此背向光源的物體表面是會呈現不被照射(黑暗)的狀態

  17. 7. 球體的運轉 • 根據以上所完成的程式加入一個移動的光源,此光源在XY(Z=0)平面上以半徑為10的圓軌跡上繞Z軸移動。 • 設定一個紅色木頭(wood)材質小球位於光源前一單位,可以讓經由視覺看到光源的移動 • 制定一個箭頭由紅色小球指向光源照射方向。 • 可否改變視線方向而固定光源?

  18. 練習 • 1.設定視窗名為“學號" • 2.加入一個球體在(0,0,0) 半徑4 • 3.視線改由(1,0,1.5)望向整個坐標系 • 4.自建貼圖由四個顏色組成紅黃藍綠

  19. 練習結果

More Related