Ferramenta de efeitos (FX)

A ferramenta Efeitos (FX) permite que os utilizadores criem efeitos visuais dinâmicos com um clique de um botão para ajudar a dar vida às histórias. A ferramenta inclui uma biblioteca pré-construída de efeitos de partículas e a capacidade de criar efeitos de partículas personalizados.

Anteriormente, a ferramenta Efeitos (FX) estava disponível apenas para assinantes Pro. Com o lançamento do novo mecanismo de mesa da Roll20, a ferramenta foi aprimorada e disponibilizada para fornecer acesso a efeitos pré-construídos a todos os utilizadores, independentemente da assinatura. Os assinantes Pro mantêm acesso à capacidade de criar e modificar efeitos personalizados.

 

Efeitos personalizados

Os efeitos personalizados permitem criar mais padrões de emissão de partículas do que o número limitado de efeitos integrados. Os subscritores Pro podem criar e editar efeitos personalizados. Se um criador de jogos tiver uma subscrição Pro, os efeitos personalizados estarão disponíveis para todos os jogadores visualizarem e utilizarem no jogo.

Para criar o seu próprio efeito personalizado, selecione primeiro a ferramenta Efeitos (ícone da varinha) na barra de ferramentas à esquerda e, em seguida, selecione a opção "+Efeito personalizado" no menu. Isto abrirá uma caixa de diálogo, muito semelhante à caixa de diálogo Macro, onde pode modificar diferentes atributos disponíveis no efeito predefinido ou adicionar propriedades/atributos adicionais referidos abaixo neste artigo. Esta informação deve estar num formato JSON. Se o formato for incorreto, não lhe permitirá guardar o seu novo efeito personalizado. Se não sabe exatamente o que é JSON, comece com o formato geral do código predefinido e altere apenas os números. Também pode adicionar trechos de código para propriedades adicionais explicadas mais adiante no artigo.

Propriedades dos efeitos personalizados

Essas propriedades (atributos dos padrões de emissão de partículas) são partilhadas entre o nosso recurso de efeitos personalizados Classic Tabletop e o novo motor Tabletop.

ângulo
Este é o ângulo em que as partículas são ejetadas do ponto de spawn (o seu cursor). O ângulo é medido em graus, começando com 0 apontando para a direita, então 90 é diretamente para baixo, 180 é para a esquerda, 270 é diretamente para cima. Se você digitar -1 para esse valor, o sistema irá pedir para você "mirar" toda vez que você usá-lo. Isto é útil quando pretende disparar um efeito numa direção diferente de cada vez que o utiliza.

ânguloAleatório

Quanto é que as partículas se espalham do ângulo original para ambos os lados. Um angleRandom de 45 resultaria num arco de fogo de 90 graus centrado no ângulo original.

duração
É o tempo de duração do efeito, mesmo que mantenha o rato premido. Isso é usado principalmente com efeitos mirados e para efeitos em caso de morte (se não for definido, ou for -1, será definido como 25), já que o mouse não pode ser mantido pressionado, então eles durarão pelo tempo definido. A duração máxima nesses casos é de 50, o que equivale a cerca de 2 segundos. Também pode ser útil se você quiser que o efeito seja apenas uma explosão única de partículas, como nos efeitos Bomba e Nova, onde a duração é de apenas 10. Se definir a duração para -1, o efeito durará enquanto mantiver o botão do rato premido; caso contrário, o efeito parará após o fim da duração, mesmo que mantenha o botão premido.

emissionRate
Esta é uma medida da rapidez com que as partículas são criadas e disparadas a partir da origem. Este atributo está intimamente ligado ao atributo maxParticles porque, se esse limite for atingido, o sistema deixará de criar partículas, por isso certifique-se de que define o max suficientemente alto para suportar a sua taxa de emissão.

gravidade
Este atributo é o único que tem 2 "sub-atributos", x e y. Ele tem essas 2 opções porque você pode fazer com que a "gravidade" funcione em qualquer direção. Você não pode usar o valor 0 para nenhum desses atributos, então use 0.01 para "nenhuma gravidade". X e Y aceitam valores positivos e negativos, um Y positivo puxaria as partículas para baixo, enquanto um valor negativo puxaria as partículas para cima e funciona da mesma forma com X, esquerda e direita.

