OSC Creative Coding with ZigSim

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ๊ธฐ๋ณธ ์„ธํŒ…

  • ํ•„์ˆ˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ™œ์„ฑํ™”

    • OSC ํ”Œ๋Ÿฌ๊ทธ์ธ ํ™œ์„ฑํ™”
    • (์„ ํƒ ์‚ฌํ•ญ) Electronic Nodes ํ”Œ๋Ÿฌ๊ทธ์ธ ํ™œ์„ฑํ™”
  • ์—๋””ํ„ฐ ํ™˜๊ฒฝ ์„ค์ •

    • ์—๋””ํ„ฐ ํ™˜๊ฒฝ ์„ค์ •์—์„œ Asset Editor Open Location- Main Window๋กœ ๋ณ€๊ฒฝ
    • Electronic Nodes ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •์„ WireStyle- Manhattan mode๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  Round Radius: 10 ์กฐ์ •

OSC ํ†ต์‹ ์„ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ „ ์„ธํŒ…

  • ์Šค๋งˆํŠธํฐ ์ค€๋น„

    • ZigSim ์•ฑ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์„ค์น˜
      • Download ZIG SIM Latest Version 1.0.2 Android APK File - ์•ˆ๋“œ๋กœ์ด๋“œ ์˜ฌ๋“œ ๋ฒ„์ „
      • ์—…๋ฐ์ดํŠธ ์ค‘๋‹จ + ์•ฑ ์œ ์ง€๋ณด์ˆ˜ ์ถ•์†Œ ์ด์Šˆ๋กœ ํ”Œ๋ ˆ์ด์Šคํ† ์–ด์—์„œ ๋‹ค์šด๋กœ๋“œ ๋ถˆ๊ฐ€
  • PC ์ค€๋น„

    • Protokol ํ”„๋กœ๊ทธ๋žจ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์„ค์น˜

๋ ˆ๋ฒจ ํ™˜๊ฒฝ ๋ฐ ๊ธฐ๋ณธ ์˜ค๋ธŒ์ ํŠธ ๋ฐฐ์น˜

๋„คํŠธ์›Œํฌ ์„ค์ • ๋ฐ OSC ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ

  1. ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ๊ถŒ์žฅ ์‚ฌํ•ญ

    • ๋กœ์ปฌ ํ•ซ์ŠคํŒŸ์„ ํ†ตํ•œ ๋„คํŠธ์›Œํ‚น ๊ถŒ์žฅ (IP ์ฃผ์†Œ ๊ณ ์ •, ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ ์˜์กด์„ฑ ๋‚ฎ์Œ)
  2. ํ•ซ์ŠคํŒŸ ์„ค์ • ๋ฐ IP ์ฃผ์†Œ ๋ณต์‚ฌ

    • PC์—์„œ ๋ชจ๋ฐ”์ผ ํ•ซ์ŠคํŒŸ ํ™œ์„ฑํ™”
    • ํœด๋Œ€ํฐ์—์„œ ํ•ซ์ŠคํŒŸ ์—ฐ๊ฒฐ
    • ์Šค๋งˆํŠธํฐ์˜ ๊ฒŒ์ดํŠธ์›จ์ด ์ฃผ์†Œ ๋ณต์‚ฌ
      • 192.168.137.1
  3. ZigSim ์•ฑ ์„ค์ •

    • ZigSim ์•ฑ ์‹คํ–‰ ํ›„ ์„ค์ •(Settings) ํƒญ์œผ๋กœ ์ด๋™
    • ๋ณต์‚ฌํ•œ ํ•ซ์ŠคํŒŸ์˜ IP ์ฃผ์†Œ ๋ถ™์—ฌ๋„ฃ๊ธฐ
    • ํฌํŠธ ๋ฒˆํ˜ธ(Port Number)๋ฅผ 1234๋กœ ์„ค์ •
    • ๊ธฐํƒ€ ์„ค์ •: App, UDP, OSC, 30c Message Rate
  4. Protokol ํ”„๋กœ๊ทธ๋žจ ์„ค์ • ๋ฐ OSC ์—ฐ๊ฒฐ ํ™•์ธ

    • PC์—์„œ Protokol ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ํ›„ OSC ํƒญ์œผ๋กœ ์ด๋™
    • ํฌํŠธ ๋ฒˆํ˜ธ(Port Number)๋ฅผ 1234๋กœ ์„ค์ •
    • ZigSim ์•ฑ์˜ ์„ผ์„œ(Sensor) ํƒญ์—์„œ Accel ํ™œ์„ฑํ™” (๋‹ค๋ฅธ ์„ผ์„œ๋Š” ๋น„ํ™œ์„ฑํ™”)
    • ZigSim ์•ฑ์˜ ์‹œ์ž‘(Start) ํƒญ์—์„œ Protokol์„ ์ฒดํฌํ•˜์—ฌ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹  ํ™•์ธ
    • โš ๏ธ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ ๋ณ‘ํ™”๋ฒฝ์—์„œ ์ˆ˜์‹  ๋ฉ”์‹œ์ง€๋ฅผ ์ฐจ๋‹จํ•˜๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
  5. ๋ฐฉํ™”๋ฒฝ ์„ค์ • (๋ฉ”์‹œ์ง€ ์ˆ˜์‹  ๋ฌธ์ œ ์‹œ)

    • Windows ๋ฐฉํ™”๋ฒฝ ์„ค์ •- Allow an app through firewall์—์„œ Protocol, UE4 Editor, Unreal Editor ํ—ˆ์šฉ
      • Private ๋ฐ Public ๋„คํŠธ์›Œํฌ ๋ชจ๋‘ ์ฒดํฌ
  6. ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ๋ฉ”์‹œ์ง€ ์ „์†ก ์ค‘์ง€

    • ZigSim ์•ฑ์—์„œ ์„ผ์„œ ๋˜๋Š” ์„ค์ • ํƒญ ์„ ํƒํ•˜์—ฌ ๋ฉ”์‹œ์ง€ ์ „์†ก ์ค‘์ง€. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํœด๋Œ€ํฐ์—์„œ ๊ณ„์†ํ•ด์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด ๋ฐฐํ„ฐ๋ฆฌ๊ฐ€ ์†Œ๋ชจ๋จ.
  7. Protocol ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ

    • OSC ๊ธฐ๋Šฅ์ด ์ •์ƒ ์ž‘๋™ํ•จ์„ ํ™•์ธ ํ›„ Protokol ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ

