
๐ 1์ฃผ์ฐจ
3์ 2์ผ · ์ ์ฑ
https://yuseong-spa.tistory.com/
3์ 3์ผ · ์ด์21
https://blog.naver.com/leejw888
3์ 4์ผ · ํMAD
https://otomad.tistory.com/
3์ 5์ผ · ใ
ใ
ใ
https://heunyagye.tistory.com/
3์ 6์ผ · ๋ณด๋ฆฌ์ฐจ
https://bolicha04.tistory.com/
๐ 2์ฃผ์ฐจ
3์ 9์ผ · KETURU
https://keturu0705.tistory.com/
3์ 10์ผ · ํท์บฃ
https://kitkat0627.tistory.com/
3์ 11์ผ · C1G0
https://c1g0.tistory.com/
3์ 12์ผ · ๋ฃจ์ฆ์
https://losewin.tistory.com/
3์ 13์ผ · TangenT
https://crownshredder.blogspot.com/
๐ 3์ฃผ์ฐจ
3์ 16์ผ · SIGMA
https://sigmay2p.tistory.com/
3์ 17์ผ · ๋ฏผํ์
https://mineralsoju.tistory.com/
3์ 18์ผ · ๋น๋ชจ๋
https://slashpage.com/binmode
3์ 19์ผ · ์นด์ด์ฌ๋ฅด
https://kyser.tistory.com/
3์ 20์ผ · ๊ฟ๋ฐ๋
https://honeywind1020.tistory.com/
๋ฐ๊ฐ๋ฐ๊ฐ SIGMA์ ๋๋ค.
์ฌ์ฌ ๋ ์ด ํ๋ฆฌ๊ธฐ ์์ํจ์๋ ๋ฐฉ์ฌํ ์ ์๋ ์ผ๊ต์ฐจ๋ก ์ธํด ์ธ์ถ ์ ๋ณต์ฅ์ ๊น์ ๊ณ ๋ฏผ์ ํ๊ฒ ๋๋ ๋ ์ ๋๋ค.
๋ค๋ค ์ด๋ฅผ ์์ํ์ฌ ๊ฐ๊ธฐ ๋ฑ ์ง๋ณ์ ๊ฑธ๋ฆฌ์ง ์๋๋ก ์ ์ํ์๊ธธ ๋ฐ๋๋๋ค.
๋ค๋ฆ์ด ์๋๋ผ ์ง๋ 2025 ์ฑ ๊ฐํผ ๋ฆด๋ ์ด ๊ธฐ์ฌ 2์ ์ด์ด์, ์ด๋ฒ 2026 ์ฑ ๊ฐํผ ๋ฆด๋ ์ด ๊ธฐ์ฌ 3์๋ ์ฐธ๊ฐํ๊ฒ ๋์ด ์ด๋ ๊ฒ ์๋ก์ด ๊ธฐ์ฌ๋ก ๋ง๋ ๋ต๊ฒ ๋์์ต๋๋ค.
๊ทธ๋๋ ์ฑ ์ถ์ฒํ๋ ๊ทธ๋ค์ง ํฉ์ฑ๊ณผ ๊ด๋ จ ์๋ ์กฐ๊ธ ์ง๋ฃจํ ๊ธ์ ๋ณด์์๋๋ฐ, ์ด๋ฒ์๋, ๋ ์ฑ ์ถ์ฒ ๊ฐ์ ๊ฑธ ์ฌ๋ ธ๋ค๊ฐ ์ฌ๋ฏธ์๋ ์ฑ ๋ฒ๋ ์ด๋ฏธ์ง๊ฐ ์๊ธธ ๊ฒ ๊ฐ์ผ๋, ์ ๊น ๋ถ์๊ธฐ ์ ํ์ ํด๋ณด๊ณ ์ ์ด์ ๊ณผ ๋ฌ๋ฆฌ ํฉ์ฑ์์๋ ํ์ฉํ ๋งํ ํ์ ์กฐ๊ธ ๋๋ฆฌ๋ ค๊ณ ํฉ๋๋ค.
์ ํํฐ ์ดํํธ๋ฅผ ์ฌ์ฉํ์๋ ๋ถ๋ค๊ป๋ ๊ฝค๋ ์ ์ ํ ๋์์ด ๋ , ์ต์คํ๋ ์ ์ ๋ํ ์ ๋ณด์ ๋ํด ๋งํด๋ณด๊ณ ์ ํฉ๋๋ค.
๋๋ถ๋ถ ๋ํผ์ ์ด๋ผ ํ๋ฆฐ ๋ถ๋ถ์ด ์์ ์๋ ์์ต๋๋ค. ๋ค ์ฝ์ ๊ฑฐ๋ผ ๊ธฐ๋๋ ์ ํ๋๋ฐ ํ๋ฆฐ ๋ถ๋ถ ํน์ ๊ถ๊ธํ ๋ถ๋ถ์ด ์๋ค๋ฉด ๋์ค์ฝ๋ ํน์ X DM์ผ๋ก ์ฐ๋ฝ ๋ฐ๋๋๋ค.
๋์ค์ฝ๋ : 114_51gm4
ํธ์ํฐ : @sigma0914
0. ์ต์คํ๋ ์ ์ด๋
์ต์คํ๋ ์ ์ ํน์ ์์ฑ ๊ฐ์ ์ฝ๋๋ฅผ ํตํด ์กฐ์ ํ๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฅ์ ๋๋ค.
๊ฐ๋ น ์๋ฅผ ๋ค์๋ฉด ์ฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ํํ๊ฒ ์ฐ๋ wiggle(์๊ธ) ๊ฐ์ ๊ฒฝ์ฐ์๋ "ํด๋น ์์ฑ ๊ฐ์ ์์์ ๊ฐ๋งํผ ํ๋ค์ด๋ผ"๋ผ๋ ๋ช ๋ น์ ๋ด๋ฆฌ๋ ๊ฒ์ด์ฃ .
์ฝ๋๋ฅผ ์์ฑํด์ผํ๋ค๋ ์ ์์ ์ ๋ป ์ ๊ทผํ๊ธฐ ์ด๋ ค์ํ์๋ ๋ถ๋ค์ด ๋ง์์ง๋ง, ์์ฆ ๊ฐ์ด ์ฑGPT, ์ ๋ฏธ๋์ด ๊ฐ์ AI๋ค์ด ๋ฐ์ ํ ์ง๊ธ, ์ ์ฃผ๋ณ์๋ ์ต์คํ๋ ์ ์ ํ์ฉํ์ฌ ์์์ ์ ์ํ๋ ๋ถ๋ค์ด ์ ์ง ์๊ฒ ๋ณด์ด๊ณ ์์ต๋๋ค.
๋ฐ๋ผ์ ๋ณธ์ธ์ด ์ฝ๋ฉ์ ์์ ์ด ์๋ค๊ฑฐ๋, ํ์ฌ ๊ตฌ๋ ์ค์ธ AI๊ฐ ์๋ ๋ถ๋ค์ด๋ผ๋ฉด ์ด๋ฒ ๊ธฐํ์ ์ต์คํ๋ ์ ์ ์ ๊ทน ํ์ฉํด๋ณผ๋ง ํ์ค ๊ฒ๋๋ค.
๊ทธ๋ผ ์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์ํด๋ณด๊ฒ ์ต๋๋ค.
1. wiggle
์์ ์ธ๊ธํ๋ฏ์ด ํฉ์ฑ๊ณ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ ๊ฒ์ผ๋ก ์ถ์ ๋๋ ์ต์คํ๋ ์ ์ ๋๋ค.
๋ณดํต "wiggle(a, b)"์ ํํ๋ก ์์ฃผ ์ฌ์ฉํ๊ณ , ์ด๋ a๋ ํ๋ค๋ฆฌ๋ ๋น๋, b๋ ํ๋ค๋ฆฌ๋ ๊ฐ๋๋ฅผ ์๋ฏธํ์ฃ .
ํ์์๋ ์์ ๊ฐ์ ํํ๋ก๋ง ์ฌ์ฉํ๊ณ ๊ณ์ จ๋ค๋ฉด, ์ด๋ฒ ๊ธฐํ์ ์๋ก์ด ์์ฉ๋ฒ์ ๋ฐฐ์๋ณด๋๋ก ํฉ์๋ค.
"์๊พธ ํ๋ค๋ฆฌ๋ ๋ฐฉํฅ์ด ๋ฐ๋์ด์."
wiggle์ ์ฐ์ค ๋๋ง๋ค ๋๊ปด์ง๋ ๊ฒ์ด ์์ํ ๋ฐ, ๋ฐ๋ก ํ๋ค๋ฆฌ๋ ๋ฐฉํฅ, ์ฆ ๋๋ค ์๋(Random seed)๊ฐ ๊ณ์ ๋ฐ๋๋ค๋ ์ ์ ๋๋ค.
์ ๋ ์ด์ด๋ฅผ ๋ง๋ค ๋, ์ปจํธ๋กค z๋ฅผ ๋๋ ์ ๋ ๋ฑ๋ฑ ์์ ์ ์์ ํ๊ณ ์๋ ธ๋ผ๋ฉด ์๊พธ ๋๋ค ์๋๊ฐ ๋ฐ๋์ด ๋ง์ ๋ค์๋ ์๊ธ์ด ์๊พธ ์ด๋ฆฌ์ ๋ฆฌ ๋ฐ๋๋ ๋ชจ์ต์ ๋ณผ ์ ์์ต๋๋ค.
๊ทธ๋ผ ์ด ๋๋ค ์๋๋ฅผ ํ๋๋ก ๊ณ ์ ์ํค๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์?
seedRandom(1);
wiggle(100,100)
๊ฐ๋จํฉ๋๋ค. ์์ "seedRandom(a);"๋ง ์ถ๊ฐํด์ฃผ๋ฉด ๋ผ์. ์ด๋ a ์์น์ ์ํ๋ ์๋ ๊ฐ์ ์ ์๋ก ์ ๋ ฅํด์ฃผ์ธ์.
์์ ๊ฐ์ด seedRandom์ ํตํด ์๋ ๊ฐ์ ๊ณ ์ ํด์ฃผ๋ฉด ๋ค๋ฅธ ํ๋์ ํด๋ ์ธ์ ๋ ๊ทธ ์๋ ๊ฐ์ผ๋ก ๊ณ ์ ๋์ด ์์ง์์ด ๊ทธ๋๋ก ์ ์ง๋ฉ๋๋ค.
๋จ, ๊ฐ์ ์๋ ๊ฐ์ ์ต์คํ๋ ์ ์ ๋ค๋ฅธ ๊ณณ์ ๊ทธ๋๋ก ๋ณต์ฌํ๋ฉด, ๋ชจ๋ ํ๋๋ก ๋ฌถ์ธ ๋ฏ์ด ๋๊ฐ์ด ์์ง์ด๊ฒ ๋๋, ์๋ก ๋ค๋ฅธ ์์ง์์ ํ๊ฒ ์ํ๋ค๋ฉด ์๋ ๊ฐ์ ์๋ก ๋ค๋ฅด๊ฒ ์ค์ ํด์ฃผ์๊ธธ ๋ฐ๋๋๋ค.
"๊ฐ๋ก/์ธ๋ก๋ง ์์ง์ด๊ฒ ํ๊ณ ์ถ์ด์."
๊ธฐ๋ณธ์ ์ผ๋ก wiggle์ ์์น, ๋น์จ๊ณผ ๊ฐ์ด [x, y] ์ด๋ ๊ฒ 2๊ฐ์ ๊ฐ์ ๊ฐ์ง ์์ฑ์๋ ์๋์ผ๋ก ๋ชจ๋ ๊ฐ์ ๊ฐ๊ฐ wiggle์ ์ ์ฉ์์ผ์ค๋๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ wiggle์ ํ๋๋ง ์ ์ฉํด๋ ์์์ x ๊ฐ์ ์ ์ฉํ wiggle์ด ํ๋, ๊ทธ๋ฆฌ๊ณ y ๊ฐ์ ์ ์ฉํ wiggle์ ๋ ํ๋ ์ ์ฉ์์ผ์ค๋ค๋ ๊ฑฐ์ฃ . ๊ฒ๋ค๊ฐ 3D๋ฅผ ํ์ฑํํ์ฌ [x, y, z]๋ก 3๊ฐ์ ๊ฐ์ผ๋ก ๋์ด๋ ๋ง์ฐฌ๊ฐ์ง๋ก wiggle์ 3๋ฒ ์ ์ฉ์์ผ์ค๋๋ค.
์ด๋ฐ ์ ์ ์ผ๋ฐ์ ์ผ๋ก๋ ์ข์ ๊ธฐ๋ฅ์ด์ง๋ง, ์์ ๊ฐ์ ์ํฉ์์๋ ์กฐ๊ธ ๋ถํธํ ์๋ ์๊ฒ ๋ค์.
๊ทธ๋ฐ๊ณ ๋ก wiggle์ ๊ฐ๋ก/์ธ๋ก ์์ง์์๋ง ์ ์ฉ์ํค๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์?
[wiggle(100,100)[0], value[1]] //๊ฐ๋ก wiggle
[value[0], wiggle(100,100)[1]] //์ธ๋ก wiggle
์์ ์ ํ ๊ฐ ๋ ์ค์ ์ฝ๋๋ก ๊ฐ๋ก/์ธ๋ก๋ง wiggle์ ์ ์ฉ์ํฌ ์ ์์ต๋๋ค.
๋ ์ค ์ค์ ์ํ๋ ๊ฒ์ ํ๋ ๊ณจ๋ผ์ ์ฌ์ฉํด์ฃผ์๋ฉด ๋๊ฒ ์ต๋๋ค.
์์ธํ ์ค๋ช ์ ์๋ตํ๊ฒ ์ต๋๋ค.
2. ์์ฑ ๊ฐ์ ์ฝ๋๋ก ์ถ์ถํ๋ ๋ฒ
์ต์คํ๋ ์ ์ผ๋ก ํ ์ ์๋ ์ ๋ง์ ๊ฒ๋ค ์ค ์ฝ๋์ ใ (ํค์)์๋ ๋ชจ๋ฅด๋ ์ฌ๋ฌ๋ถ๋ค๋ ์์ฝ๊ฒ ํ ์ ์์๋งํ ๊ฒ์ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ฌ์น์ฐ์ฐ๋ง ํ ์ค ์๋ฉด ๋ฉ๋๋ค.
"์์ฑ ๊ฐ์ ๊ฐ์ ธ์ค๋ ๋ฒ"
์ ํํฐ ์ดํํธ์๋ ์๋ง์ ์์ฑ์ด ์์ต๋๋ค. ๋ณํ ํญ์ ์๋ ์์น, ํ์ , ๋น์จ ๋ฑ์ ํฌํจํด ์ฐ๋ฆฌ๊ฐ ํจ๊ณผ๋ฅผ ์ถ๊ฐํ์ ๋ ๊ทธ ์์์ ์์น๋ฅผ ์กฐ์ ํ ์ ์๋, ํคํ๋ ์์ ์์ฑํ ์ ์๋ ๋๋ถ๋ถ์ ์์ฑ ๊ฐ์ ์ฐ๋ฆฌ๋ ์ต์คํ๋ ์ ์ ๋ถ๋ฌ์ฌ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ํ ๊ฐ์ง ์ต์คํ๋ ์ ์ ๋ง๋ค์ด๋ด ์๋ค.
์ด๋ค ๋ ์ด์ด์ ํ์ ๊ฐ์ ๋ค๋ฅธ ๋ ์ด์ด์๋ ์ ์ฉํ๊ณ ์ถ๋ค๋ฉด

