Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We have updated the language to the Editor Terms based on feedback from our employees and community. Learn more.
    Dismiss Notice

SLATE (Complete Gameplay Cutscenes & Cinematics Sequencer)

Discussion in 'Assets and Asset Store' started by nuverian, Feb 29, 2016.

  1. alteredmatter

    alteredmatter

    Joined:
    Sep 14, 2016
    Posts:
    26
    Hi, thanks! That is great to hear. I've sent you a PM.
     
  2. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    That would be great! It makes things a lot easier. Thanks a lot!
     
  3. hlx

    hlx

    Joined:
    Sep 18, 2012
    Posts:
    57
    Hi Nuverian,

    It seems that Slate tends to compete with the Unreal 4 sequencer ! I have a question about a tool that is really missing in Unity that could be developped and connected to Slate.
    Could you consider to plan a feature that could capture any object/prefab,...entity during a gameplay (or in editor session), something similar to the recording to sequencer tool in UE4 (https://docs.unrealengine.com/latest/INT/Engine/Sequencer/HowTo/SequenceRecorder/) and directly converted as animation clip in Slate ?

    Regards,

    hlx
     
  4. Crossway

    Crossway

    Joined:
    May 24, 2016
    Posts:
    507
    Hi, can you please tell me which camera should I use when I'm on gameplay? I'm using "Render Camera" but how can I keep that on gameplay?
     
  5. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,084
    You are very welcome!
    I've just send you a PM with the updated clip code to animate volume and pan for audio clips :)
    Of course this will be included in the next update.

    Thanks!

    Hey,
    Thanks a lot for your positive feedback! I take it as a great compliment to compare Slate with U4 sequencer :)
    This feature you are suggesting, is one of the things I did indeed try to implement, but it is quite difficult to get it right and most importantly at a good framerate. It is certainly something I do have in mind and is on the roadmap!
    Thanks again!

    Hey,
    Can you please explain the situation a bit more? Render Camera is indeed the one that is active during a cutscene playing. What type of gameplay use of that camera is that you are after and what do you mean by keeping it?
    Let me know. Thanks!
     
    Danirey and Crossway like this.
  6. Crossway

    Crossway

    Joined:
    May 24, 2016
    Posts:
    507
    I mean "Render Camera" only works during a cutscene, I need to use this camera when I'm playing the game too.
     
  7. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,024
    I'm looking for an alternative to Cinema Director because I have issues with that asset and they are unlikely to be addressed soon. I found Slate and the feature set looks great and the reviews are really good. I have some specific questions about a few things.

    1. Does this work on console platforms? I am developing for the Wii U and it needs to work properly on an AOT platform.

    2. In Cinema Director when clicking on a key frame it does not allow you to edit that key frame. The author made it time based so the only way to edit anything is to scrub the playback to the time where an edit needs to be and then make changes. This is a horrible workflow and makes the tool almost unusable right there.

    3. Cinema Director doesn't guarantee that everything in a cutscene timeline will get played. So if there is some slowdown in the system then key frames can be skipped completely, which leaves objects in the cutscene in bad states. If I'm loading a scene in the background and playing a cutscene there might occasionally be minor performance spikes and I need guarantee that no key frames will be skipped. Can Slate handle this situation?

    4. I use SALSA lip-syncing and I don't see integration on the list. Is integration planned? If not, how easy is it to write extensions for Slate?

    Thanks for your help in advance.
     
  8. kenshin

    kenshin

    Joined:
    Apr 21, 2010
    Posts:
    938
    Hi @nuverian,

    your asset seems great!

    I have a couple of questions:
    - can I create sequences via api at runtime outside the editor?
    - can I generate image sequence render at runtime?

    Thanks a lot!
    Kenshin
     
  9. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,084
    Hey,

    Well, the Render Camera is really meant to be used for cutscenes only, since it gets disabled as soon as a cutscene is finished, but if you want, you can re-enable it back after the cutscene finished using the finish callback when calling Play.
    Here is an example:

    Code (CSharp):
    1. using UnityEngine;
    2. using Slate;
    3.  
    4. public class Example : MonoBehaviour {
    5.  
    6.     public Cutscene cutscene;
    7.  
    8.     void Start(){
    9.         cutscene.Play(OnFinish);
    10.     }
    11.  
    12.     void OnFinish(){
    13.         DirectorCamera.current.cam.gameObject.SetActive(true);
    14.     }
    15. }

    I could potentially add an option to not disable it, but can you please explain to me why you want to do that and not use your Main Camera? :)

    Let me know.
    Thanks!

    Hello,
    Thanks for your interest in Slate.
    Let me address your questions:

    1) Yes, Slate works with AOT platforms.

    2) Do you mean editing keyframe values of animated parameters irrelevant of where the current time is? If so, yes that is possible. Is what shown bellow what you mean?
    EditKeys.gif

    3) Slate is really made to be deterministic. I guarantee you that nothing can be skipped even if you wanted to. :)

    4) I did not had plans for SALSA integration, but I can certainly do so.
    Writing custom action clips (or even tracks) though is very easy. Here is a link to the relevant documentation section for your convenience: Creating Custom ActionClips

    If you have any other question, just let me know.
    Thanks :)

    Hey,

    Thanks! :)

    - The API right now is editor only (#if UNITY_EDITOR), but I can certainly make it available in build as well. Here is an example of the current API, even though it was never meant to be used this way :)

    Code (CSharp):
    1. using UnityEngine;
    2. using Slate;
    3. using Slate.ActionClips;
    4.  
    5. public class CreateCutsceneFromCode : MonoBehaviour {
    6.  
    7.     public ShotCamera shot1Camera;
    8.  
    9.     void Start () {
    10.  
    11.         //Create cutscene and set length.
    12.         var cutscene = Cutscene.Create();
    13.         cutscene.length = 10f;
    14.  
    15.         //Create Director Group, Camera track and a Shot Clip. Assing pre-created shot camera to shot clip.
    16.         //Shot Camera could also be created with code.
    17.         var directorGroup = cutscene.AddGroup<DirectorGroup>();
    18.         var camTrack = directorGroup.AddTrack<CameraTrack>();
    19.         var shot1 = camTrack.AddAction<CameraShot>(0f);
    20.         shot1.length = 10f;
    21.         shot1.targetShot = shot1Camera;
    22.  
    23.        
    24.         //Create a Director Action Track, and an Overlay Text clip. Set keyframes for Size parameter.
    25.         var directorActionTrack = directorGroup.AddTrack<DirectorActionTrack>();
    26.         var textClip = directorActionTrack.AddAction<OverlayText>(2.5f);
    27.         textClip.length = 5f;
    28.         textClip.text = "My Awesome Text";
    29.         var sizeParam = textClip.GetParameter("Size");
    30.         sizeParam.SetKey(0f, 20f);
    31.         sizeParam.SetKey(2.5f, 40f);
    32.         sizeParam.SetKey(5f, 20f);
    33.  
    34.         //Create Actor Group for this gameobject (shake of example). Add Actor Action Track and Translate To action clip.
    35.         var actorGroup = cutscene.AddGroup<ActorGroup>(this.gameObject);
    36.         var actorActionTrack = actorGroup.AddTrack<ActorActionTrack>("MyTrackName");
    37.         var translateClip = actorActionTrack.AddAction<TranslateTo>(2.5f);
    38.         translateClip.length = 5;
    39.         translateClip.targetPosition = new Vector3(0, 0, 10);
    40.         translateClip.interpolation = EaseType.ElasticInOut;
    41.  
    42.         //Play
    43.         cutscene.Play();
    44.     }
    45. }
    46.  

    Once again, this currently does not work outside of the editor, but I can make it so if needed.

    - If you mean rendering a cutscene to image sequence in editor while the game is playing, then that is of course possible. If you mean rendering to image sequence in final build and get a Texture2D array for example, this can be done like this:
    Code (CSharp):
    1. [code=CSharp]public class RenderCutsceneExample : MonoBehaviour {
    2.  
    3.     public Cutscene cutscene;
    4.     public Texture2D[] renderSequence;
    5.  
    6.     void Start(){
    7.         StartCoroutine(RenderCutscene(cutscene, Screen.width, Screen.height, 30, OnRenderFinish));
    8.     }
    9.  
    10.     void OnRenderFinish(Texture2D[] result){
    11.         renderSequence = result;
    12.     }
    13.  
    14.     static IEnumerator RenderCutscene(Cutscene cutscene, int width, int height, int frameRate, System.Action<Texture2D[]> Callback){
    15.         var renderSequence = new List<Texture2D>();
    16.         var sampleRate = 1f/frameRate;
    17.         for (var i = sampleRate; i <= cutscene.length; i += sampleRate){
    18.             cutscene.Sample(i);
    19.             yield return new WaitForEndOfFrame();
    20.             var texture = new Texture2D(width, height, TextureFormat.RGB24, false);
    21.             texture.ReadPixels(new Rect(0, 0, width, height), 0, 0);
    22.             texture.Apply();
    23.             renderSequence.Add(texture);
    24.         }
    25.         Callback(renderSequence.ToArray());
    26.     }
    27. }
    [/code]

    I think I will add this function in the Cutscene class now since it can be useful to others as well.

    Let me know if these work for you.
    Thanks :)
     
    Crossway likes this.
  10. Crossway

    Crossway

    Joined:
    May 24, 2016
    Posts:
    507
    nuverian

    Thanks for help, I have lots of image effects and scripts, also some of my assets needs main camera position, so why should I use 2 cameras when I can use "Render Camera" for playing time and cutscenes too?

    For example for Suimono water system I should determine one camera if I set my main camera there will be problem during cutscenes. but if I use only one camera there will be no problem.
     
    Last edited: Nov 12, 2016
  11. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    Thanks for audio clip animation update. Works fantastic. It is much easier now!

    I'm having a problem with the visible/enable gameobject actions. If i disable a character until certain frame, and then enable it again, the animations won't work. Keeps root motion i think but the character is not animated. Take a look:



    Thanks! ;)
     
  12. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,024
    Thanks for the answers. It sounds like Slate could definitely work for me. I'll consider picking it up soon.
     
  13. kenshin

    kenshin

    Joined:
    Apr 21, 2010
    Posts:
    938
    Thanks for the quick answer!

    I am really interested to use it in realtime, if you need more info let me know and I will send you a PM.

    Bye!
    Kenshin
     
  14. davide445

    davide445

    Joined:
    Mar 25, 2015
    Posts:
    138
    Testing SLATE I tried to simply animate a cube on a path.
    I create a P aths track, create a cutscene, affected Group Actors are the Cube, the Path is the Cutscene.
    Hitting Play in SLATE window nothing happen, need I to do something to the Cube itself, adding some component to it? Attached the scene SLATE Animate on Path.JPG
     
  15. Kiupe

    Kiupe

    Joined:
    Feb 1, 2013
    Posts:
    528
    Hi,

    I'm still having issues when working with ProCamera2D and I thought that instead having to set of cameras I could have one, the one in Slate. I mean, would it be possible to have the Slate Render Camera acting as my game MainCamera ? I see no reason to prevent that except one : the Render Camera game object is automatically disabled when the game start and is tag is reset to default. If I could prevent that behaviour I could make my camera set-up directly on the Render Camera GameObject the same way I do on my actual main Camera Game Object.

    Is it possible to prevent the Render Camera GameObject to be disabled automatically and no reset its tag ?

    Thanks
     
  16. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,084
    Hey,

    I understand what you mean. The reason why the Render Camera is designed to be used only for cutscenes though, is because you most than probably are going to have some camera control script (or other scripts) on your gameplay camera, which during a cutscene you would not really want them to update or otherwise take effect. Especially if your cutscenes have camera animation, since that would result in the camera being updated from both the gameplay scripts as well as the cutscene animation at the same time. This is why I chose to have another camera for cutscenes only.

    If you want, you can open up DirectorCamera.cs and in method Disable(), comment out line #184( current.cam.gameObject.SetActive(false); ) and check if that works for you.
    If it does indeed , I will add an option for that in the next version :)

    Let me know.
    Thanks.

    Hey,
    You are very welcome. Glad you like them. :)
    Indeed that is a problem. When the gameobject is disabled, the animator component on that gameobject cease execution as well and is considered non initialized (if you check the animator's inspector).
    To fix this quickly, please open up AnimatorTrack.cs and in the OnUpdate method, right after the animator == null check, add this:
    Code (CSharp):
    1.             if (!animator.isInitialized){
    2.                 animator.Play(mixerPlayable);
    3.             }
    This will re-initialize the animator and fix this issue.

    Thanks!

    Thank you :)


    Hey,
    Of course. I'd be more than interested to know the use case! Please send me a PM with more info if you want.
    Thanks :)

    Hello,
    What version of Unity are you using? If this is Unity 5.5, it is not yet supported. The next update will support Unity 5.5 though.
    Let me know.
    Thanks.

    Hello,
    Please check the very first answer in this post (directed to Crossway) and let me know if that works for you as well.
    As stated there, I can also add an option to not disable the render camera automatically if you want so.
    Thanks.
     
  17. Crossway

    Crossway

    Joined:
    May 24, 2016
    Posts:
    507
    Make sense but disabling those scripts during cutscenes is a lot more easier for me than using 2 cameras.

    It works. I would be very grateful if you add this option in the next version.
     
    Last edited: Nov 16, 2016
  18. davide445

    davide445

    Joined:
    Mar 25, 2015
    Posts:
    138
    Hello I'm using 5.4.2f2 but I discovered the problem, using Follow Path is working, using Animate On Path nothing happen.
    I need to learn before writing, so far so good!
     
  19. Kiupe

    Kiupe

    Joined:
    Feb 1, 2013
    Posts:
    528
    Hi,

    It seems to work out so far ! I also had to comment the part where the Director Camera Root is set to the MainCamera position and the Render Camera potion and rotation are reset. That make sens, because now the Render Camera is always my MainCamera so I need it to stay unchanged and I don't need the Director Camera Root to copy its properties.

    I will keep testing but it seems a good solution.

    Thanks
     
  20. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    Thanks @nuverian,

    I was using a custom action (very easy to add custom actions like you did in nodecanvas, nice!) to disable the renderers of the actor and his childs, but this is way more efficient and convenient of corse.


    By the way, will be PuppetMaster support some day?
    Thanks a lot!
     
  21. davide445

    davide445

    Joined:
    Mar 25, 2015
    Posts:
    138
    Reading the Unite event news there is a mention about the new Timeline tool (ex Director) where a preview seems to be available in "short" time. I didn't find any plan to integrate this in 5.6 looking in Unity roadmap, so I suppose we are about 1 year from the release (maybe in 5.7). Considering will be a direct competitor of SLATE, I'm curious about any comment from more expert users about the average elapsed time for these new tools from "preview" to final in Unity, and also where you think SLATE might be still better.
    Of course this in no way wanting to harm the @nuverian excellent work but to use community knowledge to help him developing better tool in the right opportunity window.
     
    nuverian likes this.
  22. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,555
    Many developers still use NGUI even though Unity UI has been available for a couple years now. Some reasons include:
    • Big projects take several years. They started their project before Unity UI was production-ready. It's usually an unwise idea to change your core toolset mid-production.
    • NGUI can perform faster than Unity UI in some cases.
    • They're already familiar with NGUI and can be productive with it. The learning curve to switch to Unity UI would delay production.
    • They have other tools that are built on top of NGUI. The work to rebuild these tools for Unity UI would delay production.
    You could argue the same for SLATE.
     
  23. hlx

    hlx

    Joined:
    Sep 18, 2012
    Posts:
    57
    Hi Nuverian,
    Thanks for your responsive answer ! I am enjoyed to know that a recording gameplay feature for Slate is already planned and indeed aware that this task is a very tedious to acheive. I presume that you would gain more potential users because solving a lot of scripting issues related to AI for example (vehicle convoys/ patrols,...) and because it is a more director/s way to drive a cinematic shot.
    I have other questions to ask :

    2/ Is Slate works fine with MultiScene editing Unity feature ?

    3/ Refering to the Slate documentation, the output type for Offline rendering proposes render passes options for PNG and EXR. It is very interesting to get such a feature but could you give us the complete list of the different passes "like Specular, Smoothness, Normal, Depth, AO and so on..."

    4/ Is the render action can be limited to a choosen time/frame range(s) (i.e. from 0s to 60s, then 70s to 80s and so on) ? If not, could it be a part of the Director track ?

    By advance, thanks and best regards.

    hlx
     
  24. davide445

    davide445

    Joined:
    Mar 25, 2015
    Posts:
    138
    Hi @nuverian testing SLATE there are some elements I didn't understand.
    Created a Render Camera under Director Camera Root. I create a Shot Camera. Created a Path and a Follow Path cutscene both for my camera and a cube.
    - Suggestion: creating the Path it's absolutelly not evident that clicking on the cicle is making the node curve editable. I find it by chance. Maybe starting by default with a smoothed angle will be better.
    - Any way making the camera sight automatically following an object, so that I can animate the camera position but she always point at the object I'm interested on
    - Why in both the Cube and Shot Camera cutscene the affected objects are the Cube and The Shot Camera, considering the first will be used for the Cube and the second for the camera?
    - Why in the PATHS I find only the Camera Path and not the Cube Path? Both of them have a cutscene.
    - Personal opinion: it's a bit strange for me there is a render camera and a shot camera I didn't understand the difference. Also strange the animaton it's split from the camera itself (needing to click on the camera shot to access it's parameters) and a separate camera path, I suppose all animations of the same object are available on the onject itself.
    I suppose some tutorlial and some basic explanation of the varous concepts will be beneficial.
    SLATE test.JPG
     
    Last edited: Nov 20, 2016
  25. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,084
    Alright, I've just added this option for the next version. :)

    The Animate On Path clip, requires of you to animate the "Position On Path" parameter of the clip so that something happens :)
    For example you can set a keyframe with value of 0 and another keyframe later in time, with value of 1, where
    0 means start of the path, while 1 means end of the path. As such, the target object will traverse the path from start to end within the duration of the 2 keyframes in this example.
    Let me know if that clarifies how Animate On Path clip works.
    Thanks.

    Thanks for letting me know. An option to keep the Render Camera active at all times is now added for the next version. It might still need some source code modifications for your specific case though, like the ones you mentioned above.

    Hey,
    You are welcome.
    Let me know what kind of PuppetMaster support are you suggesting? FinalIK is already supported by the way (just in case you haven't noticed), so it might be similar. :)
    Let me know.

    Thank a lot for your input Tony :)

    Hey,
    You are very welcome!
    Let me address you new questions.

    2) Yes, it works fine with multi-scene editing. It even supports temporary additive loading of scenes within a cutscene for a period of time, so that you could potentially composite cutscenes out of unity scenes. Also while a scene is loaded in such a way, there is an option to sample the root cutscenes of that loaded scene if any. :)
    If you mean something entirely different, please let me know.

    3) Different passes are already supported.
    The Offline Rendering documentation section, mentions this at the end (just in case you missed it). :)

    4) Right now, offline rendering is done for the whole cutscene length, but I will take a look at adding a range selection option for the frames to be rendered!

    Thanks!

    Hello,

    - I will make the fact that path tangents can be editing more evident. Thanks for the suggestion.

    - To make any object LookAt another object, you can use the "Transform/LookAt" action clip and assign the Target Position Transform of the object you want to look at in that action clip's inspector. Please take a look at this post for more information on exact setup.

    - A cutscene does not belong to a single object. One (the same) cutscene, can be used to animate many different objects (Actors). As such, one cutscene can have many Actor References. So in your scene, you have one cutscene which controls both Cube and Shot Camera objects (actors) and that is why that single Cutscene has a reference to both. Did I misunderstood your question?

    - It seems that you have manually added the Bezier Path component on the same gameobject as the Cutscene component is attached on, and did not create the Path object neither through the top "Tools" menu, nor through the button "Create Path" in the Follow Path clip inspector. While this is fine, it is also the reason why there is only one path object under the "[PATHS]" named gameobject in your hierarchy, since only paths created with either of these ways are added there :). The [PATHS] gameobject is just a convenience container though. Path objects do not need to be there.

    - The difference of the Render Camera vs Shot Camera is explained both in the documentation as well as the info text on the inspectors of both of these components :)
    For your information, the animation data is always part of the cutscene and never of the object. This avoids adding redundant components in all objects that a cutscene affects and also allows for the same object (or shot) to be controlled /animated by many different cutscenes in a clean way, which is most than probably what you are going to need in a game (for example controlling the same characters from the many different cutscenes of the game).
    The various concepts on how Slate is working are really explained in the documentation by the way. I really suggest that you take a look, just in case you haven't already :)

    If you have any more questions or need any further clarification, just let me know.
    Cheers.
     
    davide445 likes this.
  26. alteredmatter

    alteredmatter

    Joined:
    Sep 14, 2016
    Posts:
    26
    Hi @nuverian, I've been testing the asset and everything is going well, but I've have a few comments/questions:

    1 - Would it be possible to have a 'disable parameter' option on an 'Actor Properties Track', in addition to the current 'Reset animation, Remove parameter' ones? It could be useful for when we are animating an object and we have a lot of Properties in a single track (like modifying its Position, Rotation, Enabling some components, etc.) and we want to see the effect of each one without the rest, for example. (see uploaded image)


    2 - Until now, I was using Parameters in an Animator controller in order to change the animation states of the player. This way from outside the player script I could change its animations states on certain events in the game. A quick and simple example: the player activates a switch, and a door opens. I used a "CutsceneIsPlaying" parameter to easily cut whatever animation the character is playing and make him transition to the "idle" animation state while the door is opening.

    I've seen that this can be done in Slate using the 'Mecanim Track', but it says in a comment in the Inspector that it's going to be deprecated. Any particular reason for this? With the Animator Track that it recommends, I can't do this anymore it seems. I don't know if it's the best way to do it, but it was convenient for these kind of moments in the game. This way there are no cuts and hitches between the animations, they follow the transitions I've set up in the Animator Controller for the character, and then continue into the gameplay after the cutscene has ended. Mind that we want to integrate the cutscenes into the gameplay, without fades to black screen.

    https://gfycat.com/TautDefensiveGalapagostortoise

    This cutscene is an example of what we are doing. This is already done using Slate. I'm playing Animation Clip within the Animator Track, but at the end there's a small "jump" in the animations, as the character changes from the animation clip of the cutscene to the animation set by its animator controller (even if both are the "idle" animation). I know that in this example it's difficult to notice, but maybe you can see the cut after the character has stretched it's body, before the camera pans out and the blackbars disappear.


    3- The gif also shows a "problem" that we have encountered. As you see, we were using only one camera, the Main Camera, for the cutscene and the gameplay. We animated the camera during the cutscene and then transition to the gameplay. With SLATE this is a harder to do, as we have to change the camera from the Render Camera to the Main Camera and exactly match its position, rotation and other settings so that the change is not noticeable (the gif is made with the Slate version of the cutscene). My question was that it would be nice if we could use other cameras instead of the Render Camera for the cutscenes, but I guess that maybe this could be impossible or would ask for a lot of internal refactoring if this is how the asset works. Maybe another useful solution could be to use the Render Camera for the gameplay as well, as other people have asked before in the thread.


    EDIT: I've seen that you are already including the option to continue using the Render Camera. We'll look if this is useful for us regarding point 3.
     

    Attached Files:

    Last edited: Nov 21, 2016
  27. hlx

    hlx

    Joined:
    Sep 18, 2012
    Posts:
    57
    Hi Nuverian,

    3) Yes, my previous post was refering about your documentation :)
    I quoted about the sentence " a feature but could you give us the complete list of the different passes "like Specular, Smoothness, Normal, Depth, AO and so on..."...What is the "So on", in fact. Alpha channel, transparency,...?

    4) Yes, adding a frame selection option could be very very useful and even it could be special track dedicated to the rendering.

    5) Could you add a search feature in your online documentation ?

    6) Is it possible to get a visibility track that could toggle a smooth hidden/visible state of an actor (different from activate/deactivate game object or mesh render component )? This visibility track should be driven by a float value rather than a boolean.

    Thanks,

    Regards,

    hlx
     
    Last edited: Nov 24, 2016
  28. Cygon4

    Cygon4

    Joined:
    Sep 17, 2012
    Posts:
    382
    I've got a bunch of compilation warnings in the projects where I used Slate (with the Unity 5.5 release candidate).

    Here's a patch that fixes the tedious ones (mostly reference comparison done without ReferenceEquals() and particle system stuff), maybe it can save you some time.
     

    Attached Files:

    nuverian likes this.
  29. marcos

    marcos

    Joined:
    Oct 18, 2009
    Posts:
    592
    Hi there,

    First of all, awesome asset, been having a lot of fun playing around with it.

    I think I've found a bug in the Adventure Creator action. When I uncheck "Wait Until Finish?" SLATE doesn't return to the previous camera. Instead I get a "No Cameras Rendering" message, see below.





    Ultimately, I want to be able to use SLATE to make nice QTEs in an adventure game, I imagine I could probably do it using Wait Until Finish, but it might be nice to be able to have Adventure Creator doing things in the background whilst the cutscene plays.

    Kind regards,
    Mark
     
  30. namdo

    namdo

    Joined:
    Feb 23, 2015
    Posts:
    200
    Is it possible to skip section in a cutscene with a button press? Like skipping through a dialogue section during a cutscene. I'm trying to combine this with Adventure Creator but I find your tool much easier to use to create camera shots and play animations.

    Also how do I change the font for Overlay text
     
    Last edited: Nov 26, 2016
  31. marcos

    marcos

    Joined:
    Oct 18, 2009
    Posts:
    592
    Would also be interested in this.
     
  32. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,084
    Hello,
    Sorry for the late reply, but I really missed your post.
    Please let me address your questions:

    1) Sure! I will add a disable/enable parameter in the "grear" context menu of parameters in the next version :)

    2) By all means, if anyone (even if only one) person, finds the Mecanim Track in better usage that the Animator Track, it will stay in the tool and not be deprecated, so nothing to worry about there :)
    Indeed, a small snap in the animation is visible. I will try improve the Animator Track to avoid this snap from taking place, but until that is done, once again feel free to use the Mecanim Track without worries of deprecating it since you find it a better suit for the case!

    3) For blending Cutscene with gameplay camera (meaning Render Camera with Game Camera) Slate already includes such a feature built-in and as such it's not required from you (or the cutscene author), to manual match or animate the cutscene camera to do the blending.
    To enable gameplay/cutscene blending, you simply have to select the camera track and set a blend in/out value above 0.
    GameplayBlending.png
    As such, when the cutscene is started, the Render Camera will automatically blend from game camera (Main Camera) to the first shot. By the end of the cutscene, the Render Camera will blend out to Main Camera from the last shot!

    Is this a feature you were aware of and if yes, does it work for you?

    Thanks!


    Hey,

    3) FYI, these are the passes that are supported right now:
    • Albedo
    • Occlusion
    • Specular
    • Smoothness
    • Normal
    • Emission
    • Depth
    I might look adding support for more, but I can't promise anything for certain in this regard.

    4) A dedicated track for offline rendering could indeed work. Thanks for the suggestion. In one way or another though, frame selection for rendering will be added for sure :)

    5) I will take a look at this. The online documentation page uses an existing documenting tool, so I will have to hack my way into adding a search.

    6) You can actually already do this. Here is how:

    - Make sure your object's material Rendering Mode is set to "Fade".
    RenderingMode.png
    - In Slate Action Track, add "Renderer/Animate Color" and in the property name dropdown, select "_Color".
    AnimateColor.png
    - Animate the color parameter alpha as you like, for example 1 to 0 and back to 1 :)
    Animated.gif

    Cheers!

    Thank you very much for posting this!
    This indeed saved me some time.
    Thank again!

    Hey,

    I will take a look into this tomorrow, but if you don't want Slate Cutscene to override Adventure Creator camera, you can simple disable (or complete remove) the Camera Track from your cutscene. Have you tried doing this and still have the same issue? Please let me know.

    On a side note, QTEs alla Telltale Games, is a planned build-in feature for Slate! (no ETA at the moment though)

    Once again, let me know if disabling/deleting the Camera Track from your cutscene works for you.
    Thanks!

    &&
    Hey
    I am very glad you like the tool.
    Via coding, a cutscene section can be skipped by simply calling cutscene.Skip(). You can if you want use this method in a UI Button, like this:
    SkipSection.png

    Let me know if that is what you were after.
    Cheers!

    -EDIT-
    Regarding the font of Overlay Text and other Screen UI relevant clips, unfortunately right now it's not possible without scripting. I am already working on a UI version that works with unity's new UI instead of OnGUI and as such when that is ready (probably next version), you will be able to fully customize the UI to your liking :)
     
  33. alteredmatter

    alteredmatter

    Joined:
    Sep 14, 2016
    Posts:
    26
    1) Thanks! I would find this useful.

    2) Great then! Thanks! This is the method we were using until now, and I don't know if it's the best way to do it, but as it works for us and we have it setup up like this, we would like to continue doing it so for the moment.

    3) Ah, I wasn't aware of this feature! I had only seen and tried the blend in/out option in the Camera Shot (fading from/to black), not in the Camera Track. I will surely try this and check the results!

    Thank you very much again for your answers and help. We bought the asset yesterday and are now redoing the cutscenes that we have in the game. I did a quick Xbox One build with a short test cutscene, and so far everything works correctly. :)
     
  34. namdo

    namdo

    Joined:
    Feb 23, 2015
    Posts:
    200
    I used playmaker to skip sections.

    Your tool is very very useful for adventure games like the walking dead and life is strange.
     
  35. marcos

    marcos

    Joined:
    Oct 18, 2009
    Posts:
    592
    This is wonderful news!

    I'd love to be able to make those very cinematic movie-like sequences using SLATE, very happy i made the purchase after reading that!

    I'd still like to control different camera angles during the cutscene, i just had problems returning to the gameplay camera using that action with the box unchecked.

    Good to know I can use playmaker for this :~)
     
  36. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,084
    You are very welcome and thanks as well!
    When you have something, feel free to share it with us ;)

    Thanks a lot!
    I am actually a long time adventure gamer myself and Slate is definitely inspired by what could make creating such games faster and more fun. Some moons ago I was also creating an Adventure Game Engine (which Slate was part of). Maybe one day I release it :)
    Thanks again for your positive feedback.

    Hey!
    Thanks. Built-in QTE system will hopefully come soon, so you will be able to do so, even easier than it currently is (no scripting) ;)
    I've attached for you here a slightly updated version of the integration action. Let me know if the problem persists for you (it works as expected here even with WaitUntilFinish turned off).

    Cheers!
     

    Attached Files:

  37. alteredmatter

    alteredmatter

    Joined:
    Sep 14, 2016
    Posts:
    26
    Hi again!
    Regarging point 3), I think that for the moment the Blend In/Out option in the Camera Track is working well for us. :)

    - Now, I have a small issue with my cutscenes, regarding the position of my character when a cutscene starts.

    https://gfycat.com/WholeGleefulHake


    If you watch the GIF, you can see that I play a cutscene when the character puts an item on a switch. After doing this, the player can take out the item and put it again on the switch, and then the cutscene plays again.

    The thing is that as you can see, the second time that I launch the cutscene, the character moves back to the position where she was the first time that the cutscene played. The character is an object present in the Slate Editor (the "Player" Group). I've seen that this is done by Slate, because if the Player Group is completely empty, it does this anyway. Also, if I disable the Player group, it doesn't teleport to that previous position.

    I've seen that after playing the cutscene each time, at the end it stays like this (it reaches the end but stops there, it seems like if it's still active):
    SLATE cutscene player position.PNG

    If I manually "stop" the cutscene pressing the square button after it has finished, this problem with the character position doesn't happen when the cutscene plays again (and in the Editor, the time panel in red disappears):
    SLATE cutscene player position 2.PNG

    Is there something I can do to avoid this? Should I have to call a "Stop" method for each cutscene when it finishes or something?


    - Another small "request":
    When disabling a group in the Editor, there is no visual indication that the group has been disabled, as the title and color don't change. Tracks inside it turn to a darker color to indicate that they are disabled, but the group title doesn't. I think it would be useful if it did, specially when the tracks are collapsed and you only see the group title, as you currently don't have any visual clue without having to expand the group.

    If you disable the tracks one by one (group not disabled) or if you directly disable the group, they look the same, as the group title doesn't change. You cannot know if you have disabled the whole group or just the tracks.
     
    Last edited: Dec 5, 2016
  38. hlx

    hlx

    Joined:
    Sep 18, 2012
    Posts:
    57
    Hi Nuverian,

    Thanks to have considered my previous propositions. I purchased recently Slate and I have 2 main bugs and some wishes to notify you :

    Under Unity 5.5.0f3 (official release),

    1/ The camera shot feature don't display the animation curves (like position or roattion) and creates a console error message that says "
    NullReferenceException: Object reference not set to an instance of an object
    Slate.CurveEditor+CurveRenderer.RecalculateBounds () (at Assets/ParadoxNotion/SLATE Cinematic Sequencer/Design/Partial Editor/CurveEditor.cs:242)
    Slate.CurveEditor+CurveRenderer.Init () (at Assets/ParadoxNotion/SLATE Cinematic Sequencer/Design/Partial Editor/CurveEditor.cs:100)
    Slate.CurveEditor+CurveRenderer..ctor (IAnimatableData animatable, IKeyable keyable, Rect posRect) (at Assets/ParadoxNotion/SLATE Cinematic Sequencer/Design/Partial Editor/CurveEditor.cs:52)
    Slate.CurveEditor.DrawCurves (IAnimatableData animatable, IKeyable keyable, Rect posRect, Rect timeRect) (at Assets/ParadoxNotion/SLATE Cinematic Sequencer/Design/Partial Editor/CurveEditor.cs:20)
    Slate.AnimatableParameterEditor.DoCurveBox (Slate.AnimatedParameter animParam, IKeyable keyable, Boolean isRecording) (at Assets/ParadoxNotion/SLATE Cinematic Sequencer/Design/Partial Editor/AnimatableParameterEditor.cs:398)
    Slate.AnimatableParameterEditor.ShowParameter (Slate.AnimatedParameter animParam, IKeyable keyable, UnityEditor.SerializedProperty serializedProperty) (at Assets/ParadoxNotion/SLATE Cinematic Sequencer/Design/Partial Editor/AnimatableParameterEditor.cs:140)
    Slate.ActionClipInspector.ShowAnimatableParameters () (at Assets/ParadoxNotion/SLATE Cinematic Sequencer/Design/Editor/Inspectors/ActionClipInspector.cs:46)
    Slate.CameraShotInspector.OnInspectorGUI () (at Assets/ParadoxNotion/SLATE Cinematic Sequencer/Directables/Clips/Editor/CameraShotInspector.cs:143)
    Slate.CutsceneInspector.DoSelectionInspector () (at Assets/ParadoxNotion/SLATE Cinematic Sequencer/Design/Editor/Inspectors/CutsceneInspector.cs:159)
    Slate.CutsceneInspector.OnInspectorGUI () (at Assets/ParadoxNotion/SLATE Cinematic Sequencer/Design/Editor/Inspectors/CutsceneInspector.cs:79)
    UnityEditor.InspectorWindow.DrawEditor (UnityEditor.Editor editor, Int32 editorIndex, Boolean rebuildOptimizedGUIBlock, System.Boolean& showImportedObjectBarNext, UnityEngine.Rect& importedObjectBarRect) (at C:/buildslave/unity/build/Editor/Mono/Inspector/InspectorWindow.cs:1236)
    UnityEditor.DockArea:OnGUI()"

    1b/ Also, I have a crash when I am loading a alembic file (3.8 Mo size) whatever Unity 5.3.4 or 5.5.

    2/ In the camera track, the first shot works when keyframing automatically with Look throught camera excepted for the end keyframe (incorrect update during the scrubbing review)


    3/ It seems that the update of any camera shot is correctly played when the user stop the preview and then reactivate this latter. Can you confirm this ? if yes, could you improve the update mechanism to avoid that ?

    4/ The offline rendering with EXR output works partially since I don't get any of the separate pass, I just have the global pass (tested in Unity 5.3.4 and 5.5).

    5/ Could you add a checklist in the offline rendering to choose only some render pass but not all.

    6/ When I was refering about visibility track with float values (and not boolean), it was to avoid indeed to animate each alpha channels as necessary. I was thinking about a "global" track that list choosen gameobject to make them smoothy disappear. maybe tricky to do if the rendering path is the deferred one.

    Thanks by advance,

    Hlx
     
    Last edited: Dec 6, 2016
  39. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,084
    Hello again,

    Yes, that is happening by Slate. Basically whenever a cutscene is rewinded, all the actors are reset to the initial state they were when the cutscene started. A cutscene can be set to immediately rewind once it's stopped (or finished), by setting the "StopMode" option in it's inspector to "Rewind".
    This is exactly what you probably want to do as far as I can tell.
    Let me know if setting StopMode to "Rewind" works as you'd expect.

    The red marker in the editor only shows what the current/last time of the cutscene is, and it does not mean that the cutscene is active. I will see at improving the UI in this regard for when in playmode.

    Regarding your request, I will make disabled groups look better. :)
    Thanks.


    Hello again,

    A new version with support for Unity 5.5 is on it's way (I will submit it later tonight).
    This is the reason of your #1 posted issue.

    Regarding the rest:

    2) Can you please explain a bit more what you mean?

    3) There is a small issue right now where new shot clips added while already in scrub mode will not be taken correctly into account (which will of course be fixed). Is that what you mean or something different?

    4) Do you happen to get this warning logged in the console :"ExrRecorder: Rendering Path must be deferred to use Capture GBuffer mode." ? If so, that is because Render Passes only work when project/camera is set to Deferred mode. Let me know if that is indeed the case.

    5) Sure. I've noted this request down for the version after the next release. :)

    6) Disappearing and appearing is still a shader effect though. Do by "global" you mean to take all mesh renderers of the gameobject (including children) into account all at once? If so, then yes. I will create and add a new Visibility action clip to do just that :)

    Thanks!
     
  40. hlx

    hlx

    Joined:
    Sep 18, 2012
    Posts:
    57
    7/ Also, does your offline renderer supports 2 cameras render context in one game view (minimap use case, one camera with maximum display and on top of it a seconf camera view with a greater depth value) ? My first tests are negative for now.

    Thanks for your fast support,

    Regards,

    hlx
     
    Last edited: Dec 6, 2016
  41. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,084
    Hey,

    You are welcome.
    The renderer reads data from a specific camera, that is the RenderCamera. If the RenderCamera "Depth" (from where we are rendering) is higher than all other cameras. The other cameras will be included, but the other way around (RenderCamera wth smaller Depth) will not.
    The only way to have everything included at least right now, is to use the PNG renderer in PlayMode (open render utility and hit render after entering playmode).

    Thanks.
     
  42. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,084
    The new version with support for Unity 5.5 is now submitted and pending review. Unfortunately I did not implement all approved requests yet, since I really had to send the new update to support Unity 5.5 ASAP. Another update will come soon though taking care of those requests.

    Following are the changes of the new version send.

    New: Curve Editor now works with Unity's 5.5 features like region scaling, retiming and ripple.
    RegionSelection.gif


    New: Added Multiple clip selection scaling/retiming. Holding Shift down also retimes clip keyframes similar to how it's already done for single selected clips.
    ClipsMultiscaling.gif


    New: Added Actor Group search field above groups to quickly filter out groups by name.
    New: Added Collapse/Expand all groups button above groups.
    New: Collapsed groups now show a preview of where they have clips.
    New: Disabled groups now show an icon and have a grey name color.
    All of the above are shown bellow.
    FurtherFeatures.png

    New: AudioClip volume and pan parameters are now Animatable.
    AnimatableAudio.png


    • New: Added option in Actor Audio Track to "Use Audio Source On Actor".
    • New: Camera Shot SteadyCam effect now also works in editor (Unity 5.5).
    • New: Exposed Font parameter in DirectorGUI component used for subtitles and overlay text.
    • New: Added option "Auto Handle Active State" in Director Camera inspector. If turned off, the RenderCamera will neither enable nor disable automatically. The default is of course on.
    • New: Duplicate Actor Group command.
    • New: RenderCutscene function for runtime. Returns a Texture2D[] after a few frames (coroutine).
    • Fixed: Camera Shot SteadyCam effect now works without the need to have at least one keyframe set.
    • Fixed: "Composition Additive Scene" action clip issues in runtime.
    • Fixed: Actor position/rotation reverting to original after cutscene finish, when using AnimatorTrack with root motion enabled.


    Cheers!
     
    flashframe likes this.
  43. flashframe

    flashframe

    Joined:
    Feb 10, 2015
    Posts:
    747
    Great update!
     
  44. hlx

    hlx

    Joined:
    Sep 18, 2012
    Posts:
    57
    Can't stand to dig in this unity 5.5 compatible version. Really good news !

    hlx
     
  45. alteredmatter

    alteredmatter

    Joined:
    Sep 14, 2016
    Posts:
    26
    Ah, I thought it had something to do with the StopMode and tried changing it before posting the other day, but I don't know what I did wrong but it didn't give me the results I wanted then (I think I tried it in a cutscene where I didn't need to do it, instead of in this one I was showing on the previous post...). I've tried it now with the switches cutscenes and it works well. :)

    In some specific cases it still moves the player to an undesired position, like: you can make the player jump before the cutscene starts playing, and then when it finished it moves the player back to the air position it was when jumping. But this is something completely on my part, because I add a small delay between the action of putting an item on the switch and launching the cutscene, so this is something that I'll manage on my code.


    A couple of things:

    1) I would like to use the Blend In/Out option on some Camera Shots (when we have a level that starts or ends with a cutscene), because I've seen that it's very easy to control the timing on the Slate Editor, but I would like the ability to change the fading color. At the moment I just need to blend to White, so I have tried changing this code part from Color.black to Color.white:
    Code (CSharp):
    1. if (blendInEffect == BlendInEffectType.FadeIn){
    2.                 if (time <= blendIn){
    3.                     var color = Color.white;
    4. // ...
    5. }
    6.  
    7. if (blendOutEffect == BlendOutEffectType.FadeOut){
    8.          if (time >= length - blendOut){
    9.            var color = Color.white;
    10. // ...
    11. }
    12.  
    13.  
    but it would be nice to have a small button on the side for changing between black and white (I guess these would be the more common colors people would use). Maybe even having a Color Picker instead, in case there are some more stylized scenes that would need a transition to a different color, although this is something quite uncommon. But I don't know, maybe people will find a use for it, as there are games that use very colorful effects and transitions (No More Heroes or the new Persona game come to mind). Quick and cheap example: something like a character dying on a cutscene and the screen turning red at the end?


    2) I've added audio clips to the Director Audio Track of a cutscene, and when I skip it it gives this error now:

    Capture.PNG
    Do you know what is causing this? If I don't skip the cutscene there is no problem, this only shows when skipping it with the audio clips included. I skip it using the "slatecutscene.SkipCurrentSection()" method.



    Anyway, I've read all the new features and improvements in the new version. Very nice update! Thanks for taking requests and improving the asset this quickly.
     
    Last edited: Dec 7, 2016
  46. plockhartt17

    plockhartt17

    Joined:
    Nov 14, 2016
    Posts:
    10
    Hi,

    Is there any way to disable the camera system? We're finding it very slow to work with and intrusive with the multi layered camera system we have in our game. We'd love to use the plugin for the tweening and animation side of things, but don't want the camera functionality, as we need to use our own camera prefab for the cutscenes
     
    Last edited: Dec 7, 2016
  47. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,084
    @flashframe @hlx Thanks a lot guys! I am very glad you like the new changes! :)

    Thanks as well!
    I am also glad that cutscenes are working correctly for you now :)

    Regarding your suggestions/reports,
    1) I will add a color selection option in the next version for camera fades, sure!
    2) I've seen this error before at some point, but did not really got around what caused it at that time. I will run though the audio related code once again and see what I find. Thanks for reminding me.

    Cheers!

    Hey,
    Yes. You can simply disable, or even delete the Camera Track from the Director Group. That will essentially disable the camera system as a whole.
    I'd really like to know though what is that you found slow to work with. If you have any suggestions for improvements, I'd be more than glad to hear them out of course? :)
    Thanks.
     
    plockhartt17 likes this.
  48. alteredmatter

    alteredmatter

    Joined:
    Sep 14, 2016
    Posts:
    26
    1) Great, thanks!
    2) OK, no problem. Regarding this, I've seen that I can avoid the error moving the different clips to different Audio Tracks.
    Like this, the error shows up:
    SLATE audio error.PNG

    No error: SLATE audio error 2.PNG

    I guess the problem appears when skipping the cutscene and it having multiple audio clips in line?
    We can use it like that as it avoids the problem right now, but would be nice to use related clips in a single track, as if we end up having a lot of different clips it could end up being inconvenient. :)

    Thanks!
     
    Last edited: Dec 9, 2016
  49. hlx

    hlx

    Joined:
    Sep 18, 2012
    Posts:
    57
    Hi Nuverian,

    I updated Slate today (running Unity 5.5) and I my previous cutscene doesn't work anymore, the slate tab is no more displayed and can't recreate another one since I have a compile error in the console that says "
    Assets/ParadoxNotion/SLATE Cinematic Sequencer/Design/Partial Editor/EditorTools.cs(77,67): error CS0121: The call is ambiguous between the following methods or properties: `Slate.StringExtensions.SplitCamelCase(this string)' and `Slate.TransformExtensions.SplitCamelCase(this string)'
    ...help ;)

    Regards,

    hlx

    EDIT : Very strange, but finally, I totally removed the Slate directory in my project, restarted it and reinstalled Slate and it seems working fine. :)
     
    Last edited: Dec 9, 2016
  50. hlx

    hlx

    Joined:
    Sep 18, 2012
    Posts:
    57
    Re Nuverian,

    Some other wishes and remarks :

    W1 : Could it be possible to add shadows and ID objects pass for separate rendering pass (ID could match Unity tags at least)

    W2 : Add a Browse directory button to access to the rendered sequence files

    W3 : It seems that the Attach object action is abolute only. If this is really the case, could you allow a relative option ?

    W4 : Adding a detach object action

    Q1 : How to remove the rules of compositing lines that are added by the Director GUI script. Is the user can delete it without risk ?

    Thanks by advance,

    Hlx