[Unity實戰]自定義mesh
參考連結:http://blog.csdn.net/zuoyamin/article/details/9287507
對於自定義mesh,有三點很重要:
1.頂點個數=三角形數+2;三角形頂點數=3*三角形數
2.頂點建立的順序最好是順時針或者逆時針建立的,這樣可以大大地減少演算法的複雜度
3.頂點繪製的順序必須是順時針或者逆時針繪製的,這樣才能正確地繪製以頂點為邊界點的圖形,頂點繪製的順序參考mesh.triangles
using UnityEngine; using System.Collections; [RequireComponent(typeof(MeshFilter))] [RequireComponent(typeof(MeshRenderer))] public class CustomMesh : MonoBehaviour { }
using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEditor; //使用前最好先鎖定Inspector面板! [CustomEditor(typeof(CustomMesh))] public class CustomMeshEditor : Editor { private List<Vector3> vertices = new List<Vector3>(); private int[] triangles; void OnSceneGUI() { CustomMesh customMesh = (CustomMesh)target; for (int i = 0; i < vertices.Count; i++) { Handles.PositionHandle(vertices[i], Quaternion.identity); Handles.Label(vertices[i], i.ToString()); } if (vertices.Count > 1) { Handles.DrawPolyLine(vertices.ToArray()); Handles.DrawLine(vertices[vertices.Count - 1], vertices[0]); } //在OnSceneGUI()中只能通過Handles來繪製新檢視 //如果你想引入GUI的元素哪麼就需要使用BeginGUI()和EndGUI()組合的使用。 Handles.BeginGUI(); GUILayout.BeginArea(new Rect(0, 0, 100, 100)); if (GUILayout.Button("建立點")) { vertices.Add(customMesh.transform.position); } if (GUILayout.Button("撤銷點")) { vertices.RemoveAt(vertices.Count - 1); } if (GUILayout.Button("匯出mesh")) { Mesh mesh = new Mesh(); int triangleAmount = vertices.Count - 2; triangles = new int[3 * triangleAmount]; //根據三角形的個數,來計算繪製三角形的頂點順序(索引) //順序必須為順時針或者逆時針 for (int i = 0; i < triangleAmount; i++) { triangles[3 * i] = 0;//固定第一個點 triangles[3 * i + 1] = i + 1; triangles[3 * i + 2] = i + 2; } mesh.vertices = vertices.ToArray(); mesh.triangles = triangles; AssetDatabase.CreateAsset(mesh, "Assets/CustomMesh.asset"); } GUILayout.EndArea(); Handles.EndGUI(); } }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
例項(屬性圖的製作):
using UnityEngine; using System.Collections.Generic; [RequireComponent(typeof(MeshFilter))] [RequireComponent(typeof(MeshRenderer))] public class CreatePentagon : MonoBehaviour { public Transform[] verticesTra;//賦值順序為順時針或者逆時針 public float[] proportion;//比例 void Start() { List<Vector3> vertices = new List<Vector3>(); for (int i = 0; i < verticesTra.Length; i++) { Vector3 pos = (verticesTra[i].position - transform.position) * proportion[i]; vertices.Add(pos); } DrawPentagon(vertices); } void DrawPentagon(List<Vector3> vertices) { Mesh mesh = new Mesh(); int triangleAmount = vertices.Count - 2; int[] triangles = new int[3 * triangleAmount]; //根據三角形的個數,來計算繪製三角形的頂點順序(索引) //順序必須為順時針或者逆時針 for (int i = 0; i < triangleAmount; i++) { triangles[3 * i] = 0;//固定第一個點 triangles[3 * i + 1] = i + 1; triangles[3 * i + 2] = i + 2; } mesh.vertices = vertices.ToArray(); mesh.triangles = triangles; GetComponent<MeshFilter>().mesh = mesh; } }
相關推薦
[Unity實戰]自定義mesh
參考連結:http://blog.csdn.net/zuoyamin/article/details/9287507 對於自定義mesh,有三點很重要: 1.頂點個數=三角形數+2;三角形頂點數=3*三角形數 2.頂點建立的順序最好是順時針或者逆時針建立的,這樣可以大大地
Unity NGUI UIPanel下對粒子或自定義Mesh的剪裁
ngui unity uipanel 裁切 剪裁 粒子 寫在開篇: 越來越煩那些無腦轉發自己不做驗證的博主論壇樓主,網上好不容易找到一些資料,結果代碼搞下來卻是錯的,有些確實是因為版本問題太老不兼容,但是有些明顯是有問題的,轉發前自己試試就知道肯定是不能用的。結果。。。哎。。。真
關於Unity實現自定義多邊形圖片效果
image 物體 length inspector 設置 this err eve mes 關於Unity實現自定義多邊形圖片效果 1.創建RawImageEditor編輯器拓展腳本(放在工程中Editor文件夾下,沒有則創建) 1 /*****************
Unity C# 自定義TCP傳輸協議以及封包拆包、解決粘包問題(網路應用層協議)
本文只是初步實現了一個簡單的基於TCP的自定協議,更為複雜的協議可以根據這種方式去擴充套件。 網路應用層協議,通俗一點的講,它是一種基於socket傳輸的由傳送方和接收方事先協商好的一種訊息包組成結構,主要由訊息頭和訊息體組成。 眾所周知,基於socket的資訊互動有兩
一、Unity Editor自定義選單
官方文件:https://unity3d.com/cn/learn/tutorials/topics/interface-essentials/unity-editor-extensions-menu-items 1、選單欄選單 [MenuItem("選單名稱")] public static v
unity webgl自定義啟動進度條動畫
多多少少在unity官網webgl模板看到了Template自定義介紹,今天分享一個超級實用的 新增自定義的模板有兩種方式: 1.在你-----unity安裝位置\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\We
[引擎]之三:在Unity中自定義CubeMesh
之前的文章mesh在Unity中的簡單使用說過,會建立CubeMesh。嗯,來了。 之前已經知道如何建立一個簡單的片mesh,那麼同理,CubeMesh的建立,同樣是從頂點、三角面、uv座標三個方面生成。 (1) 頂點的生成 一個cube只需要8個頂
Ionic 3 專案實戰------自定義外掛
一個外掛應該至少包含以下file: plugin-name -----------------src //外掛支援平臺 ------android.java //添加了支援Android平臺 ---
【Unity】自定義過場動畫Splash Image
iOS How do I make a splash screen? 如何製作啟動畫面? As part of your game publishing process, you may want to customize the splash screen that appears when launch
android retrofit 實戰自定義converter,解決相同介面返回不同資料的問題
square的retrofit是目前比較火的網路框架,我目前也在用 今天專案上遇到一個問題,就是請求同一個介面,可能返回不同的json格式 例如,訪問一個登入介面,成功的時候,返回的是 { "code": 0, "message": "登入成功",
Unity Shader 自定義SurfaceShader
這裡只做記錄用,不進行詳細的講解。 Shader "Custom/SurfaceShader" { Properties { _Color ("Color", Color) = (1,1,1,1) _MainTex ("Albedo (RGB)", 2D) =
stream外掛跨域大檔案斷點續傳實戰+自定義限速
JAVA跨域大檔案斷點續傳+自定義限速 前言:本文所講到的內容完全獨創,遇坑很多,但是本著資源共享的原則,將兩個星期的成果分享給大家,請尊重別人的勞動成果,轉載請註明出處:http://blog.c
Unity釋出自定義解析度程式
在windows上,找到這個registry key:HKEY_CURRENT_USER\Software\[company name]\[product name],刪除整個目錄,然後重新構建,執行程式 對應的找到在Mac中~/Library/Preferences/unity 的目錄下刪除對應的pref
修改模型的網格資料(自定義Mesh)
內容會持續更新,有錯誤的地方歡迎指正,謝謝! 有時,需要自定義mesh來繪製模型或圖形,可以程式碼控制,也可以shader控制,這裡介紹程式碼控制的方法: 何為Mesh Mesh是模型的網格,一個3D模型的表面是由多個彼此相連的三角面構成。三維空間中,構成這些三
unity 之 自定義彈出框
一、彈出框的搭建: 佈局如圖:Message為整個父物體,並且新增UiMessage程式碼。panel為遮罩。 MessageBox為整個提示框,Panel為標題,ok為確定按鈕,cancel為取消按鈕,retry為重試按鈕,Text為提示框的文字。 注意大小寫,後面程式碼會根據名稱進行獲取對應組建。 &nb
Hadoop實戰-Flume之自定義Sink(十九)
current ioe back urn oop print out java try import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream;
實戰案例:構建docker容器集群 (解決方案一:使用自定義網橋連接跨主機容器)
docker一、實驗環境虛擬機a兩塊網卡 eth0 eth1 (IP地址static或者dhcp)虛擬機b兩塊網卡 eth0 eth1 (IP地址static或者dhcp)二、在兩臺虛擬機上配置網橋虛擬機a操作:apt-get install bridge-utilsvim /etc/ne
Unity自定義編譯器窗口查找腳本
item arc cti 大型項目 ans using add dsc nts 在中大型項目中腳本繁多,子物體繁多,想要找到自己的腳本都掛到哪裏,尤其是剛剛接手別人的項目,這是一件令人頭疼的事。下面貼出一個小功能方便大家使用。腳本不復雜,不過卻帶來方便 註:下面的兩個腳本需
Zabbix(六):項目實戰之--自動發現nginx調度器及後端web服務集群、自定義參數監控
zabbix 自動發現 nginx項目: 1.自動發現nginx調度器及後端apache構建的web服務集群; 2.使用自定義參數監控調度器上nginx服務的相關統計數據及速率數據; 3.使用自定義參數監控後端apache服務的相關統計數據及速率數據;(選做) 4.制定出nginx調度器及後端apache服務
Unity 自定義Editor菜單快捷鍵
ini 快捷鍵 stat windows ctr 快捷 unity 光標 conf 1.快捷鍵 %-CTRL 在Windows / CMD在OSX # -Shift & -Alt LEFT/RIGHT/UP/DOWN-光標鍵 F1…F12 HOME,END,PGU