효과(FX) 도구

시각 효과 도구(FX)를 사용하면 버튼 클릭 한 번으로 생동감 넘치는 시각 효과를 생성하여 스토리에 생기를 불어넣을 수 있습니다. 이 도구는 사전 제작된 파티클 이펙트 라이브러리를 포함하며, 사용자 정의 파티클 이펙트를 생성할 수 있는 능력을 제공합니다.

이전에는 시각 효과(FX) 도구가 프로 구독자에게만 제공되었습니다. Roll20의 새로운 테이블탑 엔진 출시와 함께, 이 도구는 업그레이드되어 모든 사용자가 구독 여부와 관계없이 사전 제작된 효과에 접근할 수 있게 되었습니다. 프로 구독자는 사용자 지정 효과 생성 및 수정 능력을 계속 이용할 수 있습니다.

 

사용자 지정 효과

사용자 정의 효과는 소수의 내장 효과보다 더 다양한 입자 방출 패턴을 생성할 수 있게 해줍니다. 프로 구독자는 사용자 지정 효과를 만들고 편집할 수 있습니다. 게임 개설자가 프로 구독을 보유한 경우, 모든 플레이어가 게임 내에서 커스텀 효과를 확인하고 사용할 수 있습니다.

나만의 사용자 지정 효과를 만들려면 먼저 왼쪽 도구 모음에서 효과 도구(지팡이 아이콘)를 선택한 다음 메뉴에서 '+사용자 지정 효과' 옵션을 선택합니다. 그러면 매크로 대화 상자와 유사한 대화 상자가 열리며, 여기서 기본 효과에서 사용할 수 있는 다양한 속성을 수정하거나 이 문서 아래에서 참조하는 추가 속성/속성을 추가할 수 있습니다. 이 정보는 JSON 형식이어야 하며, 형식이 올바르지 않으면 새 사용자 지정 효과를 저장할 수 없습니다. JSON이 무엇인지 정확히 모른다면 기본 코드의 일반적인 형식으로 시작하여 숫자만 변경하면 됩니다. 이 문서에서 자세히 설명하는 추가 속성에 대한 코드 스니펫을 추가할 수도 있습니다.

사용자 정의 효과 속성

이러한 속성(입자 방출 패턴의 특성)은 기존 테이블탑 커스텀 이펙트 기능과 새로운 테이블탑 엔진 간에 공유됩니다.

각도
이것은 입자가 생성 지점(커서 위치)에서 배출되는 각도입니다. 각도는 오른쪽을 가리키는 0부터 시작하여 각도 단위로 측정되므로 90은 똑바로 아래, 180은 왼쪽, 270은 똑바로 위를 의미합니다. 이 값에 -1을 입력하면 사용할 때마다 시스템에서 "조준"을 요청합니다. 이 기능은 이펙트를 사용할 때마다 다른 방향으로 발사하고 싶을 때 유용합니다.

각도랜덤

파티클이 원래 각도에서 양쪽으로 퍼지는 정도입니다. 각도 임의값 45는 원래 각도를 중심으로 90도 발사 호를 생성합니다.

지속 시간
마우스를 누르고 있어도 효과가 지속되는 시간입니다. 이 값은 주로 조준 및 온데스 이펙트와 함께 사용되며(설정되지 않았거나 -1이면 기본값이 25로 설정됨), 마우스를 누르고 있을 수 없으므로 지속 시간 동안 지속됩니다. 이 경우 최대 지속 시간은 50으로 약 2초에 불과합니다. 지속 시간이 10에 불과한 폭탄 및 노바 이펙트와 같이 입자가 한 번만 폭발하는 이펙트를 원하는 경우에도 유용합니다. 지속 시간을 -1로 설정하면 마우스 버튼을 누르고 있는 동안 효과가 지속되며, 그렇지 않으면 버튼을 누르고 있어도 지속 시간이 끝나면 효과가 중지됩니다.

emissionRate
이것은 파티클이 얼마나 빨리 생성되고 오리진에서 발사되는지를 측정한 값입니다. 이 속성은 maxParticles 속성과 밀접한 관련이 있는데, 이 한계에 도달하면 시스템에서 파티클 생성이 중지되므로 방출 속도를 지원할 수 있을 만큼 최대 높이를 설정해야 합니다.

