日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Unity3D游戲引擎之游戲?qū)ο蟮脑L問繪制線與繪制面詳解

最近做一個項目須要去繪制線與繪制面,那么把這兩天的學習筆記整理一下,一是給自己留作備忘,二是方便初學者學習。 任何一個無規(guī)則曲線它都是有若干個線段組成,及時是圓形它也是又若干個線段組成的,也就是說將若干個線段拼接起來就是我們須要的無規(guī)則曲線~那么在3D 的世界中我們須要知道 X Y Z 三個點來確定一條3D線段。 首先先使用Unity編輯器的方式來添加一條線~ Unity -> GameObject -> Create Empty 創(chuàng)建一個空的對象,我命名為line。然后點擊 Component -> Miscellaneous -> Line Renderer 給line添加一個線渲染器的屬性,Line Renderer是非常中的屬性,下面我會詳細的說明。        Create -> Material 創(chuàng)建一個材質(zhì),做來這個線段的貼圖,下面我們看看Line Renderer的一些重要參數(shù)。 Cast Shadows: 是否投射陰影。 Receive Shadows: 是否接收陰影。 Materials :設置材質(zhì),這里可以設置多個材質(zhì), line就是上面我們創(chuàng)建的材質(zhì),這里我給line這個材質(zhì)涂上了紅顏色。 Positions: 這個屬性就比較重要了,它是專門設置線段在3D 世界中的點的坐標,size 設置點的數(shù)量 為3 那么將會有3個點,Element 0   Element 1 Element 2    這三個點將確定這條曲線分為兩段,***段是(0,0,1) 到  (0,0,2) ,第二段是 (0,0,2) 到(0,0,4)。 Paramerters  StartWidth :設置起點的寬度   EndWidth:  設置終點的寬度 ,這兩項數(shù)值默認為1,但是現(xiàn)實起來很寬,所以一般都設置為0.幾~  Start Color: 設置起點顏色 Start Color: 設置終點顏色 Use World Space 使用世界坐標系 大家看看效果,清楚的可以看到曲線分為兩部分,***部分較短 第二部分較長。   怎么樣? 繪制線的方法不難學吧?在已知線段位置的情況下我們可以使用上面的方法去設置這條線,但是如果線段的位置是在游戲過程中動態(tài)的產(chǎn)生就得在代碼中去動態(tài)的去設置。 創(chuàng)建腳本Main.cs 綁定到攝像頭上,運行游戲繪制線的話須要在Main中去拿到line這個對象的實例。這就是一個比較重要的知識點了。 一些重要的方法,在編輯器中編輯的一些東西,在代碼中也可以做到。 LineRenderer.SetWidth(0.1,0.1) ; 設置線段起始點與結束點的寬度 (參數(shù)1 為起始點 參數(shù)2為結束點) LineRenderer.SetColor(Color.black,Color.white); 設置線段起始點與結束點的顏色 (參數(shù)1 為起始點顏色 參數(shù)2為結束點顏色) LineRenderer.SetVertexCount(5); 設置線段數(shù)量。 LineRenderer.useWorldSpace = true; 是否使用世界坐標系,和上面編輯器對應。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:國際域名空間、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設、龍崗網(wǎng)站維護、網(wǎng)站推廣。

[代碼]c#/cpp/oc代碼:

01using UnityEngine; 
02using System.Collections; 
03using System.Threading; 
04   
05public class Main : MonoBehaviour { 
06       
07    //游戲?qū)ο?,這里是線段對象 
08    private GameObject LineRenderGameObject; 
09       
10    //線段渲染器 
11    private LineRenderer lineRenderer; 
12       
13    //設置線段的個數(shù),標示一個曲線由幾條線段組成 
14    private int lineLength = 4; 
15       
16    //分別記錄4個點,通過這4個三維世界中的點去連接一條線段 
17    private Vector3 v0 = new Vector3(1.0f,0.0f,0.0f); 
18    private Vector3 v1 = new Vector3(0.0f,1.0f,0.0f); 
19    private Vector3 v2 = new Vector3(0.0f,0.0f,1.0f); 
20    private Vector3 v3 = new Vector3(1.0f,0.0f,0.0f); 
21       
22    void Start(){ 
23           
24        //通過之前創(chuàng)建的對象的名稱,就可以在其它類中得到這個對象, 
25        //這里在main.cs中拿到line的對象 
26        LineRenderGameObject = GameObject.Find ("line"); 
27           
28        //通過游戲?qū)ο?,GetComponent方法 傳入LineRenderer 
29        //就是之前給line游戲?qū)ο筇砑拥匿秩酒鲗傩?nbsp;
30        //有了這個對象才可以為游戲世界渲染線段 
31        lineRenderer = (LineRenderer)LineRenderGameObject.GetComponent ("LineRenderer"); 
32           
33        //設置線段長度,這個數(shù)值須要和繪制線3D點的數(shù)量想等 
34        //否則會拋異常~~ 
35        lineRenderer.SetVertexCount(lineLength); 
36           
37           
38    }    
39                    
40       
41    void Update() { 
42           
43        //在游戲更新中去設置點 
44        //根據(jù)點將這個曲線鏈接起來 
45        //***個參數(shù)為 點的ID  
46        //第二個 參數(shù)為點的3D坐標 
47        //ID 一樣的話就標明是一條線段 
48        //所以盆友們須要注意一下! 
49           
50        lineRenderer.SetPosition (0, v0); 
51        lineRenderer.SetPosition (1, v1); 
52        lineRenderer.SetPosition (2, v2); 
53        lineRenderer.SetPosition (3, v3); 
54   
55   
56    } 
57       
58}

