使用Blender的UV映射制作一個地球


    UV映射是一個用來2D圖片紋理轉換3D網格的標准技術。U和V表示平面坐標的兩個軸,對應了3D空間中X、Y和Z。Blender手冊是這樣解釋UV映射的:想象一個3D模型對象,例如一個球體,平鋪到桌面上。每個3D的坐標都會在平面上有一個2D坐標對應。Blender提供了另外一種界面“UV/Image Editor”,它就是基於這種原理的。使用”UV/Image Editor”操作2D頂點,就像在3D編輯器一樣。

使用2D坐標的目的是將這些坐標映射到圖像/圖像,使得3D圖像可以映射出有紋理的真實的表面,我們不能直接在3D坐標空間上直接映射紋理,這樣很難實現。

    接下來我們通過實際操作來了解UV映射的實際操作過程。首先在Blender 3D界面中刪除初始化的Cube網格。然后創建一個球體(SSIFT + A –> Add –> UV Sphere)。

image

    進入編輯模式,選擇球體的最中間環線。可以使用快捷鍵SHIFT + ALT和右鍵球體上的網格線。按住CTRL + E,選擇Mesh –> Edges => Mark Seam。告訴UV分割器把求圖沿着剛才的邊緣線分成兩半。

image

    后邊的步驟主要在UV/Image Editor中操作。新增一個視圖界面,把界面類型設置為UV/Image Editor,從左下角的下拉列表中選擇。或者直接使用SHIFT + F10直接切換。

image

    在3D界面窗口,選擇所有的頂點(按A鍵可實現全選),然后按U分割球體。

image

    從下面的地址中下載地球紋理圖片:https://upload.wikimedia.org/wikipedia/commons/1/1c/BlueMarble-2001-2002.jpg

BlueMarble-2001-2002.jpg

    在UV/Image Eidtor中點擊Image –> Open Image或者按ALT + O快捷鍵。然后拖拽、縮放、旋轉獨立的UV網格,和圖片完全匹配上。如何全選獨立網格的所有頂點?可以先選中一個點,然后按L鍵即可。

image

    退回到3D窗口到Object Mode。然后打開緊鄰右邊的Viewport Shading下來列表,切換到“Texture”模式。此時,你看到模型有分布處在陰影下看不清楚。嘗試添加燈光調整位置,時球體更加清晰。使用SHIFT-A-Lamp添加燈。然后自己適當的調整位置。

    為了讓紋理在渲染中可見,你需要添加一個紋理到球體上,通過新增材質實現。在屬性窗口中,切換到Material面板。點擊“New”按鈕新增一個材質。然后切換到Texture面板。新增一個Textue並選中類型為“Image or Movie。從Image屬性下拉列表中選擇全局的texture。

image

    找到Mapping菜單,設置Coordinates為“UV”,Map為“UVMap”。保持projection為“Flat”。為了讓整個網格顯示比較平滑,切換到“Modifer”面板。添加一個”Subdivision Surface”工具,設置Subdivisions下的View為2。然后按T彈出工具窗口,選擇Shading屬性下的“Smooth”按鈕。現在可以按F12查看渲染結果了。

image

    通過改變燈光以及攝像頭的位置,達到想要的效果。我們還可以增加一些星星背景,你可以在World面板中實現。把屬性窗口切換到World面板。勾選“Bend Sky”和“Real Sky”。設置所有的三種顏色Horizon、Zenith、Ambient都為黑色。切換到Texture面板,新增一個Texture,設置type為“Voronoi”,打開下面的Colors菜單,勾選“Ramp”,設置Stop 0處的顏色為白色,透明度為1。設置Stop 1為黑色,透明度為0。接着設置Distance Metrix為“Minkowski 1/2”,Noise為0.002,Feature Weights的第二個值為 0.5。在Influence屬性中,勾選“Horizon”、“Zenith Up”、”zenith Down”。

image

    最終運行效果如下:

image

    通過以上步驟,我們可以模擬出一個簡單的地球,也學習了UV映射基礎。如果你看看我們剛剛做出的紋理地球,你會注意到,在“赤道”周圍有兩條紫色島嶼相遇的線條或“接縫”。這是UV映射的常見問題,有幾種方法可以避免。在我們的例子中,由於我們使用球體,刪除接縫的最佳方式是使用球面映射。先從下面地址下載texture圖片地圖圖片:https://eoimages.gsfc.nasa.gov/images/imagerecords/57000/57752/land_shallow_topo_2048.jpg

    進入編輯模式,選中所有的頂點,按“U”鍵->“Sphere projection”。此時,你會在UV/Image Editor窗口中看到不同的UV地圖。如下所示:

Sphere projection.png

   進入UV/Image Editor,點擊界面下邊的“UVs”->”Constrain to Image Bounds”。浙江確保在編輯時UVs將不會超過紋理的邊界。

   使用A鍵選中所有的頂點,縮放它們,知道停止不能再放大為止(放大到邊界位置)。我們看到有少部分頂點,例如右上角和右下角的幾個頂點超出位置比較多,為了可以選中這些頂點,移動它們靠近剩下的頂點。調整到如下圖所示位置。

image   如果現在我們渲染查看結果,還是看不到結果的。其他步驟,例如在屬性窗口中,添加材質和紋理方式和前面的步驟一樣。最終結果如下:

image

    另外,我們可以使用three.js導出插件,把球體導出為Three.js支持的文件格式。導出的文件結構如下:

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM