bringing characters to life for immersive storytelling - dioselin gonzalez

72
Bringing characters to life for immersive storytelling Dioselin Gonzalez Lead VR Engineer, Unity Labs VR With The Best - March 19, 2016

Upload: withthebest

Post on 17-Jan-2017

81 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Bringing characters to life for immersive storytelling

Dioselin GonzalezLead VR Engineer, Unity Labs

VR With The Best - March 19, 2016

Page 2: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Relevant background

Page 3: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Since Oct/2016

VR authoring tools

labs.unity.com

Page 4: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Character animation&

Partially autonomous character system

Page 5: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Networked VR simulation for dismounted soldiers

CAVE™Omnidirectional treadmill

Page 6: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

M.S. Computer Graphics Technology

Collaborative virtual reality

Page 7: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

InterPlay: Loose Minds in a Box (2005) - anotherlanguage.org/interplay/003_lmib/

Page 8: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Scenario

Page 9: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

©2014-2016 AlloyRabbit - http://alloyrabbit.deviantart.com/

Page 10: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Sense-Think-Act-Communicate

M. Siegel, "The sense-think-act paradigm revisited," Robotic Sensing, 2003. ROSE' 03. 1st International Workshop on, 2003, pp. 5 pp.-.doi: 10.1109/ROSE.2003.1218700

Page 11: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Facial recognition

Page 12: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Action Units and the Facial Action Coding System

Shichuan Du et al. Compound facial expressions of emotion. PNAS 2014;111:E1454-E1462. doi: 10.1073/pnas.1322355111

Page 13: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Shichuan Du et al. Compound facial expressions of emotion. PNAS 2014;111:E1454-E1462. doi: 10.1073/pnas.1322355111

Page 14: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

MPEG-4 Face andBody Animation (MPEG-4 FBA) [ISO14496] International Standard

Facial Feature Points (FP)

https://visagetechnologies.com/uploads/2012/08/MPEG-4FBAOverview.pdf

Page 15: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Shichuan Du et al. Compound facial expressions of emotion. PNAS 2014;111:E1454-E1462. doi: 10.1073/pnas.1322355111

Page 16: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Facial Feature Points (FP)

Fully Automatic Facial Feature Point Detection Using Gabor Feature Based Boosted Classifiers

Danijela Vukadinovic and Maja PanticDelft University of Technology

2005 IEEE International Conference on Systems, Man and Cybernetics

http://ibug.doc.ic.ac.uk/media/uploads/documents/VukadinovicPantic-SMC05-FINAL.pdf

Page 17: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Open Source Computer Vision Library

http://docs.opencv.org/3.1.0/d7/d8b/tutorial_py_face_detection.html#gsc.tab=0

Page 18: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

OpenCV face Detection using Haar Cascades

http://docs.opencv.org/3.1.0/d7/d8b/tutorial_py_face_detection.html#gsc.tab=0

Page 19: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

visagetechnologies.com

visage|SDK 8.0

Page 21: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

https://facerig.com/

Page 22: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Other facial features

Using Cr-Y Components to Detect Tongue Protrusion Gesturess

Crawford, C.; Bailey, S.; Badea, C.; Gilbert, J.

CHI EA '15 Proceedings of the 33rd Annual ACM Conference Extended Abstracts on Human Factors in Computing Systems

http://dl.acm.org/citation.cfm?id=2732916

Page 23: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Speech recognition

Page 24: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

CMUSphinx toolkitPocketsphinx — lightweight recognizer library written in C.

Sphinxbase — support library required by Pocketsphinx

Sphinx4 — adjustable, modifiable recognizer written in Java

Sphinxtrain — acoustic model training tools

http://cmusphinx.sourceforge.net/

Page 25: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

OpenEars®

Offline iPhone Voice Recognition and Text-To-Speech

http://www.politepix.com/openears/

Page 26: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

#import <OpenEars/OELanguageModelGenerator.h>#import <OpenEars/OEAcousticModel.h>

- (void)viewDidLoad{

OELanguageModelGenerator *lmGenerator = [[OELanguageModelGenerator alloc] init];NSArray *words = [NSArray arrayWithObjects:@"WORD", @"STATEMENT", @"OTHER WORD", @"A

PHRASE", nil];NSString *name = @"NameIWantForMyLanguageModelFiles";NSError *err = [lmGenerator generateLanguageModelFromArray:words withFilesNamed:name

forAcousticModelAtPath:[OEAcousticModel pathToModel:@"AcousticModelEnglish"]]; NSString *lmPath = nil;NSString *dicPath = nil;if(err == nil) {

lmPath = [lmGenerator pathToSuccessfullyGeneratedLanguageModelWithRequestedName:@"NameIWantForMyLanguageModelFiles"];

dicPath = [lmGenerator pathToSuccessfullyGeneratedDictionaryWithRequestedName:@"NameIWantForMyLanguageModelFiles"];

} else {NSLog(@"Error: %@",[err localizedDescription]);

}}

OpenEars language model

Page 27: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

The characters’ “brain”

Page 28: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Finite state machines

http://gamedevelopment.tutsplus.com/tutorials/finite-state-machines-squad-pattern-using-steering-behaviors--gamedev-13638

