Heart: 3D Printing/ 3D PDF view

I still don’t understand the need for PDF3D. It is an old format that essentially failed (did not become popular). It is not easy to create and it is not usable for anything else than viewing in a PDF viewer - not 3D printable, not editable, not importable into any software. Is there any platform or environment or application where PDF3D is better than other widely used mesh formats?

In my particular case, it´s to generate reports to share. PDF viewer is something almost everyone have in every digital device under any OS. That´s the only porpose, but if you say PDF 3D view doesn´t work properly…
Thanks.

PDF3D works, it has just become largely irrrelevant.

  1. You can drop 3D models in standard file format (STL, OBJ, …) into Word or PowerPoint. Anybody can open the file and rotate the model around.

  2. Web browsers on your PC, tablet, phone, etc. have become so powerful that you don’t need apps for displaying objects in standard 3D file formats. There are lots of online viewers that just needs a URL of your model file and they can show it in your browser.

How to export a model from Slicer and create a link for viewing it in a web browser:

  • Export segmentation to OBJ format using OpenAnatomy Exporter module (provided by SlicerOpenAnatomy extension)
  • put them in a folder that has the same name as the .obj file and zip it
  • open this URL in your web browser (on your desktop, table, or phone) and open the zip file in it: https://kitware.github.io/vtk-js/examples/OBJViewer/OBJViewer.html

You can also create a direct “view in browser” link that you can send to anyone:

  • get a direct download link
    • for example, upload to Dropbox and replace the beginning of your default download URL by https://dl.dropboxusercontent.com/
  • create a viewer URL by adding this before your download URL: https://kitware.github.io/vtk-js/examples/OBJViewer/OBJViewer.html?fileURL=

Example URL for the SPL knee atlas: https://kitware.github.io/vtk-js/examples/OBJViewer/OBJViewer.html?fileURL=https://dl.dropboxusercontent.com/s/1ymrrdpy563w6jv/knee.zip

There are lots of other web viewers based on vtk.js, babylon.js, three.js that you can use instead of a proprietary PDF3D viewer.

Check out these examples just to see what’s possible:

3D object web viewers:

2 Likes

I’ve figured that you can even embed these 3D viewers here. This might be useful for quickly sharing models or volumes here in the forum.

For example:

Click here to see the text to write in your post to show this viewer
<iframe width="480" height="373" frameborder="0" scrolling="no" marginheight="0"
 marginwidth="0" id="kitware-obj-viewer"
 title="Object viewer"
 src="https://kitware.github.io/vtk-js/examples/OBJViewer/OBJViewer.html?fileURL=https://dl.dropboxusercontent.com/s/1ymrrdpy563w6jv/knee.zip">
</iframe>
Click here to see the text to write in your post to show this viewer
<iframe width="480" height="373" frameborder="0" scrolling="no" marginheight="0"
 marginwidth="0" id="kitware-vol-viewer"
 title="Volume viewer"
 src="https://kitware.github.io/vtk-js/examples/VolumeViewer/VolumeViewer.html?fileURL=https://data.kitware.com/api/v1/item/59e12e988d777f31ac6455c5/download">
</iframe>
6 Likes

Woderfull!!! Nice way to share segmentataions and models with colleagues. Thanks a lot.

Just one question… How can I export my volumes in vti format?

I’ve added an “Image export” section in OpenAnatomy Exporter module (in SlicerOpenAnatomy). It’ll be available in tomorrow’s Slicer Preview Release.

Until then, you can export by typing this into the Python interactor (replace node name and output location):

volumeNode = getNode('CTACardio')
writer=vtk.vtkXMLImageDataWriter()
writer.SetFileName("c:/Users/andra/Dropbox/models/ctacardio.vti")
writer.SetInputData(volumeNode.GetImageData())
writer.SetCompressorTypeToZLib()
writer.Write()
2 Likes

Wow… Amazing :slight_smile: Thanks for sharing this tip!

@lassoan Hi, Andras. Is there a way to convert many segmentationNode to a u3d file? Does it can implemented by python vtk lib?

Look forward to your reply.

PDF3D and the almost-never-heard-of u3d file format are so obsolete technology that you cannot expect any free, open-source developers to care about them. Adobe dissolved its PDF3D development team more than a decade ago, there have not been any improvement in the format since then, and there are many modern, more capable alternatives.

Development and licensing cost of a custom software implementation would cost several thousands of dollars, so if you really must create PDF3D files then it is much less expensive and less risky to buy a converter that can create PDF3D file from common mesh file formats that Slicer can write.

I see. Thank you for your enthusiastic answer.

Hello friends,

Thanks for the answers. The great part of 3D PDF is the file size. 5MB is enough to share a complete exam. We can send it from whatsapp and open on the cellphone. Does anyone have a similar simple tool?

The whole topic is about describing various alternatives. They are all slightly different than the workflow that you described but they have many advantages over 3D pdf. For example: the pdf viewer cannot display 3D volumes as your browser can do - see above. The PDF viewer can display meshes, but how would you go about 3D printing or editing that mesh?

If you describe your overall goal, what kind of data to share (image, mesh, segmentation, etc), for what purpose (e.g., quality check before 3D printing, verification of implant size and placement, etc.) then we can think about a much better solution than the dead end 3D PDF.

This should be starred/upvoted/documented somewhere.

2 Likes

There are better web viewers now! See for example the 3dviewer.net and some example segmentation visualizations here:

1 Like

Today I find this topic, it is very useful! :smiley:

Is there any way to play DICOM data(dcm or nrrd ) through web?

If you want to see both surface mesh and image then the OpenAnatomy viewer could be a good option.

For a traditional radiology viewer (2D oriented, image-only), you can use the OHIF viewer, for example in Kheops.

Hello everyone,

I’m having some trouble exporting my models as OBJ. file and trying to open in platforms like Online 3D viewer. The first problem is related to opacity. The segments that are solid (100% opaque) are invisible and when I make them transparent (before creating the OBJ.) they appear opaque in the Online 3D Viewer (image). Another problem is related to the colors, everything very dark and lackluster when I invert the opacities of segments. The name of the segments also does not appear, only a code (image)

You need to use the latest Slicer Preview Release. Why have implemented name, hierarchy, opacity improvements there. Colors look differs by because glTF using PBR lighting model and Slicer uses Gouraud by default. In the short term you can get more lively color by choosing lighter and more saturated colors in Slicer. Improving PBR support in the OpenAnatomy exporter is a work in progress, I’ll drop a note here when it is ready for testing.

I’ve updated SlicerOpenAnatomy extension to use PBR colors directly for models that use PBR interpolation. For segmentation or models that use Gouraud interpolation the color saturation is now boosted when exported to glTF, so the colors should look better.