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