Particle FX - kuimoani/defold GitHub Wiki

Particle FX

이 맀뉴얼은 νŒŒν‹°ν΄FX μ»΄ν¬λ„ŒνŠΈκ°€ μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ”μ§€, νŒŒν‹°ν΄μ˜ μ‹œκ°μ  효과λ₯Ό μ–΄λ–»κ²Œ μƒμ„±ν•˜κ³  μˆ˜μ •ν•˜λŠ”μ§€ μ„€λͺ…ν•©λ‹ˆλ‹€.

ParticleFX Overview Video

νŒŒν‹°ν΄ 효과λ₯Ό μ‚¬μš©ν•˜λ©΄ κ²Œμž„μ˜ μ‹œκ°μ  λ§€λ ₯을 λ†’μ΄λŠ” 것이 κ°€λŠ₯ν•©λ‹ˆλ‹€. μ•„λž˜ λΉ„λ””μ˜€μ—μ„œ Defold의 νŒŒν‹°ν΄ νš¨κ³Όκ°€ μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ”μ§€ μ°Έκ³  λ°”λžλ‹ˆλ‹€.

유튜브 링크: https://youtu.be/qzyB1lXNDKQ

ParticleFX Editor

Concepts

  • ParticleFX - νŒŒν‹°ν΄ 효과λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ»΄ν¬λ„ŒνŠΈ
  • Emitter - λͺ¨μ–‘에 따라 μΌμ •ν•˜κ²Œ λΆ„ν¬λœ νŒŒν‹°ν΄ μž…μžλ₯Ό 방좜(emit)ν•˜λŠ” μœ„μΉ˜κ°€ μ§€μ •λœ λͺ¨ν˜•(positioned shape)
  • Modifier - 슀폰된 νŒŒν‹°ν΄λ“€μ˜ 속도(velocity), 가속도(acceleration), μ €ν•­(drag), λ°©μ‚¬ν˜•(radial), νšŒμ˜€λ¦¬ν˜•(vortex)에 영ν–₯을 쀌
  • Tile source - ν…μŠ€μ³μ™€ ν”Œλ¦½λΆ μ• λ‹ˆλ©”μ΄μ…˜μ„ μΆ”κ°€ν•΄μ„œ μ‚¬μš©λ¨ (2D graphics λ¬Έμ„œ μ°Έκ³ )

νŒŒν‹°ν΄FX νŒŒμΌμ„ μƒμ„±ν•˜κ³  열어보면 Outlineμ°½μ—μ„œ 마우슀 였λ₯Έμͺ½ λ²„νŠΌμ„ 눌러 emiter와 modifierλ₯Ό μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Previewing

νŒŒν‹°ν΄ 효과λ₯Ό 미리보기 ν•˜λ €λ©΄, 씬 에디터λ₯Ό μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€. Scene Editing μ—μ„œ μžμ„Έν•œ μ„€λͺ…을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. 슀페이슀 ν‚€λ₯Ό μ‚¬μš©ν•˜λ©΄ νŒŒν‹°ν΄ 효과의 미리보기λ₯Ό μ‹œμž‘ν•˜κ³  쀑지할 수 μžˆμŠ΅λ‹ˆλ‹€. νŒŒν‹°ν΄ νš¨κ³Όκ°€ ν”Œλ ˆμ΄μ€‘μΈμ§€ μ•„λ‹Œμ§€μ™€ 상관 없이, μ‹€μ‹œκ°„μœΌλ‘œ μ‘°μ •(tweak)ν•˜λ©΄μ„œ νŒŒν‹°ν΄μ„ μ—…λ°μ΄νŠΈ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Value tweaking

숫자둜 된 λͺ¨λ“  속성듀은 altν‚€λ₯Ό λˆ„λ₯Έμ±„ 마우슀 휠(ν˜Ήμ€ νŠΈλž™νŒ¨λ“œμ—μ„œ 슀크둀 제슀쳐)을 μ‚¬μš©ν•˜μ—¬ μ‘°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. altν‚€λ₯Ό ctrl킀와 같이 눌러 μ‚¬μš©ν•˜λ©΄ 10λ°°κ°€ μ¦κ°€λœ κ°’μœΌλ‘œ μ‘°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Keying Properties

