日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

参数化建模一些经验总结(3DS)

發布時間:2024/3/26 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 参数化建模一些经验总结(3DS) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景:

?在數字地球開發的時候,我們有時候為了方便, 只需要拉取一條折線, 就希望可以進行溝槽,以及其它渠道的自動化生成. 所以,這里首先第一步,就需要能對參數進行實時的建模.

效果圖:

?但是在生成模型的時候,我們有時會忽略很多細節,導致生成的模型出現各種問題.

問題:

1.

比如說這種: 我只是消減了一個面,就造成了,隨著相機視角,其他面顯示不全(OPengl 優化渲染的時候,面的遮擋隱藏問題).

?2.優化三角面生成的順序不一樣,也會造成這種情況...

解決方案流程:

1.先看自己的XYZ坐標系,順著坐標系進行進行三角面片的生成,

? 注意: 模型中不需要指定法向,法向是根據你點的繪制順序自動計算出來的,如果你三角面的順序是錯的,那么法向也會出錯.

2.消減面之后, 就出現了盒子,那么如果不做處理,就會出現 問題1中的情況,如何解決呢? 就需要多補一層反向三角面的操作,這樣,就正常繪制出來盒子內部如圖.(這樣面片的數量直接翻一倍....感覺不是很好,面少了還行,多了就成問題了)

關鍵代碼:

/// <summary>/// 將四邊形,轉換成兩個三角面片/// 注意,從左下角 & 逆時針的 規則 生成的規則,逆時針+先是對角線/// 4 3/// 1 2 /// </summary>/// <param name="quadrangle"></param>/// <param name="cw"></param>/// <returns></returns>public static TriangleVertex[] Quadrangle2Triangle(QuadrangleVertex quadrangle, bool ccw = true){TriangleVertex[] triangles = new TriangleVertex[2];for (int i = 0; i < triangles.Length; i++){triangles[i] = new TriangleVertex();}if(ccw == true){//逆時針..triangles[0].Index1 = quadrangle.Index1;triangles[0].Index2 = quadrangle.Index2;triangles[0].Index3 = quadrangle.Index3;triangles[1].Index1 = quadrangle.Index1;triangles[1].Index2 = quadrangle.Index3;triangles[1].Index3 = quadrangle.Index4;}else{//順時針針..默認為逆時針生成三角面片.triangles[0].Index1 = quadrangle.Index1;triangles[0].Index2 = quadrangle.Index4;triangles[0].Index3 = quadrangle.Index3;triangles[1].Index1 = quadrangle.Index1;triangles[1].Index2 = quadrangle.Index3;triangles[1].Index3 = quadrangle.Index2;}return triangles;}

public static void Quad2Triangles(this GrooveModel groove, bool isTowFace = true){groove.TriangleFaces.Clear();foreach (var item in groove.QuadFaces){if (item.IsBuildTrigles == false) continue;foreach (var trigs in QuadrangleVertex.Quadrangle2Triangle(item,true)){groove.TriangleFaces.Add(trigs);}if(isTowFace==true){foreach (var trigs in QuadrangleVertex.Quadrangle2Triangle(item,false)){groove.TriangleFaces.Add(trigs);}}}}

總結

以上是生活随笔為你收集整理的参数化建模一些经验总结(3DS)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。