Jonathan Garrett (one of our Lead Engine Programmers) recently introduced our new realtime cinematics system to the team that a bunch of Core engine programmers have been working hard on for a while now. If you've been following our previous notes on our tools, you'll know that our tools are webapps (except for the 3D scene view which is natively running our game/engine). We definitely took a lot of the lessons we've learned in creating previous HTML5/Javascript tools which interact with the game and our servers and applied them to this new tool. Cinematics in particular are much more complicated than anyone ever thinks to develop, and as such this is easily one of our most sophisticated tools. While the presentation slides here are short on implementation details, I hope you'll still enjoy this inside look into one of out web-based tools built for large-scale productions.
2. intro
• goals:
– quickly set up (compelling) quest cinematics
– minimize animator dependencies
– empower designers
3. intro
• goals:
– quickly set up (compelling) quest cinematics
– minimize animator dependencies
– empower designers
• lots to cover – lots of information
• chris / giac / reddy / dave jump in
4. intro
• goals:
– quickly set up (compelling) quest cinematics
– minimize animator dependencies
– empower designers
• lots to cover – lots of information
• chris / giac / reddy / dave jump in
• movie icon:
19. lipsync - emes
• phoneme
smallest structural unit of sound which
can convey meaning
20. lipsync - emes
• phoneme
smallest structural unit of sound which
can convey meaning
• viseme
facial positions and movements
representing a specific phoneme
22. lipsync - emes
• english uses around 40 phonemes
• engine maps phonemes to visemes
at runtime
• current setup maps to 12 visemes
– user editable
– can be different per character
46. tip - keys
~ toggle between debug and cine camera
F frame selected object / whole scene
del delete selected
ctrl+c copy selected
ctrl+v paste selected
ctrl+x cut selected
space toggle playback
shift+space rewind
shift+; forward one shot
shift+’ back one shot
W translate manipulator
E rotate manipulator
R scale manipulator
47. workflow - cinematics editor
• pure auto generated dialogue line
– just mouth movement
– no facial expressions
– no head / body movement
48. workflow - cinematics editor
• pure auto generated dialogue line
– just mouth movement
– no facial expressions
– no head / body movement
• edit in performance editor
49. workflow - performance editor
• per character:
–set up phoneme → viseme mapping
–set up expression pose palette
–set up gesture clip palette
• test palette already set up by Dave
• more to come
50. workflow - performance editor
• per line:
–phoneme animation auto generated
from localization line
–assign facial expressions
–assign body gestures
63. workflow - performance editor
• per line:
–phoneme animation auto generated
from localization line
–assign facial expressions
–assign body gestures
75. workflow - performance editor
• per line:
–phoneme animation auto generated
from localization line
–assign facial expressions
–assign body gestures
86. cameras
• (optionally) assigned per shot
• edited in luna using AnimCurves
• piecewise Bezier curves with per
key time and tangent control
• attempt to match maya curve
editor
110. camera keys
• tangent types:
–Linear (matches maya)
match slope from previous / to next key
111. camera keys
• tangent types:
–Linear (matches maya)
–Flat (matches maya)
slope is horizontal
112. camera keys
• tangent types:
–Linear (matches maya)
–Flat (matches maya)
–Smooth (maya Auto)
slope based on neighbor keys
113. camera keys
• tangent types:
–Linear (matches maya)
–Flat (matches maya)
–Smooth (maya Auto)
–Free
user editable
114. shots
• optionally associated with a camera
– shots without hold last camera
• by default, stepped in order
– shot1, shot2, shot3, end
• each shot can specify a loop shot
– can be itself
• script plug advances / sets specific shot
119. workflow - luna
• trigger in game
• add cinematic2 script node
–specify .cinematic2 actor
–(optionally) specify actor assignments
–set up input / output triggers
126. workflow - luna
• place cinematic2 actor
– Cinematic2Actor.actor
– assign .cinematic2 from vault
127. workflow - luna
• place cinematic2 actor
– Cinematic2Actor.actor
– assign .cinematic2 from vault
– location / orientation defines
cinematic origin – overriden by
IsWorldSpaceCinematic
128. workflow - luna
• place cinematic2 actor
– Cinematic2Actor.actor
– assign .cinematic2 from vault
– location / orientation defines
cinematic origin – overriden by
IsWorldSpaceCinematic
– ScriptDriven: disable to
spawn at zone load
(PlayBackShot to specify
particular shot)
143. coming soon
• specialized hero tracks
– camera / behavior (hero / prop anim)
• sync track
– trigger script node plugs from timeline
• event track
– trigger arbitrary game event from timeline
• lighting groups
144. summary
• we have a new cinematics editor!
• hopefully make compelling quest intros
145. summary
• we have a new cinematics editor!
• hopefully make compelling quest intros
• lots of information
• some areas covered more than others
• come talk to us
movie icon is to remind me that there’s a movie to play, and it’s not just an image
position-rotation-scale track to scale, rotate, translate an object using curves – behavior track to play anim clips (and later sequence AI behavior) – dialogue track to trigger lipsynched dialogue lines – camera track to animate the camera using a maya clip or in-editor curves (also handles dof and fov) – camera-shake track to shake the camera – light track to update light properties (color, falloff, spot angle etc) using curves – material track to update material properties – vfx track to trigger vfx – hide track to hide / shot actors (no need to teleport out of view) – audio track to trigger wwise audio events for playing sfx / setting wwise state – music track to play music which is used to drive the cinematic timeline – atmosphere track to update atmosphere properties using curves – rate track to modify overall playback rate using a curve (slowmo) – sync track to allow scripts to sync with specific points on timeline
these tracks use our curve editor
will be talking about dialogue and camera tracks today specifically for quests
here’s the new cinematics editor
game view (it *is* the game – running all update code)
the outliner – similar to the scene editor – shows everything in the cinematic
sound panel (shows all sound banks and sound events) – search / create favorites / audition events
properties panel (for currently selected thing)
timeline and playback controll
shots list (can be edited and rearranged)
tracks list
‘actions’ are used by most tracks – they refer to the individual things being triggered by the track
phoneme to viseme mapping is editable directly in the performance editor
sorry these are old!
localization file is exported form localization database (jon / qa support ?) – causes auto generation of new / updated lines
use performance editor to set up the performance (will be integrated into cinematics editor next project)
3d view
clips in the performance set
animation palette (expressions + gestures)
phoneme -> viseme map
timeline
phonemes (automatically generated)
expressions
gestures
expressions affect the face – frowns, smiles, winks etc – they’re contained in a single anim clip – specify frame number for particular pose and name – represent joints at the 100% expression (eg. FULL FROWN)
creates an envelope – cheap curve – blend in, hold, blend out (will use curves next time)
can add multiple points and move to get something which blends in, holds, blends down, holds, blends up, holds, blends out
gestures are short pre-created clips which are designed to be reused and sequenced together and overlapped to create many variations
drag multiple gestures to cover the whole timeline
each track can contain multiple actions (triggering multiple lines) or can add multiple tracks
right click Pane -> add CameraTrack
Select the shot
Hold Control and select the pane
This allows you to only add a camera track to a single shot
List of keys that are being edited and a legend indicating the color of each
Property panel showing the camera’s current settings if no points are selected; otherwise shows the properties of the selected points
Timeline and curve editing area
Vertical lines indicate shot boundaries
Playback buttons don’t yet work in this view, use the ones on the main window
Move playhead to desired time
Adjust the camera (either while looking through it or by moving the camera widget). Use tilda (~) to toggle camera views.
Property panel updates with the camera position and rotation
Right-click anywhere in the track area to access the menu for adding keys
Curves will be shown
Repeat for additional keys
Toggle visibility to work with single elements of the curve
Select control points on the curve to access their individual properties; can select multiple points at a time and edit them at once; you can drag a control point to adjust the curve.
When the tangent types are set to Free, you can freely move the tangent control point to adjust the curve
talk about triggering in game – starts with .cinematic2 script node – similar to previous .cinematic script node - specifies the .cinematic2 actor (placement + refers to asset) – (optionally) specifies actor assignments – sets up input and output triggers
*lots* of plugs! – we’ll remove of the unused ones
standard inputs – cinematic actor reference – trigger plugstandard outputs – triggered / completed
scene actor inputs – if specified, will use existing scene actor for cinematic actor – it not specified will spawn new actor
jump-to-shot allows triggering a specific shot from script
sync outputs allow synchronizing timeline with script (unlock door at specific point in the cinematic) – adding UI support to set them on the timeline
Automatically populated based upon placement of Cinematic2Actor nodes within zones
You can manually specify whatever regions you want
Drag and drop a region from the vault
Load the region into the game using the context menu
Use the View menu or the button on a property panel field to toggle time between frames and seconds (adjusts the property panel, the timeline, and tooltips)