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 - ์๋๋ก์ด๋ ์ฌ๋ ๋ฒ์
- ์ ๋ฐ์ดํธ ์ค๋จ + ์ฑ ์ ์ง๋ณด์ ์ถ์ ์ด์๋ก ํ๋ ์ด์คํ ์ด์์ ๋ค์ด๋ก๋ ๋ถ๊ฐ
- ZigSim ์ฑ ๋ค์ด๋ก๋ ๋ฐ ์ค์น
-
PC ์ค๋น
- Protokol ํ๋ก๊ทธ๋จ ๋ค์ด๋ก๋ ๋ฐ ์ค์น
๋ ๋ฒจ ํ๊ฒฝ ๋ฐ ๊ธฐ๋ณธ ์ค๋ธ์ ํธ ๋ฐฐ์น
- YFJSR-UE5_OSC_Interactive_Art_Files.zip
- import options
- Generate Missing Collision โ
- import Rotation 90, 0, -90
๋คํธ์ํฌ ์ค์ ๋ฐ OSC ์ฐ๊ฒฐ ํ ์คํธ
-
๋คํธ์ํฌ ์ฐ๊ฒฐ ๊ถ์ฅ ์ฌํญ
- ๋ก์ปฌ ํซ์คํ์ ํตํ ๋คํธ์ํน ๊ถ์ฅ (IP ์ฃผ์ ๊ณ ์ , ์ธํฐ๋ท ์ฐ๊ฒฐ ์์กด์ฑ ๋ฎ์)
-
ํซ์คํ ์ค์ ๋ฐ IP ์ฃผ์ ๋ณต์ฌ
- PC์์ ๋ชจ๋ฐ์ผ ํซ์คํ ํ์ฑํ
- ํด๋ํฐ์์ ํซ์คํ ์ฐ๊ฒฐ
- ์ค๋งํธํฐ์ ๊ฒ์ดํธ์จ์ด ์ฃผ์ ๋ณต์ฌ
- 192.168.137.1
-
ZigSim ์ฑ ์ค์
- ZigSim ์ฑ ์คํ ํ ์ค์ (Settings) ํญ์ผ๋ก ์ด๋
- ๋ณต์ฌํ ํซ์คํ์ IP ์ฃผ์ ๋ถ์ฌ๋ฃ๊ธฐ
- ํฌํธ ๋ฒํธ(Port Number)๋ฅผ 1234๋ก ์ค์
- ๊ธฐํ ์ค์ : App, UDP, OSC, 30c Message Rate
-
Protokol ํ๋ก๊ทธ๋จ ์ค์ ๋ฐ OSC ์ฐ๊ฒฐ ํ์ธ
- PC์์ Protokol ํ๋ก๊ทธ๋จ ์คํ ํ OSC ํญ์ผ๋ก ์ด๋
- ํฌํธ ๋ฒํธ(Port Number)๋ฅผ 1234๋ก ์ค์
- ZigSim ์ฑ์ ์ผ์(Sensor) ํญ์์ Accel ํ์ฑํ (๋ค๋ฅธ ์ผ์๋ ๋นํ์ฑํ)
- ZigSim ์ฑ์ ์์(Start) ํญ์์ Protokol์ ์ฒดํฌํ์ฌ ๋ฉ์์ง ์์ ํ์ธ
- โ ๏ธ ๋ฉ์์ง๋ฅผ ์์ ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ ๋ณํ๋ฒฝ์์ ์์ ๋ฉ์์ง๋ฅผ ์ฐจ๋จํ๊ณ ์์ ์ ์๋ค.
-
๋ฐฉํ๋ฒฝ ์ค์ (๋ฉ์์ง ์์ ๋ฌธ์ ์)
- Windows ๋ฐฉํ๋ฒฝ ์ค์ - Allow an app through firewall์์ Protocol, UE4 Editor, Unreal Editor ํ์ฉ
- Private ๋ฐ Public ๋คํธ์ํฌ ๋ชจ๋ ์ฒดํฌ
- Windows ๋ฐฉํ๋ฒฝ ์ค์ - Allow an app through firewall์์ Protocol, UE4 Editor, Unreal Editor ํ์ฉ
-
๋ฐฐํฐ๋ฆฌ ์๋ชจ ๋ฐฉ์ง๋ฅผ ์ํ ๋ฉ์์ง ์ ์ก ์ค์ง
- ZigSim ์ฑ์์ ์ผ์ ๋๋ ์ค์ ํญ ์ ํํ์ฌ ๋ฉ์์ง ์ ์ก ์ค์ง. ๊ทธ๋ ์ง ์์ผ๋ฉด ํด๋ํฐ์์ ๊ณ์ํด์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด ๋ฐฐํฐ๋ฆฌ๊ฐ ์๋ชจ๋จ.
-
Protocol ํ๋ก๊ทธ๋จ ์ข ๋ฃ
- OSC ๊ธฐ๋ฅ์ด ์ ์ ์๋ํจ์ ํ์ธ ํ Protokol ํ๋ก๊ทธ๋จ ์ข ๋ฃ
์ธ๋ฆฌ์ผ ์์ง 5 OSC ์ค์ ๋ฐ ๋ฉ์์ง ์์
OSC ์๋ฒ ์์ฑ ๋ฐ ๋ฉ์์ง ์์ ์ค์
-
๋ธ๋ฃจํ๋ฆฐํธ ์กํฐ ์์ฑ ๋ฐ OSC ์๋ฒ ์ค์
BP_OSC๋ผ๋ ์ด๋ฆ์ ๋ธ๋ฃจํ๋ฆฐํธ ์กํฐ๋ฅผ ์์ฑํ๋ค.- ์ด๋ฒคํธ ๊ทธ๋ํ์์
Event Begin Play๋ ธ๋์Create OSC Server๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ค. - ZigSim ์ฑ๊ณผ ๋์ผํ IPv4 ๋ผ์ฐํฐ ์ฃผ์์ ํฌํธ ๋ฒํธ๋ฅผ ์
๋ ฅํ๊ณ
Start Listening์ ํ์ฑํํ๋ค. - ์์ฑ๋ OSC ์๋ฒ ์ฐธ์กฐ๋ฅผ
OSC server๋ณ์๋ก ์ ์ฅํ์ฌ ์๋์ผ๋ก ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ์ํด ์ฐธ์กฐ๊ฐ ์ง์์ง์ง ์๋๋ก ํ๋ค.
-
OSC ๋ฉ์์ง ์์ ์ด๋ฒคํธ ๋ฐ์ธ๋ฉ
OSC server๋ณ์์์Bind Event on OSC Message Received๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ค.Create Matching Event๋ฅผ ํตํดOSC In์ด๋ผ๋ ์ด๋ฆ์ ์ด๋ฒคํธ๋ฅผ ์์ฑํ๋ค.- ์ด๋ฒคํธ ๋๋กญ๋ค์ด์์
OSC In์ ์๋์ผ๋ก ์ ํํ๋ค.
์์ ๋ OSC ๋ฉ์์ง ์ฒ๋ฆฌ ๋ฐ ํ์ฑ
-
OSC ๋ฉ์์ง ๋ณ์ํ ๋ฐ ์ฃผ์ ์ถ์ถ
- ์์ ๋ OSC ๋ฉ์์ง๋ฅผ
OSC Messages๋ณ์๋ก ์ ์ฅํ๋ค. Get OSC Message Address๋ ธ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ์์ง ์ฃผ์๋ฅผ ์ถ์ถํ๋ค.- ์ถ์ถ๋ ์ฃผ์๋ฅผ
Convert OSC Address to String๋ ธ๋๋ฅผ ํตํด ๋ฌธ์์ด๋ก ๋ณํํ๋ค. - ์๋ฒ ์๋ ํ์ธ์ ์ํด
Print String๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ์ฌ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ค. - ๋ทฐํฌํธ์ ์กํฐ๋ฅผ ๋ฐฐ์นํ๊ณ ๊ฒ์์ ํ๋ ์ดํ์ฌ ์ถ๋ ฅ์ด ์ ์์ ์ผ๋ก ๋์ค๋์ง ํ
์คํธํด๋ณธ๋ค.
- Accle Float ๊ฐ์ ์ถ์ถํ๋ ค๋ฉด ์ด ๋ฌธ์์ด์ parsingํด์ผํจ.
- ์์ ๋ OSC ๋ฉ์์ง๋ฅผ
-
๋ฉ์์ง ๋ฌธ์์ด ํ์ฑ ๋ฐ ํํฐ๋ง
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. ์คํผ๋ ์กํฐ ์ปดํฌ๋ํธ ์ค์
์คํผ๋ ์กํฐ๋ฅผ ์์ฑํ๊ณ ํ์ํ ์ปดํฌ๋ํธ๋ค์ ๋ฐฐ์นํ๋ฉฐ ์ด๊ธฐ ์ค์ ์ ์งํํ๋ค.
-
BP_spinner ์กํฐ ์์ฑ ๋ฐ ์ปดํฌ๋ํธ ๋ฐฐ์น
BP_spinner๋ผ๋ ์ด๋ฆ์ ์กํฐ๋ฅผ ์์ฑํ๋ค.root๋ผ๋ ์ด๋ฆ์ ์ฌ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ๊ณ ์๋ก์ด ๋ฃจํธ๋ก ์ค์ ํ๋ค.- movable ๋ชจ๋น๋ฆฌํฐ๋ก ์ค์
-
๊ธฐ๋ณธ ๋ฒ ์ด์ค ์ปดํฌ๋ํธ ์ค์
base๋ผ๋ ์ด๋ฆ์ ํ๋ธ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ๋ค.- ํ๋ธ์ ํฌ๊ธฐ๋ฅผ
0.1, 0.2, 0.1๋ก ์กฐ์ ํ์ฌ ๋ฌผ๋ฆฌ ์ ์ฝ ์กฐ๊ฑด์ ์ต์ปค๋ก ์ฌ์ฉํ๋ค.
-
ํ(Arm) ์ปดํฌ๋ํธ ์ถ๊ฐ ๋ฐ ์ค์
root์ ์์์ผ๋กarm1์ด๋ผ๋ ์ด๋ฆ์ ์คํํฑ ๋ฉ์ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ๊ณarm1๋ฉ์๋ฅผ ํ ๋นํ๋ค.arm1์ ์์์ผ๋กimpulseArrow๋ผ๋ ์ด๋ฆ์ ํ์ดํ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ๊ณ Z์ถ์ผ๋ก -80 ์์น์ ๋ฐฐ์นํ๋ค.root์ ์์์ผ๋กarm2end๋ผ๋ ์ด๋ฆ์ ์คํํฑ ๋ฉ์ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ๊ณarm2end๋ฉ์๋ฅผ ํ ๋นํ๋ค.arm2end์ ์์์ผ๋กarm2light,arm2bar,arm2start๋ผ๋ ์ด๋ฆ์ ์คํํฑ ๋ฉ์ ์ปดํฌ๋ํธ ์ธ ๊ฐ๋ฅผ ์ถ๊ฐํ๊ณ ๊ฐ๊ฐ ํด๋น ๋ฉ์๋ฅผ ํ ๋นํ๋ค.arm2start์arm2bar์ Z์ถ ์์น๋ฅผ 80์ผ๋ก ์ค์ ํ๊ณ ,arm2light์ ์์น๋ฅผ 0์ผ๋ก ์ค์ ํ๋ค.
-
์ปดํ์ผ ๋ฐ ์ ์ฅ
- ์ค์ ์ด ์๋ฃ๋๋ฉด ์ปดํ์ผํ๊ณ ์ ์ฅํ๋ค.
1.2. ๋ฌผ๋ฆฌ ์ ์ฝ ์กฐ๊ฑด(Physics Constraint) ์ค์
์ค์๊ฐ ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์ ์ ์ํด ๋ฌผ๋ฆฌ ์ ์ฝ ์กฐ๊ฑด์ ์ถ๊ฐํ๊ณ ๊ฐ ์ปดํฌ๋ํธ ๊ฐ์ ์ฐ๊ฒฐ ๋ฐ ์ ํ ์ฌํญ์ ์ค์ ํ๋ค.
-
๋ฌผ๋ฆฌ ์ ์ฝ ์กฐ๊ฑด ์ปดํฌ๋ํธ ์ถ๊ฐ
root์ปดํฌ๋ํธ์PC_base๋ผ๋ ์ด๋ฆ์ ๋ฌผ๋ฆฌ ์ ์ฝ ์กฐ๊ฑด ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ๋ค.PC_base๋ฅผ ๋ณต์ ํ์ฌPC_joint๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ณ๊ฒฝํ๋ค.PC_joint๋ฅผ ๋ ํ์ด ๋ง๋๋ ์ง์ ์ผ๋ก ์ด๋์ํจ๋ค (Y: 5, Z: -80).
-
์ฝ๋ฆฌ์ ๋ฉ์ ์ค์
- ๋ฌผ๋ฆฌ ์ ์ฝ ์กฐ๊ฑด์ด ์ ๋๋ก ์๋ํ๊ธฐ ์ํด
Arm1๊ณผArm2End๋ฉ์์ ์ถฉ๋ ๋ฉ์๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค. Arm1๋ฉ์๋ฅผ ์ด๊ณ ๋ฐ์ค ์ถฉ๋(Box Collision)์ ์ถ๊ฐํ์ฌ ํ์ ํํ์ ๋ง๊ฒ ์กฐ์ ํ๊ณ ์ ์ฅํ๋ค.Arm2End๋ฉ์์๋ ๋์ผํ๊ฒ ๋ฐ์ค ์ถฉ๋์ ์ถ๊ฐํ๊ณ ์ ์ฅํ๋ค.
- ๋ฌผ๋ฆฌ ์ ์ฝ ์กฐ๊ฑด์ด ์ ๋๋ก ์๋ํ๊ธฐ ์ํด
-
๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์ ๋ฐ ์ถฉ๋ ์ค์
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)**์ ๋๊ณ , ์ด๋ ๋ฌผ๋ฆฌ์ ์ฉ๋๋ก๋ง ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ด๋ค.
-
๋ฌผ๋ฆฌ ์ ์ฝ ์กฐ๊ฑด ์ฐ๊ฒฐ ์ค์
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์ถ์ ์ค์ฌ์ผ๋ก๋ง ์์ ๋กญ๊ฒ ์์ง์ด๋๋ก ํ๋ค.
-
์ถฉ๋ ๋นํ์ฑํ ๋ฐ ๊ฐ์ฑ ์ค์
PC_base์์base์arm1์ด ๊ฒน์น๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด **์ถฉ๋ ๋นํ์ฑํ(Disable Collision)**๋ฅผ ํด๋ฆญํ์ฌ ๋ฌผ๋ฆฌ์ ์ถฉ๋๋ก ์ธํ ํญ๋ฐ์ ๋ฐฉ์งํ๋ค.- ํ์ ์ ๋ง์ฐฐ์ ์ถ๊ฐํ๊ธฐ ์ํด
PC_Base์PC_joint์ ๊ฐ๋ ๋ชจํฐ(Angular Motor) ์น์ ์ผ๋ก ์ด๋ํ๋ค. Drive Mode๋ฅผTwist and Swing์ผ๋ก ์ค์ ํ๊ณ ,Target Velocity์์Swing์ ํ์ฑํํ๋ฉฐ **๊ฐ๋(Strength)**๋ฅผ 10์ผ๋ก ์ค์ ํ๋ค. ๊ฐ๋ ๊ฐ์ ํ์ ์ ๋ง์ฐฐ์ ์ ๋๋ฅผ ๊ฒฐ์ ํ๋ค.
-
์๋ฎฌ๋ ์ด์ ํ ์คํธ
- BP_Spinner - Construction Script๋ก ์ด๋ํ์ฌ
PC_Base๋ฅผ ๊ฐ์ ธ์ ๊ฐ๋ ์๋ ํ๊ฒ(Set Angular Velocity Target) ๋ ธ๋๋ฅผ ์ฌ์ฉํ๋ค. make vector๋ฅผ ์์ฑํ๊ณ Y ๊ฐ์ 1.5๋ก ์ค์ ํ๋ค.- ์ปดํ์ผํ๊ณ ์ ์ฅํ ํ ๋ทฐํฌํธ์์ **์๋ฎฌ๋ ์ดํธ(Simulate)**๋ฅผ ํด๋ฆญํ์ฌ ์คํผ๋๊ฐ ํ์ ํ๋์ง ํ์ธํ๋ค.
- ๋ง์ฝ ์์๋๋ก ์๋ํ์ง ์์ผ๋ฉด ์ด์ ๋จ๊ณ์์ ๋๋ฝ๋ ๋ถ๋ถ์ด ์๋์ง ํ์ธํ๋ค.
- BP_Spinner - Construction Script๋ก ์ด๋ํ์ฌ
OSC์ ๋ธ๋ฃจํ๋ฆฐํธ๋ฅผ ํ์ฉํ ์ธํฐ๋ํฐ๋ธ ์ํธ ๊ตฌํ
Unreal Engine 5์์ OSC ์ ํธ๋ฅผ ๋ฐ์ ๊ฒ์ ๋ด ์ค๋ธ์ ํธ๋ฅผ ์์ง์ด๊ณ ํํฐํด ํจ๊ณผ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ธ๋ฃจํ๋ฆฐํธ๋ฅผ ํตํด ๋จ๊ณ๋ณ๋ก ํ์ตํ๋ค.
1.1. ์นด๋ฉ๋ผ ์ค์ ๋ฐ BP_Spinner ์กํฐ ์ค๋น
์์ ์์ฒญ ํ๊ฒฝ ์ค์ ์ ์ํด ์นด๋ฉ๋ผ๋ฅผ ๋ ๋ฒจ์ ๋ฐฐ์นํ๊ณ ๋ ๋ฒจ ๋ธ๋ฃจํ๋ฆฐํธ์์ ์นด๋ฉ๋ผ ์ฐธ์กฐ๋ฅผ ์์ฑํ์ฌ ํ๋ ์ด ์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ณด์ด๋๋ก ์ค์ ํ๋ค. ๋ํ, OSC ์ ํธ๋ฅผ ๋ฐ์ BP_Spinner ์กํฐ์ OSC ์ค๋ธ์ ํธ ์ฐธ์กฐ ๋ณ์๋ฅผ ์ถ๊ฐํ๊ณ ์ธ์คํด์ค ํธ์ง ๊ฐ๋ฅํ๋๋ก ์ค์ ํ๋ค.
- ์นด๋ฉ๋ผ ์ค์ ๋ฐ ๋ ๋ฒจ ๋ธ๋ฃจํ๋ฆฐํธ ๊ตฌ์ฑ
BP_Spinner์กํฐ๋ฅผ ๋ ๋ฒจ์ ๋ฐฐ์นํ๊ณ ์์น๋ฅผ ์ด๊ธฐํํ๋ค.- ๋ ๋ฒจ์ ์นด๋ฉ๋ผ๊ฐ ํ ๋น๋์ง ์์์ผ๋ฏ๋ก, ์นด๋ฉ๋ผ๋ฅผ ์ ํํ๊ณ ๋ ๋ฒจ ๋ธ๋ฃจํ๋ฆฐํธ๋ฅผ ์ฐ๋ค.
Event Tick๋ ธ๋๋ฅผ ์ญ์ ํ๊ณ ์นด๋ฉ๋ผ์ ๋ํ ์ฐธ์กฐ๋ฅผ ์์ฑํ๋ค.- ํ๋ ์ด์ด ์ปจํธ๋กค๋ฌ๋ ํ์ํ๋ฉฐ,
Set View Target with Blend๋ ธ๋๋ฅผ ์ฌ์ฉํ์ฌ ์นด๋ฉ๋ผ๋ฅผ ํ๊ฒ์ผ๋ก ์ค์ ํ๋ค. - ์ฝ๋๋ฅผ ์ ๋ฆฌํ๊ณ ์ปดํ์ผ ๋ฐ ์ ์ฅํ๋ค.
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 ์กํฐ๋ฅผ ํ์ ์ํค๋ ๋ก์ง์ ๊ตฌํํ๋ค.
-
BP_Spinner์BP_OSC์กํฐ ์ฐ๊ฒฐMap 1์ผ๋ก ์ด๋ํ์ฌBP_Spinner๋ฅผ ์ ํํ๋ค.- ์คํฌ์ด๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๋ฒจ์ ์๋
BP_OSC์กํฐ๋ฅผ ์ ํํ์ฌ ์ฐ๊ฒฐํ๋ค. - ์ด ๋ฐฉ์์ ์ง์ ์ ์ธ ์กํฐ ์ฐธ์กฐ๋ก, ๋๊ท๋ชจ ๊ฒ์์์๋ ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ๋์ ์ข์ง ์์ ํ๋ก๊ทธ๋๋ฐ ์ต๊ด์์ ์ธ์งํ๋ค.
- ํ๋ก์ ํธ์์ ํด๋น ์กํฐ๋ฅผ ์์ ํ์ง ์์ ๊ฒ์ด๋ฏ๋ก ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
- ์ผ๋ฐ์ ์ผ๋ก๋
Get All Actors Of Class, ์บ์คํ ,Is Valid์ฒดํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํจํ์ง ์์ ์ฐธ์กฐ๋ก ์ฝ๋๊ฐ ์คํ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๊ฒ์ด ์ข๋ค.
-
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์ ์ฐ๊ฒฐํ๋ค.
-
ํ์ ๊ธฐ๋ฅ ํ ์คํธ
- ์ค์ ๋ ๋ก์ง์ผ๋ก ํด๋ํฐ์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๋ค๋ฉด
BP_Spinner๊ฐ ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํด์ผ ํ๋ค. Map 1์ผ๋ก ์ด๋ํ์ฌ Zig Sim์ด ์คํ ์ค์ธ์ง ํ์ธํ๊ณ ํ๋ ์ดํ๋ค.- ํด๋ํฐ์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๋ค๋ฉด
BP_Spinner๊ฐ ์ ์์ ์ผ๋ก ํ์ ํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
- ์ค์ ๋ ๋ก์ง์ผ๋ก ํด๋ํฐ์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๋ค๋ฉด
1.3. ํํฐํด ํธ๋ ์ผ ์์ฑ์ ์ํ Niagara ์์คํ ๊ตฌํ
BP_Spinner์ ์์ง์์ ๋ฐ๋ผ๊ฐ๋ ํํฐํด ํธ๋ ์ผ์ ์์ฑํ๊ธฐ ์ํด Niagara ์์คํ
์ ๋ง๋ค๊ณ , ํํฐํด ์ฌ์ง์ ์ค์ ํ๋ฉฐ, Niagara ์์คํ
์ ํ๋ผ๋ฏธํฐ๋ฅผ ์กฐ์ ํ๋ค.
-
ํํฐํด ์ฌ์ง ์์ฑ
- ํํฐํด ํธ๋ ์ผ์ ์์ฑํ๊ธฐ ์ ์ ํํฐํด์ ์ฌ์ฉํ ์ฌ์ง์ ์์ฑํ๋ค.
Mapํด๋์M_NS_Trail์ด๋ผ๋ ์ด๋ฆ์ ์ฌ์ง์ ์์ฑํ๋ค.- ์ฌ์ง์ ๋ธ๋ ๋ ๋ชจ๋๋ฅผ
Translucent๋ก, ์ ฐ์ด๋ฉ ๋ชจ๋ธ์Unlit์ผ๋ก ์ค์ ํ๋ค. Particle Color๋ ธ๋๋ฅผ ์์ฑํ๊ณ , ์ํ ๊ฐ์Opacity์ ์ฐ๊ฒฐํ๋ค.Multiply๋ ธ๋๋ฅผ ์์ฑํ์ฌ ์์๊ณผ 5๋ฅผ ๊ณฑํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผEmissive Color์ ์ฐ๊ฒฐํ๋ค.- ์ฌ์ง์ ์ ์ฅํ๊ณ ๋ซ๋๋ค.
-
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 ์กํฐ์ ์ฐ๊ฒฐํ์ฌ ์์ง์์ ๋ฐ๋ผ ํํฐํด ํธ๋ ์ผ์ด ์์ฑ๋๋๋ก ์ค์ ํ๊ณ , ์ต์ข
์ ์ผ๋ก ์๋์ ํ์ธํ๋ค.
- 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์ด๋ผ๋ ๋ณ์๋ก ์ ์ฅํ๋ค. - ์ปดํ์ผ ๋ฐ ์ ์ฅํ๋ค.
๊ด๋ จ์๋ฃ