Page 29: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

boost::statechart

http://www.boost.org/doc/libs/release/libs/statechart/doc/tutorial.html

Page 30: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

http://www.boost.org/doc/libs/release/libs/statechart/doc/tutorial.html

namespace sc = boost::statechart;

struct EvShutterHalf : sc::event< EvShutterHalf > {};struct EvShutterFull : sc::event< EvShutterFull > {};struct EvShutterRelease : sc::event< EvShutterRelease > {};struct EvConfig : sc::event< EvConfig > {};

struct NotShooting;struct Camera : sc::state_machine< Camera, NotShooting >{ /* ... */};

struct Idle;struct NotShooting : sc::simple_state<NotShooting, Camera, Idle >{ typedef sc::custom_reaction< EvShutterHalf > reactions; sc::result react( const EvShutterHalf & );};

struct Idle : sc::simple_state< Idle, NotShooting >{ typedef sc::custom_reaction< EvConfig > reactions;

// ... sc::result react( const EvConfig & );};

Page 31: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

boost::msm

http://www.boost.org/doc/libs/release/libs/msm/doc/HTML/ch03s02.html

Page 32: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

http://www.boost.org/doc/libs/release/libs/msm/doc/HTML/ch03s02.html

struct transition_table : mpl::vector<// Start Event Target Action Guard // +---------+------------+-----------+---------------------------+----------------------------+ a_row< Stopped , play , Playing , &player_::start_playback >,a_row< Stopped , open_close , Open , &player_::open_drawer >, _row< Stopped , stop , Stopped >,// +---------+------------+-----------+---------------------------+----------------------------+ a_row< Open , open_close , Empty , &player_::close_drawer >,// +---------+------------+-----------+---------------------------+----------------------------+ a_row< Empty , open_close , Open , &player_::open_drawer >, row< Empty , cd_detected, Stopped , &player_::store_cd_info , &player_::good_disk_format >, row< Empty , cd_detected, Playing , &player_::store_cd_info , &player_::auto_start >,// +---------+------------+-----------+---------------------------+----------------------------+ a_row< Playing , stop , Stopped , &player_::stop_playback >,a_row< Playing , pause , Paused , &player_::pause_playback >,a_row< Playing , open_close , Open , &player_::stop_and_open >,// +---------+------------+-----------+---------------------------+----------------------------+ a_row< Paused , end_pause , Playing , &player_::resume_playback >,a_row< Paused , stop , Stopped , &player_::stop_playback >,a_row< Paused , open_close , Open , &player_::stop_and_open >// +---------+------------+-----------+---------------------------+----------------------------+ > {};

Page 33: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Behavior trees

Image from http://charliepark.tumblr.com/post/97667486/a-sample-behavior-tree-from-spore-from-chris

Page 34: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Behavior trees

Page 35: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Behavior trees

HALO 2 (2004)

GDC 2005 - Handling Complexity in the Halo 2 AI

Image from http://en.wikipedia.org

Page 36: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Behavior trees

Façade: a one-act interactive drama (2005)

GDC 2005 - AI and Interactive Storytelling: How We Can Help Each Other

Image from http://www.macobserver.com/

Page 37: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Behavior trees

SPORE

GDC 2010 - Behavior Trees: Three Ways of Cultivating Strong AI

Image from http://en.wikipedia.org

Page 38: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

BT_root

decider

decider

decider

decider

decider

behavior(s)

behavior(s)

behavior(s)

behavior(s)decider

behavior(s)decider

Page 39: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Group decider

Behavior decider

BT_root

decider

decider

decider

decider

decider

behavior(s)

behavior(s)

behavior(s)

behavior(s)decider

behavior(s)decider

Page 40: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

id type data

... ... ...

Blackboard

BT_root

decider

decider

decider

decider

decider

behavior(s)

behavior(s)

behavior(s)

behavior(s)decider

behavior(s)decider

Page 41: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

bool GroupDecider::decide(Blackboard &);

BT_root

decider

decider

decider

decider

decider

behavior(s)

behavior(s)

behavior(s)

behavior(s)decider

behavior(s)decider

Page 42: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

enum Status {RUNNING, SUCCESS, FAILURE};

bool BehaviorDecider::activate(Blackboard &);bool BehaviorDecider::deactivate(Blackboard &);Status BehaviorDecider::tick(Blackboard &);

BT_root

decider

decider

decider

decider

decider

behavior(s)

behavior(s)

behavior(s)

behavior(s)decider

behavior(s)decider

Page 43: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Group decider types - Priority List

BT_root

Flee

Feed_self

behavior(s)

behavior(s)

behavior(s)

eat_food

Find_food

Idle behavior(s)

Page 44: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Group decider types - Priority List

BT_root

Flee

Feed_self

behavior(s)

behavior(s)

behavior(s)

eat_food

Find_food

Idle behavior(s)

? ?

Page 45: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Group decider types - Priority List

BT_root

Flee

Feed_self

behavior(s)

behavior(s)

behavior(s)

eat_food

Find_food

Idle behavior(s)

12:00 pm

? ?

Page 46: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Group decider types - Priority List

BT_root

Flee

Feed_self

behavior(s)

behavior(s)

behavior(s)

eat_food

Find_food

Idle behavior(s)

12:00 pm

? ?

Page 47: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Group decider types - Priority List

BT_root

Flee

Feed_self

behavior(s)

behavior(s)

behavior(s)

eat_food

Find_food

Idle behavior(s)

? ?

Page 48: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Group decider types - Priority List

BT_root

Flee

Feed_self

behavior(s)

behavior(s)

behavior(s)

eat_food

Find_food

Idle behavior(s)

? ?

Page 49: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Group decider types - Priority List

BT_root

Flee

Feed_self

behavior(s)

behavior(s)

behavior(s)

eat_food

Find_food

Idle behavior(s)

? ?

Page 50: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Group decider types - Sequence

BT_root

Mix_ingredients

Bake

behavior(s)

behavior(s)

behavior(s)

Put_food_in

Preheat_oven

Decorate behavior(s)

→ →

Page 51: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Group decider types - Parallel

BT_root

Sing

Dance

behavior(s)

behavior(s)

behavior(s)

Jump

Wave_arms

Idle behavior(s)

→→

?

→→

Page 52: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

More group decider types (and decorators)

randomrepeat <x>

timesloop_seq

Page 53: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Behavior Designer @ Unity Asset Store

http://www.opsive.com/assets/BehaviorDesigner/

Page 54: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Concurrency: Resource allocators

http://aigamedev.com/open/article/popular-behavior-tree-design/

Page 55: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Aborting/Enabling subtrees

http://aigamedev.com/open/article/popular-behavior-tree-design/

Page 56: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Hybrid architectures

Horizontal layering

Sensor input

Action output

http://www.inf.ed.ac.uk/teaching/courses/abs/slides/abs05-reactivehybrid.pdf

Page 57: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Hybrid architectures

Horizontal layering Vertical layering

Sensor input

Action output

Sensor input

Action outputOne-pass control

http://www.inf.ed.ac.uk/teaching/courses/abs/slides/abs05-reactivehybrid.pdf

Page 58: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Hybrid architectures

Horizontal layering Vertical layering

Sensor input

Action output

Sensor input

Action output

Sensor input Action output

One-pass control Two-pass control

http://www.inf.ed.ac.uk/teaching/courses/abs/slides/abs05-reactivehybrid.pdf

Page 59: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

InteRRaP

http://www.sharprobotica.com/2011/01/interrap-hybrid-architecture-for-robotic-multi-agent-systems/

Page 60: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Behavior realization language(i.e. messaging protocol)

Page 61: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

(some) Issues

AI Sound

Animation

Physics

Page 62: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

(some) Issues

AI Sound

Animation

Physics

Behavior expression

Page 63: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

(some) Issues

AI Sound

Animation

Physics

Timing

Page 64: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

(some) Issues

AI Sound

Animation

Physics

Synchronization

Page 65: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

(some) Issues

AI Sound

Animation

Physics

Interruption

Page 66: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Behavior Markup Language (BML)

Intent planning Behavior planning Behavior realization

SAIBA framework (Situation, Agent, Intention, Behavior, Animation)

FML BML

Towards a Common Framework for Multimodal Generation: The Behavior Markup Language http://xenia.media.mit.edu/~kris/ftp/BML-IVA-06-KoppEtAl.pdf

Page 67: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

Behavior Markup Language (BML)

http://www.mindmakers.org/projects/bml-1-0/wiki

Page 68: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

BML: synchronization

<bml id="bml1" xmlns="http://www.bml-initiative.org/bml/bml-1.0" character="Alice">

<pointing id="behavior1" target="blueBox" mode="RIGHT_HAND" start="speech1:start"/>

<speech id="speech1"><text>Look there!</text></speech>

...

<constraint>

<synchronize>

<sync ref="speech1:sync4"/>

<sync ref="beat1:stroke:2"/>

<sync ref="nod1:stroke"/>

</synchronize>

</constraint>

http://www.mindmakers.org/projects/bml-1-0/wiki

Page 69: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

BML: behavior elements

Towards a Common Framework for Multimodal Generation: The Behavior Markup Language http://xenia.media.mit.edu/~kris/ftp/BML-IVA-06-KoppEtAl.pdf

Page 70: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

What is interactive storytelling anyway?

Page 71: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

What is interactive storytelling anyway?

Image from http://ragreynolds.net/review-the-last-of-us-remastered/

Page 72: Bringing Characters to Life for Immersive Storytelling - Dioselin Gonzalez

More referencesGDC 2005 Handling Complexity in the Halo 2 AI - Gamasutra, GDC Vault.

AiGameDev.com Behavior Trees for Next-Gen Game AI - Part 1, Part 2, Part 3.

University of Denver Video Game AI: Behavior Trees & Blackboards

GDC AI Summit 2010 Behavior Trees: Three Ways of Cultivating Strong AI - GDC Vault, AiGameDev.com

Chatting Up Façade’s AI: 23 Ideas to Talk Your Game Into - AiGameDev.com

Popular Approaches to Behavior Tree Design - AiGameDev.com