์–ธ๋ฆฌ์–ผ ์—”์ง„ 5 OSC ์„ค์ • ๋ฐ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ 

OSC ์„œ๋ฒ„ ์ƒ์„ฑ ๋ฐ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹  ์„ค์ •

  1. ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ์•กํ„ฐ ์ƒ์„ฑ ๋ฐ OSC ์„œ๋ฒ„ ์„ค์ •

    • BP_OSC๋ผ๋Š” ์ด๋ฆ„์˜ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ์•กํ„ฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    • ์ด๋ฒคํŠธ ๊ทธ๋ž˜ํ”„์—์„œ Event Begin Play ๋…ธ๋“œ์— Create OSC Server ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค.
    • ZigSim ์•ฑ๊ณผ ๋™์ผํ•œ IPv4 ๋ผ์šฐํ„ฐ ์ฃผ์†Œ์™€ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Start Listening์„ ํ™œ์„ฑํ™”ํ•œ๋‹ค.
    • ์ƒ์„ฑ๋œ OSC ์„œ๋ฒ„ ์ฐธ์กฐ๋ฅผ OSC server ๋ณ€์ˆ˜๋กœ ์ €์žฅํ•˜์—ฌ ์ž๋™์œผ๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์— ์˜ํ•ด ์ฐธ์กฐ๊ฐ€ ์ง€์›Œ์ง€์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.
  2. OSC ๋ฉ”์‹œ์ง€ ์ˆ˜์‹  ์ด๋ฒคํŠธ ๋ฐ”์ธ๋”ฉ

    • OSC server ๋ณ€์ˆ˜์—์„œ Bind Event on OSC Message Received ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค.
    • Create Matching Event๋ฅผ ํ†ตํ•ด OSC In์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    • ์ด๋ฒคํŠธ ๋“œ๋กญ๋‹ค์šด์—์„œ OSC In์„ ์ˆ˜๋™์œผ๋กœ ์„ ํƒํ•œ๋‹ค.

์ˆ˜์‹ ๋œ OSC ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ ๋ฐ ํŒŒ์‹ฑ

  1. OSC ๋ฉ”์‹œ์ง€ ๋ณ€์ˆ˜ํ™” ๋ฐ ์ฃผ์†Œ ์ถ”์ถœ

    • ์ˆ˜์‹ ๋œ OSC ๋ฉ”์‹œ์ง€๋ฅผ OSC Messages ๋ณ€์ˆ˜๋กœ ์ €์žฅํ•œ๋‹ค.
    • Get OSC Message Address ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€ ์ฃผ์†Œ๋ฅผ ์ถ”์ถœํ•œ๋‹ค.
    • ์ถ”์ถœ๋œ ์ฃผ์†Œ๋ฅผ Convert OSC Address to String ๋…ธ๋“œ๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
    • ์„œ๋ฒ„ ์ž‘๋™ ํ™•์ธ์„ ์œ„ํ•ด Print String ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
    • ๋ทฐํฌํŠธ์— ์•กํ„ฐ๋ฅผ ๋ฐฐ์น˜ํ•˜๊ณ  ๊ฒŒ์ž„์„ ํ”Œ๋ ˆ์ดํ•˜์—ฌ ์ถœ๋ ฅ์ด ์ •์ƒ์ ์œผ๋กœ ๋‚˜์˜ค๋Š”์ง€ ํ…Œ์ŠคํŠธํ•ด๋ณธ๋‹ค.
      • Accle Float ๊ฐ’์„ ์ถ”์ถœํ•˜๋ ค๋ฉด ์ด ๋ฌธ์ž์—ด์„ parsingํ•ด์•ผํ•จ.
  2. ๋ฉ”์‹œ์ง€ ๋ฌธ์ž์—ด ํŒŒ์‹ฑ ๋ฐ ํ•„ํ„ฐ๋ง

    • Print String ๋…ธ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , /๋ฅผ ๊ตฌ๋ถ„์ž๋กœ ์‚ฌ์šฉํ•˜๋Š” Split ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค.
    • Split ๋…ธ๋“œ์˜ ์˜ค๋ฅธ์ชฝ ์ถœ๋ ฅ(S ์•„์›ƒ๋ ›)์„ ๋‹ค์‹œ Print String์— ์—ฐ๊ฒฐํ•˜์—ฌ ํŒŒ์‹ฑ๋œ ๋ฌธ์ž์—ด์„ ํ™•์ธํ•œ๋‹ค.
      • ์ด๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ ์Šค์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•„ํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Print String ๋…ธ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  Switch on String ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    • Switch on String ๋…ธ๋“œ์— accel์ด๋ผ๋Š” ์ด๋ฆ„์˜ ํ•€์„ ์ถ”๊ฐ€ํ•˜๊ณ , ํ•ด๋‹น ํ•€์—์„œ ์‹คํ–‰๋  ๋กœ์ง์„ ์„ค์ •ํ•œ๋‹ค.
    • accel ๋ฉ”์‹œ์ง€ ์ˆ˜์‹  ์‹œ Get OSC Message Float at Index ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ X์ถ• ๊ฐ’(์ธ๋ฑ์Šค 0)์„ ์ถ”์ถœํ•œ๋‹ค.
    • X์ถ• ๊ฐ’์€ ๊ฐ€์†๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ํ™”๋ฉด ํ‰๋ฉด์— ์ˆ˜์ง์ธ ์ˆ˜ํ‰ ์ถ•์„ ๋”ฐ๋ผ ์›€์ง์ž„์„ ๊ฐ์ง€ํ•œ๋‹ค.