์ด๋ ๊ฒ ๋์ ๋ชจ์์ ์์ด์ฝ์ ๊ฐ์ ธ์ค๊ณ ์ถ์ ์์ฑ ์ชฝ์ผ๋ก ๋๋๊ทธ ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.

๊ทธ๋ฌ๋ฉด ์ด๋ ๊ฒ ๊ฐ์ ธ์ฌ ์์ฑ์ ์ฝ๋(์ ํํ๋ ํด๋น ์์ฑ์ ์ง์นญํ๋ ๊ฐ์ฒด๋ช )๋ก ๋ณํํ์ฌ ์ต์คํ๋ ์ ์ ์์ฑํด์ค๋๋ค.
์ด ์ํ๋ก "์ค๊ฐ ํ์-์์ฃผ ๋จ์ 1" ๋ ์ด์ด์ ํ์ ๊ฐ์ ์์ง์ด๋ฉด ์ต์คํ๋ ์ ์ ์์ฑํ ๋ ์ด์ด์ ํ์ ๊ฐ ๋ํ ๊ฐ์ด ์์ง์ฌ์ง๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
์ธ์ ๊ฐ ํ ๋ฒ ์๊ฐํด๋ณด์์ง ์์๋์. NULL ๋ ์ด์ด, ๋ถ๋ชจ ๋งํฌ๋ฅผ ํ์ฉํ๋ฉด์, ์์ ๊ฐ์ด ๋ฌถ๋ ๊ฒ ์๋ ํ์ , ๋น์จ ๊ฐ๋ง ๊ฐ์ ธ์ค๊ณ ์ถ๋ค๊ณ . ๋ฐฉ๋ฒ์ ๋ชฐ๋ผ์ ํคํ๋ ์ ๋ฌดํ ๋ณต์ฌ ์ง์ฅ์ ๊ฐํ๋ ์ ์ด ์์๋ค๋ฉด ์ด์ ์์ฌํ์ญ์ผ. ์ด์ ์ฌ๋ฌ๋ถ์ ์ต์คํ๋ ์ ์ ๋ฐฐ์ ์ผ๋๊น์. ์ฌ๋ฌ๋ถ์ ์ด์ ๋ฌธ๋ช ์ธ์ ๋๋ค.
๊ทธ๋ฐ๋ฐ ์ด ๋ฐฉ๋ฒ์ ํ๋์ ๊ฐ์ ๊ทธ๋๋ก, "๋ณํจ ์๋" ์ฑ๋ก ๊ฐ์ ธ์ต๋๋ค. ๊ทธ๋ผ ๋ง์ฝ
"์ด๋ค ์์ฑ ๊ฐ์ ์กฐ๊ธ ๋ณํ๋ฅผ ์ฃผ๊ณ ์ถ์ด์."
์์์ ์ฌ์น์ฐ์ฐ๋ง ํ ์ค ์๋ค๋ฉด ๊ด์ฐฎ๋ค๊ณ ๋ง์๋๋ ธ์ต๋๋ค.
๋ง ๊ทธ๋๋ก์์.
์์ ์ต์คํ๋ ์ ๊ณผ ๋ฌ๋ฆฌ ์ด๋ค ๋ ์ด์ด์ ํ์ ๊ฐ์ 2๋ฐฐ๋ก ๋น ๋ฅด๊ฒ ์์ง์ด๊ฒ ํ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ต์คํ๋ ์ ์ ๋ฐ๊ฟ์ค์๋ค.
thisComp.layer("์ค๊ฐ ํ์-์์ฃผ ๋จ์ 1").transform.rotation * 2
์ ์ง์ง ๊ฐ๋จํ๋ค.
์๊น ์ ์ ์ต์คํ๋ ์ ๋ค์ " * 2 ", ์ด ๋ ๊ธ์๋ง ์ถ๊ฐํด์ฃผ๋ฉด ๋ฉ๋๋ค.
๋ง์ฝ ํ์ ๊ฐ๋ณด๋ค 180๋ ๋ ํฌ๊ฒ ์์ง์ด๊ณ ์ถ๋ค๋ฉด " + 180 ", ์ ๋ฐ๋งํผ๋ง ์์ง์ด๊ณ ์ถ๋ค๋ฉด " / 2 "๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ๋ฉ๋๋ค.
๋จ, ์ด๋ ๊ฒ ๋ถ์ด๋ฉด ์์ฑ ๊ฐ์ ์ง์ ์กฐ์ ํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํด์ง๊ณ , ํคํ๋ ์์ ๋ง๋ค์ด๋ ์ ์ฉ๋์ง ์๋ ๊ฑธ ๋ณผ ์ ์์ต๋๋ค. ์ง์ ์์ฑ ๊ฐ์ ๋๋๊ทธ ํด์ ์์ง์ฌ๋ ๊ทธ๋๋ก์ผ ๊ฒ๋๋ค.
thisComp.layer("์ค๊ฐ ํ์-์์ฃผ ๋จ์ 1").transform.rotation * 2 + value
๊ทธ๋ด ๋๋ ์ด๋ ๊ฒ "value"๋ฅผ ๋ํด์ฃผ๋ฉด ํด๋น ๋ ์ด์ด์ ์์ฑ ๊ฐ์ ๊ฐ์ ธ์จ ๋ค๋ฅธ ๋ ์ด์ด์ ์์ฑ ๊ฐ์ ๋ํด์ ์ ์ฉํ ์ ์์ต๋๋ค.
์๊น wiggle์์๋ ์ฌ์ฉํ๋๋ฐ, value๋ ํด๋น ์์ฑ ์์ฒด์ ๊ฐ์ ๋ํ๋ ๋๋ค.
๊ทธ๋ผ ์์ ์ฝ๋๋ ํด๋น ๋ ์ด์ด์ ์์ฑ ๊ฐ์ "์ค๊ฐ ํ์-์์ฃผ ๋จ์ 1 ๋ ์ด์ด์ ํ์ ๊ฐ์ ๋ ๋ฐฐ"๋งํผ ๋ํด์ฃผ๋ ๋์์ ํ๊ฒ ๋ฉ๋๋ค.
3. time
time, ๋ง๊ทธ๋๋ก ํ์ฌ ์์นํ ๊ณณ์ ์๊ฐ์ ๋ํ๋ด๋ ๊ฐ์ฒด์ ๋๋ค.
๋ณดํต ์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ผ ๋ฐ๋๋ ๋ชจ์ ๋ฑ์ ์ง๊ณ ์ถ์ ๋ ์ฌ์ฉํ ์ ์์ฃ .
๊ทธ๋ผ time์ ํ์ฉํด์ ์ด๋ค ๋ชจ์ ์ ๋ง๋ค ์ ์์๊น์?
"์์๋๋ก ํ๋ค๊ฑฐ๋ฆฌ๋ ๋ชจ์ ์ ๋ง๋ค๊ณ ์ถ์ด์."
์ฌ๊ธฐ์๋ ์ํ ๊ด๋ จ ํจ์๋ค์ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ค์ด์ฃผ๋ Math๋ ๊ฐ์ด ์ฌ์ฉํฉ๋๋ค.
์ฐ์ ์ด ๋ชจ์ ์ ๋ง๋ค๊ธฐ ์ํ ์ต์คํ๋ ์ ๋ถํฐ ๋ณด๋๋ก ํ์ฃ .
[value[0], value[1] + 50 * Math.sin(10 * time)]
์ฒ์ ๋ณด๋ ๊ฒ ๋ฑ์ฅํ๋ค์.
"Math.sin(10 * time)" ๋ถ๋ถ์ ๊ฐ๋จํ๊ฒ ์ค๋ช ํด๋ณด๊ฒ ์ต๋๋ค.
"Math.sin()" ํจ์๋ ์ผ๊ฐํจ์ ์ค "sin ํจ์"๋ฅผ ๋ถ๋ฌ์ค๋ ํจ์์ ๋๋ค.