μ‹œκ°„ λŒ€μ— 따라 λ‹€λ₯Έ 속성값을 ν‚€λ₯Ό λ§Œλ“€μ–΄ μ‚½μž…(keying)ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€μ‹œ 말해, 이듀 값은 μ‹œκ°„μ— 따라 λ³€ν•  수 μžˆλ‹€λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. μ•„λž˜μ—μ„œ 이 κΈ°λŠ₯을 κ°€μ§„ 속성듀을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€:

  • 킀값을 μ‚½μž…ν•˜λ €λ©΄:
    • Properties μ°½μ—μ„œ ν…μŠ€νŠΈ ν•„λ“œμ— λŒ€κ³  마우슀 였λ₯Έμͺ½ λ²„νŠΌμ„ λˆŒλŸ¬μ„œ Curveλ₯Ό μ„ νƒν•˜λ©΄ 곑선이 μΆ”κ°€λ˜κ³  ν…μŠ€νŠΈ ν•„λ“œμ˜ λ°°κ²½ 색상이 λ…Ήμƒ‰μœΌλ‘œ λ°”λ€λ‹ˆλ‹€.
    • Curve Editor μ°½(ν•˜λ‹¨μ˜ νƒ­ μ€‘μ—μ„œ μ‚¬μš© κ°€λŠ₯)으둜 κ°€μ„œ 곑선을 μˆ˜μ •ν•©λ‹ˆλ‹€. 점(point)κ³Ό νƒ„μ  νŠΈ(tangent)λ₯Ό 클릭 λ“œλž˜κ·Έ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 더블클릭 ν•˜λ©΄ 점이 μΆ”κ°€λ˜κ³  μ‚­μ œλ©λ‹ˆλ‹€. (Curve Editor μ°½μ—μ„œ 곑선에 마우슀 였λ₯Έμͺ½ λ²„νŠΌμ„ λˆŒλŸ¬λ„ λ©λ‹ˆλ‹€.)
  • ν‚€ 속성(Keyed properties)은 Propertiesμ°½μ—μ„œ μˆ˜μ •ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 였직 Curve Editor μ°½μ—μ„œλ§Œ κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • ν‚€ 속성을 μ‚­μ œν•˜λ €λ©΄ ν•΄λ‹Ή ν…μŠ€νŠΈ ν•„λ“œμ—μ„œ 마우슀 였λ₯Έμͺ½ λ²„νŠΌ 눌러 λ‹€μ‹œ Curveλ₯Ό μ„ νƒν•˜λ©΄ λ©λ‹ˆλ‹€.
  • Fν‚€λ₯Ό λˆ„λ₯΄λ©΄ Curve Editor의 곑선 전체가 λ³΄μ΄κ²Œλ” 크기λ₯Ό μžλ™μœΌλ‘œ 맞μΆ₯λ‹ˆλ‹€(auto-zoom).

Spread

속성에 두 개의 ν•„λ“œκ°€ μžˆλŠ” 경우, 첫번째 ν•„λ“œλŠ” κ°’(value)이고 λ‘λ²ˆμ§Έ ν•„λ“œλŠ” μŠ€ν”„λ ˆλ“œ(Spread)μž…λ‹ˆλ‹€. κ°’(value)은 당신이 κΈ°μ€€μœΌλ‘œ μ§€μ •ν•œ 값이고, μŠ€ν”„λ ˆλ“œ(Spread)λŠ” 슀폰된 각 νŒŒν‹°ν΄μ— λ°˜μ˜λ˜λŠ” λžœλ€κ°’μ˜ λ²”μœ„μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 값이 50이고 μŠ€ν”„λ ˆλ“œκ°€ 10이면, 슀폰된 각 νŒŒν‹°ν΄μ€ 50을 κΈ°μ€€μœΌλ‘œ +/- 10의 값을 κ°€μ§€κ²Œ λ©λ‹ˆλ‹€.

Reference