๊ฐ€์†๋„ ๊ฐ’ ํ•„ํ„ฐ๋ง ๋ฐ ๋ณ€์ˆ˜ ์ €์žฅ

  • Print String ๋…ธ๋“œ๋ฅผ ๋‹ค์‹œ ์—ฐ๊ฒฐํ•˜์—ฌ X์ถ• ๊ฐ€์†๋„ ๊ฐ’์„ ํ™•์ธํ•˜๊ณ , ์ขŒ์šฐ ์›€์ง์ž„์— ๋”ฐ๋ผ ๊ฐ’์ด ๋ณ€ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•œ๋‹ค.
  • ๊ฐ€์†๋„ ๊ฐ’์ด ํŠน์ • ์ž„๊ณ„๊ฐ’(-0.5)๋ณด๋‹ค ํฌ๊ณ , ํŠน์ • ๋ฐฉํ–ฅ(์˜ค๋ฅธ์ชฝ์œผ๋กœ ์Šค์œ™)์œผ๋กœ ์›€์ง์ผ ๋•Œ๋งŒ ๊ฐ’์„ ์ €์žฅํ•˜๋„๋ก ์„ค์ •ํ•œ๋‹ค. ์ฆ‰ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ถฉ๋ถ„ํžˆ ๊ฐ•ํ•˜๊ฒŒ ์Šค์œ™ํ•  ๋•Œ๋งŒ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์ž‘์€ ์›€์ง์ž„์€ ๋ฌด์‹œํ•˜๋„๋ก ์„ค์ •ํ•œ๋‹ค.
  • Less Than ๋…ธ๋“œ์™€ Branch ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด์„ ๊ฒ€์‚ฌํ•œ๋‹ค.
  • ์กฐ๊ฑด์ด ์ฐธ์ผ ๊ฒฝ์šฐ, X์ถ• ๊ฐ€์†๋„ ๊ฐ’์˜ ์ ˆ๋Œ€๊ฐ’์„ Accel X ๋ณ€์ˆ˜์— ์ €์žฅํ•œ๋‹ค.
  • ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ผ ๊ฒฝ์šฐ, Accel X ๋ณ€์ˆ˜ ๊ฐ’์„ 0์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
  • ์ž„๊ณ„๊ฐ’์€ ์ถ”ํ›„ ์กฐ์ ˆ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ˜„์žฌ ์„ค์ •์œผ๋กœ ์ปดํŒŒ์ผ ๋ฐ ์ €์žฅํ•œ๋‹ค.

๋ฌผ๋ฆฌ ์ œ์•ฝ ์กฐ๊ฑด์„ ํ™œ์šฉํ•œ ์Šคํ”ผ๋„ˆ ์•กํ„ฐ ์ƒ์„ฑ

1.1. ์Šคํ”ผ๋„ˆ ์•กํ„ฐ ์ปดํฌ๋„ŒํŠธ ์„ค์ •

