Biblioteca de Smart Objetcs Para Interaç ˜ao com Atores

Transcrição

Biblioteca de Smart Objetcs Para Interaç ˜ao com Atores
Biblioteca de Smart Objetcs Para Interação com Atores Digitais
Autônomos
Lucas Cristiano da Silva Sousa Zanatta
Joinville
2013
Lucas Cristiano da Silva Sousa Zanatta
Biblioteca de Smart Objetcs Para Interação com Atores Digitais
Autônomos
Relatório de Trabalho de Conclusão de Curso (TCC)
apresentado ao Curso de Graduação em Ciência da
Computação, da Universidade do Estado de Santa Catarina (UDESC), como requisito parcial da disciplina
de Trabalho de Conclusão de Curso.
Orientador: Profo Rogério Eduardo da Silva
Joinville
2013
Lucas Cristiano da Silva Sousa Zanatta
Biblioteca de Smart Objetcs Para Interação com Atores Digitais
Autônomos
Relatório de Trabalho de Conclusão de Curso (TCC)
apresentado ao Curso de Ciência da Computação da
UDESC, como requisito parcial para a obtenção do
grau de BACHAREL em Ciência da Computação.
Aprovado em
BANCA EXAMINADORA
Profo Rogério Eduardo da Silva
Profo Luciana Rita Guedes
Profo Rui Jorge Tramontin Junior
“Oi, Eu sou o Goku” –Goku
Agradecimentos
Agradeço a todos os meus amigos, que me apoiaram a cada momento da minha caminhada, tanto nos trabalhos, conselhos, fazer me rir em momentos que achei que seria incapaz,
de aturarem minhas ranzinzas, agradecimento especial ao Luiz Felipe Neitzke Alves e ao Sérgio
Busarello, por possibilitarem uma das maiores vitórias que tive durante minha vida acadêmica.
Agradeço ao Grupo de jovens Nossa Senhora Aparecida, que nos últimos anos foram meu norte
no caminho da fé, e que ainda hoje alegram meu ser.
Não posso deixar de agradecer a todos os professores pelas aulas ministradas. Principalmente a professora Luciana, que confiou em mim por 1 ano e meio a responsabilidade de
servir de apoio ao ensino. Ao professor Rogério, por me orientar durante esse ano.
Sempre me foi ensinado que a base é a parte mais importante do homem, e da
sociedade. A minha famı́lia é a base de meu ser, nela tive minhas primeiras formações como
pessoa. Um agradecimento especial ao meu pai, que por todos esses anos foi o maior investidor
do meu futuro. Minha avó Rosita que quando precisei dela para me preparar para o vestibular
não polpou esforços. A minha mãe, que sempre me lembrou que sou livre em minhas escolhas.
Meu avô José, que me faz lembrar que até as pessoas mais humildes e desafortunadas podem,
com suor e muito trabalho, garantir o futuro de seus filhos e netos. Agradeço as minhas irmãs
por me apoiarem em todos os momentos que precisei.
Resumo
As animações por computador têm hoje um grande mercado no mundo do entretenimento, pois a qualidade gráfica evolui cada vez mais, alcançando um alto grau de realidade.
Porém essas animações despendem grande tempo de elaboração e de mão-de-obra especializada
e por isso foi elaborado o conceito de ator virtual autônomo, que vem como forma de facilitar
a criação de animações por computador. Para facilitar a implementação do ator, foi proposta
uma ontologia para Smart Objects, que define de que forma essa ferramenta deve ser modelada
para dar suporte à animação. Este trabalho teve como objetivo fazer uma modelagem computacional da ontologia. Essa abordagem buscou uma forma de facilitar a criação dos objetos
para utilização deles na elaboração de cenas animadas. Com isso obteve se a implementação do
modelo proposto, assim como se gerou os primeiros objetos para o projeto D.R.A.M.A.
Palavras-chave: Atores Digitais Autônomos, Ambiente Virtual, Smart Objects, Ontologia
Abstract
The animation done by computer has a big role at entertainment market nowadays,
thus the graphic quality has been developing more and more, achieving a high degree of reality.
However, these animations depends on a specialized work labor and demands a high developing
time for that reason has been developed the concept of virtual autonomous author, that comes
as a way to make the process to create animations easer. As a way to implement this author,
has been proposed an ontology to Smart Objects, that define how this tool has to be molded
to support animation. Thus, it has as aim to do the ontology’s computational modeling. This
strategy comes as a way to make easer the creation of objects to be used at animated scenes
construction. As result it has been obtained the proposed model implementation as well as the
first objects of D.R.A.M.A project.
Keywords: Autonomous Digital Actors, Virtual Environments, Smart Objects
Conteúdo
Lista de Abreviaturas
10
1
Introdução
11
1.1
Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
1.2
Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2
Projeto D.R.A.M.A.
14
3
Revisão Bibliográfica
16
3.1
Digital Storytelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
3.1.1
Narrativa Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
Atores Virtuais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3.2.1
Conceito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3.2.2
A Arte da Atuação Autônoma Digital . . . . . . . . . . . . . . . . . .
18
Requisitos Para o ADA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.3.1
ADA e o Ambiente . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
Técnicas de Animação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
3.4.1
Modelo Hierárquico de Corpo . . . . . . . . . . . . . . . . . . . . . .
22
3.4.2
Estrutura de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
3.4.3
Keyframing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
3.4.4
Cinemática Direta e Inversa . . . . . . . . . . . . . . . . . . . . . . .
25
Smart Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
3.5.1
Representação do Smart Object . . . . . . . . . . . . . . . . . . . . .
28
3.5.2
Informações Fı́sicas Sobre Smart Object . . . . . . . . . . . . . . . . .
28
3.2
3.3
3.4
3.5
4
5
6
3.5.3
Informações Semânticas Sobre Smart Objects . . . . . . . . . . . . . .
29
3.5.4
Exemplo de Uso do Smart Objects . . . . . . . . . . . . . . . . . . . .
30
3.5.5
Smart Objects em cena . . . . . . . . . . . . . . . . . . . . . . . . . .
30
Modelos Computacionais e Ferramentas Utilizadas
31
4.1
Ferramenta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
4.2
Modelo Computacional Proposto . . . . . . . . . . . . . . . . . . . . . . . . .
32
Desenvolvimento
37
5.1
Exemplos de descrição de Smart Objects . . . . . . . . . . . . . . . . . . . . .
37
5.1.1
Cadeira . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
5.1.2
Rádio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
5.1.3
Bola anti-gravitacional . . . . . . . . . . . . . . . . . . . . . . . . . .
39
5.2
Unity3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
5.3
Modelagem Dos Smart Objects . . . . . . . . . . . . . . . . . . . . . . . . . .
41
Conclusão
49
6.1
49
Trabalhos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bibliografia
50
A Anexo
52
Lista de Figuras
2.1
Arquitetura do Projeto D.R.A.M.A. . . . . . . . . . . . . . . . . . . . . . . .
15
3.1
Definição de uma história de animação linear em 4 nı́veis. . . . . . . . . . . .
17
3.2
Esqueleto hierárquico abstrato . . . . . . . . . . . . . . . . . . . . . . . . . .
22
3.3
Hierarquia em árvore do corpo . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.4
Keyframing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
3.5
Movimentação do braço . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.6
Representação do Smart Object . . . . . . . . . . . . . . . . . . . . . . . . . .
28
3.7
Representação da classe Physical . . . . . . . . . . . . . . . . . . . . . . . . .
29
3.8
Representação da classe Semantic . . . . . . . . . . . . . . . . . . . . . . .
29
3.9
Representação da classe (a) Thing (b) Film (c) Set . . . . . . . . . . . . .
30
4.1
Diagrama de classe completo . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
4.2
Classe Thing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
4.3
Classe Film . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
4.4
Classe Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
4.5
Classes Object e SmartObjectInfo . . . . . . . . . . . . . . . . . . . .
34
4.6
Classe Physical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
4.7
Classe NamedAction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
4.8
Classe Semantic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
4.9
Classe Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
4.10 Classe CharacterModifier, Emotion e Trait . . . . . . . . . . . . .
35
4.11 Diagrama de sequência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
5.1
40
Tela Unity3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2
Exemplo de modelo 3D de um cadeira . . . . . . . . . . . . . . . . . . . . . .
41
5.3
Criando uma propriedade . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
5.4
Lista de propriedades já criadas . . . . . . . . . . . . . . . . . . . . . . . . . .
43
5.5
Editando uma propriedade . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
5.6
Ação de sentar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
5.7
Resumo dos passos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
5.8
Saı́da dos dados lido pelo ADA . . . . . . . . . . . . . . . . . . . . . . . . . .
45
5.9
ADA antes de conseguir os dados e a animação . . . . . . . . . . . . . . . . .
46
5.10 ADA apos conseguir executar a animação . . . . . . . . . . . . . . . . . . . .
47
A.1 Classe Tactil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
A.2 Classe Weight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
A.3 Classe HappyFor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
A.4 Classe Joy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
A.5 Classe Odor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
A.6 Classe CharacterModifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
A.7 Classe Temperature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
A.8 Classe Physical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
A.9 Classe Semantic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
A.10 Classe SmartObjectInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
A.11 Classe ADA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
Lista de Quadros
3.1
Exemplo da estrutura de dados das articulações . . . . . . . . . . . . . . . . .
24
10
Lista de Abreviaturas
ADA
Autonomous Digital Actors
D.R.A.M.A.
Developing Rational Agents to Mimic Actors
UML
Unified Modeling Language
RTR
Real-Time Rendering
BR
Batch-Rendering
DOF
Degrees-of-Freedom
11
1 Introdução
Os filmes e animações podem usar ambientes 3D para geração de suas cenas.
Porém, o custo para tal trabalho é muito elevado, pois necessita de muito tempo e mão-de-obra
muito qualificada. Então surgiu a ideia de se usar atores digitais autônomos (ADA), o ADA
é analogia à atores reais, que vêm para automatizar parte desse processo de animação. Para
auxiliar os atores digitais foi elaborado os Smart Objects, objetos que são capazes de informar
sua função, que com essa caracterı́stica facilita a elaboração do ator.
Interactive Digital Storytelling (IDS) é o termo usado para narrativas digitais onde
a audiência pode influenciar no andamento da história (SPIERLING, 2005). Essa capacidade de
participar das escolhas e rumos da história, fez com que o espectador saı́sse dessa posição para
a de participante ativo. (SPIERLING, 2005). Podemos citar como exemplo o jogo The Walking
DeadTM1 , um jogo onde se assiste e participa da história do personagem Lee Everett, que tem
que fazer escolhas certas (feitas pelo jogador) para manter uma pequena órfã fora do alcance
dos “mortos-vivos” ou, como chamado na série walkers,. Cada escolha feita pelo jogador acaba
influenciando em algum momento na história.
Autonomous Digital Actors (ADA) são analogias a um ator real que, de forma
autônoma, atuam de acordo com um script (IURGEL et al., 2010). De acordo com Perlin e
Seidman (2008), os animadores serão capazes de, por meio de ferramentas de autoria, interagir
com a animação de ADA, colaborando com o seu treinamento para o uso de diferentes estilos
de movimentos, linguagem corporal e transmissão de emoções na encenação, na escolha da
melhor atuação e outras habilidades.
O problema de se modelar um ambiente para um IDS, onde um ou mais ADA vão
interagir, é a complexidade inerente ao processo de animação destes em relação aos objetos no
ambiente. Um exemplo de como pode ser complexo animar ADA manipulando objetos, pode
ser dado pela ação de se abrir a porta de um armário: posicionar corretamente o ator em frente
à porta, decidir com que mão pegar o puxador da porta, decidir como mover o braço até o
puxador, decidir como a porta é aberta, se é de correr para o lado ou de puxar para fora, decidir
como mover o braço e o corpo para abrir a porta. Isso mostra que ações comuns feitas por
1
http://www.telltalegames.com/walkingdead
12
humanos, quando analisadas podem se mostrar muito complexas. Para facilitar a programação
dos ADA, são usados Smart Objects.
Os Smart Objects, dentro do IDS, são objetos ou partes do cenário ou ambiente
virtual que contêm diversos tipos de informação. Por ter essa capacidade de interagir com
outros sistemas, eles são chamados de inteligentes. Os Smart Objects, podem ser qualquer
componente do ambiente. Esses objetos podem ter inúmeras informações, que podem ser suas
caracterı́sticas fı́sicas ou semânticas. As caracterı́sticas fı́sicas definem como os objetos são fisicamente: altura, largura, comprimento, textura, etc. Caracterı́sticas semânticas definem como
é a relação desse objeto com o mundo: qual a sua função, quais são suas propriedades, como é
seu comportamento, como os ADA devem interagir com ele (FERNANDES, 2011).
Como os Smart Objects têm a função de guardar as informações de como interagir
com eles, o seu uso torna a programação dos ADA menos complexa, pois não é necessário
implementar nos ADA como animar cada ação, pois esta informação é armazenada nos próprios
Smart Objects.
Uma aplicação de sucesso de uso do conceito de Smart Objects, é o jogo The
SimsTM2 , Electronic Arts Inc., onde os Sims (personagens do jogo) não têm conhecimento de
como interagir com os objetos que fazem parte da casa, bairro, cidade que vivem.
Este trabalho faz parte do projeto D.R.A.M.A. O projeto têm como objetivo construir um sistema que dado um roteiro, cenário, os atores consigam interagir com o ambiente e
entre ele, e assim formar uma cena com nenhuma (ou quase nenhuma) interação humana no
processo. Este trabalho junto com a ontologia dos Smart Objects, fez que a interação entre ator
e objeto se torna se mais simples.
1.1
Objetivo
Por causa da complexidade de se implementar um autônomo que conheça todas
as formas de interação com os objetos, se fez necessário facilitar a implementação do ator .
Portanto, o objetivo desse trabalho foi fazer uma implementação computacional da ontologia
dos Smart Objects, para isso tem que se construir uma série de scripts de programação que
descrevem a funcionalidade de cada objeto e de suas caracterı́sticas.
2
http://thesims.com
13
1.2
Metodologia
A validação da animação apoiada por Smart Objects ocorrerá pela montagem de um
ambiente que o ator consiga interagir sozinho com os objetos. Para verificação do resultado, o
ator digital tem que conseguir obter os dados sobre o objeto, e realizar a cena desejada, ou seja
conseguir obter a animação necessária para cena.
Foi feita a modelagem de três objetos com diferentes discrições e objetivos, o ADA
vai interagir com esses 3 objetos. Deles, o ator tem que mostrar todas as informações pertinentes
ao objeto como: temperatura do objeto, cheiro, a textura ao toque, e a animação.
14
2 Projeto D.R.A.M.A.
O Projeto D.R.A.M.A. (Developing Rational Agents to Mimic Actors), tem como
objetivo especificar um modelo computacional de arquitetura e implementar um protótipo funcional de agentes cognitivos capazes de agir como um ator digital autônomo.
As ferramentas atuais de modelagem e criação de filmes de animação fazem uso da
habilidade de animadores especialmente treinados para produzir filmes. O grau de sofisticação
já alcançado por estas ferramentas forçou a necessidade de treinamento especializado para sua
utilização no desenvolvimento de filmes de animação. Devido a este e outros fatores, o desenvolvimento de filmes deste tipo é caro, demorado e difı́cil de ser realizado.
Neste contexto, atores digitais autônomos são agentes dotados de conhecimentos
provenientes de atores humanos, modelos da psicologia (por exemplo, emoções e personalidade) de tal maneira que, estes possam autonomamente interpretar roteiros e sugerir atuações
(comandos de animação em diversos nı́veis de abstração) para as ações a serem interpretadas
durante o filme e ainda, serem capazes de se adaptar a sugestões do animador, através de um
processo iterativo até que este esteja satisfeito com os resultados produzidos.
Este processo de construção de um personagem autônomo para animação (humano virtual) é baseado em três componentes principais (THALMANN; THALMANN, 2005):
Especificação da aparência fı́sica, Especificação da movimentação espacial, Especificação do
processo cognitivo.
A Figura 2.1 ilustra uma primeira abordagem a ser considerada em termos da arquitetura simplificada do funcionamento do Projeto D.R.A.M.A. A arquitetura tem 5 módulos
superiores que divide o sistema em abordagens de diferentes partes. Smart Objects Repository
é o componente responsável por representar os objetos inteligentes da animação, ele é uma
implementação computacional do Smart Objects Ontology. O módulo Script, abrange a parte
do sistema que manipula o script para que ele sirva de base para gerar a animação pelo resto
do sistema. ADA representa a funcionalidade dos atores dentro do sistema, como: a forma
deles atuarem, tomar decisões, expressar emoções, representar personalidade. O módulo de
ensaio usa regras antes elaboradas para gerar uma Timeline, que posteriormente passará por
uma ferramenta de autoria na qual o usuário pode visualizar o resultado e fazer alterações nos
15
atores (se necessário) em um processo interativo. A ferramenta de animação pegará todos os
dados gerados anteriormente e construirá a animação. As setas demonstram a interação entre
os módulos.
Figura 2.1: Arquitetura do Projeto D.R.A.M.A.
16
3 Revisão Bibliográfica
3.1
Digital Storytelling
A narrativa vem como uma forma de expressão cultural comum, presente em livros,
filmes, músicas e outros. Ela tem como objetivo contar algum fato histórico ou um conto
fictı́cio, tal como uma narrativa linear e a interativa. Para a narrativa ser considerada interativa,
é necessário que o observador possa interagir com a história, ou seja, ele pode escolher que
caminhos história pode tomar durante a sua apresentação. De fato, quando o usuário passa por
uma situação de aprendizado em um jogo de simulação, ele se torna uma entidade dramática,
deixando de ser um “membro da audiência” para se tornar “participante” (SPIERLING, 2005).
Usando de exemplo a comparação feita por Fencott (2001), no Filme Star Wars (LUCAS, 1977),
segue se a história de Luke Skywalker em se tornar um cavaleiro Jedi. Mas no jogo Jedi Knight:
Jedi Academy (RAVENS, 2003), o jogador cria o próprio caminho de se tornar um cavaleiro Jedi.
3.1.1
Narrativa Linear
Esse abordagem para autoria de animações, só permite a criação de uma história
linear, ou seja, ela segue um roteiro linear, onde os fatos são cronologicamente organizados,
não podendo modificar algum fato durante o tempo da exibição da animação.
Uma narrativa linear segue uma ordem de fatos já definidos por um roteiro. Como
apresentado por Spierling (2005), o modo de fazer um esboço para uma animação por computador segue 4 nı́veis de abstração, podendo variar de projeto para projeto, como mostrados na
Figura 3.1. A estrutura é dividida em 4 camadas hierárquicas, que por sua vez são divididas em
3 colunas. Na primeira camada mostra Sinopse, criada pelo autor, que tem a descrição da cena
que gera uma estrutura dramática ou história. Está pode ser manipulada por uma ferramenta de
autoria resultando numa função narrativa, e serve para definir como a história ocorrerá. Base de
cena que tem a a descrição do ambiente e objetos representados dentro dela. O resultado é uma
cena, onde na parte de autoria pode-se manipular os objetos para montar a cena. Com a Função
narrativa e com a cena pronta, temos um script de cena montado. Com a base de diálogos gerase as ações e diálogos que os atores têm dentro da cena, resultando na direção de palco, que irá
17
Figura 3.1: Definição de uma história de animação linear em 4 nı́veis.
Adapatado de(SPIERLING, 2005)
gerir a atuação dos atores. A base de animações tem todas as representações gráficas dos atores
(avatares) e dos objetos, que no nı́vel de autoria pode ser manipulado para trocar a aparência de
algum ator ou objeto. Os dados gerados em todas as camadas são submetidos a um sistema de
animação, que elabora a apresentação para a audiência.
Essa divisão de camadas tem uma equivalência teórica com os seis elementos qualitativos da estrutura dramática de Aristóteles. Mostra que no topo mais alta da abstração da
história, tem o esboço do roteiro geral da drama, que inclui a configuração dos personagem,
as situações de conflito, cenários, e o tempo onde ocorre a narrativa. A seguir o autor divide
a narrativa em cenas, onde cada uma será tratada nos nı́veis inferiores, como as ações, conversas entre personagens e animações. Os primeiros nı́veis de abstração são voltados mais para a
formalização da narrativa/cena, e os nı́veis inferiores são voltados para direção e animação das
cenas. No caso das animações, os nı́veis mais baixos precisam ser realizador por animadores
altamente treinados, pois é necessário definir exatamente o modo como o personagem deve se
mover e comportar (SPIERLING, 2005).
Como o projeto D.R.A.M.A. tem o foco em gerar uma animação e não um jogo ou
sistema interativo, então o projeto seguirá a abordagem de uma narrativa linear, o trabalho vai
dar ênfase na descrição computacional dos objetos a serem usados em cena.
18
3.2
Atores Virtuais
Essa seção aborda os aspectos que definem um ator digital autônomo, as formas de
como ele deve agir para se ter uma atuação com credibilidade, os requisitos de que ele precisa
para ser considerado autônomo.
3.2.1
Conceito
Os atores digitais autônomos, apresentam certo nı́vel de agência. Agência significa
que um personagem virtual tem a habilidade de fazer suas próprias decisões sem (ou com um
mı́nimo de) intervenção humana (SILVA, 2012). Iurgel e Marcos (2007) descrevem que um ator
virtual é uma analogia para um ator real, que de forma autônoma, e interpretação independente
da situação, poder atuar seguindo um script, como parte de uma história.
“A indústria de jogos evoluiu a animação 3D de uma forma que não se necessita
animar o personagem separadamente de uma sequência de animação, os animadores usam
softwares de autoria para ensinar um ADA como aplicar uma variedade de estilos de movimento, linguagem corporal, técnicas emocionais, boas escolhas de atuação, e outros habilidade
de performance comuns.” traduzido de (PERLIN; SEIDMAN, 2008).
3.2.2
A Arte da Atuação Autônoma Digital
Silva (2012) define elementos para a atuação dos ADA, porém, considera apenas
“talking heads”, que são um personagens que têm apenas a capacidade de se expressar através
da cabeça. Além dos elementos levantados pelo autor, são adicionados elementos de atuação de
corpo completo, como andar, mexer braços, expressão corporal, entre outros.
• Usar a face para expressar sentimentos: o ADA tem que usar da expressão facial para
demonstrar seus sentimentos. Desta forma, ele pode emular de um modo mais realista a
cognição humana, interferindo de forma apropriada na atuação dramática. Essa emulação
pode refletir também na forma postural do ADA e sua linguagem corporal, pois para parecer mais real, não se pode ter somente feições faciais, como exemplo algumas animações
antigas onde muitas vezes só se animava o rosto para que o personagem expresse sua
emoção, deixando seu corpo, como um todo, não natural.
19
• Atuar é reagir: toda forma de expressão do ator é uma reação a alguma coisa no ambiente
ou a algo. Existe diversas formas que o ADA pode reagir, como a uma fala, adotando
uma expressão ou um postura diferente, pode se tornar mais agitado caso leve um susto
ou olhar em direção a algum barulho. É natural do humano reagir de alguma forma a uma
informação que venha a ele por alguns de seus sentidos. A forma de reagir tem que ser
condizente com a cena, usando como exemplo uma explosão, se ela for perto do ADA,
ele tem que reagir de forma mais intensa, porém se for a uma distância grande, ele pode
apenas olhar para o local de onde o som vier.
• Conheça os objetivos do personagem: conhecendo os objetivos do personagem, pode-se
determinar de forma mais mais apropriada a reação para cada tipo de situação. Se deixar
essas escolhas para serem feitas de forma momentânea e sem o devido planejamento,
pode se tornar pouco convincente ou atraente para a audiência.
• Os personagens devem se mexer continuamente: o ADA para se tornar mais “vivo”,
ele deve estar fazendo pequenos movimentos, sendo que nenhuma pessoa consegue ficar
totalmente parada. Quando uma pessoa está parada pensando, lendo, observando algo,
ela sempre apresentará mais alguma expressão corporal, como piscar os olhos, mexer os
lábios, pequenas batidas do pé no chão, respiração. A presença desses pequenos movimentos pode trazer à audiência uma sensação de que o personagem ali representado tenha
uma representação mais natural.
• Toda ação pode ser representada por um movimento: uma pessoa normalmente tende
a ter reações expressivas de várias origens, uma delas pode ser a própria mente. O ADA
pode passar mais expressividade para a audiência, se quando ele estiver realizando ações
como pensar, raciocinar, ou seja uma ação mental; ele pode fazer expressões faciais que
demonstrem isso, como uma feição mais fechada quando ele estiver pensando em algo
mais sério, uma face alegre quando estiver lembrando de algo feliz. Como um exemplo
para o corpo, se ele estiver preocupado com algo, então o ADA tomaria uma postura
mais tensa, talvez com os braços cruzados, mãos inquietas, se sentado, balançar uma das
pernas. Esse detalhe representa a forte influência da mente na expressividade humana.
• Empatia é o cativador da audiência: a empatia é a forma de como o público se relaciona
como o personagem interpretado. Se feito de forma correta, é possı́vel conseguir uma
reação mais sentimental do público com o ADA.
20
• Interação necessita de negociação: a capacidade de demonstrar reações emocionais
convincentes é o elemento mais importante que o ADA possa apresentar. Como o ator virtual pode ter dificuldade de entender a complexidade das emoções humanas, a interação
direta do ator com uma pessoa pode fazer esta perder o interesse na interação com o ator.
Dentro do sistema onde dois ou mais atores digitais interagem, não ocorre esse problema,
pois as emoções e reações podem ser pré definidas no roteiro da cena.
3.3
Requisitos Para o ADA
Silva (2012) em seu trabalho sobre ADA criou uma lista de requisitos para o qual
um agente virtual se torne um ator digital autônomo.
• Interpretação Autônoma de scripts: o ADA tem que ter a capacidade de obter
informações de um script, pois por meio destes ele saberá a forma correta de atuação.
A obtenção de dados pode ser dividida em duas partes: primeiro o ator obtém suas linhas
de diálogo, e as ações que definem a cena; a seguir, a interpretação dessas informações
faz com que o ADA seja capaz de conhecer como e quando ele deve interagir com um
determinado objeto, com a sua posição na cena, ele pode determinar se ele vai precisar se
até o local de uma determinada ação. Pela combinação dessa interpretação com as formas
de atuações previamente determinadas, o ADA constrói seu personagem;
• Saber atuar: o ator deve conhecer várias formas de ação expressiva. Ele deve saber agir
como personagem para o qual foi definido, qual o sentido de uma situação particular e
como deve interpretar ela. Para esse caso ele pode usar técnicas de atuação como emoções
e lembrança de situações anteriores, podem ser usadas para representar a atuação.
• Atuação dramática: o ADA é uma analogia de um ator humano, por isso ele deve ser
capaz de atuar expressivamente. Para isso, é usado técnicas de animação para emular essa
capacidade, como expressões faciais, postura corporal e entonação de voz.
3.3.1
ADA e o Ambiente
Os estudos realizados por Silva (2012), que foca na atuação de atores por meio
apenas das emoções expressas pela cabeça, são base para o resto do estudo. Perlin e Seidman
21
(2008) discutem sobre a criação de ADA. Em seu trabalho são verificados quais fundamentos
deve-se ter para criar uma ferramenta de autoria, que junto com o uso dos Smart Objects servirá
como base para o sistema de autoria do projeto D.R.A.M.A.
• Movimentação: uma ferramenta de autoria para animação de um ADA, serve para que o
animador consiga ajustar a forma de como um ator virtual se mexe e movimenta. Assim
possibilita a criação de movimentos próprios para cada ator, possibilitando dar uma identidade única ao personagem que o ADA deve interpretar. Perlin e Seidman (2008) citam
que John Wayne, Marilyn Monroe e Shrek, têm formas diferentes de se movimentarem,
assim essa ferramenta deve auxiliar na caracterização dessas expressões.
• Andar: o ADA deve ser capaz de se orientar e locomover em um ambiente com objetos e
caminhos de difı́cil acesso. Analisando o ambiente ele determina um caminho para poder
atingir seus objetivos.
22
3.4
Técnicas de Animação
Nesse capı́tulo são apresentadas algumas técnicas computacionais de modelagem
e animação. Para esse trabalho tem-se o foco em animação de personagens humanos, então é
apresentada a estrutura anatômica básica de um corpo humano para uso na animação.
3.4.1
Modelo Hierárquico de Corpo
Figura 3.2: Esqueleto hierárquico abstrato
Fonte: (PARENT, 2002)
Na Figura 3.2.é apresentado o formato hierárquico do corpo, onde cada junção de
retas representa articulações (juntas) e as retas representam os ossos. A articulação rotulada
como root, divide o corpo em duas partes: corpo superior e corpo inferior. Essa divisão é
representada de forma mais clara na Figura 3.3, onde a raiz (quadril) tem corpo superior e
corpo inferior como filhos.
Ossos e juntas
A movimentação de uma parte do corpo é pode ser demonstrada pelo ângulo entre
dois ossos. Entre esse dois ossos se tem uma junta. O corpo humano é composto por muitos ossos e juntas . Para uma animação mais simples, alguns grupos de ossos podem ser considerados
23
Figura 3.3: Hierarquia em árvore do corpo
Fonte: autor
como um apenas. Cada junta do corpo tem um certo grau de liberdade de movimento ou DOF
(Degrees-of-Freedom). Roberts (2007) descreve 6 tipos de juntas:
• Planar: são juntas planas ou levemente curvadas que permitem poucos movimentos,
podendo ter um ou mais DOFs. Como exemplo tem-se usar o punho ou do tornozelo;
• Eixo: são juntas que giram em volta de seu eixo tendo um DOF. A junta entre o punho
e os ossos ulna e rádio é um exemplo. Essa junta dá capacidade do punho girar, que
combinado com a junta planar gerá um movimento mais elaborado;
• Dobradiça: são juntas que têm apenas um DOF. O movimento dessa junta permite a
extensão e retração de um membro como o braço. Como exemplo desse tipo de junta
tem-se: joelhos, cotovelos, dedos das mãos e pés;
• Bola e Encaixe: esse tipo de junta permite movimentos circulares em muitas direções,
tendo três DOFs. Esse tipo de articulação é encontrada no ombro e na junta do quadril
com o fêmur;
• Sela: é uma combinação aproximada das articulações em dobradiça e bola, permite uma
certa quantidade de movimentos laterais e tem 2 DOFs. Essa articulação pode ser encontrada no dedão da mão;
• Condyloid: essa junta se assemelha à junta sela, porém ela tem movimentos mais circulares, ela tem dois DOFs. Essa articulação pode ser encontrada na ligação entre os dedos
e a mão (excluindo o dedão).
A representação do corpo humano em uma animação é dada pela combinação dos
ossos e juntas. Quanto mais juntas e DOFs combinados, mais capacidade de expressão o ator
24
vai ter para atuar em cena. O modelo de esqueleto usado nesse trabalho vai ter 15 juntas ou
articulações:
• Braços: 3 articulações:
Ombro duas vezes: tipo bola e Encaixe;
Cotovelo duas vezes: tipo dobradiça;
Punho: combinação do tipo planar e eixo.
• Pernas: 3 articulações:
Fêmur com Quadril duas vezes: tipo bola e encaixe;
Joelho duas vezes: tipo dobradiça;
Tornozelo duas vezes: combinação do tipo planar e eixo.
• Corpo superior:
Coluna Inferior com o Quadril: com 3 DOFs;
Coluna Inferior com a Superior: com 3 DOFs
Coluna com a Cabeça: com 3 DOFs.
A coluna foi divida em duas partes para que se dê uma mobilidade maior na parte
superior do corpo, assim melhorando a expressividade do ator.
3.4.2
Estrutura de dados
Uma das formas de se representar as articulações é por uma tabela que guarda os
graus entre os ossos que formam aquela articulação e identificador que a referência . O quantidade de graus de cada articulação é igual ao número de DOFs dela, como mostrado no quadro
3.1
Quadro 3.1: Exemplo da estrutura de dados das articulações
Articulações
1
αx
2
βx
3
βy
γx
γy
γz
25
Como se pode ver no quadro 3.1, a articulação 1 tem um DOF, a 2 dois DOFs e a
3 três DOFs. Uma animação é feita por um conjunto dessas tabelas organizadas cronologicamente, podendo ter diferentes graus atribuidos para cada articulação em cada momento. Então
uma ferramenta de renderização, por meio de alguma técnica, irá gerar a animação.
3.4.3
Keyframing
Figura 3.4: Keyframing
Fonte: (RODRIGUEZ, 2012)
Essa técnica dispõe um objeto em diferentes estados e momentos (keyframes), então
um software irá interpolar entre os Keyframes (PARENT, 2002). Esses estados são parâmetros
que podem ser cores, posições, forma entre outros. A interpolação cria a animação entre os
dois momentos, passando de um estado para outro. Por exemplo uma bola, que está visı́vel no
momento 0, e no momento 10 ela está invisı́vel, a interpolação faz com que os momentos entre
0 e 10 tenham mudanças graduais deixando a bola translúcida a cada passo, criando o efeito de
desaparecer.
3.4.4
Cinemática Direta e Inversa
Cinemática é o ramo da fı́sica que estuda o movimento; explorando os seus con-
ceitos mais básicos como posição velocidade e aceleração. Em animação são abordadas duas
formas de cinemática: direta e inversa.
26
Cinemática Direta
A forma direta começa pelo primeiro nó a ser modificado, então ele irá passar por
todos os nós filhos usando o algoritmo de busca em profundidade (DFS) (esse algoritmo começa
por um nó e desce por um dos filhos dele, repetindo esse processo até chegar a um nó folha
(fim), então ele volta até achar um nó filho não visitado de um nó que ele já tenha passado.
repetindo esses passos até que todos os nós dessa subárvore tenha sido visitados.). A cada
nó visitado ele copia para este as transformações (mudança de ângulo entre dois ossos) dos
nós anteriormente visitados e passa a transformação dele ao seguinte, até chegar no ú,ltimo nó
(articulação) (PARENT, 2002).
Figura 3.5: Movimentação do braço
Fonte: autor
Usando com exemplo a movimentação do braço, na cinemática direta, para flexioná-lo, primeiro se move o nó mais acima na transformação, no caso da figura 3.5, primeiro
movimenta se o antebraço em um ângulo α, aplicando essa transformação para os nós filhos,
depois aplica de o ângulo β para o braço aplicando também a mão, por fim aplica se o ângulo
γ para mão. Nota-se que nesse caso, a transformação respeita a ordem hierárquica direta para
fazer a transformação .
27
Cinemática Inversa
Na cinemática inversa, o usuário coloca os nós (juntas, articulações) do objeto em
uma posição inicial, em outro momento da linha de tempo da ferramenta de animação, ele
coloca as articulações em outra posição. O sistema interpola entre os dois momentos, criando
a animação de movimento. O problema é que uma transformação pode ter 0, 1 ou n soluções,
neste último caso pode-se ficar muito ineficiente o método aplicado a n articulações.
Aplica-se esse método para movimentar o braço. O método irá interpolar as
articulações até conseguir deixá-las nas posições finais. O problema desse método, é que ele
pode começar a interpolar por qualquer uma das articulações, ocasionando as n soluções.
Considerações Sobre Animação:
Foi importante analisar as técnicas de animação, para que pode-se compreender a
complexidade da construção de uma animação. Pois, como descrito, fazer uma animação de
quadro em quadro, deixa o trabalho demorado e complexo. O projeto D.R.A.M.A. tem como
objetivo automatizar esse processo, assim diminuindo essa complexidade.
28
3.5
Smart Objects
No mundo real os humanos criam e dão funções para diferentes objetos. Para alguns
o uso se torna quase natural, uma criança aprende a usar seu martelo de brinquedo apenas por
observar seu pai a fazer as manutenções dentro de casa. Porém, para outros objetos pode não
ser tão simples.
Devido a essa complexidade está sendo proposto o uso dos Smart Objects para substituir, em boa parte a função do animador, no caso de objetos com os quais o ADA deva interagir.
Tais smart objtects têm a capacidade de informar sua função semântica e caracterı́sticas fı́sicas
no ambiente que ele está inserido. Por essa capacidade de guardar informações sobre si, esses
objetos são ditos inteligentes, pois eles se tornam capazes de interagir com outros sistemas de
uma formar muito particular (FERNANDES, 2011).
3.5.1
Representação do Smart Object
Este trabalho realiza uma modelagem computacional dos Smart Objects. Fernandes
(2011) em seu trabalho propôs uma ontologia para construção de Smart Objects. Nessa ontologia, a representação dos objetos foi dividida em dois tipos: semânticas e fı́sicas (ver: Figura
3.6).
Figura 3.6: Representação do Smart Object
Fonte: (FERNANDES, 2011)
3.5.2
Informações Fı́sicas Sobre Smart Object
A ontologia elaborada levou em consideração os 5 sentidos do ser humano: tato,
olfato, audição, paladar e visão. Essas informações podem interferir na forma como o ADA vai
interagir com o objeto. Por exemplo, para um saco de lixo fétido, o ADA pode ter uma reação
de nojo, diferente de quando ele pegar um outro saco contendo apenas papel limpo.
Além das informações sensoriais, os Smart Objects apresentam informações fı́sicas
como: tamanho, posição e outros (ver: Figura 3.7).
29
A classe Physical (classe é uma descrição dos atributos e serviços comuns a um
grupo de objtos (BEZERRA, 2006)) mostra as definições fı́sicas propostas por Fernandes (2011)
para um Smart Objects.
A classe Physical possui duas propriedades pertinentes a esse trabalho: Size e
Position. Essas classes definem as dimensões e a posição do objeto. Elas ajudam o ADA
na tomada de decisões. Utilizando o exemplo do carrinho de supermercado, cada objeto terá
seus atributos fı́sicos representados na classe Physical, então para o ADA conseguir transpor
cada obstáculo, ele precisa obter as informações informações de dimensão e posição de cada
objeto, e calcular se o carrinho pode passar pelo espaço livre ao redor cada objeto.
Figura 3.7: Representação da classe Physical
Fonte: (FERNANDES, 2011)
3.5.3
Informações Semânticas Sobre Smart Objects
Nessa classe estão definidas as informações semânticas do objeto, que representam
quais interações o objeto pode ter com o ator. Em CharacterModifier temos os traços
emocionais e de personalidade que podem influenciar o ADA. Animation vai conter todos os
tipos de animações projetada para aquele objeto (ver: Figura 3.8).
Figura 3.8: Representação da classe Semantic
Fonte: (FERNANDES, 2011)
Essa informações são aquelas que vão interagir de forma direta com o ADA, pois
são elas que informam ao ator a forma de animação que ele deve adotar. Além da animação, se
30
tem as informações emocionais e de personalidade, que auxiliará nas tomadas de decisões do
ator.
A classe Semantic (ver: Figura 3.8) tem ligação direta com a subclasse de
SmartObjectInfo chamada NamedAction, pois esta tem o rótulos de todas as ações que
podem ser tomadas pelo ADA, esses rótulos estão diretamente ligados a alguma animação/ação
descrita nas subclasses Semantic.
3.5.4
Exemplo de Uso do Smart Objects
Como exemplo para uma aplicação de Smart Objects um ADA em uma cena que ele
tem que passar com um carrinho de supermercado por um caminho cheio de obstáculos (caixas
espalhadas pelo corredor). Primeiramente o ator não saberá como interagir com o carrinho,
após obter as informações semânticas do carrinho ele pode interagir com o objeto, como e onde
segurar ele, como empurrar, etc. Porém, não basta somente isso, para passar pelos obstáculos o
agente precisa saber se o carrinho passa entre as caixas e se existe outros caminhos que podem
ser tomados qual escolha deve ser feita. Para isso ele recorre às informações fı́sicas do objeto,
como largura e comprimento. Depois de ter todas as informações, o ator poderá decidir como
passar por todas as caixas, se for possı́vel.
3.5.5
Smart Objects em cena
Figura 3.9: Representação da classe (a) Thing (b) Film (c) Set
Fonte: (FERNANDES, 2011)
A ontologia descreve como deve ser elaborado um filme. Como subclasses de
Thing (ver: Figura 3.9) temos as classes Film e SmartObjectInfo. Dentro de Film
tem uma subclasse chamada Set, esta por sua vez, terá a subclasse Object. Está ultima
classe contém uma lista de objetos que estão em cena, é essa classe que o ADA vai acessar
para saber quais objetos ele pode interagir em cena. A classe SmartObjectInfo tem apenas as
descrições dos objetos que estão na classe Object.
31
4 Modelos Computacionais e Ferramentas
Utilizadas
Nesse capı́tulo é abordado os tipos de ferramentes que podem ser usadas, assim
como a escolha da ferramenta que se encaixa nessa fase do projeto. Também é exposta a forma
de como foi montado a modelagem computacional que demonstra o funcionamento do smart
objects dentro do projeto..
4.1
Ferramenta
Primeiramente foi levantado qual tipo de ferramenta de renderização deveria se usar.
Existem dois tipos de ferramentas de renderização, baseado em real-time rendering e em batch
rendering.
Real-time rendering (RTR), são técnicas de renderização de gráficos em tempo real.
Essa abordagem é usada em engines de jogos, em aplicativos 3D que tenham uma interatividade
com o usuário. Atualmente os RTR evoluı́ram de tal forma que os gráficos por elas gerados,
estão se tornando cada vez mais realistas. Porém, isso faz com que o hardware tenha que evoluir
para suportar a demanda do processamento gráfico.
Batch rendering (BR) são técnicas de renderização que geram animações computacionais por pacotes. Esses pacotes são animações inteiras que foram animados anteriormente
e que ainda precisam ser renderizados. Por ele não precisar mostrar os resultados em tempo
real não existe a necessidade de que o processamento seja tão rápido. Por isso, pode se criar
animações com maior qualidade gráfica.
Para esse projeto, foi escolhida a ferramenta Unity3DTM (Unity, 2013), pois ela é
uma ferramenta de edição de jogos que trás diversos recursos que facilitam a implementação
dos exemplos para esse trabalho. Um dos recursos que facilita a implementação do trabalho é a
capacidade de se atribuir scripts com maior facilidade aos objetos usados no projeto.
32
4.2
Modelo Computacional Proposto
A figura 4.1 mostra o modelo como um todo. Esse diagrama se baseia na ontologia
proposta por Fernandes (2011). Cada parte do modelo é devidamente explicada nesse capı́tulo.
Figura 4.1: Diagrama de classe completo
Seguindo o modelo proposto pela ontologia para Smart Objects, foi elaborado um
diagrama de classe e um de sequência (ver Figura:4.11). O diagrama de classe demonstrara as
33
classes pertinentes a esse trabalho. É demonstrado um caso para a classe Physical e um para
as classes Emotion e Trait. Para representar o modelo computacional, foi escolhido sistema
formal UML (Unified Modeling Language), com base em orientação de objetos.
Figura 4.2: Classe Thing
Fonte: autor
A classe Thing é a classe principal do sistema, ela é a porta de comunicação com
todas as outras aplicações do projeto D.R.A.M.A. Nela é instanciada uma classe Film e uma
lista de SmartObjectInfo.
Figura 4.3: Classe Film
Fonte: autor
A classe Film é responsavel por guardar as inforções sobre o filme ou cena a ser
realizado. Ela instancia as classes Script, Set (lista de objetos que guardam o elenco da
animação), e Set. As duas primeiras classes não serão abordados por esse trabalho, pois escapa
do escopo do trabalho.
Figura 4.4: Classe Set
Fonte: autor
A classe Set tem função de guardar informações sobre os itens que formam o
ambiente onde a animação irá ocorrer. Nela é instanciada uma lista de Object, que guarda o
conjunto de itens que compõem o cenário. A classe WorldAttribute é responsável pelas
as informações pertinentes ao mundo.
A classe Object é uma derivação da classe SmartObjectInfo, essa abordagem é tomada para caso te se ter mais de um objeto derivado da classe SmartObjectInfo
34
Figura 4.5: Classes Object e SmartObjectInfo
Fonte: autor
e esta classe for modificada, todas as classe derivadas dela irão sofrer a mesma alteração. A
classe SmartObjectInfo é responsável pelas informações pertinentes aos objetos que ela
pode representar. Ela instancia uma lista de Physical e uma de Semantic.
Figura 4.6: Classe Physical
Fonte: autor
A classe Physical guarda as informações das propriedades fı́sicas do Smart Objects, essas propriedades são guardadas em uma Lista dinâmica, onde ela vai mantida somente
as propriedades que são inerentes ao objeto que vai ser representado. Essa classe pode conter diferentes tipo de propriedades fı́sicas do objeto, como demonstrado temos a classe com a
propriedade Temperature atribuı́do à ela.
Figura 4.7: Classe NamedAction
Fonte: autor
Em NamedAction é mantido os nomes de todas as ações que são possı́veis de
serem realizados em um objeto, ela manterá uma lista dinâmica de Strings para essa tarefa.
Figura 4.8: Classe Semantic
Fonte: autor
A classe Semantic tem como função manter a lista de ações que existem para um
determinado objeto.
35
Figura 4.9: Classe Action
Fonte: autor
A classe Action representa uma ação que pode ser realizado sobre um objeto, nela
tem uma String que descreve a ação. Animation é a instância que guarda a animação da ação.
mod char mantém uma lista de modificadores do personagem.
A classe CharacterModifier demonstra os atributos do objeto que podem modificar a reação emocional do personagem de alguma forma. A classe apresenta duas estruturas,
uma para Emotion e outra para Trait.
Emotion é uma classe que pode modificar a emoção que o ator digital sente pelo
objeto. Nela foi exemplificado a emoção adminiração (admiration), que é representado por um
valor booleano dizendo se ela causa admiração no personagem ou não.
Figura 4.10: Classe CharacterModifier, Emotion e Trait
Fonte: autor
Trait pode ativar algum traço psicológico do ator, no caso apresentado é a benevolência, nisso o ator pode ter atos mais benevolentes com o objeto.
O ator Digital autônomo terá uma instância da classe Set, pois é nela que ele pode
conseguir todas as informações necessárias para atuar.
36
Figura 4.11: Diagrama de sequência
O diagrama de sequência mostra os passos de comunicação necessários para que o
agente obtenha as informações dos objetos com o qual vai atuar. Considerando uma cena que
o ADA tenha que sentar em uma cadeira: como primeira ação o ADA faz uma requisição a
classe Set da lista de nomes dos objetos que estão listadas nela. Com a lista, o ator verifica se
o objeto com o qual ele quer interagir existe, caso positivo, ele retorna o nome do objeto para
classe, esta por sua vez, busca no objeto requisitado as informações contidas nele, então entrega
essas informações ao ator. Com posse das informações o ADA pode decidir de que forma ele
deve interagir com a cadeira. Ele pode decidir se deve ou não sentar nela, pois ela pode ser uma
cadeira de criança e o ator é adulto, ele pode achar ela fria e então escolher outra cadeira, ou
simplesmente não gostar da cor dela.
37
5 Desenvolvimento
Este capı́tulo apresenta exemplos de implementação da estrutura de criação dos
Smart Objects em sua concepção e depois dentro da ferramenta Unity3DTM (Unity, 2013). Será
-mostrado o passo-a-passo para criação dos objetos com scripts em C#. Esses scripts são o fator
essencial para a dinâmica de comunicação dos Smart Objects com os atores virtuais.
5.1
Exemplos de descrição de Smart Objects
É demonstrado a elaboração de 3 exemplos de objetos com comportamentos dife-
rentes entre si. O objetivo é demonstrar que os objetos podem ter diferentes formas representativas para com o ADA. Alguns tendem a afetar mais as emoções, e ou os traços de personalidade
do ator virtual, e outros influenciam mais os sentidos fı́sicos dele. Não será abordado a parte da
interação da personalidade com o ADA, visto que a parte das caracterı́sticas de personalidades
do projeto D.R.A.M.A. ainda não foram definidos.
A ideia é descrever as caracterı́sticas básicas como: temperatura, textura ao toque,
odor, peso e outros. Esses atributos são inerentes aos atributos fı́sicos do objeto, a maioria
deles são de fácil percepção por qualquer pessoa. Já a descrição dos atributos como, “Feliz
por”, alegrar-se, medo e etc, são caracterı́sticas mais sensı́veis á interpretação da pessoa que
esta analisando o objeto. Pois a analise desse atributos estão suscetı́veis ao lado emocional.
5.1.1
Cadeira
A cadeira é um objeto de uso comum, assim, é fácil modelar todas as caracterı́sticas
dela, tanto as fı́sicas, e as de interação emocional. Levando em consideração uma cadeira
normal de madeira e suas caracterı́sticas simples, que facilmente pode ser percebida por uma
pessoa.
As caracterı́sticas pertinentes a classe Physical a serem abordas:
• Physics:
Temperature:
38
TemperatureIntensity: 28;
TemperatureScale: Celsius.
Weight:
WeightIntensity: 3600;
WeightScale: Grams.
• Tactile:
Rough;
Dry.
• Odor:
Floral.
As caracterı́stica pertinentes a classe Emotion que descrevem a cadeira:
• Emotion:
HappyFor: Rest.
Joy.
Como foi mostrado, facilmente consegue-se definir caracterı́sticas como a temperatura do objeto, seu peso, a textura que ele tem ao ser tocado e o odor proveniente da madeira.
Esses dados são uteis para ajudar na interação do ator virtual com o objeto, pois com eles, ele
pode interpretar melhor à cena em que se encontra. Já os atributos emocionais podem variar,
dependendo da pessoa que esta elaborando o objeto.
5.1.2
Rádio
O rádio é um objeto que com suas músicas afeta mais as emoções humanas, assim,
este é um bom exemplo para demonstrar a modelagem para Smart Objects visando a interação
emocional do ator.
Primeiro verifica-se as propriedades fı́sicas do rádio, que agora tem caracterı́sticas
mais voltadas para a parte elétrica:
39
• Physics:
Sound:
SoundGenerator: UsingSound;
Eletrical:
Voltage: 220;
• Tactile:
Rough;
Dry.
Suponha-se que o rádio é de gosto unanime entre os atores virtuais autônomos, as
caracterı́sticas a serem configuradas, seriam aquelas que provocam algum fator positivo nas
emoções do ator. Algumas emoções são listadas abaixo como propriedades do objeto.
• Emotion:
HappyFor: Dance;
Joy;
Satisfation.
5.1.3
Bola anti-gravitacional
Agora fugindo um pouco da realidade, cria-se uma bola anti-gravitacional como
exemplo de objeto que pode não existir na realidade humana, mas que dentro do contexto de
uma história, tem um proposito e função. O objetivo desse item inventado, é mostrar que podese modelar as caracterı́sticas de um objeto mesmo que este não exista, assim aumentando a
capacidade de ampliação das opções de criação de uma narrativa. O exemplo da bola antigravitacional, tem como função desativar a gravidade uma certa área em volta dela.
A escolha das propriedades fı́sicas para esse objeto fica à critério do animador, pois
sendo um objeto fictı́cio as propriedades podem ser extrapoladas, inventadas. Assim dando a
liberdade necessária para se criar todo um universo ficcional.
• Physics:
Eletrical:
40
Voltage: 1300000;
Conductivity: 100.
• Tactile:
Hot;
Slippery;
Dry.
• Magnetic
CuriePoint: 7000;
Diamagnetism false;
5.2
Unity3D
Seguindo a definição anterior, a ferramenta usada para implementação desse traba-
lho foi Unity3DTM (Unity, 2013). Nessa seção é feita uma leve abordagem sobre a interface da
ferramenta e a descrição das funcionalidades de algumas partes dela.
Figura 5.1: Tela Unity3D
Fonte: Autor
41
Na Figura:5.1 temos enumerado algumas partes da interface gráfica, cada uma tem
sua função especı́fica dentro da elaboração de uma cena da animação ou do jogo. No número
1: Temos a hierarquia de objetos dentro da cena, todos os objetos nessa parte estão presentes
na cena, que são editados na área 2. Nessa parte podemos adicionar, editar, e mover os objetos
dentro da cena. A área 3, representa o foco de captura da câmera em cena. O local 4 mostra
a hierarquia de pastas e objetos, que podem ser chamados de Assets, e todos os scripts usados
para esse projeto. Na parte 5 temos acesso aos itens que tem dentro das pastas. Na parte 6 temos
o Inspector. Quando selecionamos um objeto ou scripts aparece no Inspector as informações
sobre o item selecionado. No caso dos objetos, é possı́vel editar as informações do objeto, como
tamanho, rotação, localização na cena, e acrescentar mais informações e propriedades.
5.3
Modelagem Dos Smart Objects
Para cada objeto, é feita a construção dele seguindo as caracterı́sticas já levantadas.
Para primeira parte de como montar os Smart Objects, é usado a cadeira de madeira. O primeiro
passo sugerido é escolher o modelo do objeto. Nesse exemplo foi usado o modelo da Figura:
5.2.
Figura 5.2: Exemplo de modelo 3D de um cadeira
Fonte: Autor
42
Depois de escolhido o modelo do objeto, deve-se construir todas as caracterı́sticas
fı́sicas e semânticas dele. Essas caracterı́sticas são scripts em C# que contém os dados referentes a determinado atributo do objeto. Todos os atributos fı́sicos são implementações da
classe abstrata Physical (Anexo:A.8). Os atributos emocionais são implementações da classe
CharacterModifier (Anexo:A.6). A ideia de usar classes abstratas vem para auxiliar no
agrupamento das informações semelhantes dentro de um mesmo vetor, ajudando no envio desses dados ao ADA.
Primeiramente cria-se um objeto vazio dentro da área de hierarquia de objetos (Figura: 5.3). Renomeia-se esse objeto para um nome que define a função da informação dentro
Smart Objects. Depois é atribuı́do um script de caracterı́stica fı́sica ou semântica a esse objeto.
Assim podemos arrastar ele para dentro das pastas do projeto, afim de manter uma cópia dele
para futuro uso. Deve-se ser feito isso para todos os atributos fı́sicos e semânticos do objeto ao
qual se está modelando.
Figura 5.3: Criando uma propriedade
Fonte: autor
Na Figura:5.4 são mostrados propriedades já criadas para cadeira. Os itens com
ı́cone brancos são os scripts que definem as propriedades para o objeto. Para conseguir usar
esses scripts, é necessário instanciar um objeto deles, por isso que se deve criar um objeto vazio
dentro do sistema e atribuir o script. Assim a ferramenta instancia o script para aquele objeto
vazio. Esses objetos são representados pelos ı́cones azuis. Cada ı́cone desses está instanciado
um objeto do script.
43
Figura 5.4: Lista de propriedades já criadas
Fonte: Autor
Selecionando um dos objetos já com script anexado, podemos editar os dados do
script usando o Inspector, nele as propriedades públicas do objetos são acessı́veis pela interface,
por meio de checkbox, lista de itens, e área de texto. Como mostrado na Figura: 5.5. O atributo
Temperature Intensity é editável por um campo de texto. Já o atributo Scale (Anexo:A.7) é um
atributo que se escolhe dentro de uma lista de itens.
Figura 5.5: Editando uma propriedade
Fonte: Autor
Deve-se fazer isso para todos os atributos dos scripts que foram criados. Para modificar um atributo depois de todo o Smart Objects estar pronto, basta selecionar ele na arvore de
dados do projeto e modificar ele no Inspector, assim todos objetos que receberam um mesmo
atributo instanciado, terão seus dados modificados automaticamente.
44
A animação é atribuı́da nas classes derivadas da classe Semantic (Anexo:A.9),
pois é essa classe que define a animação, o nome dela, e os atributos semânticos dessa animação.
Como mostrado na Figura:5.6, O objeto AcaoSentar, tem-se dois aspectos semânticos
atribuı́dos a aquela ação, assim como a animação da ação.
Figura 5.6: Ação de sentar
Fonte: Autor
A classe SmartObjectInfo (Anexo:A.10) é montado da mesma forma. Mas
nela contém uma instância de Semantic que pode ter um conjunto de classes derivadas de
CharacterModifier, e um conjunto de informações derivadas de Physical, que para
cadeira é composta por 2 instâncias de Tactil (Anexo:A.1), uma de Weight (Anexo:A.2) e
Temperature (Anexo:A.7).
Figura 5.7: Resumo dos passos
Fonte: Autor
A Figura:5.7, mostra resumidamente os passos para se construir o Smart Objects.
Para o ADA conseguir acessar os dados, é construı́do um caixa de colisão ao redor
do ator e do objeto. Essa caixa é usada para facilitar a detecção da colisão. Pois só é necessário
verificar se algum ponto de uma caixa está dentro da outra caixa (PARENT, 2002). A classe ADA
tem os passos necessários para detectar a colisão. Na linha 5 do código, se tem a instrução:
void OnTriggerEnter(Collider col) que detecta a colisão com o outro objeto. A
45
variável col é uma referência ao objeto com o qual o ADA teve a colisão, a partir dessa referencia o ator consegue acessar os dados do objeto. Essa funcionalidade fez com que a comunicação
fosse abreviada só entre o ator e o objeto, aonde o ator se comunica apenas com o objeto com o
qual ele colidiu. Então para os exemplos implementados com a atual ferramenta, é usado essa
forma de comunicação mais simples.
A construção do Algoritmo e dos objetos tem como finalidade fazer o ator digital
autônomo conseguir acessar os dados do objeto. Então para o ADA foi construı́do um algoritmo
(Anexo:A.11) que possibilitava desempacotar as classes para a obtenção dos dados. O primeiro
objetivo é conseguir obter os dados do Smart Objetcs, a Figura:5.8 mostra a saı́da de dados
a partir do ADA. Esses dados são obtidos acessando cada parte instanciada dentro da classe
SmartObjetcInfo.
Figura 5.8: Saı́da dos dados lido pelo ADA
Fonte: Autor
A Figura:5.8 mostra que o ADA conseguiu acessar os dados de temperatura, tato,
odor e emocional.
46
A animação é outro dado a ser acessado no objeto, essa parte é importante pois
possibilita manter suas animações encapsuladas. A Figura:5.9 mostra o ADA ainda em pé.
Nesse momento ele ainda não obteve os dados do objeto e a animação.
Figura 5.9: ADA antes de conseguir os dados e a animação
Fonte: Autor
47
Na Figura:5.10 Podemos ver o ADA sentado na cadeira após conseguir obter os
dados da animação, nesse mesmos momento é mostrado na tela as saı́das de dados do objeto
(Figura:5.8).
Figura 5.10: ADA apos conseguir executar a animação
Fonte: Autor
Com a ferramenta Unity3DTM (Unity, 2013), consegue-se salvar os objetos criados
em arquivos chamados Assets (Unity, 2013). Esses arquivos podem ser guardados dentro de
uma biblioteca, ou um banco de dados. O conjunto desses arquivos pode ser reusado para
construir outras animações. Isso se caracteriza como um Banco de objetos.
A interação que o ADA vai fazer com o objeto, como por exemplo sentar, vai ser
sempre igual. Pois, a animação é estática, pois esta é a mesma independente do ator que for usar
a cadeira. Pode-se criar diferentes animações de sentar, porém, o objeto tem que guardar todas
essas animações. Uma alternativa para esse limitação, seria o uso de animações procedurais.
Esse tipo de animação é o ADA que vai decidir a forma de se sentar. Dessa forma, cada ator
digital autônomo pode decidir agir de forma diferente dos outros.
Os scripts montados para esse trabalho são limitados somente a interação com o
48
ator, não fazendo entre objetos. Para se fazer um ambiente mais coerente, se faz necessário
a interação entre os Smart Objects, como um fogão esquentando uma panela, ou um ventilador empurrando uma bola. Adicionando a interação entre os objetos, é possı́vel construir um
ambiente mais coerente e dinâmico.
49
6 Conclusão
Os atores digitais autônomos são analogias aos atores humanos. Eles foram modelados para seguir um roteiro e conseguir interagir com os objetos em cena. Para isso Fernandes
(2011) elaborou uma ontologia que ajuda a descrever os requisitos para que os Smart Objects
seja capaz de representar os objetos que estarão em cena com o ator.
Neste trabalho foram levantados os requisitos para construir um ator digital
autônomo, como a descrição das formas de animação e o desafio de montar ela quadro a quadro.
Então foi concluı́do, que se necessita de uma ferramenta para auxiliar o animador a construir
toda sua animação. Essa é a proposta do projeto D.R.A.M.A., montar uma ferramenta de auxilio
ao animador.
Foi realizada neste trabalho a implementação da ontologia, para verificar a aplicabilidade dela em um ambiente computacional. Para isso foram elaborados 3 objetos como
exemplo de modelagem computacional de um Smart Object. Essa implementação conseguiu
que o ADA acessasse os dados de dentro do objeto, assim como a animação que é pertencente
a este.
O banco de objetos do projeto recebeu seus 3 primeiros Smart Objects, a cadeira de
madeira, o rádio e a bola anti-gravitacional. Em uma futura animação esses objetos podem ser
utilizados em cena.
6.1
Trabalhos futuros
Conectar esse módulo do sistema ao módulo que use a animação procedural. Co-
nectar esse módulo na parte de tomada de decisão do ator. Implementar esse módulo em uma
ferramenta batch rendering, assim conectando todos os módulos do projeto. Aumentar a capacidade da interação dos objetos, construindo a interação entre Smart Objects. Aumentar a
abrangência desse módulo, fazendo ele ter controle sobre toda a estrutura da cena (a partir da
classe Thing).
Bibliografia
AUTODESK. AUTODESK MAYA. 2013. Disponı́vel em: <http://www.autodesk.com/products/autodesk-maya/features>.
BEZERRA, E. Pricı́pios de Análise e Projeto de Sistemas com UML. 3. ed. [S.l.]: Campus,
2006. ISBN 85-352-1032-6.
FENCOTT, C. Virtual storytelling as narrative potential: Towards an ecology of narrative. In:
Virtual storytelling using virtual reality technologies for storytelling. Berlin: Springer, 2001,
2001. Lecture notes in computer science ; Vol. 2197), p. 90–99. ISBN 3-540-42611-6.
FERNANDES, L. G. A. Uma Ontologia para a Modelagem de Ambientes 3D com Smart
Objects para Atores Digitais Autônomos. Joinville, SC, Brazil, jul. 2011. 158 p.
IURGEL, I. A.; MARCOS, A. F. Employing personality-rich virtual persons–new tools
required. Computers & Graphics, v. 31, n. 6, p. 827–836, dez. 2007.
IURGEL, I. A. et al. Understanding virtual actors. In: 2010 Brazilian Symposium on
Games and Digital Entertainment (SBGAMES). [S.l.]: IEEE, 2010. p. 220–229. ISBN
978-1-61284-391-9.
LUCAS, G. ficção, Star Wars. San Francisco: 20th Century Fox, 1977.
PARENT, R. Computer Animation - Algorithms and Techniques. Berkeley, Califórnia: Morgan
Kaufmann, 2002.
PERLIN, K.; SEIDMAN, G. Autonomous digital actors. In: Motion in Games. Springer
Verlag, 2008, (Lecture Notes in Computer Science, v. 5277/2008). p. 246–255. Disponı́vel em:
<http://dx.doi.org/10.1007/978-3-540-89220-5 24>.
RAVENS. Jedi Knight: Jedi Academy. Middleton, Wisconsin: Raven Software, LucasArts,
Activision, 2003.
ROBERTS, S. Character Animation: 2D Skills for Better 3D. Second. [S.l.]: Focal Press, 2007.
51
RODRIGUEZ, D. HOW TO ANIMATE USING MAYA 13 BY ANIMATION METHODS. nov.
2012. Http://animationmethods.wordpress.com/2012/11/03/how-to-animate-using-maya-2013by-animation-methods/. Disponı́vel em: <http://animationmethods.wordpress.com/2012/11/03/how-to-animate-using-maya-2013-by-animation-methods/>.
SILVA, R. E. d. D.R.A.M.A. - developing rational agents to mimic actors. In: XI Brazilian
Symposium on Games and Digital Entertainment. Brasilia, DF, Brazil: IEEE Computer
Society, 2012.
SPIERLING, U. Interactive digital storytelling: Towards a hybrid conceptual approach. In:
International DiGRA Conference. Erfurt: DiGRA, 2005.
THALMANN, N. M.; THALMANN, D. Virtual humans: thirty years of research,
what next? The Visual Computer, v. 21, n. 12, p. 997–1015, 2005. Disponı́vel em:
<http://dx.doi.org/10.1007/s00371-005-0363-6>.
Unity. Unity 3D. 2013. Disponı́vel em: <http://portuguese.unity3d.com/>.
52
A Anexo
A figura 4.1 mostra o diagrama de classe em sua totalidade, com as classe Thing
sendo a classe no topo da hierarquia. As classes Cast Script e WorldAttribute não
são profundamente abordados, pois fazem parte do estudo de outros trabalhos dentro do projeto
D.R.A.M.A.
Figura A.1: Classe Tactil
Figura A.2: Classe Weight
53
Figura A.3: Classe HappyFor
Figura A.4: Classe Joy
Figura A.5: Classe Odor
54
Figura A.6: Classe CharacterModifier
Figura A.7: Classe Temperature
Figura A.8: Classe Physical
55
Figura A.9: Classe Semantic
Figura A.10: Classe SmartObjectInfo
56
Figura A.11: Classe ADA

Documentos relacionados