您現在的位置是:電腦技術吧?>? 基礎知識 ??>??3d動態全景 華為,福彩3D??>??正文詳情

3d動態全景 華為,福彩3D

儲懷雁2019-12-17 14:42:51 人圍觀
簡介動態鎖屏目前,我們忽略z軸(以便我們可以在平面中更清楚地看到),并且假設z軸坐標都是0。假設游戲中有兩個軌跡點在動態增加和變化。最后,這兩個變化軌跡點的組合就是它們生

  暫時我們先忽略Z軸(這樣在平面中看得更清楚),假設Z軸坐標都為0。

假設游戲中有兩個軌跡點在動態的增加與改變,最后將這兩個點改變的軌跡拼接起來就是它們生成的面。

如上圖所示,第一個點的軌跡是 3,4,5,6,7 第二個點的軌跡是2,1,10,9,8 。

這兩個點的長度是可變的,前提是他們兩個的數量必需完全一樣。

接著,如下圖所示,我們將這些點兩兩相連起來,目前一共形成了8個三角形面(可根據兩個動態點的數量而確定整個網格面三角形面的數量)。

最后我們將這8個三角形填充上同樣的顏色,就可以實現一個完整的立體網格面。

  原理很簡單,就是這樣的我相信大家看到這里大家都能明白,接著我們就學習如何使用代碼來實現它。

首先創建Unity工程,接著創建一個空的游戲對象,然后給該游戲對象綁定Mesh Filter組件 與 Mesh Renderer組件。

  Mesh Filter組件:表示網格面,這個網格面是由我們使用代碼將所有三角形拼接起來生成的面。

  Mesh Renderer組件:表示表示網格的渲染,可設置一個渲染的材質,它包括貼圖與顏色。

  如下圖所示,我說說里面比較重要的屬性。

Mesh Renderer中,Materials下拉列表中可設置網格模型的材質,此時我們設置了一個紅色的材質。

Mesh Filter:目前為None,也不用再編輯器中為它賦值,因為這個網格模型我們會在代碼中生成并且賦值。

在下面就是方剛我們設置紅色的材質資源,Shader中設置了貼圖的屬性,目前是GUI/ TextShader。

它表示這個材質的渲染級別在GUI上,就是優先級是最一層的。

舉個例子無論在這個網格模型的前面繪制多少模型,它永遠都會在最前面顯示。

就這個例子而言它的存在并不是必需的,其實Shader的選項還有很多,可透明、不可透明、鏡面、反射等等,后期我會向大家詳細道來。

  OK,現在資源文件都已經準備完畢,下面我們學習如何來繪制一個三角形,從簡單的開始。

