Untiy網格程式設計篇 一 包圍盒效果

2021-09-11 15:03:00 字數 1925 閱讀 8859

untiy網格程式設計篇(一)包圍盒效果(純**,網格實現)

1.效果圖: 

選中不同的模型,會標識出包圍盒的效果

2.實現思路:

第一步:計算模型的aabb包圍盒;

第三步:設定網格頂點和網格的三角面

第四步:得到上圖的效果

3.**部分:

using unityengine;

using system.collections.generic;

namespace meshtools

set}//初始化元件資訊

private void start()

; _meshfilter.mesh = _mesh;

} /// /// 包圍盒大小,以及包圍盒位置

///

///

///

public void seteffect( bounds bounds ,vector3 boundsposition )

//繪製網格的方法

private void refresh()

; children.add(i , childvertexs);

}// 初始化網格資料,計算每個角上三個長方體八個頂點的位置,並加入vertexs中

listvertexs = new list();

//三角面數量的計算 每個長方體12個三角面,36個三角面的點,一共 8*3*36

int ******** = new int[8 * 3 * 36];

//根據線條寬度換算成半徑數值

float lineunit = _linewidth / 2.0f;

for ( int i = 0 ; i < children.count ; i++ )

}// 設定三角面頂點序號 分為六個面,共十二個三角面分別賦值

// 詳細原理可以去了解三角面的渲染原理

for ( int i = 0, count = 0 ; count < ********.length ; i += 8, count += 36 )

// 最後設定網格的頂點和三角面

_mesh.vertices = vertexs.toarray();

_mesh.********s = ********;

}//初始化包圍盒位置

private void initposition()

//通過兩點計算出長方體的八個頂點

private listgetvertexsby2point( vector3 first ,vector3 second , string axis )}}

}

4.總結:

1.以上提供兩種設定效果的方法,直接賦值target 或者 呼叫seteffect();

2.包圍盒的效果可根據線條的長度和寬度進行設定,也可以動態的根據包圍盒的比例進行計算設定獲取更好的顯示效果;包圍盒計算可以參照我的另一篇部落格

3.在新增了meshrenderer的元件之後,要為meshrenderer新增材質(新建乙個材質球賦值即可),並且可以設定材質球的顏色來確定包圍盒效果的顏色;

4.設定mesh時沒有設定uv值和法線值,是因為不設定看起來融合的更加統一,設定了就會以長方體的樣式渲染,存在面重合等多種問題;

5.組合模型要實現以上效果需要動過**計算組合模型,關於組合模型的包圍盒計算,在以後的文章中進行講述。

Untiy網格程式設計篇 一 包圍盒效果

untiy網格程式設計篇 一 包圍盒效果 純 網格實現 1.效果圖 選中不同的模型,會標識出包圍盒的效果 2.實現思路 第一步 計算模型的aabb包圍盒 第三步 設定網格頂點和網格的三角面 第四步 得到上圖的效果 3.部分 using unityengine using system.collect...

PL SQL程式設計(一)基礎篇

目標 1.掌握pl sql概念 2.掌握pl sql程式設計技術,包括編寫過程 函式 觸發器等 pl sql procedural language sql 是oracle在標準的sql語言上的擴充套件。pl sql不僅允許嵌入sql語言,還可以自定義變數和常量,允許使用條件語句和迴圈語句,允許使用...

Unity載入模組深度解析(網格篇)

與上篇所提出的測試 一樣,我們對於其他資源的載入效能分析同樣使用該測試 我們將每種資源均製作成一定大小的assetbundle檔案,並逐一通過以下 在不同裝置上進行載入,以期得到不同硬體裝置上的資源載入效能比較。測試環境 引擎版本 unity 5.2版本 測試裝置 三颱不同檔次的移動裝置 andro...