本教程可以教您如何创建一个3D对象,以及如何将其随后转换为一个网格并保存。
1. 让我们以您在“创建一个3D对象”这一章中所创建的项目为开始吧。
2. 现在,请运行该程序。您将会看到一个 2x2 的布局,其中的每一个间隙都是以3D对象为填充的。该3D对象是使用VRT技术(容积重组技术)来呈现的。
3. 将该3D对象转换为网格。这是通过将容积类型转换为SSD(遮蔽表面显示法)来完成的。请在InitClass() 方法的末尾添加以下这些行的代码:
[Visual Basic]' 将渲染对象的容积类型更改为SSD。control3D.ObjectsContainer.VolumeType = Medical3DVolumeType.SSD[C#]// 将渲染对象的容积类型更改为SSD。
control3D.ObjectsContainer.VolumeType = Medical3DVolumeType.SSD;
4. 由于将对象转换为网格是一个相当耗费时间的过程,您可能需要将以下代码添加于以上的步骤(3)之前。
[Visual Basic]this.Show()this.Update()[C#]this.Show();this.Update();
5.现在您已经创建了一个3D网格。要想改变其表面,您需要使用的是Medical3DObject.Slab.IsoThreshold属性。
6.保存该网格。为了保存该网格,您只需要在InitClass()的末尾添加以下这一行代码:
[Visual Basic]// 将该网格以这个名称TestMesh进行保存。
control3D.ObjectsContainer.Objects[0].SSD.SaveMesh("C:\TestMesh.x")
[C#]// 将该网格保存为一个文件。
control3D.ObjectsContainer.Objects[0].SSD.SaveMesh(@"C:\TestMesh.x");
7.该initClass() 方法应该如下所示:
[Visual Basic]Private Sub InitClass()Dim MY_LICENSE_FILE As String = "d:\temp\TestLic.lic"
' 开启DICOM支持。Dim MY_DicomDEVELOPER_KEY As String = "xyz123abc"
RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DicomDEVELOPER_KEY);' 开启Medical支持。Dim MY_MedicalDEVELOPER_KEY As String = "abc123xyz"
RasterSupport.SetLicense(MY_LICENSE_FILE, MY_MedicalDEVELOPER_KEY);' 开启Medical 3D支持。Dim MY_3DDEVELOPER_KEY As String = "123xyzabc"
RasterSupport.SetLicense(MY_LICENSE_FILE, MY_3DDEVELOPER_KEY);' 创建一个将被用于加载图像的编解码器类的新实例。Dim _codecs As RasterCodecs = New RasterCodecs()' 创建一个MedicalViewer的新实例。该查看器布局将被划分为2X2。Dim viewer As MedicalViewer = New MedicalViewer(2, 2)' 使该视图与整个窗体相匹配。viewer.Dock = DockStyle.Fill' 创建一个包含3D对象的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()' 将新创建的3D对象添加到控件。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()' 将渲染对象的容积类型更改为SSD。control3D.ObjectsContainer.VolumeType = Medical3DVolumeType.SSD' 将该网格保存为一个文件。control3D.ObjectsContainer.Objects(0).SSD.SaveMesh("C:\TestMesh.x")
End Sub[C#]void InitClass()
{string MY_LICENSE_FILE = "d:\\temp\\TestLic.lic";
// 开启DICOM支持。
string MY_DicomDEVELOPER_KEY = "xyz123abc";
RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DicomDEVELOPER_KEY);// 开启Medical支持。
string MY_MedicalDEVELOPER_KEY = "abc123xyz";
RasterSupport.SetLicense(MY_LICENSE_FILE, MY_MedicalDEVELOPER_KEY);// 开启Medical 3D支持。
string MY_3DDEVELOPER_KEY = "123xyzabc";
RasterSupport.SetLicense(MY_LICENSE_FILE, MY_3DDEVELOPER_KEY);// 创建一个将被用于加载图像的编解码器类的新实例。
RasterCodecs _codecs = new RasterCodecs();// 创建一个MedicalViewer的新实例。该查看器布局将被划分为2X2。
MedicalViewer viewer = new MedicalViewer(2, 2);// 使该视图与整个窗体相匹配。
viewer.Dock = DockStyle.Fill;// 创建一个包含3D对象的3D控件。
Medical3DControl control3D = new Medical3DControl();control3D.AddAction(MedicalViewerActionType.WindowLevel);control3D.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active);Medical3DObject object3D = new Medical3DObject();// 将新创建的3D对象添加到控件。
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();// 将渲染对象的容积类型更改为SSD。
control3D.ObjectsContainer.VolumeType = Medical3DVolumeType.SSD;// 将该网格保存为一个文件。
control3D.ObjectsContainer.Objects[0].SSD.SaveMesh(@"C:\TestMesh.x");
}
- 运行该程序,您将会看到一个2×2的布局,其中包含一个以3D对象为填充的插槽。该3D对象是使用SSD技术(遮蔽表面显示法)来呈现的。
注意:如果您想要查看更高质量的图像,我们可以提供DICOMDIR示例文件,您可以点击这里进行下载。如果您想要了解有关如何在DICOMDIR中构建3D对象的更多相关详细信息,请参阅这一章“通过加载DICOMDIR来创建一个3D对象”。
支持
关于其他产品的更多信息,请访问我们的官方网站,
欢迎下载免费的全功能评估版SDK,全功能试用版中有这个例子的全部源代码。
同时欢迎您使用评估版期间的免费技术支持。