M ay a por Gustavo L. Braga MEL Parte II Construção de Interfaces Q Figura 1a - Exemplo de utilização do formLayout Figura 1b - Com o formLayout os botões acompanham a mudança de formato da janela Figura 2 - Exemplo de utilização do shelfLayout Figura 3 - Três tipos diferentes de grupos de controles uando do lançamento da primeira versão do Maya, uma das características mais alardeadas pela Alias|wavefront era a possibilidade da criação de interfaces customizadas para o controle e animação de personagens. Na época muitos animadores se perguntavam sobre a utilidade deste tipo de ferramenta para os projetos, levando em consideração a complexidade da maioria dos modelos na época e o tempo que se demorava para a criação de uma interface customizada. Com a crescente busca pela perfeição de movimentos na animação 3D, os personagens estão sendo criados com um número grande de controles, tendo alguns destes personagens nos filmes atuais, centenas de controles. Desta maneira a animação de um personagem com esta complexidade, sem uma interface customizada, é um processo lento e que requer, além de uma grande organização, um conhecimento muito forte da ferramenta pelo animador. Com a utilização de interfaces customizadas temos uma maior rapidez na criação da animação, devido ao fato do animador não precisar selecionar objetos, IK handles e outros componentes. Ele simplesmente mexe um slider para modificar e animar o atributo desejado. Este mesmo fato possibilita ainda o uso de animadores que não conheçam o Maya para criar uma animação e até mesmo cria a possibilidade da contratação de um animador tradicional para fazer o trabalho. Quando criamos uma interface com os comandos referentes à animação de um objeto, deixa de existir a necessidade do conhecimento do software por parte do animador. Neste artigo veremos alguns conceitos necessários para a criação das interfaces. Depois de consolidar estes conceitos entraremos nos elementos que podemos colocar em nossas interfaces e terminaremos com a montagem de um exemplo de interface para um personagem. Conceitos A construção de interfaces é baseada no conceito de hierarquia. A janela está no topo da hierarquia e todos os elementos que são colocados na janela estão abaixo na hierarquia. Por exemplo: Uma janela contém um layout que contém um menu, um campo texto e um botão. Temos a janela como topo de hierarquia. O layout está em um segundo nível, enquanto que o menu, o campo texto e o botão estão todos em um terceiro nível hierárquico. Dentro ainda deste panorama, podemos definir que o layout é filho da janela e pai do menu, campo texto e botão. Este contexto hierárquico pode ser considerado como elementos que contém outros elementos. Esta hierarquia pode ser arbitrariamente profunda dependendo de quantos elementos estão contidos dentro de outros. Para simplificar a criação de interfaces no Maya não é necessária a especificação explícita de quem é o pai do elemento criado. Quando uma janela é criada ela tornase automaticamente o pai de todos os próximos controles ou menus criados. Estes novos elementos irão aparecer dentro desta janela até que o "pai default" (default parent) seja mudado, explicitamente através do comando setParent ou ainda com a criação de uma nova janela. Digital Designer - edição 17 Maya: MEL - Parte II - Construção de Interfaces Elementos de uma Interface Layouts são elementos que contém e posicionam outros elementos dentro de uma janela. Existem diferentes tipos de layouts especializados para posicionar os seus elementos de diversas formas. Por exemplo: o column layout ajusta os seus elementos na vertical um após o outro, como se fossem uma lista, assim como o row layout ajusta os elementos lado a lado na horizontal. Estes layouts podem ainda conter outros layouts possibilitando uma grande customização. Abaixo temos a relação dos Layouts prédefinidos: columnLayout formLayout frameLayout gridLayout menuBarLayout paneLayout rowColumnLayout rowLayout scrollLayout shelfLayout shelfTabLayout tabLayout O layout mais utilizado para construção de interfaces é o formLayout devido a possibilidade de posicionar os seus "filhos" tanto na forma absoluta como na relativa. Por exemplo: É possível especificar que um controle permaneça fixo enquanto suas dimensões ficam relativas ao tamanho da janela. Este conceito é melhor ilustrado no script 1. A janela resultante tem o botão A preso ao topo e à esquerda da janela, enquanto que a sua parte inferior é presa a parte superior do botão B e seu lado direito é limitado a ser 75% do tamanho da janela. Com a aplicação destas restrições o botão A irá crescer ou diminuir de acordo como o tamanho da janela. Como visto na figura 1a e 1b. Além do formLayout, são muito utilizados também os layouts frameLayout, tabLayout, menuBarLayout e shelfTabLayout, os quais permitem outras possibilidades não necessariamente relacionadas ao posicionamento de controles "filhos". Figura 4 - Interface com controles do cone divididos em 3 abas www.digitaldesigner.com.br O layout frameLayout contém um botão de abrir/fechar ao lado do seu título. Quando aberto este layout mostra o seu conteúdo, caso contrário é mostrado somente o seu título. Este layout é bastante utilizado na interface do Maya (Exemplo: Attribute Editor). Já o tabLayout contém um número de outros layouts, cada um destes layouts é acessado através de uma aba de seleção. O menuBarLayout permite a colocação de uma barra de menus em qualquer parte de sua janela. Da mesma forma o shelfTabLayout o faz com uma shelf. Exemplos da utilização deste layouts estão no script 2 e o resultado deste script na figura 2. Controles Através do MEL temos acesso a todos os controles existentes no Maya. Existem mais de cinquenta controles prédefinidos prontos para o uso. Entre os mais importantes temos: buttons, sliders, textFields, scroll bars entre outros. Em todos os scripts deste artigo temos exemplos de uso dos controles mais comuns. Grupos (Groups) Alguns controles geralmente aparecem juntos nas interfaces. Por exemplo, um slider normalmente tem ao seu lado um campo para indicar o seu valor, ou ainda um campo editável tem à sua esquerda um texto indicando a natureza do campo. Grupos são controles colocados juntos em um comando por conveniência. Pode-se conseguir o mesmo resultado de um grupo criando-se individualmente cada controle. Todos os comandos que criam grupos terminam em "Grp". No script 3 temos exemplos de utilização de grupos. Figura 5 - Interface para Personagem - Cabeça