We leveraged Camera Path Animator and Simple LOD in our latest promo video!
Our newest promo video is out, featuring DAZ3D characters EmotiGuy and Dragon. This video demonstrates real-time lip-synchronization using SALSA technology. It also fully leverages the RandomEyes asset (included with SALSA) for eye-movement, blink, and custom expression triggers. All lip-sync is completely controlled by SALSA, in real-time, simply by swapping audio clips for each model in a dialogue style. As mentioned, we used DAZ3D models in the promo along with our DAZ3D workflow script. The whole process is super easy to setup and achieves great results.
In addition to SALSA with RandomEyes, we leveraged two excellent, unaffiliated assets, Camera Path Animator by Jasper Stocker and Simple LOD by Orbcreation. We decided to give some light review commentary around our experience with them.
Simple LOD (thoughts and impressions):
Everyone knows the DAZ3D models look great, but are quite poly-heavy. For this promo, we wanted a little more detail in the background of the video and thought some flying "dragons" might be cool. Simple LOD was used to create the LOD levels and control their swaps. Using the asset was really quite "simple" and they have a great step-by-step guide to get you going. NOTE: decimated meshes, by design, destroy the blendshapes on a model and therefore are not useable by assets or applications that work with blendshapes.
Initially, we did have a problem getting the tool portion to work in Unity 5, so we performed the LOD crushing in Unity 4 and then exported out a package and imported into Unity 5. We discussed this with Orbcreation and while trying to provide them with more detail, we discovered it must have been a quirk with the Unity 5 project we were working in. It worked flawlessly in a new, clean project. The experience of creating the LODs was so simple and easy to implement using their quick start document -- it almost felt too easy. Literally, in about 5 clicks, we had some nice LODs of a relatively complex model (DAZ3D Dragon - free). And this includes scripts to automatically perform the switching. The inspector even gives a view of the different LODs up close and at camera distance. About all we can say is awesome asset. And super inexpensive for the power capability and quality it provides. While we didn't use it super heavily, it was very pleasant to use and did exactly what it says it does and what we needed it to do.
Camera Path Animator (thoughts and impressions):
This wonderful asset was used rather extensively in the scene -- from the dragons flying in the background, to all camera movements and settings changes, to event firing for scene timing and control outside of CPA. We found the documentation to be decent and well-presented, but it could use some more details and perhaps some usage scenarios. We contacted support one time to clarify a feature and received a response in relatively short order, resolving our question.
We used CPA to control the LOD dragons circling in the background to great effect and a simple checkbox allows you to quickly and easily close an open path. There are quite a few options for animating an object along a path (forward, backward, one-time, ping-pong, etc.). Editing paths is not horrible, but it does seem like it could use some additional features, like the ability to scale or rotate the overall path. Maybe the ability to start with a single point, vice only a horseshoe shape with 4 points. While it is possible to move the entire path's position, attempts to scale or rotate disable the path. Luckily, there is an option in the inspector to reset it.
CPA was used for all of the camera movements including orientation and field-of-view. There are some neat tools available to implement this functionality. The events system in CPA was used to fire off setting changes to the standard asset depth-of-field effect. This was very easy to implement and worked excellently. We also used the event system to fire off emote presets in our RandomEyes asset and to kick off the SALSA lip-sync component. Again, CPA worked great for this! An awesome companion for leveraging RandomEyes custom shapes to fire off emote animations at specific times. In the CPA inspector, we linked together 27 paths for the cameras and used 5 looped paths for the background dragon flight paths.
The overall process was pretty easy and fit nearly all of the scenarios we wanted to implement, but there were a couple of things that seemed a little quirky to manipulate. The event system works along the path as triggers on points. This also appears to be how the camera settings (like FOV and orientation) work. As you can imagine, this offers up some very powerful functionality. The problem is, you have to actually animate the camera path to get the settings to kick in. This doesn't work so well if you're using a static camera shot. There is an option in the animation component to use a static camera (vice animating it along the path), but if that option is selected, FOV and orientation setting changes don't appear to kick in, even if you have them set on the initial path point. An optimal option would be the ability to create a path with a single path point (does not seem to be possible), and the ability to set static settings like FOV/orientation for that point. Additionally, it would be awesome to create a virtual path that allows for the animation/timing of camera settings and events, but leaves the camera position static. Before we criticize this too much, we need to confirm with the publisher (Jasper Stocker) that this indeed is not possible or there is no official work-around. The way we worked around this functionality was to create a simple and small path of two points that had very little impact on the camera movement, but allowed us to use the path to trigger events and settings.
Also, working with the event points on the path is effective, but can be a little fiddly. For example, the event point sometimes got stuck on the initial path point and then pretty much had to be deleted and then re-created to move it along the path. Another somewhat annoying work-flow "feature" is the path/event point selection from the inspector, which zooms you way out in your scene and then you have to zoom way back in to fine tune your points. This effect was probably amplified by the overall size of our scene and the fact that the selector simply appeared to perform a focus on the point, similar to using the 'F' hotkey. In our usage scenario, it would have been much nicer to focus closer on the object, relative to the path size and require us to zoom out for a better view if necessary. In other scenarios, this might work just fine.
The last missing piece is the ability to "scrub" through the entire cinematic to confirm timings and events. It appears that this functionality is limited to the individual path component. I'm not sure how this could be done with this system, since technically there may be a lot of other things going on in the scene that CPA is not controlling (we had quite a few that were not under CPA's control). However, some sort of solution would be a welcome feature.
Nit-picking aside and make no mistake, most of the above was just nit-picking, Camera Path Animator is a powerful and awesome asset that has lots of features allowing you to create cinematic scenes pretty easily. If your scenes get pretty lengthy or complex, the process might get a little tedious, but performing the functionality without something like Camera Path Animator would be much more tedious. Powerful and well worth the price.
Check out the video and let us know what you think! If you dig it, please (Like - Follow - Subscribe - Rate)!
Simple Automated Lip Sync Approximation
~ We look forward to seeing what you create! ~