把下面的代碼綁定在攝像機對象當中。

  [代碼]java代碼: 01 using UnityEngine; 02 using System.Collections.Generic; 03 using System; 04 05 public class Test : MonoBehaviour { 06 07 void Start () 08 { 09 //得到MeshFilter對象,目前是空的。

10 MeshFilter meshFilter = (MeshFilter)GameObject.Find(face).GetComponent(typeof(MeshFilter)); 11 //得到對應的網格對象 12 Mesh mesh = meshFilter.mesh; 13 14 //三角形頂點的坐標數組 15 Vector3[] vertices = new Vector3[3]; 16 //三角形頂點ID數組 17 int[] triangles = new int[3]; 18 19 //三角形三個定點坐標,為了顯示清楚忽略Z軸 20 vertices[0] = new Vector3(0,0,0); 21 vertices[1] = new Vector3(0,1,0); 22 vertices[2] = new Vector3(1,0,0); 23 24 //三角形繪制頂點的數組 25 triangles[0] =0; 26 triangles[1] =1; 27 triangles[2] =2; 28 29 //注釋1 30 mesh.vertices = vertices; 31 32 mesh.triangles = triangles; 33 34 } 35 36 }   代碼中有兩個非常重要的概念,就是三角形頂點數組與坐標數組。

先說說坐標數組,假設需要繪制一個四邊形,此時三角形坐標數組的長度應當是4,它保存著四邊形四個頂點的坐標。

然后是頂點數組,四邊形是由兩個三角形組成,然而一個三角形是由3個頂點組成,兩個三角形就應當是6個頂點組成,無論多少個三角形它們的結構都應當是以此類推。

  注解1:這里是將模型的頂點數組與坐標數組賦值給網格模型,還記得剛剛在創建Mesh Filter時,當時沒有在編輯器中給網格模型賦值,實際上代碼走到這里就會重新為網格模型MeshFilter賦值,接著我們在代碼中繪制的三角形就會顯示在屏幕當中。

  如圖所示,三角形已經繪制在屏幕當中。

圖中數組 0 1 2 表示該三角形的三個頂點的ID。

這個ID對應代碼中對應vertices數組索引頂點的坐標。

  下面我們修改一下代碼,讓屏幕中一共繪制4個三角形。

  [代碼]java代碼: 01 using UnityEngine; 02 using System.Collections.Generic; 03 using System; 04 05 public class Test : MonoBehaviour { 06 07 //網格模型頂點數量 08 private int VERTICES_COUNT = 6; 09 10 void Start () 11 { 12 //得到MeshFilter對象,目前是空的。

13 MeshFilter meshFilter = (MeshFilter)GameObject.Find(face).GetComponent(typeof(MeshFilter)); 14 //得到對應的網格對象 15 Mesh mesh = meshFilter.mesh; 16 17 //三角形頂點的坐標數組 18 Vector3[] vertices = new Vector3[VERTICES_COUNT]; 19 20 //得到三角形的數量 21 int triangles_count = VERTICES_COUNT - 2; 22 23 //三角形頂點ID數組 24 int[] triangles = new int[triangles_count *3]; 25 26 //三角形三個定點坐標,為了顯示清楚忽略Z軸 27 vertices[0] = new Vector3(0,0,0); 28 vertices[1] = new Vector3(0,1,0); 29 vertices[2] = new Vector3(1,0,0); 30 vertices[3] = new Vector3(1,1,0); 31 vertices[4] = new Vector3(2,0,0); 32 vertices[5] = new Vector3(2,1,0); 33 34 //三角形繪制頂點的數組 35 triangles[0] =0; 36 triangles[1] =1; 37 triangles[2] =2; 38 triangles[3] =3; 39 triangles[4] =2; 40 triangles[5] =1; 41 42 triangles[6] =2; 43 triangles[7] =3; 44 triangles[8] =4; 45 46 triangles[9] =5; 47 triangles[10] =4; 48 triangles[11] =3; 49 50 //繪制三角形 51 mesh.vertices = vertices; 52 53 mesh.triangles = triangles; 54 55 } 56 57 }   已知模型的頂點數量,頂點數量減去2就是三角形的數量,三角形的數量在乘以3就是三角形頂點的數量。

根據這個公式計算得知,上述代碼中_共繪制4個三角形,頂點坐標數組應當是6,頂點ID數組應當是12。

多個三角形在頂點ID數組中排列方式比較特殊,大家需要仔細記錄一下不然無法繪制出正確的三角形。

如下圖所示,由于我這邊沒有合適的3D坐標點,就用正三角形拼接出一個正四邊形,這個四邊形是由6個頂點4個小三角形組成 ,看到這里思路清晰的朋友應當明了無規則四邊形的繪制原理和它完全一樣。

只需要傳入適當的3D坐標點即可。

  根據上面的邏輯,我們修改一下算法。

假設三角形的頂點坐標為任意數量,我們需要更根據頂點坐標數量來計算對應頂點ID的數組內容。

在for循環中 start =0 與end =3的含義是繪制從頂點坐標數組中索引為0的頂點開始繪制到數組索引為3的頂點,也就說是這里從0到3繪制了3個三角形。

  [代碼]java代碼: 01 using UnityEngine; 02 using System.Collections.Generic; 03 using System; 04 05 public class Test : MonoBehaviour { 06 07 //網格模型頂點數量 08 private int VERTICES_COUNT = 6; 09 10 void Start () 11 { 12 //得到MeshFilter對象,目前是空的。

13 MeshFilter meshFilter = (MeshFilter)GameObject.Find(face).GetComponent(typeof(MeshFilter)); 14 //得到對應的網格對象 15 Mesh mesh = meshFilter.mesh; 16 17 //三角形頂點的坐標數組 18 Vector3[] vertices = new Vector3[VERTICES_COUNT]; 19 20 //得到三角形的數量 21 int triangles_count = VERTICES_COUNT - 2; 22 23 //三角形頂點ID數組 24 int[] triangles = new int[triangles_count *3]; 25 26 //三角形三個定點坐標,為了顯示清楚忽略Z軸 27 vertices[0] = new Vector3(0,0,0); 28 vertices[1] = new Vector3(0,1,0); 29 vertices[2] = new Vector3(1,0,0); 30 vertices[3] = new Vector3(1,1,0); 31 vertices[4] = new Vector3(2,0,0); 32 vertices[5] = new Vector3(2,1,0); 33 34 //繪制三角形 35 mesh.vertices = vertices; 36 37 //起始三角形頂點 38 int start = 0; 39 40 //結束三角形的頂點 41 int end = 3; 42 43 for(int i = start; i 44 { 45 for(int j = 0; j 3; j ) 46 { 47 if( i%2 ==0) 48 { 49 triangles[3*i j] = i j; 50 }else 51 { 52 triangles[3*i j] = i 2-j; 53 } 54 55 } 56 } 57 58 mesh.triangles = triangles; 59 } 60 }   如下圖所示,根據上面的邏輯算法,共繪制了3個三角形,并且頂點坐標ID是由 0 到3 。

說到這里請大家仔細想想本文的標題內容,其實兩個動態軌跡的點就是在維護triangles頂點坐標數組。

triangles[0]、triangles[2]、triangles[4]表示一個軌跡點的值,triangles[1]、triangles[3]、triangles[5]就表示另一個軌跡點的值,最終將它們通過上面的算法將三角形面連接起來那么就是動態的兩個點軌跡繪制面了。

  Unity3D其實非常好玩,上手雖然很簡單,但是想深入其實并沒有那么容易,今天這篇文章的思路已經寫完,如果還是沒能明白的朋友請仔細揣摩三角形與四邊形之間的區別。

版權聲明:本文由 儲懷雁 整理編輯。

原標題:3D動漫,3D圖片

轉載注明出處:http://www.dn9ww09s.icu/basics/15510.html

文章評論

    共有條評論來說兩句吧...

    用戶名:

    驗證碼:

作者推薦

  • 如何將數據導入excel,將excel數據導入word

    如何將數據導入excel,將excel數據導入word 相關圖片excel數據導入mysql簡介:工程中經常使用excel導入數據和excel導入數據庫的功能。相關內容已搜索過。總結使用的方案。方案一npoi npoi是。POI項目的網絡版本。POI是表格數據導入cad...

  • access數據庫和mysql,access數據庫與mysql

    access數據庫和mysql,access數據庫與mysql 相關圖片mysql數據庫一。軟件簡介db2mysql是一款能夠自動將access數據庫文件轉換成相應SQL代碼的軟件。它可以廣泛應用于access數據庫到MySQL或其他類型SQL數據mysql access...

  • 自定義標簽在哪,自定義標簽是什么意思

    自定義標簽在哪,自定義標簽是什么意思 相關圖片自定義個性標簽大全一。JSP標記的好處不再冗長。數據字典是使用的下拉框。只要定義了字典,就會顯示字典的可用內容。只要定義了字典和屬性值,就會顯示字典的顯示值。2。首先定...

  • 傳值和傳址,傳值與傳值

    傳值和傳址,傳值與傳值 相關圖片傳值調用//****在ASCX用戶控件中,定義要接收參數的屬性示例:private string mbooktitle;public string booktite{gjs傳值...

  • 自定義壁紙 文字,手機壁紙自定義文字

    自定義壁紙 文字,手機壁紙自定義文字 相關圖片照片加文字本文給出了一個Android實現的文本圖片自定義按鈕的實例。與您分享以供參考。具體分析如下:在Android開發中,經常需要使用帶有文本和圖片的按鈕。讓我們解釋美圖秀秀怎么...

  • 在編譯時if怎么用,編譯時注解

    在編譯時if怎么用,編譯時注解 相關圖片編譯注解和運行時注解本文主要介紹PHP編譯安裝中常見錯誤的解決方法。本文介紹了PHP編譯和安裝中的大多數錯誤,并提供了解決方案。對于你的朋友,請參考這篇文章是在https://co編譯...

  • sqlserver數據庫字段說明,sqlserver數據庫增加字段

    sqlserver數據庫字段說明,sqlserver數據庫增加字段 相關圖片sqlserver數據庫特點有時我們想知道這個值來自哪個表和字段,搜索Internet,找到更好的方法,并通過存儲過程實現它。只要傳入一個要查找的值,就可以找到該值所在的表和字段名。前提...

  • 排序命令,excel命令

    排序命令,excel命令 相關圖片對于excel數據庫排序是按照我確信您對redis sort命令了解不多,所以我編譯了一些redissort命令的使用方法和示例,希望這些示例能對您有所幫助。Redis sort是Redislinux按時間排序...

  • javascript提交表單,js自動提交表單

    javascript提交表單,js自動提交表單 相關圖片form表單提交多條數據本文主要介紹了對JSON格式表單數據提交相關資料的深入分析。供您參考的是,以JSON編碼格式提交表單數據是HTML5對web發展和演進的又一貢獻。以前,我們的Hajax提交...

  • 電腦用戶鎖定怎么解除,用戶已被鎖定

    電腦用戶鎖定怎么解除,用戶已被鎖定 相關圖片華為賬號鎖定怎么解除甲骨文解鎖Scott/Tiger用戶。一。為Scott用戶驗證當前系統的狀態:從DBA中選擇*[users where upper(username)='Scowin10賬戶鎖定多久解除...

熱評文章

  • 點擊文本進行復制,html文本可點擊

    點擊文本進行復制,html文本可點擊 相關圖片點擊單元格出現文本本文的示例描述了JavaScript通過單擊自動選擇textarea文本的方法。與您分享以供參考。具體實現方法如下:?1234texrea rows=10 co如何設置網頁點擊文本就可以復制...

  • C內核開發,IDEA可以開發C號碼

    C內核開發,IDEA可以開發C號碼 相關圖片linux系統下C開發步驟1:創建一個項目start Xcode-file-New-project。然后創建一個IOS單視圖應用程序。在這里我們將其命名為類別。步驟2:立即創建類別開源C開發工具...

  • ios有psp模擬器嗎,ios用psp模擬器

    ios有psp模擬器嗎,ios用psp模擬器 相關圖片蘋果psp模擬器卡很多童鞋喜歡在PSP上玩游戲,所以他們需要PSP設備嗎?現在有一個流行的PSP模擬器ppssp,它不僅可以在電腦上使用,也可以在Android手機蘋果手機上使用蘋果玩psp模擬器...

  • A/C,C-5

    A/C,C-5 相關圖片7c本文共享了使用objective C從遠程url下載圖片的兩種方法,它們都用于個人項目。這些建議是向您簡要介紹的,可供需要的小伙伴參考。目標C從遠程URL下載圖c=...

  • 掛起線程,websphere線程掛起

    掛起線程,websphere線程掛起 相關圖片linux線程掛起但有時,我們希望主線程等待IO操作完成。例如,在主線程創建文件夾后,等待完成,然后在文件夾中創建文件。nsobject類有一個方法performselectorQt線程的掛起和恢復...

  • 如何做app,app怎么做出來的

    如何做app,app怎么做出來的 相關圖片app好做嗎第一個坑:以蘋果手表為中心,以手表為核心的設計是不是錯了?我知道這聽起來很奇怪,但事實上,我們看到的最好的蘋果手表應用程序并不是那些以桌面功能為核心的應用...

  • 不經過壓縮的圖像文件格式,用于壓縮靜止圖像

    不經過壓縮的圖像文件格式,用于壓縮靜止圖像 相關圖片如何壓縮jpg圖片在iPhone上讀取圖像數據有兩種簡單的方法:uiimagejpegresentation和uiimagepngrepresentation。uiImageJP壓縮頭像...

  • ios 動畫,ios新動畫

    ios 動畫,ios新動畫 相關圖片ios12動畫效果uiview類執行自動執行動畫所需的工作,但在您要執行動畫時仍會通知視圖,因此需要將更改屬性的代碼包裝成代碼塊。一。uiview動畫的特定創建方法-(void)ios10過渡動畫...

  • 黑雷ios模擬器,ios安卓模擬器

    黑雷ios模擬器,ios安卓模擬器 相關圖片ios有電腦模擬器嗎IOS模擬器是一種輔助工具,可以在Mac環境下開發程序和IOS平臺程序。IOS模擬器是Xcode的一部分,Xcode是蘋果自己的IOS開發程序,可以免費下載!I電腦ios模擬器...

  • Pregreplace,preg_replace空

    Pregreplace,preg_replace空 相關圖片數據庫replace函數本文的例子描述了PHP正則preg_replace_回調函數的使用。與您分享以供參考。具體實現方法如下:PHP正則表達式功能強大,本例演示preg﹣replacstr_replace關鍵詞替換...

關注微信

变脸官网查询