通過上面代碼的設置,運行游戲,發(fā)現(xiàn)全新的一個三角形曲線赫然的映入我們的眼簾,有了上面的方法我們就可以組合的繪制出各種各樣的3D 游戲曲線了,這里MOMO使用的是顏色,大家也可以添加一個貼圖~     繪制面的話~,因為3D世界中游戲面全都是用三角形來拼起來的(出于效率的考慮),所以大家所看到的面其實都是用三角面拼接起來的。那么下面我們看看在 Unity3D 中如何繪制三角形平面。先創(chuàng)建一個GameObject對象,我命名為face,然后給這個對象添加兩個Mesh屬性, 添加MeshFilter(網(wǎng)格過濾器)與mesh Renderer(網(wǎng)格渲染器)屬性,這樣子就可以繪制網(wǎng)格面了。       為了給網(wǎng)格面貼圖,我給mesh Renderer 渲染器添加一個材質(zhì),貼上一張圖片~ 在3D 的世界中兩點可以確定一條線,那么三點就肯定能確定一個面,3D世界中的面一定是三角形拼湊組成,任何3D的面的所需要的坐標點的數(shù)量 一定是3的倍數(shù)。和繪制線一樣,MOMO還是創(chuàng)建一個腳本綁定在攝像頭中,然后去訪問上面創(chuàng)建的face游戲?qū)ο?去渲染三角面~

[代碼]c#/cpp/oc代碼:

01using UnityEngine; 
02using System.Collections; 
03   
04public class Main : MonoBehaviour { 
05   
06       
07    // Update is called once per frame 
08    void Update () { 
09           
10        //通過object對象名 face 得到網(wǎng)格渲染器對象 
11        MeshFilter meshFilter = (MeshFilter)GameObject.Find("face").GetComponent(typeof(MeshFilter)); 
12           
13        //通過渲染器對象得到網(wǎng)格對象 
14        Mesh mesh = meshFilter.mesh; 
15       
16        //API中寫的不是提清楚,我詳細的在說一遍 
17           
18        //設置頂點,這個屬性非常重要 
19        //三個點確定一個面,所以Vector3數(shù)組的數(shù)量一定是3個倍數(shù) 
20        //遵循順時針三點確定一面 
21        //這里的數(shù)量為6 也就是我創(chuàng)建了2個三角面 
22        //依次填寫3D坐標點 
23        mesh.vertices = new Vector3[] {new Vector3(5, 0, 0), new Vector3(0, 5, 0), new Vector3(0, 0, 5),new Vector3(-5, 0, 0), new Vector3(0, -5, 0), new Vector3(0, 0, -5)}; 
24       
25        //設置貼圖點,因為面確定出來以后就是就是2D  
26        //所以貼紙貼圖數(shù)量為Vector2  
27        //***個三角形設置5個貼圖 
28        //第二個三角形設置一個貼圖 
29        //數(shù)值數(shù)量依然要和頂點的數(shù)量一樣 
30        mesh.uv = new Vector2[] {new Vector2(0, 0), new Vector2(0, 5), new Vector2(5, 5),new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1)}; 
31           
32           
33        //設置三角形索引,這個索引是根據(jù)上面頂點坐標數(shù)組的索引 
34        //對應著定點數(shù)組Vector3中的每一項 
35        //***將兩個三角形繪制在平面中 
36        //數(shù)值數(shù)量依然要和頂點的數(shù)量一樣 
37        mesh.triangles= new int []{0,1,2,3,4,5}; 
38           
39    } 
40}

Build and Run  運行效果后清楚的可以看到兩個三角形。MOMO提醒大家 善用三角平面可以繪制出各種各樣的游戲面出來噢~哇咔咔~    


分享文章:Unity3D游戲引擎之游戲?qū)ο蟮脑L問繪制線與繪制面詳解
文章源于:http://www.5511xx.com/article/dpsdgpd.html