LEADTOOLS使用教程:3D網(wǎng)格的創(chuàng)建與保存
1. 讓我們以您在“創(chuàng)建一個(gè)3D對(duì)象”這一章中所創(chuàng)建的項(xiàng)目為開(kāi)始吧。
2. 現(xiàn)在,請(qǐng)運(yùn)行該程序。您將會(huì)看到一個(gè) 2x2 的布局,其中的每一個(gè)間隙都是以3D對(duì)象為填充的。該3D對(duì)象是使用VRT技術(shù)(容積重組技術(shù))來(lái)呈現(xiàn)的。
3. 將該3D對(duì)象轉(zhuǎn)換為網(wǎng)格。這是通過(guò)將容積類型轉(zhuǎn)換為SSD(遮蔽表面顯示法)來(lái)完成的。請(qǐng)?jiān)贗nitClass() 方法的末尾添加以下這些行的代碼:
[Visual Basic]
' 將渲染對(duì)象的容積類型更改為SSD。 control3D.ObjectsContainer.VolumeType = Medical3DVolumeType.SSD
[C#]
// 將渲染對(duì)象的容積類型更改為SSD。 control3D.ObjectsContainer.VolumeType = Medical3DVolumeType.SSD;
4. 由于將對(duì)象轉(zhuǎn)換為網(wǎng)格是一個(gè)相當(dāng)耗費(fèi)時(shí)間的過(guò)程,您可能需要將以下代碼添加于以上的步驟(3)之前。
[Visual Basic]
this.Show()
this.Update()
[C#]
this.Show(); this.Update();
5.現(xiàn)在您已經(jīng)創(chuàng)建了一個(gè)3D網(wǎng)格。要想改變其表面,您需要使用的是Medical3DObject.Slab.IsoThreshold屬性。
6.保存該網(wǎng)格。為了保存該網(wǎng)格,您只需要在InitClass()的末尾添加以下這一行代碼:
[Visual Basic]
// 將該網(wǎng)格以這個(gè)名稱TestMesh進(jìn)行保存。 control3D.ObjectsContainer.Objects[0].SSD.SaveMesh("C:\TestMesh.x")
[C#]
// 將該網(wǎng)格保存為一個(gè)文件。 control3D.ObjectsContainer.Objects[0].SSD.SaveMesh(@"C:\TestMesh.x");
7.該initClass() 方法應(yīng)該如下所示:
[Visual Basic]
Private Sub InitClass() Dim MY_LICENSE_FILE As String = "d:\temp\TestLic.lic" ' 開(kāi)啟DICOM支持。 Dim MY_DicomDEVELOPER_KEY As String = "xyz123abc" RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DicomDEVELOPER_KEY); ' 開(kāi)啟Medical支持。 Dim MY_MedicalDEVELOPER_KEY As String = "abc123xyz" RasterSupport.SetLicense(MY_LICENSE_FILE, MY_MedicalDEVELOPER_KEY); ' 開(kāi)啟Medical 3D支持。 Dim MY_3DDEVELOPER_KEY As String = "123xyzabc" RasterSupport.SetLicense(MY_LICENSE_FILE, MY_3DDEVELOPER_KEY); ' 創(chuàng)建一個(gè)將被用于加載圖像的編解碼器類的新實(shí)例。 Dim _codecs As RasterCodecs = New RasterCodecs() ' 創(chuàng)建一個(gè)MedicalViewer的新實(shí)例。該查看器布局將被劃分為2X2。 Dim viewer As MedicalViewer = New MedicalViewer(2, 2) ' 使該視圖與整個(gè)窗體相匹配。 viewer.Dock = DockStyle.Fill ' 創(chuàng)建一個(gè)包含3D對(duì)象的3D控件。 Dim control3D As Medical3DControl = New Medical3DControl() control3D.AddAction(MedicalViewerActionType.WindowLevel) control3D.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active) Dim object3D As Medical3DObject = New Medical3DObject() ' 將新創(chuàng)建的3D對(duì)象添加到控件。 control3D.ObjectsContainer.Objects.Add(object3D) object3D.Image = _codecs.Load("C:\Users\Public\Documents\LEADTOOLS Images\image1.dcm") ' 將以上單元格添加到MedicalViewer。 viewer.Cells.Add(control3D) Controls.Add(viewer) Me.Show() Me.Update() ' 將渲染對(duì)象的容積類型更改為SSD。 control3D.ObjectsContainer.VolumeType = Medical3DVolumeType.SSD ' 將該網(wǎng)格保存為一個(gè)文件。 control3D.ObjectsContainer.Objects(0).SSD.SaveMesh("C:\TestMesh.x") End Sub
[C#]
void InitClass() { string MY_LICENSE_FILE = "d:\\temp\\TestLic.lic"; // 開(kāi)啟DICOM支持。 string MY_DicomDEVELOPER_KEY = "xyz123abc"; RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DicomDEVELOPER_KEY); // 開(kāi)啟Medical支持。 string MY_MedicalDEVELOPER_KEY = "abc123xyz"; RasterSupport.SetLicense(MY_LICENSE_FILE, MY_MedicalDEVELOPER_KEY); // 開(kāi)啟Medical 3D支持。 string MY_3DDEVELOPER_KEY = "123xyzabc"; RasterSupport.SetLicense(MY_LICENSE_FILE, MY_3DDEVELOPER_KEY); // 創(chuàng)建一個(gè)將被用于加載圖像的編解碼器類的新實(shí)例。 RasterCodecs _codecs = new RasterCodecs(); // 創(chuàng)建一個(gè)MedicalViewer的新實(shí)例。該查看器布局將被劃分為2X2。 MedicalViewer viewer = new MedicalViewer(2, 2); // 使該視圖與整個(gè)窗體相匹配。 viewer.Dock = DockStyle.Fill; // 創(chuàng)建一個(gè)包含3D對(duì)象的3D控件。 Medical3DControl control3D = new Medical3DControl(); control3D.AddAction(MedicalViewerActionType.WindowLevel); control3D.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active); Medical3DObject object3D = new Medical3DObject(); // 將新創(chuàng)建的3D對(duì)象添加到控件。 control3D.ObjectsContainer.Objects.Add(object3D); object3D.Image = _codecs.Load(@"C:\Users\Public\Documents\LEADTOOLS Images\image1.dcm"); // 將以上單元格添加到MedicalViewer。 viewer.Cells.Add(control3D); Controls.Add(viewer); this.Show(); this.Update(); // 將渲染對(duì)象的容積類型更改為SSD。 control3D.ObjectsContainer.VolumeType = Medical3DVolumeType.SSD; // 將該網(wǎng)格保存為一個(gè)文件。 control3D.ObjectsContainer.Objects[0].SSD.SaveMesh(@"C:\TestMesh.x"); }
運(yùn)行該程序,您將會(huì)看到一個(gè)2×2的布局,其中包含一個(gè)以3D對(duì)象為填充的插槽。該3D對(duì)象是使用SSD技術(shù)(遮蔽表面顯示法)來(lái)呈現(xiàn)的。
本文轉(zhuǎn)自iceman
購(gòu)買(mǎi)最新正版授權(quán)!"咨詢?cè)诰€客服"
慧都年終盛典火爆開(kāi)啟,一年僅一次的最強(qiáng)促銷,破冰鉅惠不容錯(cuò)過(guò)??!優(yōu)惠詳情點(diǎn)擊查看>>