Here is a preview of an experimental 3D Titling system for Unity.
Its still at an early stage, but the core engine seem to be working well.
I plan to update this thread with progress and examples.
Here is a (growing) list of features:
Multiple controllable Chamfer type : Round, Inner round, Flat, Steps
A few Boolean operators for solid geometry modifications (to create shell, inset, etc…)
UV generator (and material property) for the various defined parts of the solid geometry
Built in real-time local ambient occlusion (can be used with deformed/morphing shapes)
Run-time TTF parser with analytic quadratic curve evaluation
(The API could be made to accept generic vector shapes)
Seamless LOD (this come by design)
All properties are keyframeable for run-time animation.
I will update/refine this top post with progress and include answers to questions you guys might have.
If you are still reading, you might be interested in a technical overview.
a) The system generate signed distance field volumetric data from vector shapes at runtime
b) The data is processed/manipulated via sphere tracing (aka raymarching)
So no classic geometry exist, only 3d bounding volumes.
This makes the generation of models dynamic, where surface modeling is evaluated per pixel.
Some animation (morphing) should follow… stay tuned
Here, the operator is used to hollow the extruded stencil.ttf font,
it is then filled with a transparent volume.
(This scene total 3 draw call and 48 vertices : solid, transparent, shadow)
A simple example of the dynamic system used for players names.
(TTF font used : armalite-rifle.ttf “player1”, impact.ttf “versus”, arialuni.ttf “player2/subtitle”)
Since all is done at run-time, things like localization, player names, etc… is possible.
Morphing proof of concept. The target here is a sphere, but it can be 100% arbitrary.
The sample I ultimately want to make is the word “Welcome” morphing into multiple languages,
one to another to another.
Performance really depend on the feature set enabled, and its 99% related to on screen pixel coverage.
I will double check, but I think the last scene (spiked metal) run at 200+fps on a r9 290x (very heavy)
Is there a beta/release date?
Is it limited to fonts?
Let’s say I want a map to appear volumetric, would it work?
Would it be easy to include custom shaders/maps into yours? (I assume this is a shader based asset)
Would it work with unity’s particle system? Vertex Color and all?
Would it work with unity’s UI system? Alpha Mask and all?
How easy is it to add custom time base animations, like a wave like effect?
No date, I’m still trying to see if there is interest in this.
But I would estimate the work involved to be about 2 month for a solid beta.
The code currently only support TrueType fonts, but any raw vector data could be supported
(as long as the data is built around quadratic bezier splines)
For customizing the shaders you would need to edit the shader files to get tweaks done.
Maybe when Unity integrate something like shader forge, I can design modules, making it trivial to customize.
I haven’t looked at the particle system and how both would interact.
Currently I dont plan to do anything specific with the Unity UI.
I should have some sample script that provide basic text animation next,
it should be no different then other scripts that manipulate objects.
I would love to help you test this if you need the help.
Let’s say I converted a graymap to vector data, would that work with the shader? How would it look?
The vector data is transformed to volumetric data. This is what define the implicit surface of the 3D model.
This data can then be extruded, modeled, textured and animated in the shader.
I see great potential in this. If the gpu performance is similar to mesh models, I think this will be a must have for projects. What is the likely compatibility? I assume Desktop is a given, console? Mobile? VR? Webgl? What is the required shader model?
It goes all the way down to dx9 shader model 2.0, but some quality options are not available.
Now even so it works with shader model 2.0, loops get unrolled, so compile time takes a hit.
I dont think this modeling technique will replace traditional optimized mesh for performance.
I’m using it because its very flexible and offer some neat features for real-time animation.
Update : target 2.0 now fails. So the minimum is 2.5 (shader model 3.0)
Here is a quick test : forward, Dx9, shader target 2.5