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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

WinForm显示3D图(Sharpgl)

發(fā)布時(shí)間:2023/12/31 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WinForm显示3D图(Sharpgl) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

總述

Sharpgl是.NET平臺(tái)的Opengl,可以用來(lái)繪畫(huà)、展示3D圖,本文將介紹如何顯示SOlidWorks等軟件制作的3D模型。

安裝Sharpgl

下載SharpGL.vsix文件并點(diǎn)擊安裝,VS中就會(huì)有相應(yīng)的項(xiàng)目出現(xiàn)了,之后創(chuàng)建工程時(shí)選擇這個(gè)項(xiàng)目建立即可。

解析模型

在網(wǎng)上不難找到個(gè)人寫(xiě)的3DS解析庫(kù),直接使用即可。一般這些解析庫(kù)針對(duì)的是3ds或者obj文件,對(duì)于SolidWorks創(chuàng)建的模型就需要一些轉(zhuǎn)換工作了。

  • 保存模型為STL類型
  • 使用Spin3D軟件轉(zhuǎn)換為3ds/obj
  • 解析器代碼

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using SharpGL; using System.IO; using System.Collections;namespace _3D繪圖 {class read_obj{public class POINT3{public double X;public double Y;public double Z;};public class WenLi{public double TU;public double TV;};public class FaXiangLiang{public double NX;public double NY;public double NZ;};public class Mian{public int[] V = new int[3];public int[] T = new int[3];public int[] N = new int[3];};public class Model{public List<POINT3> V = new List<POINT3>();//V:代表頂點(diǎn)。格式為V X Y Z,V后面的X Y Z表示三個(gè)頂點(diǎn)坐標(biāo)。浮點(diǎn)型public List<WenLi> VT = new List<WenLi>();//表示紋理坐標(biāo)。格式為VT TU TV。浮點(diǎn)型public List<FaXiangLiang> VN = new List<FaXiangLiang>();//VN:法向量。每個(gè)三角形的三個(gè)頂點(diǎn)都要指定一個(gè)法向量。格式為VN NX NY NZ。浮點(diǎn)型public List<Mian> F = new List<Mian>();//F:面。面后面跟著的整型值分別是屬于這個(gè)面的頂點(diǎn)、紋理坐標(biāo)、法向量的索引。//面的格式為:f Vertex1/Texture1/Normal1 Vertex2/Texture2/Normal2 Vertex3/Texture3/Normal3}public Model mesh = new Model();public float movX;public float movY;public float movZ;public float xRotate;public float yRotate;public float x;public float y;//放縮參數(shù)public static float scale;//顯示列表public uint showFaceList;public int YU = 1;public void loadFile(String fileName){// Mian[] f;//POINT3[] v;//FaXiangLiang[] vn;//WenLi[] vt;StreamReader objReader = new StreamReader(fileName);ArrayList al = new ArrayList();string texLineTem = "";while (objReader.Peek() != -1){texLineTem = objReader.ReadLine();if (texLineTem.Length < 2) continue;if (texLineTem.IndexOf("v") == 0){if (texLineTem.IndexOf("t") == 1)//vt 0.581151 0.979929 紋理{string[] tempArray = texLineTem.Split(' ');WenLi vt = new WenLi();vt.TU = double.Parse(tempArray[1]);vt.TV = double.Parse(tempArray[2]);mesh.VT.Add(vt);}else if (texLineTem.IndexOf("n") == 1)//vn 0.637005 -0.0421857 0.769705 法向量{string[] tempArray = texLineTem.Split(new char[] { '/', ' ' }, System.StringSplitOptions.RemoveEmptyEntries);FaXiangLiang vn = new FaXiangLiang();vn.NX = double.Parse(tempArray[1]);vn.NY = double.Parse(tempArray[2]);if (tempArray[3] == "\\"){texLineTem = objReader.ReadLine();vn.NZ = double.Parse(texLineTem);}else vn.NZ = double.Parse(tempArray[3]);mesh.VN.Add(vn);}else{//v -53.0413 158.84 -135.806 點(diǎn)string[] tempArray = texLineTem.Split(' ');POINT3 v = new POINT3();v.X = double.Parse(tempArray[1]);v.Y = double.Parse(tempArray[2]);v.Z = double.Parse(tempArray[3]);mesh.V.Add(v);}}else if (texLineTem.IndexOf("f") == 0){//f 2443//2656 2442//2656 2444//2656 面string[] tempArray = texLineTem.Split(new char[] { '/', ' ' }, System.StringSplitOptions.RemoveEmptyEntries);Mian f = new Mian();int i = 0;int k = 1;while (i < 3){if (mesh.V.Count() != 0){f.V[i] = int.Parse(tempArray[k]) - 1;k++;}if (mesh.VT.Count() != 0){f.T[i] = int.Parse(tempArray[k]) - 1;k++;}if (mesh.VN.Count() != 0){f.N[i] = int.Parse(tempArray[k]) - 1;k++;}i++;}mesh.F.Add(f);}}}public uint createListFace(ref SharpGL.OpenGL gl){gl.NewList(showFaceList, OpenGL.GL_COMPILE);if (mesh.V.Count() == 0) return 119;for (int i = 0; i < mesh.F.Count(); i++){gl.Begin(OpenGL.GL_TRIANGLES); // 繪制三角形if (mesh.VT.Count() != 0) gl.TexCoord(mesh.VT[mesh.F[i].T[0]].TU, mesh.VT[mesh.F[i].T[0]].TV); //紋理 if (mesh.VN.Count() != 0) gl.Normal(mesh.VN[mesh.F[i].N[0]].NX, mesh.VN[mesh.F[i].N[0]].NY, mesh.VN[mesh.F[i].N[0]].NZ);//法向量gl.Vertex(mesh.V[mesh.F[i].V[0]].X / YU, mesh.V[mesh.F[i].V[0]].Y / YU, mesh.V[mesh.F[i].V[0]].Z / YU); // 上頂點(diǎn)if (mesh.VT.Count() != 0) gl.TexCoord(mesh.VT[mesh.F[i].T[1]].TU, mesh.VT[mesh.F[i].T[1]].TV); //紋理if (mesh.VN.Count() != 0) gl.Normal(mesh.VN[mesh.F[i].N[1]].NX, mesh.VN[mesh.F[i].N[1]].NY, mesh.VN[mesh.F[i].N[1]].NZ);//法向量gl.Vertex(mesh.V[mesh.F[i].V[1]].X / YU, mesh.V[mesh.F[i].V[1]].Y / YU, mesh.V[mesh.F[i].V[1]].Z / YU); // 左下if (mesh.VT.Count() != 0) gl.TexCoord(mesh.VT[mesh.F[i].T[2]].TU, mesh.VT[mesh.F[i].T[2]].TV); //紋理if (mesh.VN.Count() != 0) gl.Normal(mesh.VN[mesh.F[i].N[2]].NX, mesh.VN[mesh.F[i].N[2]].NY, mesh.VN[mesh.F[i].N[2]].NZ);//法向量gl.Vertex(mesh.V[mesh.F[i].V[2]].X / YU, mesh.V[mesh.F[i].V[2]].Y / YU, mesh.V[mesh.F[i].V[2]].Z / YU); // 右下gl.End(); // 三角形繪制結(jié)束 }gl.EndList();return showFaceList;}} }

    整個(gè)資料下載

    關(guān)注微信公眾號(hào),發(fā)送 sharpgl

    總結(jié)

    以上是生活随笔為你收集整理的WinForm显示3D图(Sharpgl)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 熟妇高潮一区二区高潮 | 国产在线一二三 | 亚洲社区一区二区 | 精品人妻无码一区二区三区换脸 | 蜜桃av免费 | 亚洲女人天堂网 | 久操视频在线观看 | 欧美熟妇激情一区二区三区 | 国内精品久久久 | 中文字幕免费看 | 免费观看黄色网 | japanese国产| 欧美一区二区三区 | 日日干夜夜爱 | 亚洲午夜无码久久久久 | 91精品国产一区二区无码 | 精品国产成人亚洲午夜福利 | 欧美精品欧美精品系列 | 亚洲免费三区 | 男人天堂怡红院 | 国产伦理片在线观看 | 亚洲精选一区二区三区 | av第一区| 天天摸天天做天天爽水多 | 肥婆大荫蒂欧美另类 | 欧美z○zo重口另类黄 | 国产一区二区自拍 | 91精品国产高清一区二区三密臀 | 青娱乐在线视频免费观看 | 黑人操亚洲美女 | 国产精品国产一区 | 日本一区二区人妻 | 男人亚洲天堂 | 国产精品香蕉国产 | 成人欧美视频在线观看 | 久久久久久久久久久国产 | 喷水视频在线观看 | 夜夜综合网| 欧美色图在线观看 | 亚洲精品福利网站 | 99精品在线观看 | 91精品一区二区三 | 大又大粗又爽又黄少妇毛片 | 爱插美女网 | 91免费黄视频 | 久久中文字幕无码 | 久久99国产精品久久99 | 久久福利影院 | 一级二级三级视频 | 天天操夜夜爱 | 中国成熟妇女毛茸茸 | www五月 | 亚洲国产精品无码久久久 | 91麻豆精品91久久久久同性 | 国产理论影院 | 国产又粗又猛又爽又黄91 | 91伊人 | 成人夜视频 | 天天想你在线观看完整版电影高清 | 成人免费看片网站 | 日韩久久电影 | 亚洲av无码专区在线 | 久久一本综合 | 久久久久久亚洲精品中文字幕 | 在线一区二区三区四区 | 黄色av网| 日本亚洲最大的色成网站www | 91青青草| 久久精品亚洲一区 | 国产毛片一区二区三区 | 美女隐私直播 | 国产交换配乱淫视频免费 | 特级淫片aaaaaaa级附近的 | 欧美日韩国产精品 | av福利在线看 | 欧美精品自拍视频 | 三级全黄的视频 | 国产成人综合网 | 影音先锋成人 | 色偷偷欧美 | 色综合久久天天综合网 | 懂色av蜜臀av粉嫩av分享吧最新章节 | 夜色伊人| 夜夜操夜夜干 | 综合色视频 | 久久免费看少妇 | 欧美性受视频 | 在线看b | 国产精品11 | 精品国产亚洲av麻豆 | 欧美 日韩 国产 成人 | 久久精品国产一区二区三区 | 亚洲123区 | 96免费视频 | 成人无码av片在线观看 | 大肉大捧一进一出好爽视频 | 国内av免费 | 尤物视频免费观看 | 亚洲免费在线看 |