Forum Navigation
You need to log in to create posts and topics.

Bond transparency

Dear developers,

I tried to make both bonds and atoms semi-transparent but small spheres located at each atomic positions are displayed (see the attached image). I there a way to hide these spheres ?

Thanks in advance.

Kind regards.

Benoit

 

Uploaded files:
  • H2O_transparent_bonds.PNG

Hi Benoit,

This is a visual bug, yes, probably a regression in the new OVITO version 3.6.0. It occurs if atoms and bonds are semi-transparent, and I don't think there is a workaround for you other than going back to an older program version which didn't render the nodal spheres of the bond network.

I am working on a solution and will get back to you with more information soon.

-Alex

Dear Alex,

Thanks for your answer. Indeed, the problem doesn't occurs with Ovito 3.4.4 (but it was also present with Ovito 3.5.4).

Kind regards,

Benoit

Benoit,

The following development builds should solve the problem that was visible in your screenshot above:

https://www.ovito.org/download/testing/ovito-pro-3.6.0-dev-HEAD-1d1dbbd-win64-cpp17.exe
https://www.ovito.org/download/testing/ovito-pro-3.6.0-dev-HEAD-1d1dbbd-x86_64-cpp17.tar.xz

https://www.ovito.org/download/testing/ovito-basic-3.6.0-dev-HEAD-1d1dbbd-win64-cpp17.exe
https://www.ovito.org/download/testing/ovito-basic-3.6.0-dev-HEAD-1d1dbbd-x86_64-cpp17.tar.xz

Since version 3.5, OVITO renders nodal spheres at the points where two or more bond cylinders meet if particles were made semi-transparent or are completely turned off. These nodal spheres, which have the same radius as the cylinders, are now rendered semi-transparent too if the bonds are semi-transparent. Before they were rendered fully-opaque by mistake, which made them appear in front of everything else (see the discussion below).

There may still be other visual artifacts related to semi-transparency though, and this deserves some explanation:

OVITO's OpenGL rasterizing renderer performs the drawing of primitives in a sorted fashion, rendering semi-transparent objects from back to front, to get correct alpha compositing. However, the depth-sorting of objects is performed separately within each of the following classes of objects: particles, bond cylinders, nodal spheres of the bond network. This approach is used for performance reasons but it may generally lead to incorrect compositing of overlapping objects if there is a mixture of semi-transparent particles and semi-transparent bonds like in your case.

Some of the problems associated with this approach actually play out well or lead to artifacts that are only barely noticeable. For example, see the attached picture, which shows that semi-transparent particles are fully opaque to semi-transparent bond cylinders (and the nodal spheres mentioned above) but not to other particles. Note that the situation changes again if you remove the "Transparency" property from the bonds.

What I want to say is that the current approach has known weaknesses and can lead to slightly incorrect results. So far, I accepted these problems during the development of OVITO, because all other solutions will make the rendering code much more complex and slower. So far I didn't want to invest in developing such a more complex solution without being certain that there is a real need for it. You are the first OVITO user running in this issue, and I will take note that you seem to have a use case for mixing semi-transparent atoms and semi-transparent bonds. I will look into possibilities to improve the OpenGL-based renderer in future versions of the program.

Let me know if you have further questions, or if you notice other issues that deserve attention.

-Alex

Uploaded files:
  • transparency_artifacts.jpg

Dear Alex,

Thanks for the fix, but unfortunately I can only use the zip package of Ovito for Windows since I don't have admin rights so I couldn't test your fix on the development builds you sent.

Regarding your comment on visual artifacts with transparency, I indeed noticed some rendering issues in some cases. For example when:

  • plotting semi-transparent iso-surfaces together with semi-transparent bonds/particles
  • displaying only bonds with fully transparent particles (but it might not be the best option to use transparency properties to hide selected particles)

If you have the opportunity to improve this kind of rendering issues in the feature it would be really great but I understand that it may not be a priority.

Kind regards,

Benoit

 

 

Here are links to the corresponding portable program archives, which do not require installation:

https://www.ovito.org/download/testing/ovito-basic-3.6.0-dev-HEAD-1d1dbbd-win64-cpp17.zip
https://www.ovito.org/download/testing/ovito-pro-3.6.0-dev-HEAD-1d1dbbd-win64-cpp17.zip

Yes, mixing semi-transparent meshes and semi-transparent particles or bonds is also something that likely leads to visual artifacts for the same reason. OVITO's OpenGL renderer draws all particles, all bonds and all meshes separately using completely different techniques (i.e. using different GPU shader programs, which cannot be active at the same time). That's why it is so hard to render all these things back-to-front in correct order simultaneously, which would be necessary for a correct transparency effect.

I will do some research to find a better solution.

-Alex

P.S. Yes, hiding particles by making them fully transparent is not a good solution in terms of rendering performance. Better delete those particles by placing the Delete Selected modifier into the pipeline. Disabling that modifier brings the particles back any time if needed.

Dear Alex,

Thanks, I confirm that it correctly fixes the problem.

Regarding the use of 'Delete Selected' modifier to hide particles, the problem that it  also removes bonds. The typical use case where I apply transparency on selected particles/bonds is for supercells with a point defect: I want to apply transparency everywhere except on the defect and eventually some atoms around the defect. Removing the particles might be an alternative solution though.

Kind regards,

Benoit

新的OVITO微信频道!
New for our users in China: OVITO on WeChat 

Official OVITO WeChat channel operated by Foshan Diesi Technology Co., Ltd.