lifeSpan
lifeSpan define quanto tempo, numa medida de tempo, uma partícula durará antes de desaparecer. Este atributo, combinado com a velocidade, decidirá a distância que a partícula irá percorrer antes de ser destruída.

lifeSpanRandom

Quanta variação existe no tempo de vida das partículas individuais.
Se um efeito tiver um tempo de vida de 10 e um lifeSpanRandom de 5, as partículas estarão vivas durante um período de 5-15.

maxParticles
maxParticles define o número total de partículas, para esse efeito específico, que podem estar no quadro de uma só vez. Quando este máximo for atingido, as partículas deixarão de ser geradas até que algumas das partículas já existentes atinjam o fim da sua "vida".

tamanho
O tamanho define o tamanho relativo das partículas que são criadas.

tamanhoAleatório

Quanta variação de tamanho existe nas partículas do efeito.
Se um efeito tiver um tamanho de 10 e um sizeRandom de 5, as partículas terão um tamanho de 5-15.

speed
speed define a velocidade com que as partículas se afastam da origem.

velocidadeAleatória

Quanta variação de velocidade existe nas partículas do efeito.
Se um efeito tiver uma velocidade de 10 e um tamanho aleatório de 5, as partículas terão uma velocidade de 5-15.

startColour / endColour
start/endColour define a cor da partícula quando é criada e imediatamente antes de ser destruída, respetivamente, utilizando uma matriz [Red, Green, Blue, Alpha]. As cores RGB usam valores entre 0-255 e o canal Alfa é um decimal entre 0-1. Se você está procurando uma cor específica, você pode pesquisar "seletor de cor hexadecimal" em seu mecanismo de busca favorito e isso deve fornecer os números que você está procurando. As cores desvanecerão do valor inicial para o valor final ao longo de sua vida útil. Como todas as partículas estão empilhadas umas sobre as outras no início, as cores tendem a ser muito mais claras, se transformando em uma bola branca, do que você espera, então você vai querer usar cores mais escuras pelo menos no bloco startColour. Há uma série de exemplos de cores no final desta página, se estiver à procura de inspiração.

startColour / endColour Aleatório

Os randoms de início e fim determinam quanta diferença existe na cor das partículas no início e no fim dos seus tempos de vida. Exemplo:

startColour: [220, 35, 0, 1],
startColourRandom: [62, 0, 0, 0.25]

um efeito com estes valores irá variar entre um RGBA de

[158, 35, 0, 0.75] para
[255, 35, 0, 1]

resultando numa gama de cores mais variada para as partículas do seu efeito.

onDeath
Este é o único valor que aceita uma cadeia de caracteres, por isso, se o utilizar, certifique-se de que o envolve entre "aspas" ou não o deixará guardar. Isso é usado, assim como no efeito Burst, para gerar um efeito adicional assim que o original terminar. O efeito Burst é basicamente apenas o efeito Burn com "onDeath": "explosion", portanto, o efeito Burn dura até você soltar o mouse, após o qual ele gerará o efeito Explosion no mesmo local. O efeito que é gerado na sequência onDeath não pode ser um efeito "mirado" e deve ter uma duração. Se tiver um -1 para qualquer um destes, será atribuído um valor padrão ou não funcionará como pretendido. Isto também só funciona para outros FX personalizados, se vários FX tiverem o mesmo nome que está a referir, só selecionará o primeiro da lista.

Propriedades de efeitos personalizados adicionadas com o mais recente motor VTT

Essas propriedades adicionais (atributos dos padrões de emissão de partículas) não estão disponíveis em jogos que utilizam o Legacy VTT.

sizeGradient
Os gradientes de tamanho permitem que as partículas no efeito cresçam e diminuam ao longo do tempo de vida da partícula. "gradiente" é utilizado para indicar em que ponto do tempo de vida o tamanho deve estar "fator", que é um multiplicador do tamanho de base da partícula. No exemplo abaixo, as partículas no efeito começariam com um tamanho de 75% e depois cresceriam até ao tamanho normal durante os primeiros 20% do tempo de vida da partícula e depois cresceriam até 1,5x o seu tamanho base durante o resto da sua vida.

[
{ "gradiente": 0, "fator": 0,75 },
{ "gradiente": 0,2, "fator": 1 },
{ "gradiente": 1, "fator": 1,5 }
]

