top of page

Blog do desenvolvimento

Buscar
  • Foto do escritor: DIANA DAVID
    DIANA DAVID
  • 12 de jul. de 2024
  • 1 min de leitura

Atualizado: 15 de jul. de 2024

Têm surgido alguns problemas tecnicas com utilização do Collaborate para estar em sincronia online com o meu colega.

Problemas técnicos:

- com a cloud do Unity e resolução de problemas com compatibilidade de versões do Unity estão a limitar o progresso do trabalho.


No final deste mês o método de colaboração online do Unity - Collaborate - mudou e foi associado ao PLASTIC CSM.


Grande parte do trabalho feito no Unity foi perdido ou antes ou depois desta mudança. Não sei precisar, nem sei qual foi o motivo. Perderam-se meses de trabalho.






  • Foto do escritor: DIANA DAVID
    DIANA DAVID
  • 12 de jul. de 2024
  • 3 min de leitura

Decidiu-se utilizar o motor de render standard do Unity ao invés do Universal Render Pipeline (URP) porque um shader com um efeito de paralax que se estava a utilizar no céu não ser compatível com ele.


De qualquer forma deixo aqui a nota sobre como mudar para esse motor de render que tem mais possíbilidade:


-Intalar o respetivo Packadge Manager do URP.

Depois é preciso criar o intermediário que irá coordenar as configurações do Render:

1 - Na pasta de setting do projecto > Create > Rendering > Universal Render Pipeline > Pipeline Asset

2 - Edit > Project Settings... > Graphics.

Onde diz: Scriptable Render Pipeline Settings adicionar o Universal Render Pipeline Asset  que se criou no ponto anterior.


É possível que depois disto os materiais fiquem cor de rosa, porque podem não ser compatíveis com este tipo de Rendering. 

Para resolver isto basta ajustar os materiais para materiais mais compativeis e ter a certeza de que a viewport está em Shaded mode.

Cons: Nem todos os shader que se enocntram online são compativeis. É por esta razão que se resolveu ignorar esta otimização).


Contudo, o antialiasing pode-se melhoras em EDIT -> Project Setting -> Quality -> Anti Aliasing e tentar ver se dá até ao 8x.




Para a primeira cena criaram-se animações para as personagens, criou-se um pássaro a voar e uma carrinha a deslocar-se.


Esta cena ainda precisa de algumas melhorias na versão A:

  • O cenário da história A pode estar mais à esquerda do observador.

  • As nuvens devem deslocar-se levemente.

  • Era interessante o plano do chão e o plano do céu ondularem levemente. Esta cena ainda precisa de algumas melhorias na versão B:

  • As nuvens devem deslocar-se levemente.

  • Era interessante o plano do chão e o plano do céu ondularem levemente.

  • A animação da personagem deve acabar um bocadinho mais cedo para a transição ser mais rápida para a cena seguinte.

---------------

Até a esta altura apenas era possível selecionar uma personagem olhando para ela durante algum tempo (Gaze Based Interaction).No entanto, como se quer educar o observador, também, no sentido da sua própria movimentação dentro da experiência, foi necessário dar-lhe a possibilidade de poder agarrar as personagens com os controlador do Oculus Quest 2.

Criação de sensações Hápticas no menu:

  • Interatividade com controladores;

  • Seleção através de raios;

  • Menus interativos;

  • Seleção das histórias ao se pegar nas personagens, por oposição à ténica Gaze Based que se tinha anteriormente.


Isto pode vir a incentivar o participante a ter uma postura mais ativa durante "Noises".


Para além disto, foi necessário criar uma lógica em relação ao modo como "Noises" iria funcionar, já que é necessário criar um servidor online para comodar mais do que um observador ao mesmo tempo.


Para isto, a equipa (eu e o programador) tem estado em constante diálogo e elaboraram-se diagramas para estruturar a lógica da programação que o menu inicial iria ter em conjunto com o programador que é mais experiênte do que eu nesta construção de lógicas.


------------

Criar UI para o menu inicial

Até aqui usei imagens standard sem qualquer preocupação com a otimização.

Para criar UI deve-se criar um Canvas através do menu XR --> UI

As imagens que se podem adicionar no CANVAS devem ser SPRITES. É possível converter um png normal numa sprite nas suas propriedades.



Ainda há ajustes para fazer:

  • Aumentar o tamanho das escadas para obrigar o observador a rodar mais sobre si para encontrar as personagens;

  • A personagem da história B também pode estar 2 degraus mais acima;

  • A seta das instruções do lado esquerdo devem estar mais inclinada para o observador e um pouco mais perto das instruções que estão atrás do observador;

  • O bloco de texto das instruções devem estar mais para cima.

  • A  primeira cena pode estar mais para a esquerda do observador.


Tem havido uma preocupação visual em relação ao design deste menu inicial, que dará acesso à experiência.

Pode-se experimentar o Menu Inicial horizontal neste Noises_v0.1.APK

  • Foto do escritor: DIANA DAVID
    DIANA DAVID
  • 12 de jul. de 2024
  • 4 min de leitura

Mais do que uma pessoa a trabalhar ao mesmo tempo no mesmo projecto:

Para trabalhar em conjunto com o outro elemento da equipa estamos a utilizar o sistema Collaborate do Unity.

Primeiro, foi necessário criar uma organização em Unity ID projeto e adicionou-se o 2º membro que inicialmente entra como GUEST, mas é possível editar e torná-lo MANAGER para poder editar. Depois é preciso criar um projeto na cloud do Unity. E no Unity é preciso ativar a janela do Collaborate e linkar o projeto com o ID do projeto que se criou online.


Criação de um servidor para "Noises":

Foi feita a criação de um servidor funcionar que interligue as duas histórias.