Emitter Properties (방사체 속성듀)

  • Id - emitter μ‹λ³„μž (νŠΉλ³„ν•œ emitterλ₯Ό μœ„ν•΄ λ Œλ”λ§ μƒμˆ˜(render constants)λ₯Ό μ„€μ •ν•΄μ•Ό ν•  λ•Œ μ‚¬μš©λ¨)
  • Mode - emitterκ°€ μ‹€ν–‰κΈ°κ°„(duration)에 λ„λ‹¬ν•˜λ©΄ λ©ˆμΆœμ§€(once), μž¬μ‹œμž‘ν• μ§€(loop) 섀정함
  • Duration - λͺ‡ 초 λ™μ•ˆ νŒŒν‹°ν΄ μž…μžλ₯Ό 방좜(emit)ν• μ§€ μ„€μ •
  • Space - 슀폰된 μž…μžλ“€μ΄ μ‘΄μž¬ν•  κΈ°ν•˜ν•™μ μΈ 곡간. WorldλŠ” νŒŒν‹°ν΄μ΄ κ²Œμž„ μ›”λ“œμ— 남겨져 emitter와 λ…λ¦½μ μœΌλ‘œ 움직이며, EmitterλŠ” emitter의 μœ„μΉ˜μ™€ μƒλŒ€μ μœΌλ‘œ μ›€μ§μž„
  • Position/rotation - νŒŒν‹°ν΄FX μ»΄ν¬λ„ŒνŠΈμ™€ κ΄€κ³„λœ emitterλ₯Ό λ³€ν˜•(transform)함
  • Tile Source - νŒŒν‹°ν΄μ— ν…μŠ€μ³λ₯Ό μž…νžˆκ±°λ‚˜ μ• λ‹ˆλ©”μ΄μ…˜ 처리λ₯Ό μœ„ν•΄ 타일 μ†ŒμŠ€ νŒŒμΌμ„ 섀정함
  • Animation - νƒ€μΌμ†ŒμŠ€μ˜ μ–΄λ–€ μ• λ‹ˆλ©”μ΄μ…˜μ„ νŒŒν‹°ν΄μ— μ‚¬μš©ν• μ§€ 섀정함
  • Material - νŒŒν‹°ν΄μ„ 쉐이딩 ν•˜λŠ”λ° ν•„μš”ν•œ 메터리얼을 섀정함
  • Blend Mode - λΈ”λ Œλ”©μ„ μœ„ν•΄ Alpha, Add, Add Alpha, Multiplyλ₯Ό 섀정함
  • Particle Orientation - νŒŒν‹°ν΄μ΄ ν–₯ν•˜λŠ” λ°©ν–₯을 섀정함. Default(μœ λ‹› λ°©ν–₯) ν˜Ήμ€ Initial Direction μ„€μ • κ°€λŠ₯
  • Inherit Velocity - νŒŒν‹°ν΄λ“€μ΄ μƒμ†λ°›λŠ” emitter의 속λ ₯을 섀정함. 이 값은 Space 속성이 World둜 μ…‹νŒ…λ˜μ–΄ μžˆμ„ λ•Œ μ‚¬μš© κ°€λŠ₯함. emitter의 μ†λ„λŠ” λ§€ ν”„λ ˆμž„ λ§ˆλ‹€ μΆ”μ •(estimate)됨
  • Max Particle Count - emitterμ—μ„œ μ–Όλ§ˆλ‚˜ λ§Žμ€ νŒŒν‹°ν΄ μž…μžκ°€ λ™μ‹œμ— μ‘΄μž¬ν•˜λŠ”μ§€ μ„€μ •
  • Type - emitter의 λͺ¨ν˜•(shape)
    • Circle - 2D μ›ν˜•μ€ μ€‘μ‹¬μ μ—μ„œ λ°”κΉ₯ λ°©ν–₯으둜 νŒŒν‹°ν΄μ„ λ°©μΆœν•¨. 지름은 Emitter Size X κ°’μœΌλ‘œ μ„€μ • κ°€λŠ₯
    • 2D Cone - 2D 원뿔은 μ•„λž˜μͺ½ μ½”λ„ˆμ—μ„œ μ›λΏ”μ˜ μœ—λ°©ν–₯으둜 νŒŒν‹°ν΄μ„ λ°©μΆœν•¨. Emitter Size X κ°’μœΌλ‘œ μƒλ‹¨μ˜ 지름을 μ„€μ •ν•˜κ³  Y κ°’μœΌλ‘œ 높이λ₯Ό 섀정함
    • Box - 3D λ°•μŠ€λŠ” 둜컬 Y μΆ•(axis)을 따라 νŒŒν‹°ν΄μ„ λ°©μΆœν•¨. Emitter Size X, Y, Z κ°’μœΌλ‘œ 각각 넓이, 높이, 깊이λ₯Ό 섀정함
    • Sphere - 3D κ΅¬μ²΄λŠ” μ€‘μ‹¬μ μ—μ„œ λ°”κΉ₯ λ°©ν–₯으둜 νŒŒν‹°ν΄μ„ λ°©μΆœν•¨. 지름은 Emitter Size X κ°’μœΌλ‘œ μ„€μ • κ°€λŠ₯
    • Cone - 3D 원뿔은 μ•„λž˜μͺ½ μ½”λ„ˆμ—μ„œ μ›λΏ”μ˜ μœ—λ°©ν–₯으둜 νŒŒν‹°ν΄μ„ λ°©μΆœν•¨. Emitter Size X κ°’μœΌλ‘œ μƒλ‹¨μ˜ 지름을 μ„€μ •ν•˜κ³  Y κ°’μœΌλ‘œ 높이λ₯Ό 섀정함
  • Start Delay - νŒŒν‹°ν΄FXκ°€ μ‹œμž‘λœ ν›„ emitterκ°€ νŒŒν‹°ν΄μ„ λ°©μΆœν•˜κΈ° μ „κΉŒμ§€ μ–Όλ§ˆλ‚˜ λŒ€κΈ°ν• μ§€ 섀정함