emitRateGradients
Os gradientes de taxa de emissão definem como a taxa de emissão do efeito muda ao longo da duração do efeito, de forma semelhante ao sizeGradient que muda o tamanho das partículas ao longo da vida útil das partículas individuais. No exemplo abaixo, o efeito dispararia uma explosão de partículas no início e depois diminuiria ao longo da sua duração.

[
{ "gradient": 0, "factor": 1},
{ "gradient": 0.25, "factor": 0.2},
{ "gradient": 1, "factor": 0}
]

velocityGradients
Os gradientes de velocidade definem a forma como as partículas alteram a sua velocidade ao longo do seu tempo de vida.
No exemplo acima, as partículas disparariam muito mais depressa do que a sua velocidade base e depois abrandariam rapidamente para 20% da velocidade base durante os primeiros 60% do seu tempo de vida, abrandando depois para uma paragem durante os restantes 40%.

[
{ "gradient": 0, "factor": 3},
{ "gradient": 0.6, "factor": 0.2},
{ "gradient": 1, "factor": 0}
]

tipo de régua

Isto define o que a interface de objetivo apresenta e suporta

  • "cone
  • 'linha'
  • "viga

additionalEmissinRatePerPixel
Esta propriedade é utilizada em conjunto com a propriedade rulerType e indica a rapidez com que o efeito deve produzir partículas quanto maior for o alcance do efeito.

scaleX
Determina a largura que as partículas devem ter, é um multiplicador do tamanho base.

scaleY
Determina a altura que as partículas devem ter, é um multiplicador do tamanho base.

alignParticles
Isto força o alinhamento de cada partícula para corresponder ao ângulo em que foi disparada.

rotationSpeed
Determina a velocidade a que as partículas devem rodar; a predefinição é não rodar.

emitterSize
Determina o tamanho da caixa do emissor. Será 2x o valor de um quadrado.
Um valor de 5 resultaria numa caixa emissora de 10x10 pixéis.

isPointToPoint

Determina se o Efeito deve mover-se do início para o fim enquanto dispara partículas ao longo do caminho, apenas utilizável com Efeitos apontados.

subEmissores

subEmitters tem uma lista de emissores.

  • tipo - 0 é para quando quer um subEmissor ligado a uma partícula, 1 indica que será gerado no fim do ciclo de vida de uma partícula
  • inheritDirection - Defina a direção +Y do sub-emissor igual à direção em que a partícula está/estava a dirigir-se true ou false
  • inheritedVelocityAmount - determina a quantidade de velocidade das partículas existentes que deve ser adicionada às partículas emissoras
  • emitterNames - outros emissores que pode ter como alvo por nome. Isto escolherá aleatoriamente um destes emissores quando estiver a funcionar com uma partícula
{
"emitters": [{
"type": 1,
"inheritDirection": false,
"inheritedVelocityAmount": 0,
"emitterNames": ["pooling"]
}]
}

baseEffect

Nome de um efeito existente que serve de base a um novo efeito. Obtém todas as propriedades do baseEffect e pode, adicionalmente, substituir outras propriedades para adicionar efeitos personalizados. Por exemplo, o nosso efeito "Rocket" é baseado no nosso efeito "Missile" com uma explosão adicional emDeath.

{
"name": "Rocket",
"baseEffect": "missile",
"onDeath": "explode",
}

Efeitos integrados

Efeito Pré-visualização

Feixe

{
"name": "tool_fx_beam",
"maxParticles": 500,
"scaleX": 2,
"scaleY": 3,
"alignParticles": true,
"size": 60,
"sizeGradients": [
{ "gradient": 0, "factor": 0 },
{ "gradiente": 0.3, "gradiente adicional por pixel": -0.0002, "fator": 1 },
{ "gradiente": 0.8, "fator": 1.2 }
],
"tamanhoAleatório": 0,
"vidaÚtil": 15,
"vidaÚtilAleatória": 0,
"taxaDeEmissão": 4,
"taxaDeEmissãoAdicionalPorPixel": 0.02,
"tamanhoDoEmissor": 1,
"velocidade": 0,
"velocidade adicional por pixel": 0,07,
"velocidade aleatória": 0,
"ângulo": -1,
"ângulo aleatório": 1,
"duração": 25,
"tipo de régua": "feixe"
}