E  foram feitos mais testes de importação de animações.

Sentiu-se a necessidade de procurar mais informação sobre como fazer efeitos especiais para aplicar no menu inicial quando se selecionam as personagens.


Problemas técnicos:

- Pensava-se ter resolvido o problema das Blendshapes (link) , mas elas não estão a reagir bem quando importadas para o Unity, por isso optou-se por se fazer uns controladores para a cara para substituição da tecnica das blendshapes.


Importar animações do Blender para o Unity:

Para colocar a animação a funcionar dentro do Unity deve-se importar o .fbx para a pasta de projecto. Este .fbx deve ter pelo menos 1 animação já incluída.Depois, deve-se duplicar o ficheiro de animação que vem dentro do .fbx para se poder ter controlo das suas propriedades, e ativar o Loop, se necessário. Se se quiser adicionar mais animações, basta importante novamente o .fbx, duplicar as actions e apagar o .fbx, pois só vamos aproveitar as actions.


Uma vez resolvido o problema, importaram-se os os modelos.  

Com os modelos na hierarquia da cena selecionou-se a opção APPLY ROOT MOTION (no componente Animator da personagem) para que os pés das personagens não ficassem a flutuar no ar. 

Para se controlar os vários clips de actions  criou-se uma Timeline. 




ACTIONS - BLENDER

A animação das personagens é feita no Blender, por se dominar melhor esta ferramenta e se conhecer de fio a pavio à sua estrutura de funcionamento. Assim é possível adaptar e aproveitar-se animações de bancos de dados para acelerar a produção, algo que não seria possível com a mesma facilidade se fosse feito diretamente no motor de jogo Unity.

Para se exportar estas animações são criadas Actions.

Há vários modos de se exportarem Actions:

1 - Criar uma Action, animar e exportar. A desvantagem é que apenas se pode aplicar uma Action de cada vez que se anima uma personagem. Se se tiver 2 Actions, ou mais, estas não serão exportadas.


2 - Criar uma ou mais faixas NLA (Non Linear Animation), no Blender. Aqui as animação são passadas para faixas num editor de trechos de animação (Action Editor).  A desvantagem  é que o editor pode tornar-se confuso quando houver demasiadas faixas de animação.


3 - Aplicar um Fake User para cada Action de modo a não se perder a informação sempre que se fecha e abre a cena. 


Neste projeto, depois de vários testes, achou-se mais vantajoso optar-se pelo método 3.


A exportação do .fbx do Blender para o Unity:

  1. Colocar todas as animações com um FAKE USER para garantir que ficam guardadas no ficheiro Blender;

  2. Adicionar todas as actions ao NLA editor (depois pode-se apagar, mas esta ação é necessária por alguma razão);

  3. Selecionar o Rig + a Geometria (garantir que a geometria tem o Apply All Transforms CTRL+A) --> Export --> FBX;

  4. Selecionar os parâmetros conforme as imagens:

Nota: há um bug que faz com que nem sempre se consiga exportar todas as actions. A solução para este problema está em duplicar a action, sempre que se precisar de exportar.


Blender 3.3.1 Bug: Devido a um bug que se estava a enocntrar na versão do Blender 2.9, fez-se um upgrade para a versão mais recente até à data (3.3.1.). Esta nova versão não exporta as actions em condições e por isso não é possível usar o .fbx no Unity.

Foi preciso reverter-se para a versão 3.0 que evitava o bug do UI (presente na versão 2.9) e não tinha o bug da versão 3.3.1.


Importação e ativação das ACTIONS no Unity 

MÉTODO da TIMELINE (utilizado em "NOISES"):

  1. Importar o .fbx para a pasta do projecto.

  2. Arrastar o .fbx para a hierarquia da cena.

  3. Na pasta do projecto criar uma Timeline e dar-lhe um nome (TesteA)

  4. Adicionar um  component PLAYABLE DIRECTOR e adicionar essa timeline que se criou;

  5. Adicionar um component ANIMATOR e deixar tudo como default (isto é preciso para a timeline funcionar);

  6. Arrastar o animation clip da pasta de projeto (dentro do .fbx) para a janela da timeline;

  7. Arrastar o objecto animado, que está na hierarquia da cena para o campo do nome do clip correspondente na timeline;


Importação e ativação das ACTIONS no Unity 

MÉTODO dos ESTADOS

  1. Importar o .fbx para a pasta do projecto.

  2. Arrastar o .fbx para a hierarquia da cena.

  3. Na pasta do projecto criar um Animation Controler (animctrlA)

  4. Adicionar um component ANIMATOR e adicionar o controlador que se criou.

  5. Na janela Animator arrastar lá para dentro a action que se quer e ligar os nodes.



Animation marked as Legacy

Por vezes, quando se extrai a action do .fbx, dentro da pasta de projecto do Unity, aparece um aviso/erro em que não se pode usar este tipo de animation clips porque estão marcados como Legacy.

Para solucionar este problema, deve-se:

  1. Selecionar a action na pasta de projectos e carregar nos 3 pontinhos por cima do Inspector;

  2. Clicar  na opção Debug;

  3. Desativar o quadradinho de Legacy.



Extra: Alterar a frame rate: propriedades da janela da timeline --> Frame Rate


Informações de contato

Doutorada em Arte Multimédia,

pela Faculdade das Belas-Artes

da Universidade de Lisboa

 

Mestre em 3D Computer Animation, pela Bournemouth University

 

Erasmus em Animation, Games 
na Southampton Solent University

 

Licenciada em Arte Multimédia,pela Faculdade das Belas-Artes

da Universidade de Lisboa

  • Instagram
  • LinkedIn

Mensagem enviada!

bottom of page