중력
이 속성은 2개의 '하위 속성'(x와 y)을 가진 유일한 속성입니다. 이 두 가지 옵션을 가지고 있는 이유는 "중력"을 어떤 방향으로든 작동시킬 수 있기 때문입니다. 이 속성 중 어느 하나에 0 값을 사용할 수 없으므로 "중력 없음"에는 0.01을 사용하세요. X와 Y는 양수 및 음수 값을 모두 허용하며, 양수 값은 파티클을 아래로 끌어내리고 음수 값은 파티클을 위로 끌어올리며 X 및 좌우에서도 동일한 방식으로 작동합니다.

생명력
생명력은 파티클이 사라지기 전까지 얼마나 오래 지속될 수 있는지를 시간 단위로 정의합니다. 이 속성은 속도와 결합하여 파티클이 파괴되기 전에 얼마나 멀리 날아갈지 결정합니다.

수명 랜덤

개별 파티클의 수명에 얼마나 많은 변화가 있는지.
이펙트의 수명이 10이고 lifeSpanRandom이 5이면 파티클은 5-15의 수명 동안 살아있게 됩니다.

최대 파티
최대 파티클은 특정 효과에 대해 한 번에 보드에 표시할 수 있는 파티클의 총 개수를 정의합니다. 이 최대값에 도달하면 이미 존재하는 파티클 중 일부의 '수명'이 다할 때까지 파티클 생성이 중지됩니다.

size
size는 생성된 입자의 상대적인 크기를 정의합니다.

sizeRandom

이펙트의 입자에 얼마나 많은 크기 변화가 있는지.
이펙트의 크기가 10이고 sizeRandom이 5인 경우 입자의 크기는 5-15가 됩니다.

속도
속도는 파티클이 원점에서 멀어지는 속도를 정의합니다.

속도랜덤

이펙트의 입자에 얼마나 많은 속도 변화가 있는지.
이펙트의 속도가 10이고 크기랜덤이 5인 경우 입자는 5-15의 속도를 갖습니다.

시작 색상 / 끝 색상
start/endColour는 각각 [빨강, 초록, 파랑, 알파] 배열을 사용하여 파티클이 생성될 때와 소멸되기 직전에 파티클의 색상을 정의합니다. RGB 색상은 0-255 사이의 값이며 Alpha 채널은 0-1 사이의 십진수입니다. 특정 색상을 찾고 있다면, 즐겨 사용하는 검색 엔진에서 "hex color picker"를 검색하면 원하는 숫자를 얻을 수 있습니다. 색상은 수명 동안 시작 값에서 끝 값으로 서서히 사라집니다. 모든 입자는 처음에 서로 겹쳐져 있기 때문에 색상은 예상보다 훨씬 밝아지고 흰색 덩어리로 변합니다. 따라서 startColour 블록에서는 적어도 더 어두운 색상을 사용해야 합니다. 영감을 얻고 싶다면 이 페이지 끝에 다양한 색상 예시가 나와 있습니다.

시작 색상 / 끝 색상 무작위

시작 및 종료 랜덤은 파티클의 수명이 시작될 때와 끝날 때 파티클의 색상에 얼마나 많은 차이가 있는지를 결정합니다. 예시:

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

이 값을 사용하는 이펙트의 RGBA 범위는 다음과 같습니다.

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

를 사용하면 이펙트 파티클의 색상 범위가 더욱 다양해집니다.

onDeath
이 값은 문자열을 허용하는 유일한 값이므로 값을 "따옴표"로 묶지 않으면 저장할 수 없습니다. 이는 Burst 효과와 마찬가지로 원래 효과가 종료되면 추가 효과를 생성하는 데 사용됩니다. Burst 효과는 사실상 Burn 효과와 동일하며 "onDeath": "explosion"을 가지고 있습니다. 따라서 Burn 효과는 마우스를 놓을 때까지 지속되며, 그 후에 동일한 위치에서 Explosion 효과를 생성합니다. onDeath 시퀀스에서 생성되는 효과는 "aimed" 효과가 될 수 없으며 지속 시간이 있어야 합니다. 이 중 하나라도 -1이면 기본값으로 지정되거나 의도한 대로 작동하지 않을 수 있습니다. 이 기능은 다른 사용자 지정 FX에 대해서만 작동하며, 참조하는 FX의 이름이 여러 개일 경우 목록에서 첫 번째 FX만 선택합니다.