Bomba

{
"name": "tool_fx_bomb",
"maxParticles": 500,
"alignParticles": true,
"size": 30,
"sizeRandom": 10,
"sizeGradients": [
{ "gradient": 0, "factor": 0 },
{ "gradiente": 0.3, "gradiente adicional por pixel": -0.0002, "fator": 0.5 },
{ "gradiente": 0.8, "fator": 2 },
{ "gradiente": 1, "fator": 1.5 }
],
"vida útil": 25,
"vida útil aleatória": 5,
"velocidade": 5,
"velocidade aleatória": 2,
"gradientes de velocidade": [
{ "gradiente": 0, "fator": 2 },
{ "gradient": 0.6, "factor": 0.2 },
{ "gradient": 1, "factor": 0 }
],
"angle": 270,
"angleRandom": 70,
"emissionRate": 250,
"duration": 10
}

Respirar

{
"name": "tool_fx_breath",
"alignParticles": true,
"maxParticles": 500,
"size": 10,
"sizeRandom": 5,
"sizeGradients": [
{ "gradient": 0, "factor": 1 },
{ "gradiente": 0,2, "fator": 0, "fatorAdicionalPorPixel": 0,0125 },
{ "gradiente": 0,7, "fator": 0, "fatorAdicionalPorPixel": 0,025 },
{ "gradiente": 1, "fator": 1 }
],
"vida útil": 25,
"vida útil aleatória": 2,
"emissionRate": 120,
"additionalEmissionRatePerPixel": 0.143,
"emitRateGradients": [
{ "gradient": 0, "factor": 1 },
{ "gradient": 0.25, "factor": 0.2 },
{ "gradient": 1, "factor": 0 }
],
"speed": -1,
"additionalSpeedPerPixel": 0.04,
"velocityGradients": [
{ "gradient": 0, "factor": 3 },
{ "gradient": 0.6, "factor": 0.2 },
{ "gradient": 1, "factor": 0 }
],
"speedRandom": 0,
"angle": -1,
"angleRandom": 15,
"duration": 25,
"rulerType": "cone"
}

Borbulhante

{
name: 'tool_fx_bubbling',
maxParticles: 200,
size: 8,
sizeRandom: 3,
sizeGradients: [
{ gradient: 0, factor: 0.5 },
{ gradient: 0.2, factor: 1 }
],
lifeSpan: 60,
lifeSpanRandom: 5,
speed: 0.5,
speedRandom: 2,
gravity: { x: 0, y: 0, z: -0.01 },
angle: 0,
angleRandom: 180,
emissionRate: 5
}

Queimar

{
"name": "tool_fx_burn",
"maxParticles": 100,
"size": 70,
"sizeGradients": [
{ "gradient": 0, "factor": 1 },
{ "gradient": 0.5, "factor": 2 },
{ "gradient": 1, "factor": 4 }
],
"sizeRandom": 15,
"lifeSpan": 10,
"lifeSpanRandom": 3,
"speed": 3,
"angle": 0,
"emissionRate": 12
}

Rebentar

{
"name": "tool_fx_burst",
"maxParticles": 100,
"size": 35,
"sizeRandom": 15,
"lifeSpan": 10,
"lifeSpanRandom": 3,
"speed": 3,
"angle": 0,
"emissionRate": 12,
"onDeath": "explode"
}

 

Explodir

{
"name": "tool_fx_explode",
"maxParticles": 500,
"alignParticles": true,
"size": 60,
"sizeRandom": 10,
"duration": 20,
"sharpnessRandom": 10,
"nitidez": 20,
"vida útil": 20,
"vida útil aleatória": 5,
"velocidade": 7,
"gradientes de velocidade": [
{ "gradiente": 0, "fator": 3 },
{ "gradiente": 0,6, "fator": 0,2 },
{ "gradiente": 1, "fator": 0 }
],
"velocidadeAleatória": 0,
"ângulo": 0,
"ânguloAleatório": 360,
"taxaDeEmissão": 200,
"gradientesDaTaxaDeEmissão": [
{ "gradiente": 0, "fator": 1 },
{ "gradient": 0.25, "factor": 0.2 },
{ "gradient": 1, "factor": 0 }
]
}