๋์ถฉ ์ด๋ ๊ฒ ์๊ธด ๊ณก์ ์ด ๋ฐ๋ก sin ํจ์์ ๋๋ค.
์ด๋ Math.sin() ํจ์์ ๊ดํธ ์์ time์ ์ง์ด ๋ฃ์ด์ฃผ๋ฉด, ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์์ ๊ทธ๋ํ ๊ณก์ ์ฒ๋ผ ์ค๋ฅด๋ฝ ๋ด๋ฆฌ๋ฝํ๋ ๊ฐ์ ๋ด๋ณด๋ ๋๋ค.
์์์ ๋ณด์ฌ์ค ์ต์คํ๋ ์ ์ ๋ณด๋ฉด y ๊ฐ์ ์๋ ์์ฑ ๊ฐ์ธ "value[1]"์ Math.sin() ํจ์๋ฅผ ๋ํด์ฃผ์๋๋ฐ, ์ด๋ y์ถ ๋ฐฉํฅ, ์ฆ ์์๋๋ก ์ฌ์ธ ๊ณก์ ์ฒ๋ผ ์ผ์ ํ๊ฒ ํ๋ค๋ฆฌ๊ฒ ๋ง๋ค์ด์ฃผ๋ ํจ์์ธ ๊ฒ์ด์ฃ .
๊ทธ๋ฐ๋ฐ ๋จ์ํ Math.sin(time)์ด ์๋ ๋ค๋ฅธ ์ซ์๋ฅผ ๊ณฑํด์ฃผ๋ ๋ถ๋ถ๋ค์ด ์๋๋ฐ, ์ด๋ sin ๊ทธ๋ํ ๊ณก์ ์ ๋ชจ์์ ์กฐ์ ํด์ฃผ๋ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ญํ ์ ํด์ค๋๋ค.
"a * Math.sin(b * time)"๊ณผ ๊ฐ์ด ์ ์๋ค๋ฉด, a๋ ๊ณก์ ์ ์์๋ ๋์ด, b๋ ์์๋๋ก ํ๋ค๋ฆฌ๋ ๋น๋๋ฅผ ๋ํ๋ด์ฃ . a๊ฐ ํด์๋ก ๋ ๋์ด ์์ง์ด๊ณ , b๊ฐ ํด์๋ก ๋ ์์ฃผ ํ๋ค๋ฆฌ๊ฒ ๋๋ ๊ฒ๋๋ค.
[value[0] + 10 * Math.sin(50 * time), value[1]] //์ข์ฐ๋ก ํ๋ค๋ฆฌ๊ฒ
value + 10 * Math.sin(5 * time) //ํ์ ์์ฑ์ ์ ์ฉ ์ ์ข์ฐ๋ก ๊น๋ฑ๊ฑฐ๋ฆฌ๋ ๋ชจ์
์ด ์์ฑ
๋ํ ์์ ๊ฐ์ด ์์ฉํ์ฌ ์ ์๋๊ฐ ์๋ ์ข์ฐ๋ก ํ๋ค๋ฆฌ๊ฒ, ํ์ ์์ฑ์ ์ ์ฉํ์ฌ ์ข์ฐ๋ก ๊น๋ฑ๊ฑฐ๋ฆฌ๋ ๋ชจ์ ์ ๋ง๋ค ์๋ ์์ต๋๋ค.
์ฐธ๊ณ ๋ก ์์์๋ ๋ฐ๋ณต ์ด๋์ ํ๋ sin ํจ์๋ฅผ ํ์ฉํ์๋๋ฐ, ๋๊ฐ์ ๋ชจ์์ ์ผ์ฐจํจ์, ํฌ๋ฌผ์ ๋ชจ์์ ์ด์ฐจํจ์ ๋ฑ, ๋ค๋ฅธ ๋ชจ์์ ํจ์๋ค๋ ๋ฐ๋ผ์๋ ๋ง๋ค ์ ์๋ต๋๋ค.
"time๋ง ์ ์ผ๋๊น 0์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฆ๊ฐํด์ ์์ ํ๋ฐ๋ถ์๋ ๊ฐ์ด ๋๋ฌด ์ปค์ ธ์."
time์ ์์์์ ํ์ฌ ์๊ฐ์ ๋ํ๋ด๋ฏ๋ก, ๋ช ๋ถ ์ฉ์ด๋ ๋ค๋ก ๊ฐ์ ์ฌ์ฉํ๋ฉด ๊ทธ ๊ฐ์ด ๋๋ฌด ์ปค์ ธ์ ์ํ๋ ๋ชจ์ ์ด ๋์ค์ง ์์ ๋๋ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ํน์ ์์ ์ ๊ธฐ์ค์ผ๋ก ์๊ฐ์ ์ธก์ ํ๊ฒ ํ๊ธฐ ์ํด์๋ ์ด๋ป๊ฒ ํ๋ฉด ์ข์๊น์?
[value[0], value[1] + (time - inPoint) * 500] //๋ ์ด์ด์ ์์ ๋ถ๋ถ์ ๊ธฐ์ค์ผ๋ก
[value[0], value[1] + (time - key(1).time) * 500] //์ฒซ๋ฒ์งธ ํคํ๋ ์์ ๊ธฐ์ค์ผ๋ก
[value[0], value[1] + (time - marker.key(1).time) * 500] //์ฒซ๋ฒ์งธ ๋ง์ปค๋ฅผ ๊ธฐ์ค์ผ๋ก
๋ค์๊ณผ ๊ฐ์ด 3๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๋ ์ด์ด์ ์์ ๋ถ๋ถ์ ๊ธฐ์ค์ผ๋ก ์๊ฐ์ ์ธก์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก, ์๋ time์ด ๋ค์ด๊ฐ ์์น์ "(time - inPoint)"๋ฅผ ๋ฃ์ด์ค๋๋ค.
inPoint๋ ๋ ์ด์ด๊ฐ ํ๋ฉด์ ๋ณด์ด๊ธฐ ์์ํ๋, ์ฆ ๋ ์ด์ด์ ์์ ๋ถ๋ถ์ ์๊ฐ์ ๋ํ๋ด๋ ๊ฒ์ผ๋ก ์ด๋ฅผ ํตํด ์์ ๋ถ๋ถ์ ๊ธฐ์ค์ผ๋ก ์๊ฐ์ ๋ค์ ์ธก์ ํ ์ ์๊ฒ ๋ง๋ค์ด์ค๋๋ค. ๋ฐ๋ฉด, ๋ ์ด์ด๊ฐ ๋๋๋ ์์ ์ outPoint๋ก ํํํ ์ ์์ต๋๋ค.
๋๋ฒ์งธ ๋ฐฉ๋ฒ์ ํด๋น ์์ฑ์ ์ฒซ๋ฒ์งธ ํคํ๋ ์์ ๊ธฐ์ค์ผ๋ก ์๊ฐ์ ์ธก์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก, time ๋์ "(time - key(1).time)"์ ๋ฃ์ด์ค๋๋ค.
key(1).time์ด ํ์ฌ ์์ฑ ์ฒซ๋ฒ์งธ ํคํ๋ ์์ ์๊ฐ์ ๋ํ๋ด๋ฉฐ, 1 ๋์ ์ ๋ค๋ฅธ ์ซ์๋ฅผ ๋ฃ์ด์ ์ฒซ๋ฒ์งธ๊ฐ ์๋ ํคํ๋ ์์ ๊ธฐ์ค์ผ๋ก๋ ์ผ์ ์ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ธ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๋ ์ด์ด์์ ์ฒซ๋ฒ์งธ ๋ง์ปค๋ฅผ ๊ธฐ์ค์ผ๋ก ์๊ฐ์ ์ธก์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก, time ๋์ "(time - marker.key(1).time)"์ ๋ฃ์ด์ค๋๋ค.
marker.key(1).time์ด ๋ ์ด์ด์ ์ฒซ๋ฒ์งธ ๋ง์ปค์ ์๊ฐ์ ๋ํ๋ด๋ฉฐ, ํคํ๋ ์์ ๊ฒฝ์ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก 1 ๋์ ๋ค๋ฅธ ์ซ์๋ฅผ ๋ฃ์ด์ ๋ค๋ฅธ ๋ง์ปค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ ์ ์์ต๋๋ค.
๊ฐ์๊ธฐ ์ข ๋ณต์กํ ์ด์ผ๊ธฐ๊ฐ ๋์๋ค์.
๋ค์์ wiggle๋ณด๋ค๋ ์๋์ง๋ง, ๋ง์ง๋ง์ผ๋ก ์ฌ๋ฌ๋ถ๋ ์กฐ๊ธ์ ์จ๋ดค์ ์ต์คํ๋ ์ ์ ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
4. loopOut
ํํ ํคํ๋ ์ ๋ฐ๋ณต์ ์ํด ์ฌ์ฉํ๋, ์ ํํฐ ์ดํํธ์์ ์์ฒด์ ์ผ๋ก ์ ๊ณตํ๋ ์ต์คํ๋ ์ ํ๋ฆฌ์ ์๋ ์กด์ฌํ๋ ํจ์์ ๋๋ค.