์Šคํ”ผ๋„ˆ ์•กํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ฐฐ์น˜ํ•˜๋ฉฐ ์ดˆ๊ธฐ ์„ค์ •์„ ์ง„ํ–‰ํ•œ๋‹ค.

  1. BP_spinner ์•กํ„ฐ ์ƒ์„ฑ ๋ฐ ์ปดํฌ๋„ŒํŠธ ๋ฐฐ์น˜

    • BP_spinner๋ผ๋Š” ์ด๋ฆ„์˜ ์•กํ„ฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    • root๋ผ๋Š” ์ด๋ฆ„์˜ ์”ฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ƒˆ๋กœ์šด ๋ฃจํŠธ๋กœ ์„ค์ •ํ•œ๋‹ค.
      • movable ๋ชจ๋นŒ๋ฆฌํ‹ฐ๋กœ ์„ค์ •
  2. ๊ธฐ๋ณธ ๋ฒ ์ด์Šค ์ปดํฌ๋„ŒํŠธ ์„ค์ •

    • base๋ผ๋Š” ์ด๋ฆ„์˜ ํ๋ธŒ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
    • ํ๋ธŒ์˜ ํฌ๊ธฐ๋ฅผ 0.1, 0.2, 0.1๋กœ ์กฐ์ •ํ•˜์—ฌ ๋ฌผ๋ฆฌ ์ œ์•ฝ ์กฐ๊ฑด์˜ ์•ต์ปค๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
  3. ํŒ”(Arm) ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€ ๋ฐ ์„ค์ •

    • root์˜ ์ž์‹์œผ๋กœ arm1์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์Šคํƒœํ‹ฑ ๋ฉ”์‹œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  arm1 ๋ฉ”์‹œ๋ฅผ ํ• ๋‹นํ•œ๋‹ค.
    • arm1์˜ ์ž์‹์œผ๋กœ impulseArrow๋ผ๋Š” ์ด๋ฆ„์˜ ํ™”์‚ดํ‘œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  Z์ถ•์œผ๋กœ -80 ์œ„์น˜์— ๋ฐฐ์น˜ํ•œ๋‹ค.
    • root์˜ ์ž์‹์œผ๋กœ arm2end๋ผ๋Š” ์ด๋ฆ„์˜ ์Šคํƒœํ‹ฑ ๋ฉ”์‹œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  arm2end ๋ฉ”์‹œ๋ฅผ ํ• ๋‹นํ•œ๋‹ค.
    • arm2end์˜ ์ž์‹์œผ๋กœ arm2light, arm2bar, arm2start๋ผ๋Š” ์ด๋ฆ„์˜ ์Šคํƒœํ‹ฑ ๋ฉ”์‹œ ์ปดํฌ๋„ŒํŠธ ์„ธ ๊ฐœ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ฐ๊ฐ ํ•ด๋‹น ๋ฉ”์‹œ๋ฅผ ํ• ๋‹นํ•œ๋‹ค.
    • arm2start์™€ arm2bar์˜ Z์ถ• ์œ„์น˜๋ฅผ 80์œผ๋กœ ์„ค์ •ํ•˜๊ณ , arm2light์˜ ์œ„์น˜๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
  4. ์ปดํŒŒ์ผ ๋ฐ ์ €์žฅ

    • ์„ค์ •์ด ์™„๋ฃŒ๋˜๋ฉด ์ปดํŒŒ์ผํ•˜๊ณ  ์ €์žฅํ•œ๋‹ค.

1.2. ๋ฌผ๋ฆฌ ์ œ์•ฝ ์กฐ๊ฑด(Physics Constraint) ์„ค์ •