Brilho

{
"name": "tool_fx_glow",
"maxParticles": 250,
"size": 140,
"sizeRandom": 0,
"lifeSpan": 10,
"lifeSpanRandom": 0,
"emissionRate": 1,
"speed": 0,
"speedRandom": 0,
"angle": 0,
"rotationSpeed": 2,
"emitterSize": 0.5
}

Míssil

{
"name: "tool_fx_missile",
"maxParticles": 350,
"size": 7,
"sizeRandom": 3,
"lifeSpan": 7,
"lifeSpanRandom": 5,
"emissionRate": 50,
"speed": 7,
"speedRandom": 5,
"angle": -1,
"rulerType": 'line',
"duration": 25,
"isPointToPoint": true
}

Nova

{
"name": "tool_fx_nova",
"maxParticles": 500,
"alignParticles": true,
"scaleX": 2,
"size": 25,
"sizeRandom": 0,
"sizeGradients": [
{ "gradient": 0, "factor": 0.5 },
{ "gradient": 0.2, "factor": 0.75 },
{ "gradient": 0.7, "factor": 1 },
{ "gradient": 1, "factor": 2 }
],
"lifeSpan": 30,
"lifeSpanRandom": 0,
"emissionRate": 1000,
"speed": 7,
"speedRandom": 0,
"angle": 0,
"angleRandom": 180,
"duration": 5
}

Agrupamento


"name": "tool_fx_pooling",
"type: "tool_fx_click",
"blendMode": 4,
"angle": 0,
"angleRandom": 359,
"duration": 10,
"emissionRate": 1,
"lifeSpan": 20,
"lifeSpanRandom": 0,
"maxParticles": 1,
"size": 15,
"sizeRandom": 5,
"speed": 0,
"speedRandom": 0,
"rotationSpeed": 0,
"sizeGradients": [
{ "gradient": 0, "factor": 0.01 },
{ "gradiente": 0.1, "fator": 2 },
{ "gradiente": 0.7, "fator": 2.5 },
{ "gradiente": 1, "fator": 0.01 }
]
}

Foguete

{
"name": "Rocket",
"baseEffect": "missile",
"onDeath": "explode"
}

Escudo

{
"name": "tool_fx_shield",
"maxParticles": 250,
"size": 140,
"sizeRandom": 0,
"lifeSpan": 10,
"lifeSpanRandom": 0,
"emissionRate": 5,
"speed": 0,
"speedRandom": 0,
"angle": 0,
"blendMode": ParticleSystem.BLENDMODE_ADD,
"rotationSpeed": 2,
"emitterSize": 0.5
}

Brilho
 

{
"name: "tool_fx_sparkle",
"maxParticles": 150,
"size": 30,
"sizeRandom": 3,
"sizeGradients": [
{ "gradient": 0, "factor": 0.75 },
{ "gradiente": 0.2, "fator": 1 },
{ "gradiente": 0.7, "fator": 1.5 },
{ "gradiente": 1, "fator": 0.5 }
],
"vida útil": 20,
"vida útil aleatória": 5,
"emissionRate": 7,
"speed": 4,
"speedRandom": 2,
"angle": 0,
"angleRandom": 0,
"gravity": { x: 0.0, y: 0.0, z: -10.0 },
"blendMode": ParticleSystem.BLENDMODE_ADD,
"rotationSpeed": 1,
"emitterSize": 0.5
}

Splatter (atualizado)

{
"name": "tool_fx_splatter",
"type": "tool_fx_aimed",
"alignParticles": true,
"angle": 15,
"angleRandom": 15,
"blendMode": 4,
"duration": 25,
"emissionRate": 20,
"lifeSpan": 10,
"lifeSpanRandom": 0,
"maxParticles": 50,
"rulerType": 'line',
"size": 35,
"sizeRandom": 10,
"velocidade": 20,
"velocidadeAleatória": 1,
"gradientesDeTamanho": [
{ "gradiente": 0, "fator": 0.5 },
{ "gradiente": 1, "fator": 1 }
],
"subEmitters": {
"emissores": [{
"tipo": 1,
"inheritDirection": false,
"inheritedVelocityAmount": 0,
"emitterNames": ["pooling"]
}]
}
}
Este artigo foi útil?
64 de 91 acharam isto útil