Keyable Emitter Properties (μ‘°μ • κ°€λŠ₯ν•œ 방사체 속성듀)

이듀 속성듀은 κ°’(value)κ³Ό μŠ€ν”„λ ˆλ“œ(spread)λΌλŠ” 2개의 ν•„λ“œλ₯Ό κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. 이 값듀은 emitter의 ν”Œλ ˆμ΄ μ‹œκ°„(duration) λ™μ•ˆ μ‘°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μŠ€ν”„λ ˆλ“œλŠ” 각각 슀폰된 νŒŒν‹°ν΄ μž…μžλ“€μ΄ λžœλ€ν•˜κ²Œ λ³€ν•˜λŠ” κ°’μ˜ λ²”μœ„λ₯Ό μ–΄λ–»κ²Œ ν•  것인지 μ •μ˜ν•©λ‹ˆλ‹€. μŠ€ν”„λ ˆλ“œλŠ” ν˜„μž¬ 값에 ν•©μ‚°λ©λ‹ˆλ‹€.

  • Spawn Rate - μ΄ˆλ‹Ή μ–Όλ§ˆλ‚˜ λ§Žμ€ νŒŒν‹°ν΄μ„ λ°©μΆœν• μ§€ μ„€μ •
  • Emitter Size X/Y/Z - emitter λͺ¨ν˜•(shape)의 크기(dimensions)(μœ„μ˜ μ„€λͺ… μ°Έκ³ )
  • Particle Life Time - 슀폰된 νŒŒν‹°ν΄μ΄ μ–Όλ§ˆλ‚˜ 였래 μ‚΄μ•„ μžˆλŠ”κ°€λ₯Ό μ„€μ •
  • Initial Speed - 슀폰된 νŒŒν‹°ν΄μ— μ΄ˆλ°˜μ— μ–Όλ§ˆλ‚˜ 빨리 μ›€μ§μ΄λŠ”μ§€ μ„€μ •
  • Initial Size - 슀폰된 νŒŒν‹°ν΄μ΄ μ΄ˆλ°˜μ— μ–Όλ§ˆλ‚˜ 큰지 μ„€μ •
  • Initial Red/Green/Blue/Alpha - νŒŒν‹°ν΄λ“€μ˜ 컬러 값듀을 μ„€μ •

Keyable Particle Properties (μ‘°μ • κ°€λŠ₯ν•œ νŒŒν‹°ν΄ 속성듀)