최신 VTT 엔진으로 추가된 사용자 정의 효과 속성

이러한 추가 속성(입자 방출 패턴의 속성)은 구버전 VTT를 사용하는 게임에서는 사용할 수 없습니다.

sizeGradient
크기 그라디언트를 사용하면 이펙트의 파티클이 파티클의 수명에 따라 커지거나 작아질 수 있습니다. "그라데이션"은 파티클의 기본 크기에 대한 승수인 "계수"에서 크기가 수명의 어느 지점에 있어야 하는지를 나타내는 데 사용됩니다. 아래 예시에서 이펙트의 파티클은 75% 크기로 시작하여 파티클 수명의 첫 20% 동안 정상 크기로 성장한 다음 나머지 수명 동안 기본 크기의 1.5배로 성장합니다.

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


방출 속도 그라데이션은 개별 파티클의 수명에 따라 파티클의 크기를 변경하는 sizeGradient와 유사하게 이펙트의 방출 속도가 지속 기간 동안 어떻게 변하는지를 정의합니다. 아래 예시에서 이펙트는 처음에 파티클을 폭발적으로 발사한 다음 지속 시간이 길어질수록 가늘어집니다.

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


속도 그라데이션은 파티클의 수명에 따라 속도가 변하는 방식을 정의합니다.
위의 예제에서 파티클은 기본 속도보다 훨씬 빠르게 발사된 다음 수명의 첫 60% 동안 기본 속도의 20%로 빠르게 느려지고 나머지 40% 동안은 정지합니다.

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

통치자 유형

이는 조준 인터페이스가 표시하고 지원하는 것을 정의합니다.

  • 'cone'
  • 'line'
  • '빔'

추가이미싱 속도 픽셀당
이 프로퍼티는 통치자 유형과 함께 사용되며 이펙트의 범위가 길수록 파티클을 얼마나 빠르게 생성해야 하는지를 나타냅니다.

scaleX
입자를 얼마나 넓혀야 하는지 결정하며, 기본 크기에 대한 배수입니다.

scaleY
파티클의 높이를 결정하며, 기본 크기에 대한 배수입니다.

알랭파티클
이렇게 하면 각 파티클의 정렬이 발사된 각도와 일치하도록 강제 정렬됩니다.

회전 속도
파티클의 회전 속도를 결정하며, 기본값은 회전 없음입니다.

emitterSize
이미터 상자의 크기를 결정합니다.
값이 5이면 10x10 픽셀 이미터 박스가 됩니다.

isPointToPoint

경로를 따라 파티클을 발사하는 동안 이펙트가 시작에서 끝으로 이동할지 여부를 결정하며, 조준된 이펙트에서만 사용할 수 있습니다.

하위 이미터

하위 이미터에는 이미터 목록이 있습니다.

  • 유형 - 0은 파티클에 서브이미터를 붙일 때, 1은 파티클의 수명 주기가 끝날 때 스폰할 것을 나타냅니다.
  • inheritDirection - 서브 이미터의 +Y 방향을 파티클이 향하고 있는 방향과 같게 설정합니다(참 또는 거짓).
  • 상속된 속도 양 - 이미터 파티클에 기존 파티클 속도를 얼마나 더할지 결정합니다.
  • 이미터 이름 - 이름으로 타겟팅할 수 있는 다른 이미터입니다. 파티클에서 실행할 때 다음 이미터 중 하나를 임의로 선택합니다.
{
"emitters": [{
"type": 1,
"inheritDirection": false,
"inheritedVelocityAmount": 0,
"emitterNames": ["pooling"]
}]
}

baseEffect

새 효과의 기반이 되는 기존 효과의 이름입니다. 기본 효과의 모든 속성을 사용할 수 있으며 다른 속성을 추가로 재정의하여 사용자 지정 효과를 추가할 수 있습니다. 예를 들어 '로켓' 이펙트는 '미사일' 이펙트를 기반으로 하며, 사망 시 폭발이 추가됩니다.

{
"name": "로켓",
"baseEffect": "미사일",
"onDeath": "폭발",
}