์‹ค์‹œ๊ฐ„ ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์œ„ํ•ด ๋ฌผ๋ฆฌ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ฐ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ์—ฐ๊ฒฐ ๋ฐ ์ œํ•œ ์‚ฌํ•ญ์„ ์„ค์ •ํ•œ๋‹ค.

  1. ๋ฌผ๋ฆฌ ์ œ์•ฝ ์กฐ๊ฑด ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€

    • root ์ปดํฌ๋„ŒํŠธ์— PC_base๋ผ๋Š” ์ด๋ฆ„์˜ ๋ฌผ๋ฆฌ ์ œ์•ฝ ์กฐ๊ฑด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
    • PC_base๋ฅผ ๋ณต์ œํ•˜์—ฌ PC_joint๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
    • PC_joint๋ฅผ ๋‘ ํŒ”์ด ๋งŒ๋‚˜๋Š” ์ง€์ ์œผ๋กœ ์ด๋™์‹œํ‚จ๋‹ค (Y: 5, Z: -80).
  2. ์ฝœ๋ฆฌ์ „ ๋ฉ”์‹œ ์„ค์ •

    • ๋ฌผ๋ฆฌ ์ œ์•ฝ ์กฐ๊ฑด์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•ด Arm1๊ณผ Arm2End ๋ฉ”์‹œ์— ์ถฉ๋Œ ๋ฉ”์‹œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.
    • Arm1 ๋ฉ”์‹œ๋ฅผ ์—ด๊ณ  ๋ฐ•์Šค ์ถฉ๋Œ(Box Collision)์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํŒ”์˜ ํ˜•ํƒœ์— ๋งž๊ฒŒ ์กฐ์ •ํ•˜๊ณ  ์ €์žฅํ•œ๋‹ค.
    • Arm2End ๋ฉ”์‹œ์—๋„ ๋™์ผํ•˜๊ฒŒ ๋ฐ•์Šค ์ถฉ๋Œ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ €์žฅํ•œ๋‹ค.
  3. ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฐ ์ถฉ๋Œ ์„ค์ •

    • BP_spinner๋กœ ๋Œ์•„์™€ arm1 ์ปดํฌ๋„ŒํŠธ์˜ ๋””ํ…Œ์ผ ํŒจ๋„์—์„œ **๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜(Simulate Physics)**์„ ํ™œ์„ฑํ™”ํ•œ๋‹ค.
    • arm1์˜ ์ปจ์ŠคํŠธ๋ ˆ์ธํŠธ ์กฐ๊ฑด์—์„œ Y์ถ• ์œ„์น˜๋ฅผ ์ž ๊ทธ๊ณ , X์ถ•๊ณผ Z์ถ• ํšŒ์ „์„ ์ž ๊ทผ๋‹ค. ์ด๋Š” ๋ถˆํ•„์š”ํ•œ ์›€์ง์ž„์„ ๋ฐฉ์ง€ํ•˜์—ฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์•ˆ์ •์„ฑ์„ ๋†’์ธ๋‹ค.
      • โš ๏ธ ์Šคํ”ผ๋„ˆ๋ฅผ ์›€์ง์ด๋ ค๊ณ  ํ•˜๋ฉด ์›€์ง์ž„์„ ์ œํ•œํ•˜๋Š” ์›์ธ์ด ๋จ
    • arm1์˜ ์ถฉ๋Œ ํ”„๋ฆฌ์…‹์„ Physics Actor๋กœ ์„ค์ •ํ•œ๋‹ค.
    • arm2end ์ปดํฌ๋„ŒํŠธ์—๋„ ๋™์ผํ•œ ์„ค์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
    • arm2end์˜ ๊ณ ๊ธ‰ ์„ค์ •์—์„œ **์งˆ๋Ÿ‰ ์Šค์ผ€์ผ(Mass Scale)**์„ 2๋กœ ์„ค์ •ํ•œ๋‹ค.
    • base ํ๋ธŒ ๋ฉ”์‹œ์˜ ์ถฉ๋Œ ์„ค์ •์„ Custom - ์ฟผ๋ฆฌ ์ „์šฉ(Query Only) ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ , ์˜ค๋ธŒ์ ํŠธ ํƒ€์ž…์„ Physics Body๋กœ ์„ค์ •ํ•œ๋‹ค. Physics Body๋งŒ Blockํ•˜๋„๋ก ์„ค์ •ํ•˜๊ณ , ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์€ ignoreํ•œ๋‹ค.
    • base ํ๋ธŒ์˜ **๊ฐ€์‹œ์„ฑ(Visibility)**์„ ๋„๊ณ , ์ด๋Š” ๋ฌผ๋ฆฌ์  ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  4. ๋ฌผ๋ฆฌ ์ œ์•ฝ ์กฐ๊ฑด ์—ฐ๊ฒฐ ์„ค์ •

    • PC_Base ์ปดํฌ๋„ŒํŠธ์—์„œ **์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„ 1(Component Name 1)**์„ Base๋กœ, **์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„ 2(Component Name 2)**๋ฅผ Arm1์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
    • PC_Joint ์ปดํฌ๋„ŒํŠธ์—์„œ ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„ 1์„ Arm1๋กœ, ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„ 2๋ฅผ Arm2End๋กœ ์„ค์ •ํ•œ๋‹ค. (โš ๏ธ์ด๋ฆ„์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๋ฏ€๋กœ ์ฃผ์˜ํ•œ๋‹ค.)
    • PC_Base์™€ PC_joint์˜ **๊ฐ๋„ ์ œํ•œ(Angular Limits)**์—์„œ Swing 1๊ณผ Twist ๋ชจ์…˜์„ ์ž ๊ทธ๊ณ , Swing 2 ๋ชจ์…˜์€ ์ž์œ ๋กญ๊ฒŒ Free ๋‘”๋‹ค. ์ด๋Š” ํŒ”์ด Y์ถ•์„ ์ค‘์‹ฌ์œผ๋กœ๋งŒ ์ž์œ ๋กญ๊ฒŒ ์›€์ง์ด๋„๋ก ํ•œ๋‹ค.
  5. ์ถฉ๋Œ ๋น„ํ™œ์„ฑํ™” ๋ฐ ๊ฐ•์„ฑ ์„ค์ •

    • PC_base์—์„œ base์™€ arm1์ด ๊ฒน์น˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด **์ถฉ๋Œ ๋น„ํ™œ์„ฑํ™”(Disable Collision)**๋ฅผ ํด๋ฆญํ•˜์—ฌ ๋ฌผ๋ฆฌ์  ์ถฉ๋Œ๋กœ ์ธํ•œ ํญ๋ฐœ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.
    • ํšŒ์ „ ์‹œ ๋งˆ์ฐฐ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด PC_Base์™€ PC_joint์˜ ๊ฐ๋„ ๋ชจํ„ฐ(Angular Motor) ์„น์…˜์œผ๋กœ ์ด๋™ํ•œ๋‹ค.
    • Drive Mode๋ฅผ Twist and Swing์œผ๋กœ ์„ค์ •ํ•˜๊ณ , Target Velocity์—์„œ Swing์„ ํ™œ์„ฑํ™”ํ•˜๋ฉฐ **๊ฐ•๋„(Strength)**๋ฅผ 10์œผ๋กœ ์„ค์ •ํ•œ๋‹ค. ๊ฐ•๋„ ๊ฐ’์€ ํšŒ์ „ ์‹œ ๋งˆ์ฐฐ์˜ ์ •๋„๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.
  6. ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ…Œ์ŠคํŠธ

    • BP_Spinner - Construction Script๋กœ ์ด๋™ํ•˜์—ฌ PC_Base๋ฅผ ๊ฐ€์ ธ์™€ ๊ฐ๋„ ์†๋„ ํƒ€๊ฒŸ(Set Angular Velocity Target) ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    • make vector๋ฅผ ์ƒ์„ฑํ•˜๊ณ  Y ๊ฐ’์„ 1.5๋กœ ์„ค์ •ํ•œ๋‹ค.
    • ์ปดํŒŒ์ผํ•˜๊ณ  ์ €์žฅํ•œ ํ›„ ๋ทฐํฌํŠธ์—์„œ **์‹œ๋ฎฌ๋ ˆ์ดํŠธ(Simulate)**๋ฅผ ํด๋ฆญํ•˜์—ฌ ์Šคํ”ผ๋„ˆ๊ฐ€ ํšŒ์ „ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
    • ๋งŒ์•ฝ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋ˆ„๋ฝ๋œ ๋ถ€๋ถ„์ด ์—†๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

OSC์™€ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋ฅผ ํ™œ์šฉํ•œ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์•„ํŠธ ๊ตฌํ˜„

