This tutorial teaches you how to create a 3D object, which then can be converted to a mesh and saved.
Convert the 3D object into a mesh. This is done by changing the volume type to SSD (Shaded Surface display). Add the following line at the end of the InitClass() method:
' Change the volume type of the rendered object to SSD
control3D.ObjectsContainer.VolumeType = Medical3DVolumeType.SSD
// Change the volume type of the rendered object to SSD
control3D.ObjectsContainer.VolumeType = Medical3DVolumeType.SSD;
You may want to add the following code before step (3) above as converting the object to mesh can be a time-consumer process.
this.Show()
this.Update()
this.Show();
this.Update();
Now you have created a 3D Mesh. To change the surface, use the Medical3DObject.Slab.IsoThreshold property.
Save the mesh. To save the mesh, simply add this line at the end of the InitClass() method:
// Save the mesh under the name TestMesh.
control3D.ObjectsContainer.Objects[0].SSD.SaveMesh("C:\TestMesh.x")
// Save the mesh to a file
control3D.ObjectsContainer.Objects[0].SSD.SaveMesh(@"C:\TestMesh.x");
Note: If you open C:\ through Windows Explorer, you will notice the mesh was saved as “TestMesh.x”.
The initClass() method should look as follows:
Private Sub InitClass()
Dim MY_LICENSE_FILE As String = "d:\temp\TestLic.lic"
' Unlock DICOM support
Dim MY_DicomDEVELOPER_KEY As String = "xyz123abc"
RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DicomDEVELOPER_KEY);
' Unlock Medical support
Dim MY_MedicalDEVELOPER_KEY As String = "abc123xyz"
RasterSupport.SetLicense(MY_LICENSE_FILE, MY_MedicalDEVELOPER_KEY);
' Unlock Medical 3D support
Dim MY_3DDEVELOPER_KEY As String = "123xyzabc"
RasterSupport.SetLicense(MY_LICENSE_FILE, MY_3DDEVELOPER_KEY);
' Create a new instance of the Codecs class, which will be used to load the images.
Dim _codecs As RasterCodecs = New RasterCodecs()
' Create a new instance of the Medical Viewer. The layout will be divided to 2X2.
Dim viewer As MedicalViewer = New MedicalViewer(2, 2)
' Fit the view to the whole form
viewer.Dock = DockStyle.Fill
' Create the 3D control that will hold the 3D object.
Dim control3D As Medical3DControl = New Medical3DControl()
control3D.AddAction(MedicalViewerActionType.WindowLevel)
control3D.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active)
Dim object3D As Medical3DObject = New Medical3DObject()
' Add the newly created 3D object to the control.
control3D.ObjectsContainer.Objects.Add(object3D)
object3D.Image = _codecs.Load("C:\Users\Public\Documents\LEADTOOLS Images\image1.dcm")
' Add the cell above to the MedicalViewer.
viewer.Cells.Add(control3D)
Controls.Add(viewer)
Me.Show()
Me.Update()
' Change the volume type of the rendered object to SSD
control3D.ObjectsContainer.VolumeType = Medical3DVolumeType.SSD
' Save the mesh to a file
control3D.ObjectsContainer.Objects(0).SSD.SaveMesh("C:\TestMesh.x")
End Sub
void InitClass()
{
string MY_LICENSE_FILE = "d:\\temp\\TestLic.lic";
// Unlock DICOM support
string MY_DicomDEVELOPER_KEY = "xyz123abc";
RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DicomDEVELOPER_KEY);
// Unlock Medical support
string MY_MedicalDEVELOPER_KEY = "abc123xyz";
RasterSupport.SetLicense(MY_LICENSE_FILE, MY_MedicalDEVELOPER_KEY);
// Unlock Medical 3D support
string MY_3DDEVELOPER_KEY = "123xyzabc";
RasterSupport.SetLicense(MY_LICENSE_FILE, MY_3DDEVELOPER_KEY);
// Create a new instance of the Codecs class, which will be used to load the images.
RasterCodecs _codecs = new RasterCodecs();
// Create a new instance of the Medical Viewer. The layout will be divided to 2X2.
MedicalViewer viewer = new MedicalViewer(2, 2);
// Fit the view to the whole form
viewer.Dock = DockStyle.Fill;
// Create the 3D control that will hold the 3D object.
Medical3DControl control3D = new Medical3DControl();
control3D.AddAction(MedicalViewerActionType.WindowLevel);
control3D.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active);
Medical3DObject object3D = new Medical3DObject();
// Add the newly created 3D object to the control.
control3D.ObjectsContainer.Objects.Add(object3D);
object3D.Image = _codecs.Load(@"C:\Users\Public\Documents\LEADTOOLS Images\image1.dcm");
// Add the cell above to the MedicalViewer.
viewer.Cells.Add(control3D);
Controls.Add(viewer);
this.Show();
this.Update();
// Change the volume type of the rendered object to SSD
control3D.ObjectsContainer.VolumeType = Medical3DVolumeType.SSD;
// Save the mesh to a file
control3D.ObjectsContainer.Objects[0].SSD.SaveMesh(@"C:\TestMesh.x");
}
Run the program and you should see a 2X2 layout with one of the slots filled with a 3D object. The 3D object is rendered using the SSD (Shaded Surface display).
Note: Now you will need to have DICOMDIR files for the next step. You can download a sample from our site. Download the file from here (Download chest_ct_compressed_subset_for_3d_tutorial.zip), and extract the file to "C:\Leadtools_DICOMDIR". For more information on building 3D objects from a DICOMDIR, please see Loading a DICOMDIR To Create a 3D Object.
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
Your email has been sent to support! Someone should be in touch! If your matter is urgent please come back into chat.
Chat Hours:
Monday - Friday, 8:30am to 6pm ET
Thank you for your feedback!
Please fill out the form again to start a new chat.
All agents are currently offline.
Chat Hours:
Monday - Friday
8:30AM - 6PM EST
To contact us please fill out this form and we will contact you via email.