์ด๋ฒ์๋ ์ด loopOut์ ๋ํด ์กฐ๊ธ ์์ธํ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
"loopOut์ ํ๋ผ๋ฏธํฐ"
loopOut์๋ ๋ ๊ฐ์ง ํ๋ผ๋ฏธํฐ๊ฐ ์กด์ฌํฉ๋๋ค.
loopOut(type, numKeyframes)
์ฒซ๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ type์ผ๋ก, cycle, offset, pingpong, continue, ์ด๋ ๊ฒ 4๊ฐ์ง๊ฐ ์์ผ๋ฉฐ, ์ด๋ค ์์ผ๋ก ๋ฐ๋ณตํ ์ง๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
๋๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ numKeyframes, ๋ฐ๋ณตํ ํคํ๋ ์์ ๊ฐ์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ๋จ, 0์ด๋ผ๋ฉด ๋ชจ๋ ํคํ๋ ์์ ๋ฐ๋ณตํ๋๋ก ์ค์ ํฉ๋๋ค.
์ฐธ๊ณ ๋ก type์ ์ข ๋ฅ ๋ณ ๋ฐ๋ณต ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.

numKeyframes๋ ์์ ๋งํ๋ฏ ๋ฐ๋ณตํ ํคํ๋ ์์ ๊ฐ์์ธ๋ฐ, ์ด๋ ๋ฐ๋ณตํ๋ ํคํ๋ ์์ ๊ฐ์ฅ ๋ง์ง๋ง ํคํ๋ ์์์๋ถํฐ ์ญ๋ฐฉํฅ์ผ๋ก ์ ๋๋ค. ์๋ฅผ ๋ค์ด ํคํ๋ ์ 1, 2, 3, 4, 5๊ฐ ์์ ๋, numKeyframes๋ฅผ 3์ผ๋ก ์ค์ ํ๋ฉด 1๋ถํฐ 5๊น์ง ์ด๋ ํ, 3, 4, 5๋ฅผ type์ ๋ง์ถฐ์ ๋ฐ๋ณตํ๊ฒ ๋๋ ๊ฒ์ ๋๋ค.
๋ํ, ๊ฐ ํ๋ผ๋ฏธํฐ๋ ์ ๋ ฅํ์ง ์์๋ ์๋์ผ๋ก ์ค์ ๋๋ ๋ํดํธ ๊ฐ์ด ์กด์ฌํฉ๋๋ค.
loopOut()์ฒ๋ผ ๊ดํธ ์์ ๋น์๋ฒ๋ฆฌ๋ฉด, type์ cycle, numKeyframes๋ 0์ผ๋ก ์ค์ ๋ฉ๋๋ค.
์ด์์ผ๋ก ๊ฐ๋จํ ์ต์คํ๋ ์ ๊ฐ์ข๋ฅผ ๋ง์น๋๋ก ํ๊ฒ ์ต๋๋ค.
์์ฒญ๊ฐ ์๋ฃ๊ฐ ๊ฐ์์นฉ ๋ด์ง ์ ๊ฐ์์นฉ ์๋งํผ์ด๋ ์ ์ ์ฝ๊ธฐ ํ๋ ๊ธ์ ์ฝ์ด์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค.
์๊ฐ๋ณด๋ค ๋ณ๊ฑฐ ์๊ธฐ๋ ํ์ง๋ง, ์ด ์ ๋๋ง ์์๋ ์์ ์ ์์๋ ์์ง ์์ ๋์์ ๋ ๊ฑฐ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ฌ์ค ์ ๊ฐ ์์ ํ ๋๋ ์กฐ๊ธ ๋ ๋ณต์กํ ์ต์คํ๋ ์ ์ ์ฌ์ฉํฉ๋๋ค๋ง, ๊ทธ๊ฑธ ์ฌ๊ธฐ์ ์ ์๋ค๊ฐ๋ ์ฝ๋ค๊ฐ ์ค๋ ํ์ฃผํ๋ ๋ถ๋ค์ด ๋๋ ๋ฐ์ํ๊ฑฐ๋ ์ ๊ฐ ๋ง๊ฐ์ผ์ ๋ง์ถ์ง ๋ชปํ๋ ์ฌํ๊ฐ ๋ฒ์ด์ง ์๋ ์์ผ๋ฏ๋ก ๊ณผ๊ฐํ๊ฒ ๋๋ฝ์์ผฐ์ต๋๋ค.
๋น๋ก ์ ๊ฐ ์๋ ๋ชจ๋ ๊ฑธ ์ ์ง๋ ๋ชปํ๋ค๋ง, ๊ทธ ๋์ ์ด๋ผ๊ณ ํ ๊น, ์ฌ๋ฌ๋ถ ์์ ์ ์์ ๋์์ด ๋์๋ผ๊ณ ๊ธฐ์กด์ ์ ์ํ๋ ์คํฌ๋ฆฝํธ๋ค์ ์ฌ์ฐจ ๊ณต์ ํ๊ฒ ์ต๋๋ค.
https://youtu.be/gW3NE7XhfcE?si=yoiqsQ5W3Stds98Q
https://www.youtube.com/watch?v=XMSj83YlFvk
๋ถ๋ ๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉฐ, ์ด๋ง ์ค์ด๊ฒ ์ต๋๋ค.
์์ผ๋ก์ ์์ ์ ์์ด ์กฐ๊ธ ๋ ํธํ๊ณ ์๋ คํด์ง๊ธธ ๋ฐ๋ผ๋ฉฐ.