Unreal Engine 5์—์„œ OSC ์‹ ํ˜ธ๋ฅผ ๋ฐ›์•„ ๊ฒŒ์ž„ ๋‚ด ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์›€์ง์ด๊ณ  ํŒŒํ‹ฐํด ํšจ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋ฅผ ํ†ตํ•ด ๋‹จ๊ณ„๋ณ„๋กœ ํ•™์Šตํ•œ๋‹ค.

1.1. ์นด๋ฉ”๋ผ ์„ค์ • ๋ฐ BP_Spinner ์•กํ„ฐ ์ค€๋น„

์˜์ƒ ์‹œ์ฒญ ํ™˜๊ฒฝ ์„ค์ •์„ ์œ„ํ•ด ์นด๋ฉ”๋ผ๋ฅผ ๋ ˆ๋ฒจ์— ๋ฐฐ์น˜ํ•˜๊ณ  ๋ ˆ๋ฒจ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ์—์„œ ์นด๋ฉ”๋ผ ์ฐธ์กฐ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ”Œ๋ ˆ์ด ์‹œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ณด์ด๋„๋ก ์„ค์ •ํ•œ๋‹ค. ๋˜ํ•œ, OSC ์‹ ํ˜ธ๋ฅผ ๋ฐ›์„ BP_Spinner ์•กํ„ฐ์— OSC ์˜ค๋ธŒ์ ํŠธ ์ฐธ์กฐ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ธ์Šคํ„ด์Šค ํŽธ์ง‘ ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค์ •ํ•œ๋‹ค.

  1. ์นด๋ฉ”๋ผ ์„ค์ • ๋ฐ ๋ ˆ๋ฒจ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ๊ตฌ์„ฑ
    • BP_Spinner ์•กํ„ฐ๋ฅผ ๋ ˆ๋ฒจ์— ๋ฐฐ์น˜ํ•˜๊ณ  ์œ„์น˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
    • ๋ ˆ๋ฒจ์— ์นด๋ฉ”๋ผ๊ฐ€ ํ• ๋‹น๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ, ์นด๋ฉ”๋ผ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋ ˆ๋ฒจ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋ฅผ ์—ฐ๋‹ค.
    • Event Tick ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์นด๋ฉ”๋ผ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    • ํ”Œ๋ ˆ์ด์–ด ์ปจํŠธ๋กค๋Ÿฌ๋„ ํ•„์š”ํ•˜๋ฉฐ, Set View Target with Blend ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์นด๋ฉ”๋ผ๋ฅผ ํƒ€๊ฒŸ์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
    • ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์ปดํŒŒ์ผ ๋ฐ ์ €์žฅํ•œ๋‹ค.
  2. BP_Spinner ์•กํ„ฐ์— OSC ์ฐธ์กฐ ๋ณ€์ˆ˜ ์ถ”๊ฐ€
    • ๋ ˆ๋ฒจ์—์„œ ์นด๋ฉ”๋ผ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ํ”Œ๋ ˆ์ดํ•œ๋‹ค.
    • BP_Spinner ์•กํ„ฐ์—์„œ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜ BP_OSC๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    • ๋ณ€์ˆ˜ ํƒ€์ž…์„ BP_OSC ์˜ค๋ธŒ์ ํŠธ ์ฐธ์กฐ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
    • โ€œInstance Editableโ€ ์˜ต์…˜์„ ์ฒดํฌํ•˜์—ฌ ์ธ์Šคํ„ด์Šค ํŽธ์ง‘ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์„ค์ •ํ•œ๋‹ค.
    • ์ปดํŒŒ์ผ ๋ฐ ์ €์žฅํ•œ๋‹ค.

1.2. BP_Spinner์™€ OSC ์—ฐ๋™ ๋ฐ ํšŒ์ „ ๊ตฌํ˜„