내장 효과

효과 미리보기


{
"name": "tool_fx_beam",
"maxParticles": 500,
"scaleX": 2,
"scaleY": 3,
"alignParticles": true,
"size": 60,
"sizeGradients": [     {       "gradient": 0,       "factor": 0     },
{ "gradient": 0.3, "additionalGradientPerPixel": -0.0002, "factor": 1 },
{ "gradient": 0.8, "factor": 1.2 }
],
"sizeRandom": 0,
"lifeSpan": 15,
"lifeSpanRandom": 0,
"emissionRate": 4,
"additionalEmissionRatePerPixel": 0.02,
"emitterSize": 1,
"속도": 0,
"추가속도당픽셀": 0.07,
"속도랜덤": 0,
"각도": -1,
"각도랜덤": 1,
"지속시간": 25,
"줄자 유형": "빔"
}

분사

{
"name": "tool_fx_bomb",
"maxParticles": 500,
"alignParticles": true,
"size": 30,
"sizeRandom": 10,
"sizeGradients": [
{ "gradient": 0, "factor": 0 },
{ "gradient": 0.3, "additionalGradientPerPixel": -0.0002, "factor": 0.5 },
{ "gradient": 0.8, "factor": 2 },
{ "gradient": 1, "factor": 1.5 }
],
"lifeSpan": 25,
"lifeSpanRandom": 5,
"speed": 5,
"speedRandom": 2,
"velocityGradients": [
{ "gradient": 0, "factor": 2 },
{ "gradient": 0.6, "factor": 0.2 },
{ "gradient": 1, "factor": 0 }
],
"angle": 270,
"angleRandom": 70,
"emissionRate": 250,
"duration": 10
}

호흡

{
"name": "tool_fx_breath",
"alignParticles": true,
"maxParticles": 500,
"size": 10,
"sizeRandom": 5,
"sizeGradients": [
{ "gradient": 0, "factor": 1 },
{ "gradient": 0.2, "factor": 0, "additionalFactorPerPixel": 0.0125 },
{ "gradient": 0.7, "factor": 0, "additionalFactorPerPixel": 0.025 },
{ "gradient": 1, "factor": 1 }
],
"lifeSpan": 25,
"lifeSpanRandom": 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"
}

거품

{
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
}

불꽃

{
"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
}

모아서 폭발

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

 

폭발

{
"name": "tool_fx_explode",
"maxParticles": 500,
"alignParticles": true,
"size": 60,
"sizeRandom": 10,
"duration": 20,
"sharpnessRandom": 10,
"sharpness": 20,
"lifeSpan": 20,
"lifeSpanRandom": 5,
"speed": 7,
"velocityGradients": [
{ "gradient": 0, "factor": 3 },
{ "gradient": 0.6, "factor": 0.2 },
{ "gradient": 1, "factor": 0 }
],
"speedRandom": 0,
"angle": 0,
"angleRandom": 360,
"emissionRate": 200,
"emitRateGradients": [
{ "gradient": 0, "factor": 1 },
{ "gradient": 0.25, "factor": 0.2 },
{ "gradient": 1, "factor": 0 }
]
}

작열

{
"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
}

미사일

{
"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
}

초신성

{
"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
}

튀기기




{
"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 },

] }

로켓

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

보호막

{
"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
}

스파클
 

{
"name: "tool_fx_sparkle",
"maxParticles": 150,
"size": 30,
"sizeRandom": 3,
"sizeGradients": [
{ "gradient": 0, "factor": 0.75 },
{ "gradient": 0.2, "factor": 1 },
{ "gradient": 0.7, "factor": 1.5 },
{ "gradient": 1, "factor": 0.5 }
],
"lifeSpan": 20,
"lifeSpanRandom": 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
}

스플래터 (업그레이드)

{
"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,
"speed": 20,
"speedRandom": 1,
"sizeGradients": [
{ "gradient": 0, "factor": 0.5 },
{ "gradient": 1, "factor": 1 }
],
"subEmitters": {
"emitters": [{
"type": 1,
"inheritDirection": false,
"inheritedVelocityAmount": 0,
"emitterNames": ["pooling"]
}]
}
}
도움이 되었습니까?
91명 중 64명이 도움이 되었다고 했습니다.