이 속성값듀은 νŒŒν‹°ν΄μ˜ 수λͺ…에 따라 μ‘°μ •(keying)될 수 μžˆμŠ΅λ‹ˆλ‹€.

  • Life Scale - νŒŒν‹°ν΄μ˜ 크기λ₯Ό 수λͺ…λ™μ•ˆ μ–Όλ§ˆλ‚˜ ν™•λŒ€μΆ•μ†Œν• μ§€ μ„€μ •
  • Life Red/Green/Blue/Alpha - νŒŒν‹°ν΄μ˜ 색상을 수λͺ…λ™μ•ˆ μ–΄λ–»κ²Œ 색칠(tint)ν• μ§€ μ„€μ •

Modifier Properties (μˆ˜μ •μž 속성듀)

  • Position/rotation - λΆ€λͺ¨μ™€ μƒλŒ€μ μΈ(relative) modifierλ₯Ό λ³€ν˜•(transform)
  • μ’…λ₯˜
    • Acceleration - μœ„μΉ˜κ°’μ΄ μ—†λŠ”(no position) κ°€μ†λ„μ˜ λ°©ν–₯. 쀑λ ₯ 같은걸 ν‘œν˜„ν•  λ•Œ 이 값을 μ‚¬μš©ν•¨
    • Drag - μž…μžμ˜ 속도에 λΉ„λ‘€ν•˜μ—¬ 가속을 κ°μ†μ‹œν‚€λŠ” μ €ν•­κ°’. 곡기 μ €ν•­μ΄λ‚˜ 유체(fluid) 같은걸 ν‘œν˜„ ν•  λ•Œ 이 값을 μ‚¬μš©ν•¨
    • Radial - λ°©μ‚¬ν˜•(radial)은 μ€‘μ‹¬μ—μ„œ νŒŒν‹°ν΄μ„ λ°©μ‚¬ν•˜κ±°λ‚˜ μ€‘μ‹¬μœΌλ‘œ λŒμ–΄ λ‹ΉκΉ€. μž‘μ€ ν–‰μ„± 같은걸 ν‘œν˜„ν•  λ•Œ μ‚¬μš©ν•¨
    • Vortex - νšŒμ˜€λ¦¬ν˜•(vortex)은 쀑심점 μ£Όμœ„μ— μ›ν˜•μ΄λ‚˜ λ‚˜μ„ ν˜• λ°©ν–₯으둜 νŒŒν‹°ν΄ μž…μžλ“€μ— 영ν–₯을 쀌. λΈ”λž™ν™€μ΄λ‚˜ 토넀이도 같은걸 ν‘œν˜„ν•  λ•Œ μ‚¬μš©
  • Max Distance - νŒŒν‹°ν΄ μž…μžλ“€μ΄ ν˜„μž¬ Modifier에 영ν–₯을 λ°›κ²Œ λ˜λŠ” μ΅œλŒ€ 거리λ₯Ό 섀정함. Radialκ³Ό Vortexμ—μ„œλ§Œ μ„€μ • κ°€λŠ₯함.

Keyable Modifier Properties (μ‘°μ • κ°€λŠ₯ν•œ μˆ˜μ •μž 속성듀)

이듀 속성듀은 κ°’(value)κ³Ό μŠ€ν”„λ ˆλ“œ(spread)λΌλŠ” 2개의 ν•„λ“œλ₯Ό κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. 이 값듀은 emitter의 ν”Œλ ˆμ΄ μ‹œκ°„(duration) λ™μ•ˆ 쑰정될 수 μžˆμŠ΅λ‹ˆλ‹€. μŠ€ν”„λ ˆλ“œλŠ” 각각 슀폰된 νŒŒν‹°ν΄ μž…μžλ“€μ΄ λžœλ€ν•˜κ²Œ λ³€ν•˜λŠ” κ°’μ˜ λ²”μœ„λ₯Ό μ–΄λ–»κ²Œ ν•  것인지 μ •μ˜ν•©λ‹ˆλ‹€. μŠ€ν”„λ ˆλ“œλŠ” ν˜„μž¬ 값에 ν•©μ‚°λ©λ‹ˆλ‹€.

  • Magnitude - μˆ˜μ •μžκ°€ νŒŒν‹°ν΄μ— λ―ΈμΉ˜λŠ” 효과의 양을 섀정함