BP_Spinner ์•กํ„ฐ์™€ OSC ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๋™ํ•˜์—ฌ, OSC ์‹ ํ˜ธ์˜ X, Y, Z ๊ฐ’์„ ๋ฐ›์•„ BP_Spinner ์•กํ„ฐ๋ฅผ ํšŒ์ „์‹œํ‚ค๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ•œ๋‹ค.

  1. BP_Spinner์™€ BP_OSC ์•กํ„ฐ ์—ฐ๊ฒฐ

    • Map 1์œผ๋กœ ์ด๋™ํ•˜์—ฌ BP_Spinner๋ฅผ ์„ ํƒํ•œ๋‹ค.
    • ์Šคํฌ์ด๋“œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ ˆ๋ฒจ์— ์žˆ๋Š” BP_OSC ์•กํ„ฐ๋ฅผ ์„ ํƒํ•˜์—ฌ ์—ฐ๊ฒฐํ•œ๋‹ค.
    • ์ด ๋ฐฉ์‹์€ ์ง์ ‘์ ์ธ ์•กํ„ฐ ์ฐธ์กฐ๋กœ, ๋Œ€๊ทœ๋ชจ ๊ฒŒ์ž„์—์„œ๋Š” ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„ ์ข‹์ง€ ์•Š์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์Šต๊ด€์ž„์„ ์ธ์ง€ํ•œ๋‹ค.
    • ํ”„๋กœ์ ํŠธ์—์„œ ํ•ด๋‹น ์•กํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ฏ€๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” Get All Actors Of Class, ์บ์ŠคํŒ…, Is Valid ์ฒดํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ํšจํ•˜์ง€ ์•Š์€ ์ฐธ์กฐ๋กœ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  2. OSC ๊ฐ’ ๊ธฐ๋ฐ˜ ํšŒ์ „ ๋กœ์ง ๊ตฌํ˜„

    • BP_Spinner์˜ ์ด๋ฒคํŠธ ๊ทธ๋ž˜ํ”„๋กœ ์ด๋™ํ•˜์—ฌ Event Tick ๋…ธ๋“œ๋ฅผ ํ™œ์šฉํ•œ๋‹ค.
    • Event Tick์—์„œ BP_OSC ์ฐธ์กฐ๋ฅผ ๋“œ๋ž˜๊ทธํ•˜์—ฌ OSC์˜ X, Y, Z ๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค.
    • ๊ฐ€์ ธ์˜จ X, Y, Z ๊ฐ’์„ Accel_X๋ณ€์ˆ˜๋กœ ์Šน๊ฒฉ์‹œ์ผœ ์ €์žฅํ•œ๋‹ค.

    FInterp To ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” TouchDesigner์˜ Lag Chop๊ณผ ์œ ์‚ฌํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. ๋ณธ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๊ฐ’์˜ ์ฐจ์ด๊ฐ€ ์—†์–ด ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์ œ๊ฑฐํ–ˆ๋‹ค.

    ์„ผ์„œ ๊ฐ’์— ๋”ฐ๋ผ

    • ์ด์ œ ์–ป์€ ๋ถ€๋™ ์†Œ์ˆ˜์  ๊ฐ’์œผ๋กœ ์ž„ํŽ„์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ•œ๋‹ค.
    • Impulse Arm1์ด๋ผ๋Š” ์ปค์Šคํ…€ ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , Event Tick์—์„œ ์–ป์€ Accel X ๊ฐ’์„ ์ด ์ด๋ฒคํŠธ๋กœ ์ „๋‹ฌํ•œ๋‹ค.
    • ์ž„ํŽ„์Šค ๋ฒกํ„ฐ๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด Impulse Arrow๋ฅผ ๋“œ๋ž˜๊ทธํ•˜๊ณ , Get Forward Vector์™€ Get World Location์„ ์‚ฌ์šฉํ•œ๋‹ค.
      • ๋ฒกํ„ฐ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์„ ํ˜• ๋Œ€์ˆ˜ํ•™ ํ•™์Šต์„ ๊ฐ•๋ ฅํžˆ ์ถ”์ฒœํ•œ๋‹ค.
    • ๋จผ์ € Accle X๊ฐ’์„ Scalar ๊ฐ’๊ณผ ๊ณฑํ•œ๋‹ค.
      • ์ด ์Šค์นผ๋ผ ๊ฐ’์„ Impulse Scalar ๋ณ€์ˆ˜๋กœ ์Šน๊ฒฉ์‹œํ‚ค๊ณ  ๊ธฐ๋ณธ๊ฐ’์„ 200์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
    • ๋‹จ์œ„ ๋ฒกํ„ฐ์ธ Forward Vector๋ฅผ ๊ณฑ์…ˆ ๊ฒฐ๊ณผ๋กœ ์Šค์ผ€์ผ๋งํ•˜๊ณ , ์ด ๊ฒฐ๊ณผ๋ฅผ World Location๊ณผ ๋”ํ•˜์—ฌ ํ•„์š”ํ•œ ์ž„ํŽ„์Šค ๋ฒกํ„ฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    • Arm1 ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋“œ๋ž˜๊ทธํ•˜์—ฌ Add Impulse at Location ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๊ณ„์‚ฐ๋œ ์ž„ํŽ„์Šค ๋ฒกํ„ฐ๋ฅผ Impulse์—, World Location์„ Location์— ์—ฐ๊ฒฐํ•œ๋‹ค.
  3. ํšŒ์ „ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ

    • ์„ค์ •๋œ ๋กœ์ง์œผ๋กœ ํœด๋Œ€ํฐ์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ”๋“ค๋ฉด BP_Spinner๊ฐ€ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•ด์•ผ ํ•œ๋‹ค.
    • Map 1์œผ๋กœ ์ด๋™ํ•˜์—ฌ Zig Sim์ด ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธํ•˜๊ณ  ํ”Œ๋ ˆ์ดํ•œ๋‹ค.
    • ํœด๋Œ€ํฐ์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ”๋“ค๋ฉด BP_Spinner๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ํšŒ์ „ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

1.3. ํŒŒํ‹ฐํด ํŠธ๋ ˆ์ผ ์ƒ์„ฑ์„ ์œ„ํ•œ Niagara ์‹œ์Šคํ…œ ๊ตฌํ˜„

