We can finally release an update CentiLeo 0.55 for Cinema 4D with new displacement mapping engine. There work was so long because there was a lot of R&D and new algorithms were created to make DM efficient.
We have opted to make DM based on geometry pre-tesselation because we want it to support arbitrary shader networks as input and to make vector displacements too. Both these things are impossible without pre-tesselation. And with this fact many problems may happen like huge poly-counts, screen adaptivity artifacts, not so fast tesselations and renderings. However, we have solved many of these. Btw, there are still some drawbacks and vector displacements are not yet added, but we will fix that at later stage.
See this changelog to get the idea how new feature works. We now turn attention to mesh lights and many new shader nodes.
Please, test it and share your opinion!
Change Log: cntlc4d 0.551 alpha (2018 June 12) [core] Added overall displace scale and waterlevel parameters.
[cntlc4d] Fixed wrong texture rotation displayed in the viewport.
[cntlc4d] Fixed GPU priority toggling in IPR.
[cntlc4d] Focus distance data from CentiLeo camera tag is automatically moved to corresponding field of the camera object.
Change Log: cntlc4d 0.550 alpha (2018 June 7) [core] Displacement mapping functionality based on explicit geometry pre-tesselation with very efficient memory usage, fast tesselation and fast rendering.
E.g. with GTX 1070-1080 Ti it’s possible to generate and render 1-2 billion unique micropolygons (and more with instancing) – of course if you have at least 32GB of usual RAM.
[core] Displacement mapping supports the whole shader network including current and future procedural shaders/texture mappings except of falloff and other view dependent things.
[core] Displacement mapping can be combined without any issues with deformation motion blur (applied to base geometry, not to displacement height params).
[core] Displacement mapping parameters are controlled through menu of CentiLeo Material that is applied to geometry object.
[core] CentiLeo IPR mode doesn’t retesselate and displace the objects automatically while moving the camera and/or objects. We made it manual, so the user should click the button “Tess” in IPR window to retesselate and displace all objects of the scene with new parameters or click button “Tesselate” in material menu to retesselate only those objects where material is applied.
[core] Displacement Alpha map is used as the mask of displacement values of the current material which can be useful when several materials are stacked as layers in Cinema 4D.
[core] Option of Autobump mapping as a supplemental tool for Displacement.
[core] Added support of 16/32 bit bitmaps for Displacement.
[core] Added rotation and filter radius params to CentiLeo Bitmap.
[core] Added more settings to CentiLeo Noise shader.
[core] Minimum required GPU memory is bumped to 1280MB. This minimum memory is necessary for CentiLeo to operate. Sometimes a 2GB GPU in an overloaded system may have less available memory after memory reductions by OS and 3D app.
[cntlc4d] CentiLeo camera Depth of Field now listens for native C4D camera focus distance property with proper updates when changed from C4D Editor or CentiLeo IPR.
[cntlc4d] Fixed various rare visual bugs, e.g. a bug that made visible artifacts at low FOV.
[drawbacks] Our main work on Displacement mapping still has some drawbacks:
- no yet support for Vector Displacement Mapping (only scalar one);
- divorced surface when the vertex has several different normals (e.g. a corner of a cube);
- it doesn’t like very much when base geometry already has too dense polygon tesselation that should be displaced (there is some more memory overhead);
- no yet Dicing Camera parameter;
These issues will be solved after a series of other feature releases.
Known issues to be solved - May not initialize if AMD GPU is in your computer together with NVIDIA GPU.
- Very limited scene converter tool from Cinema 4D native materials (only diffuse color and texture are converted and translated if assigned to the object)
- May not support non-latin texture paths.
Important note We are currently using JUCE library (https://juce.com/) for IPR GUI under Personal license (which is free) for initial testing purpose. In IPR window it will show in the right bottom corner a splash screen for the first start and it dissapears in few sec. It may also connect to Google Analytics to collect end-user stats. Juce guys claim this is nothing bad but stats collection so they know who is using them. However, the plugin works perfectly without any Internet connection.
If everything works well on main technical side then we will buy the full license of JUCE and get rid of these small issues.
Displaced version is slower than without it just because it has more polygons. More polygons for same scene produce slightly slower rendering. But if you model everything with same polycounts the will be same situation
0.552 update: Improved displacement precision in pixel adaptive mode for animated walkthrough.
In the past there were subtle waves on high-frequency displacement surfaces during animated walktrhough even when Edge size is 0.5 pixels (and Adapt to pixels ON). Now this artifact is removed for Edge size equal to 0.5 pixels. But still need to improve things for Edge size = 1 pixels with a more sophisticated aproach.
Btw, there was no wave problem during any animation for Edge size in world units (with pixel adaptation disabled). However, if tesselated in this mode there could be more polygon data generated than for adaptive pixel mode.