Hey guys,
I recently finished a fairly complex scene inside of Marmoset Toolbag 3 (the project post is
here) and thought I would give a post-mortem of issues I had and mention features that would have been helpful to have. As I was working I took notes of problems or workflow issues that kept recurring. I spent so much time in Toolbag I thought it would be worthwhile sharing this with you guys.
It was a fairly complex multi-character scene, with 7 character elements and an environment piece with lots of vegatation. I had over 14gb of textures and 750k triangles in the final scene and Toolbag performed admirably, even while working in parallel with GPU hungry tools like Substance Painter. It was higher tesselation values and additional lights that really killed performance in the scene towards the end, and even though the scene only runs at sub 1 FPS when final lighting and tesselation are enabled, it is easy to adjust tessellation levels and lighting in the scene to get something that runs in real-time at 30+ fps that looks almost as good. I'm working on a Nvidia 1070 GTX.
This was the first time I tried something this ambitious within Toolbag. The step up from Toolbag version 2 to 3 was huge and allowed me to really push the limits for this piece. The refraction shader released in 3.02 really helped alot as it made it much easier to get a good result on the gem and liquid elements in the scene.
1. Global tesselation toggle and camera distance based tesselation.
Towards the end of my project when I was doing the final camera fly-through, I manually key-framed the shader tessellation levels based on
camera distance, but often times, I just wished that I had had the ability to globally toggle tessellation on and off for the entire scene. I have 7
character elements total, plus an environment, so it wasn‘t feasible to keep cycling through the shaders to manually take the tesselation levels down,
especially when I was doing polish at the end. The scene was still manageable by hiding larger elements, but the ability to toggle tessellation for
an entire scene would be incredibly practical. Also the ability to set camera distance based tesselation values would render the need to key-frame
values manually obsolete, and combined with a global tesselation toggle command would be much more consistent and efficient. This was the biggest thing I wished was in Toolbag.
2. Timeline should use SMPTE standard and start on frame 0.
The Toolbag timeline starts on frame 1, but output renders start on frame 0. For consistency's sake it would be great if the two conventions matched. Perhaps it would be better if Toolbag adopted frame 1 as frame 0 within Toolbag itself. This is the SMPTE standard in all applications like Resolve, Premiere, 3ds Max, etc.
3. File-Reference level Backface-Cull toggle overide
I had a lot of alpha planes and vegetation elements in my scene, and often times liked to keep separate meshes in the File Ref container for
composition purposes. The downside was that sometimes I would have eg. A grass mesh with 30 sub-meshes, which was great for composition
purposes, but it meant I had to manually toggle backface culling for 20 - 30 elements when importing inside of Toolbag. It would be practical to have a Cull Back
Faces over-ride at the File Reference object level so that it could all be handled in 1 click, while still maintaining individual sub meshes and individual sub mesh Backface Culling control if needed.
4. Global keyframe offset tool.
Towards the end of production on the scene many elements within the scene had been keyframed; shader values, tesselation, focus distance etc, but at one point I had to extend the beginning of the animation sequence by 2 seconds. I then had to manually go through the scene
and offset the keys because it was virtually impossible to select all the objects and keys within the scene and offset them within the keyframe view, and I did try. A tool to globally offset all keyframes in the scene would be very useful.
5. The ability to add audio files to the scene
The fly-through was timed to a piece of music, and it would have been great to have been able to import the audio into marmoset. It wasn't a huge
issue as I was able to time the fly-through camera sequence fine inside of the 3ds-max with its native tools, but once I had imported my camera
into Toolbag, I was keying and timing focus distance to the timing of the music and often times was frustrated by not being able to have the music within Toolbag. Once the entire sequence was done, I had to manually play the audio by clicking outside of Toolbag and shifting back into Toolbag to see the final result 'timed' with the music. It would be helpful to be able to add the audio elements so that you can preview the scene without having to render out and composite the sequence each time.
6. Bug? Lock Original Model Transform toggle not saved and reset when re-importing a camera, opening a scene, importing or performing Undo in the scene.
I created my camera externally in 3ds max and imported it into marmoset using the Autodesk Collada file format. It
worked perfectly for the most part, but to get the correct camera transform in Toolbag I had to click ‘Lock Original Model Transform‘ under the
camera transform options. Every time I would re-import the camera sequence into the scene, update a mesh, open the scene or perform an undo in the scene, this toggle would reset and the camera position would shift. Not the end of the world, but it was annoying to have to constantly toggle this on and it could be a bit of a flow killer.
7. The ability to keyframe all parameters
I mentioned this in a previous post
here, but not all of the parameters available in Toolbag can be keyframed. If you can drag a slider or change a value, it would be useful to be able to key it. This would have been especially useful for fine tuning control of GI as mentionned in my previous post.
Also there is some naming inconsistency between the interface and the keyframe view which makes things confusing sometimes. eg, in the interface under camera focus, you have Near Blur and Far Blur parameters, but in the Keyframe view they are named Front Scale and Back Scale. You can control Vignette softness (Vignette Curve in the keyframe view) and Color, but not Strength. Small issues, but worth mentioning.
8. The ability to have different tangent lengths for keyframe falloffs.
Right now if you set the keyframe to have independant tangents or smooth tangents, you can't change the length of the tangents. Length is currently fixed.
9. Transform keyframes from external camera are not imported into Toolbag.
Once you import the animated camera sequence from 3ds max into Toolbag the keyframes are not imported. The correct transform positions are imported, just not represented on the timeline. Not a huge problem, as all of the most important subsequently keyed data is saved natively within Toolbag, focus distance, field of view, post-effects etc, but it would be useful to be able to do small camera position tweaks directly inside of Toolbag.
10. Undo Lag
There is quite a substantial lag on undos once scene complexity increases. Combined with the bug mentioned in point 6 it can be very slow to undo changes.
11. Bug? Can't delete tesselation keyframes, value gets stuck.
If all keyframes for tesselation values are deleted in a shader, you cannot change the tesselation value without Toolbag jumping back to the old assigned keyframe value when jogging the timeline. Even if the Nuke All Keyframes button is pressed it doesn't fix it. The only way is to remove your Subdivision type in the shader and re-add it, or to re-key a new value.
12. Orbit around cursor point.
Right now you have the ability to orbit around a selection, but when working in larger scenes, or just for navigation in general, some kind of ability to focus on an arbitrary point in the scene and rotate around it would be a huge improvement to navigation. Especially when inspecting shaders, geometry changes etc. Many applications have this functionality with good reason, as it makes scene navigation much easier.
13. Automatic Updates of Alembic format are unstable and regularly crash Marmoset.
When exporting Alembic files from 3ds max, I would often have crashes in Marmoset when auto-updating the files. It only happened with Alembic files, nothing else.
14. Default camera behaviour
By default a new camera in the scene has "Follow Target" clicked by default, so often when you have an animated sequence, if you create a new camera, once you jog the animation, your camera view lands up flying off and doing crazy movement. It would be better to have this unselected by default.
15. Overlay grid's for camera views.
It would be great to have camera grid overlays for aiding in compositon. The classic grid of 3rds would be great, I use it the most, but other composition options would be fun too. Phi grid, Fibonacci, etc.
16. Autosave or backup feature.
I'm a huge fan of this in any software application. In general Toolbag is incredibly stable, but crashes do happen from time to time, and I did have a couple of odd machine hangs and power trips that my UPS didn't catch, so having some kind of backup/autosave option would have been great. But honestly, kudos, Toolbag is solid.
17. Focus on material in material lister once selected in viewport
When you double click on a material in the scene, it will select the material so you can edit parameters, but it would be really helpful if the material list would centre on the selected material. This would be helpful, especially for large scenes with many many materials.
That's it! I hope some of these suggestions and feedback are useful. I'm looking forward to tackling my next project in Toolbag.
Replies
For #4, you can do this currently with the timeline scale tool. If you hold down shift and select two points on the timeline you can then use the handles to scale keyframes globally (for all objects in the scene), this tool can be used to insert more frames too, just make a small selection and scale it, that will push the other keys forward.
This is something I plan to document in an upcoming tutorial, but here is a quick video for now: https://www.youtube.com/watch?v=Xi5E5j_4RgE&feature=youtu.be
The nuke keyframes feature doesn't currently work with material keyframes, so I expect this may be the cause of your problem and you'll need to delete the keys manually. I've logged this as a bug.
Thanks for the info on no 4. Very cool to know you can do this! I will experiment with this feature now that I know it's there.
As for no. 11, I figured out what the problem was.
What happened is that I had keyed tessellation at multiple points along the timeline and at some point I had reduced the length of the overall scene (when setting up my individual turntables). When the scene animation length was shortened I got the dialogue asking if I wanted to compress keyframes and I had selected yes. After playing with this, it seems that when the timeline is compressed, the keys are not always compressed accordingly, so you have an old key floating out in limbo that doesn't show up on the timeline. You can see the old key if you increase the length of the animation without or even with expanding the keys. Maybe there is a bug in this part of the timeline key-framing code?
So after I would delete the visible keys even if I changed the tessellation values, it was always snapping back to the key hidden of the timeline when I jogged the animation. Makes sense, and like you mention, as the Nuke button doesn't delete the material keyframes I didn't realise there was still a keyframe floating out there.
It seems easily repeatable. If I add a tesselation key on a 10 second sequence at the 0 and 10 seconds mark and then change length to 5 seconds, even if I click yes at the dialogue to compress the frames, it doesn't compress the key and so it doesn't show up at the end of the sequence. It still floats out at the old position on the timeline. I'm assuming that when you compress or expand a sequence that the first and last keys are shifted accordingly with all keys in-between being interpolated accordingly.
Let me know if that makes sense and if you can repeat the issue!
Cheers,