Controladores cognitivos

Você pode usar o recurso de controlador cognitivo para fazer com que os membros de multidão mudem de comportamentos durante uma simulação, segundo as circunstâncias. Por exemplo, um personagem poderia perambular aleatoriamente até ficar dentro de uma determinada distância de um alvo, ponto em que poderia se mover diretamente para o alvo.

Em termos técnicos, controladores cognitivos permitem influenciar simulações de multidão com condicionais de script, implementando com eficácia uma forma de inteligência artificial. Utilize o Editor de controlador cognitivoeditor em estilo de fluxograma (muito parecido à caixa de diálogo Fluxograma de movimento) para configurar uma rede de comportamentos e combinações de comportamentos, conhecidos como estados. Então, você aplica transições baseadas no MAXScript que especificam quais delegados devem ser movidos de um estado para outro. Mesmo com uma configuração relativamente simples, você pode criar simulações que façam com que seus personagens pareçam seres vivos e conscientes, tomando decisões à medida que se movem pela cena.

É possível localizar os procedimentos que descrevem diversos exemplos de transições do controlador cognitivo no tópico Caixa de diálogo Estado:

Testando um parâmetro do sistema de partículas

Testando uma posição de objeto

Testando uma propriedade atmosférica

Testando a distância entre dois objetos

Testando um parâmetro de modificador

Testando o comportamento de outro delegado

Procedimentos

Para configurar e utilizar um controlador cognitivo:

    Este procedimento descreve uma rotina de configuração típica para criação e utilização de um controlador cognitivo. O procedimento presume conhecimentos básicos de configuração de simulação de multidão. Para obter mais informações sobre a configuração de multidões, consulte Objeto de ajuda de multidões e Implementação de configuração.

  1. Crie uma cena que contém um objeto de multidão e um ou mais delegados. Consulte Criando ajudas de multidão.
  2. Crie pelo menos dois comportamentos. Consulte Atribuindo comportamentos.
  3. Abra o Editor de controlador cognitivo.
  4. Clique no botão Novo para criar um controlador cognitivo.

    o character studio fornece ao controlador o nome padrão de “Controlador cognitivo”. É recomendado que você forneça nomes mais descritivos para controladores cognitivos, como "Buscar/Perambular". Faça isso clicando no nome na caixa de texto e editando-o usando o teclado.

    Criar um novo controlador cognitivo coloca você automaticamente no modo Criar estado.

  5. Clique na janela do editor para criar e colocar um estado. Continue clicando em diferentes locais para adicionar quantos estados forem necessários.
  6. Clique com o botão direito do mouse em um estado para abrir o Caixa de diálogo Estado.
  7. Novamente, é recomendado fornecer nomes mais descritivos para estados, o que pode ser feito na caixa de diálogo Estado. Clique no nome (Estado ou Nº do estado) na caixa de texto e edite-o usando o teclado.

    Em seguida, defina um comportamento ou comportamentos para cada estado.

  8. Clique no botão Adicionar.
  9. Na caixa de diálogo Selecionar comportamentos, escolha um ou mais comportamentos.

    Se você selecionar vários comportamentos, poderá especificar pesos diferentes para cada um no editor de Estado. Por exemplo, é possível combinar um comportamento de busca em peso total com um comportamento de perambular em meio peso, de modo que o delegado vagueie ligeiramente enquanto procura o alvo.

  10. Feche a caixa de diálogo Selecionar comportamentos e, em seguida, feche o editor de Estado.
  11. Repita as etapas 6 a 10 conforme necessário para definir os comportamentos para os outros estados do controlador.

    Em seguida, utilize Criar transição para definir a sequência de estados durante a simulação.

  12. Decida a sequência em que os estados devem ocorrer.
  13. Clique em (Criar transição).
  14. Arraste uma linha de um estado para o próximo na ordem em que devem ser executados. Clique em um estado para criar uma transição entre si para si mesmo.

    Uma transição de seta aparece, apontando do estado de "origem" para o estado de "destino".

    Cada estado pode ter qualquer número de transições de entrada e de saída. Especifique diferentes condições de transição para cada um a fim de criar um diagrama de estado tão complexo quanto necessário.

    Avance, use a caixa de diálogo Transição de estado para definir uma condicional para cada transição.

  15. Clique com o botão direito do mouse em uma linha de transição.
  16. No Caixa de diálogo de transição de estado, insira o nome da condição de transição e, em seguida, clique no botão Editar MAXScript.
  17. Utilize a janela do editor de MAXScript para inserir ou carregar um script que defina a condição ou condições em que a transição deve ocorrer.

    Normalmente, essa é uma função que testa uma condição e retorna 1 (se verdadeiro) ou 0 (se falso).

    Nota: Consulte esse tópico na Referência de usuário on-line para obter amostras de código MAXScript para essa função.

    Por exemplo:

    fn test1 del t = (
    if (del.simpos.x <= 40 and del.duration > 50) then 1 else 0
    )

    Em inglês simples, a declaração acima diz que se, a posição do delegado no eixo X for menor ou igual a 40, e ele tiver estado no estado atual por mais de 50 quadros, então a transição deve ocorrer. No entanto, se a condição for falsa, ou se ambas forem, então o delegado deve permanecer no estado atual (ou teste qualquer outra transição). A seguir, há uma lista de suas palavras-chave:

    • fn - O seguinte é uma função MAXScript.
    • test1 - O nome da função; também deve aparecer na caixa de diálogo Transição, como a condição de transição. Essa função é executada primeiro quando a transição é testada. O script pode conter qualquer número de funções adicionais para ser chamado de dentro de uma função no script.
    • del - consulta o delegado para indicar qual script está sendo aplicado no momento. O script de transição é executado uma vez por quadro para cada delegado/membro da equipe ao qual o controlador cognitivo é atribuído. Portanto, se você usar "del" no script, em vez do nome de um determinado delegado, todos os delegados aos quais o controlador cognitivo está atribuído são testados.
    • t - O tempo atual (número do quadro) na simulação.
    • del.simpos.x - a posição atual do delegado no eixo X. A função especial "simpos" é utilizada para determinar uma posição de delegado durante uma solução de simulação. Isso é necessário porque posições de delegado não estão disponíveis para o MAXScript usando a função padrão "[node].pos" durante uma simulação.
    • del.duration - o número de quadros em que o delegado está no estado atual.

      É possível ver uma lista completa de parâmetros específicos ao delegado que podem ser verificados no script ao abrir uma janela de ouvinte do MAXScript Listener (pressione a tecla de função F11) e insira:

      ShowProperties $ delegate01

      E, como o delegado é um nó, ele também responde às funções padrão relacionadas ao nó do MAXScript, com exceção de "simpos", como indicado acima. Além disso, para obter informações sobre como acessar as propriedades de transição, como duração e prioridade, consulte a Ajuda do MAXScript.

      Para obter mais exemplos de condicionais MAXScript que podem ser usados com controladores cognitivos, consulte Caixa de diálogo de transição de estado.

  18. Utilize a caixa de diálogo Transição de estado para definir outros parâmetros como prioridade e duração.
  19. Utilize a caixa de diálogo Atribuições e equipes de comportamento para atribuir o controlador cognitivo delegados ou equipes.
    Nota: A multidão não permite que você use vários controladores cognitivos com um delegado. É possível atribuí-los, mas, quando você soluciona, o Character Studio notifica que usará somente o primeiro controlador cognitivo atribuído.