BP_Spinner์˜ ์›€์ง์ž„์„ ๋”ฐ๋ผ๊ฐ€๋Š” ํŒŒํ‹ฐํด ํŠธ๋ ˆ์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Niagara ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค๊ณ , ํŒŒํ‹ฐํด ์žฌ์งˆ์„ ์„ค์ •ํ•˜๋ฉฐ, Niagara ์‹œ์Šคํ…œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์กฐ์ •ํ•œ๋‹ค.

  1. ํŒŒํ‹ฐํด ์žฌ์งˆ ์ƒ์„ฑ

    • ํŒŒํ‹ฐํด ํŠธ๋ ˆ์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์ „์— ํŒŒํ‹ฐํด์— ์‚ฌ์šฉํ•  ์žฌ์งˆ์„ ์ƒ์„ฑํ•œ๋‹ค.
    • Map ํด๋”์— M_NS_Trail์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์žฌ์งˆ์„ ์ƒ์„ฑํ•œ๋‹ค.
    • ์žฌ์งˆ์˜ ๋ธ”๋ Œ๋“œ ๋ชจ๋“œ๋ฅผ Translucent๋กœ, ์…ฐ์ด๋”ฉ ๋ชจ๋ธ์„ Unlit์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
    • Particle Color ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์•ŒํŒŒ ๊ฐ’์„ Opacity์— ์—ฐ๊ฒฐํ•œ๋‹ค.
    • Multiply ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ƒ‰์ƒ๊ณผ 5๋ฅผ ๊ณฑํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ Emissive Color์— ์—ฐ๊ฒฐํ•œ๋‹ค.
    • ์žฌ์งˆ์„ ์ €์žฅํ•˜๊ณ  ๋‹ซ๋Š”๋‹ค.
  2. Niagara ์‹œ์Šคํ…œ ์ƒ์„ฑ ๋ฐ ์„ค์ •

    • ์ฝ˜ํ…์ธ  ๋ธŒ๋ผ์šฐ์ €์— _effects ํด๋”๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    • _effects ํด๋” ์•ˆ์—์„œ Niagara ์‹œ์Šคํ…œ์„ ์ƒ์„ฑํ•˜๊ณ  NS_Trail๋กœ ์ด๋ฆ„์„ ์ง€์ •ํ•œ๋‹ค.
    • ํ…œํ”Œ๋ฆฟ์œผ๋กœ Fountain์„ ์„ ํƒํ•˜๊ณ  Add๋ฅผ ํด๋ฆญํ•œ๋‹ค.
    • ์ƒ์„ฑ๋œ Niagara ์‹œ์Šคํ…œ์„ ์—ด๊ณ  ๋‹ค์Œ ์„ค์ •์„ ์ ์šฉํ•œ๋‹ค.
    • Shape Location, Add Velocity, Drag, Sprite Renderer๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
    • ๋Œ€์‹  Ribbon Renderer๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
    • ์ƒ์„ฑํ•œ M_NS_Trail ์žฌ์งˆ์„ Ribbon Renderer์— ์ ์šฉํ•œ๋‹ค.
    • ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค์ •์„ ๋ณ€๊ฒฝํ•œ๋‹ค.
    • Spawn Rate๋ฅผ ์ดˆ๋‹น 30์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
    • Initialize Particle์—์„œ Lifetime Mode๋ฅผ Direct Set์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ์ˆ˜๋ช…์„ 2.5์ดˆ๋กœ ์ง€์ •ํ•œ๋‹ค.
    • Color Mode์—์„œ ์ƒ‰์ƒ ๋ฒกํ„ฐ ์˜† ๋“œ๋กญ๋‹ค์šด์„ User๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ์—์„œ ์ƒ‰์ƒ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
    • Mass Mode ์ดํ•˜์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์€ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋˜๋Œ๋ฆฐ๋‹ค.
    • Ribbon Width๋ฅผ Direct Set์œผ๋กœ ์„ค์ •ํ•˜๊ณ  1.5๋กœ ์ง€์ •ํ•œ๋‹ค.
    • Gravity๋ฅผ X: 0, Y: 500, Z: 0์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
    • ๋ชจ๋“  ์„ค์ •์ด ์™„๋ฃŒ๋˜๋ฉด Niagara ์‹œ์Šคํ…œ์„ ์ €์žฅํ•˜๊ณ  ๋‹ซ๋Š”๋‹ค.

1.4. Niagara ์‹œ์Šคํ…œ์„ BP_Spinner์— ์—ฐ๊ฒฐ ๋ฐ ํ…Œ์ŠคํŠธ

์ƒ์„ฑํ•œ Niagara ์‹œ์Šคํ…œ์„ BP_Spinner ์•กํ„ฐ์— ์—ฐ๊ฒฐํ•˜์—ฌ ์›€์ง์ž„์— ๋”ฐ๋ผ ํŒŒํ‹ฐํด ํŠธ๋ ˆ์ผ์ด ์ƒ์„ฑ๋˜๋„๋ก ์„ค์ •ํ•˜๊ณ , ์ตœ์ข…์ ์œผ๋กœ ์ž‘๋™์„ ํ™•์ธํ•œ๋‹ค.

  1. Niagara ์‹œ์Šคํ…œ ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€ ๋ฐ ์—ฐ๊ฒฐ
    • BP_Spinner ์•กํ„ฐ์— Arm Two ์ปดํฌ๋„ŒํŠธ์˜ ์ž์‹์œผ๋กœ Niagara_Pos๋ผ๋Š” ์ด๋ฆ„์˜ Scene Component๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
    • Niagara_pos ์ปดํฌ๋„ŒํŠธ๋ฅผ Arm2End์˜ ์ž์†์œผ๋กœ ์ข…์†ํ•œ๋‹ค.
    • ์ด๋ฒคํŠธ ๊ทธ๋ž˜ํ”„์—์„œ Event Begin Play ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ Spawn System Attached ๋…ธ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
    • Niagara Pause ์ปดํฌ๋„ŒํŠธ๋ฅผ Attach Component์— ์—ฐ๊ฒฐํ•œ๋‹ค.
    • System Template์— ์ƒ์„ฑํ•œ NS_Trail์„ ์„ ํƒํ•œ๋‹ค.
    • ์ƒ์„ฑ๋œ Niagara ์‹œ์Šคํ…œ์„ NS_Trail์ด๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ์ €์žฅํ•œ๋‹ค.
    • ์ปดํŒŒ์ผ ๋ฐ ์ €์žฅํ•œ๋‹ค.

๊ด€๋ จ์ž๋ฃŒ