Imaginantia

ๆ€ใฃใŸใ“ใจใ‚’ๆ›ธใใพใ™

๐™๐™‡๐™๐™๐˜ผ ๐™“๐™ ๐™‡๐™„๐™‘๐™€ ่งฃ่ชฌ (2/2)

phi16.hatenablog.com

็ถšใใงใ™ใ€‚ใ€Œใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ€ใฎ่ฉฑใ‚’ใ—ใพใ™ใ€‚

็›ฎ็š„

ไปŠๅ›žใฎใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใฏๅ…จไฝ“็š„ใซใ€Œๆ›ฒใฎๅ…ท็พๅŒ–ใ€ใจใ—ใฆไฝœใฃใฆใ„ใพใ™ใ€‚ใชใฎใง้Ÿณใซๅˆใ‚ใ›ใŸๅ‹•ใใ‚’ใ™ใ‚‹ใ“ใจใŒๅŸบๆœฌใ€‚

ใ€Œ้Ÿณใซๅˆใ‚ใ›ใ‚‹ใ€ใจใ„ใ†ใฎใฏใ‚‚ใกใ‚ใ‚“ใ‚ฟใ‚คใƒŸใƒณใ‚ฐใ ใ‘ใงใฏใชใใ€ใƒชใƒชใƒผใ‚นใฎ้•ทใ•ใ€้›ฐๅ›ฒๆฐ—ใ€ๅ…จไฝ“ไธญใฎ้‡่ฆๅบฆใ€็ทฉๆ€ฅใ€ใใฎไป–ใ€Œ้Ÿณใซ้–ขใ™ใ‚‹ใƒ—ใƒญใƒ‘ใƒ†ใ‚ฃใ€ใชใ‚“ใงใ‚‚ใ€ใงใ™ใ€‚

ใพใŸใ€ใ“ใ‚Œใฏใ€Œๆณขๅฝขใจใ—ใฆใฎ้Ÿณใ€ใซ้™ใ‚‰ใšใ€Œใƒชใ‚บใƒ ใจใ—ใฆใฎ้Ÿณใ€ใ‚‚ๅซใฟใพใ™ใ€ใ“ใ‚Œใฏๅณใก็„ก้Ÿณใงใ‚ใฃใฆใ‚‚้Ÿณใซๅˆใ‚ใ›ใ‚‹ใ“ใจใŒใ‚ใ‚‹ใจใ„ใ†ใ“ใจใงใ™ใ€‚

ไปŠๅ›žใฎๆ›ฒใฏใ‚ใกใ‚ƒใใกใ‚ƒใ€Œๆฅฝใ—ใใ€ใ€Œ้Šใณ็”ฒๆ–ใŒใ‚ใ‚Šใ€ใ€Œใ‚ทใ‚นใƒ†ใƒžใƒใƒƒใ‚ฏใชๆง‹ๆˆใ‚’ใ—ใฆใ„ใ‚‹ใ€ใฎใง้Ÿณๅˆใ‚ใ›ใŒใ‚„ใ‚Šใ‚„ใ™ใๆฅฝใ—ใ‹ใฃใŸใงใ™ใ€‚

www.youtube.com

ๅŸบ็คŽ

ๅ‹•ใใ‚’ไฝœใ‚‹ใซใ‚ใŸใ‚Šๅคงไบ‹ใชใ“ใจใฏใ€็งใฏใ€ใ€Œๅพฎๅˆ†ใ€ใ ใจๆ€ใ„ใพใ™ใ€‚ๅณใกใ€Œๆ™‚้–“ใ‚ใŸใ‚Šใฎๅค‰ๅŒ–้‡ใ€ใฎใ“ใจใงใ™ใ€‚

ไพ‹ใˆใฐใ€Œ็žฌ้–“ใ€ใ‚’่กจ็พใ™ใ‚‹ใจใใ€ๆ–‡ๅญ—้€šใ‚Šไธ€็žฌใงๅ‡บใ™ใ€ใจใ„ใ†ใ“ใจใŒใพใš่€ƒใˆใ‚‰ใ‚Œใพใ™ใ€‚

ใ—ใ‹ใ—ใ€็Ÿฅ่ฆš็š„ใซใฏใ€Œใ“ใ‚Œใพใง็„กใ‹ใฃใŸ็Šถๆ…‹ใ‹ใ‚‰ใ€ๅ‡บใฆใใ‚‹ใ€ใจใ„ใ†ๅค‰ๅŒ–ใŒๅฎŸๅœจใ—ใฆใ„ใพใ™ใ€‚ใŸใจใˆ่ฆ‹ใˆใชใใฆใ‚‚ใ€‚

ใใ‚Œใ‚’่กจ็พใ™ใ‚‹ใ“ใจใซใ‚ˆใฃใฆใ€ใ€Œๅ‡บ็พใ€ใจใ„ใ†็Ÿฅ่ฆšใ‚’่ฃœๅผทใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚ ใ“ใ‚ŒใŒ่ช‡ๅผตใงใ™ใ€‚

ใ•ใ‚‰ใซใฏใ€Œๅ‡บ็พใŒ็ต‚ใ‚ใฃใŸใ€ใจใ„ใ†็Ÿฅ่ฆšใ‚‚ใ‚ใ‚Šใพใ™ใ€‚ใ“ใ‚Œใ‚’ไพ‹ใˆใฐใ€Œๅ‡บ็พๆ™‚ใฎๅค‰ๅŒ–้‡ใ‚’ๅผทใ‚ใ€็ต‚ใ‚ใฃใŸใจใใซ้€†ๅ‘ใใฎๅค‰ๅŒ–้‡ใ‚’ไธŽใˆใ‚‹ใ€ใ“ใจใง่กจ็พใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚

ๆœ€ๅˆใซๆฏ”ในใฆใ€Œๆ„ๅ‘ณใ€ใŒไน—ใฃใฆใใŸใฎใŒใ‚ˆใใ‚ใ‹ใ‚Šใพใ™ใญใ€‚

ใพใŸใ€ใƒชใ‚บใƒ ใŒใ‚ใ‚‹ใชใฉๆœชๆฅไบˆ็ŸฅใŒใงใใ‚‹ๅ ดๅˆใซใฏใ€Œใใ‚ใใ‚ๅ‡บใ‚‹ใ€ใจใ„ใ†็Ÿฅ่ฆšใ‚‚ใพใŸ็™บ็”Ÿใ—ใฆใ„ใ‚‹ใฏใšใงใ™ใ€‚้Ÿณใง่จ€ใ†ใจใ“ใ‚ใฎใƒชใƒใƒผใ‚นใ‚ทใƒณใƒใƒซใฎๅฝนๅ‰ฒใ ใจๆ€ใ†ใ€‚

ใคใพใ‚Šใฏใ€Œ็žฌ้–“ใ€ใจใฏ่จ€ใˆใฉใใฎๅ‰ๅพŒใ‚‚ใพใŸ่กจ็พใ™ใ‚‹่ฆ็ด ใจใชใ‚Šใ†ใ‚‹ใ‚ใ‘ใงใ™ใ€‚

ใใ—ใฆใ€Œ็žฌ้–“ใ€ใซ่ฟ‘ใ‘ใ‚Œใฐ่ฟ‘ใ„ใปใฉๅค‰ๅŒ–้‡ใฏๅคงใใใ‚ใ‚‹ในใใซ่ฆ‹ใˆใพใ™ใ€‚ใใฎๅŠนๆžœใฏ่ฆ‹ใฆใฎ้€šใ‚Šใ€‚ๆ€ฅๆฟ€ใชๅค‰ๅŒ–ใซใ‚ˆใฃใฆ็žฌ้–“ใ‚’่ฟ‘ไผผใ—ใฆใ„ใ‚‹ใ€ใจ็งใฏๆ‰ใˆใฆใ„ใพใ™ใ€‚

ใชใŠไธŠใซๆŒ™ใ’ใŸใฎใฏใ€Œ็‰ฉไฝ“ใฎๅคงใใ•ใ‚’ๅค‰ใˆใฆ็žฌ้–“ใ‚’่กจ็พใ™ใ‚‹ไพ‹ใ€ใงใ—ใŸใŒใ€ไป–ใซใ‚‚ใ„ใใ‚‰ใงใ‚‚ใ‚ใ‚Šใพใ™ใ€‚ๅคงไบ‹ใชใฎใฏใ€Œ็žฌ้–“ใฎๅ‰ๅพŒใ‚‚่กจ็พๅฏพ่ฑกใงใ‚ใ‚‹ใ€ใจใ„ใ†็‚นใ€‚

 

ใ•ใฆใ€ใใ‚“ใชใจใ“ใ‚ใงใพใšๆ นๆœฌ็š„ใซใ€Œ็‰ฉใฎๅ‹•ใใ€ใซใคใ„ใฆ่€ƒใˆใ‚ˆใ†ใจๆ€ใ„ใพใ™ใŒใ€ใพใๆœ€ใ‚‚ๅคงไบ‹ใชใฎใฏใ‚ณใƒฌใงใ—ใ‚‡ใ†ใ€‚

้‹ๅ‹•ใฎ็ฌฌ1ๆณ•ๅ‰‡ (ๆ…ฃๆ€งใฎๆณ•ๅ‰‡)

ใ€Œๅ…จใฆใฎ็‰ฉไฝ“ใฏใ€ๅค–้ƒจใ‹ใ‚‰ๅŠ›ใ‚’ๅŠ ใˆใ‚‰ใ‚Œใชใ„้™ใ‚Šใ€็ญ‰้€Ÿ็›ด็ทš้‹ๅ‹•ใ‚’็ถšใ‘ใ‚‹ใ€‚ใ€

ใคใพใ‚Šใ€Œๆœ€ใ‚‚่‡ช็„ถใชๅ‹•ใใ€ใจใ„ใ†ใฎใฏใ€Œใพใฃใ™ใๅŒใ˜้€Ÿๅบฆใงๅ‹•ใ็ถšใ‘ใ‚‹ใ“ใจใ€ใจใ„ใ†ใ“ใจใงใ™ใ€‚

้€†ใซ่จ€ใˆใฐไป–ใฏๅ…จใฆไฝ•ใ‚‰ใ‹ใฎใ€Œๅค–้ƒจใ‹ใ‚‰ใฎๅŠ›ใ€ใŒๅƒใ„ใฆใ„ใ‚‹ใ€ใ‚ใ‘ใงใ™ใ€‚ไพ‹ใˆใฐๆ‘ฉๆ“ฆๅŠ›ใ€‚้‡ๅŠ›ใ€‚ๅž‚็›ดๆŠ—ๅŠ›ใ€‚ๅผพๆ€งๅŠ›ใ€‚ๆตฎๅŠ›ใ€‚

ใ€ŒๅŠ›ๅญฆ็š„ๆณ•ๅ‰‡ใซๅพ“ใ†ๅฟ…่ฆใฏใชใ„ใฎใงใฏใ€ใจๆ€ใ†ๆฐ—ๆŒใกใ‚‚ใ‚ใ‚‹ใ‹ใจๆ€ใ„ใพใ™ใŒใ€็พๅฎŸ็š„ใซไบบ้–“ใฎ็›ฎใฏใ€ŒๅŠ›ๅญฆ็š„ๆณ•ๅ‰‡ใซๅพ“ใฃใฆใ„ใ‚‹ใ‚ˆใ†ใซ่ฆ–ใˆใ‚‹ใ€ใ‚ˆใ†ใซๅ‡บๆฅใฆใ„ใ‚‹ใ€ๆฐ—ใŒใ—ใพใ™ใ€‚ใ“ใ‚Œใฏใ€Œ็ญ‰้€Ÿ็›ด็ทš้‹ๅ‹•ใ˜ใ‚ƒใชใ„ๅ ดๅˆใ€ใใ“ใซๅŠ›ใŒๅŠ ใ‚ใฃใฆใ„ใ‚‹ใ‚ˆใ†ใซๆ„Ÿใ˜ใ‚‹ใ€ใจใ„ใ†ๆ„ๅ‘ณใงใ™ใ€‚

ใพใใ€Œๅคงใใ•ใฎๅค‰ๅŒ–ใ€ใฟใŸใ„ใชใ€Œ็พๅฎŸใงใฏใ‚ใ‚Šใˆใชใ„ๅ‹•ใใ€ใซใชใ‚‹ใจใใ†ใ„ใ†่ช่ญ˜ใ‚‚็ตๆง‹่–„ใ‚Œใฆใใ†ใงใ™ใ‘ใฉใ€‚

ใงใ€‚

ไพ‹ใˆใฐ้‡ๅŠ›ใ€‚ๅœฐ็ƒไธŠใงๆ”พใ‚ŠๆŠ•ใ’ใŸ็‰ฉไฝ“ใฏ้‡ๅŠ›ใซใ‚ˆใฃใฆใŠใŠใ‚ˆใๆ”พ็‰ฉ็ทš ("็‰ฉ"ใ‚’"ๆ”พ"ใฃใŸใจใใฎ"็ทš") ใ‚’ๆใใ“ใจใŒ็Ÿฅใ‚‰ใ‚Œใฆใ„ใพใ™ใ€‚

ใชใฎใงใ€Œ้‡ๅŠ›ใซๅพ“ใ†ใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใŒไฝœใ‚ŠใŸใ‘ใ‚Œใฐใ€ๆ”พ็‰ฉ็ทšใ‚’ๆใใ‚ˆใ†ใชๅ‹•ใใ‚’ไฝœใ‚Œใฐ่‰ฏใ„ใ€ใจใ„ใ†ใ“ใจใซใชใ‚Šใพใ™ใ€‚ใ‚ทใ‚นใƒ†ใƒžใƒใƒƒใ‚ฏใงใ™ใญใ€‚

็‰ฉ็†็พ่ฑกใซๅพ“ใ†ใ‚ˆใ†ใชใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใฏใ€็‰ฉ็†็พ่ฑกใ‚’่จ˜่ฟฐใ™ใ‚Œใฐใใฎใพใพใ€Œๆญฃใ—ใ„ๅ‹•ใใ€ใŒๅพ—ใ‚‰ใ‚Œใพใ™ใ€‚ใ“ใฎ่€ƒใˆๆ–นใฏ Physically-Based Rendering ใซไผผใฆใพใ™ใญใ€‚

ใŸใ ใ—ใ“ใ“ใงๆณจๆ„ใ™ในใ็‚นใจใ—ใฆใ€Œ(ๅœฐ็ƒไธŠใฎ) ๅ…จใฆใฎ็‰ฉไฝ“ใซใฏใ€ใฉใ‚“ใช่ณช้‡ใงใ‚ใ‚ใ†ใจๅŒใ˜้‡ๅŠ›ๅŠ ้€ŸๅบฆใŒๆŽ›ใ‹ใ‚‹ใ€ใจใ„ใ†ๅคงไบ‹ใชๅŽŸ็†ใŒใ‚ใ‚Šใพใ™ใ€‚ใคใพใ‚Š้‡ใ•ใฎ่กจ็พใฏใ€้‡ๅŠ›ใงใฏๅ‡บๆฅใชใ„ใจใ„ใ†ใ“ใจใงใ™ใ€‚

ๅฏพ็…ง็š„ใซ้‡ใ•ใŒ้–ขใ‚ใฃใฆใใ‚‹ใฎใฏใ€Œ็‰ฉไฝ“ใจใฎ่ก็ชใ€ใงใ™ใ€‚่ณช้‡ใฏใ€Œ้‹ๅ‹•ใ‚’ใฉใ‚Œใใ‚‰ใ„็ถญๆŒใ™ใ‚‹ใ‹ใ€ใฎใƒ‘ใƒฉใƒกใƒผใ‚ฟใชใฎใงใ€่ปฝใ„ใ‚‚ใฎใงใ‚ใ‚Œใฐใ€Œ็ถญๆŒๅ‡บๆฅใšใซๅ็™บใ™ใ‚‹ใ€ใ€ใ‚ใ‚‹็จ‹ๅบฆใฎ้‡ใ•ใชใ‚‰ใ€Œใ‚จใƒใƒซใ‚ฎใƒผใ‚’ๅคฑใฃใฆๅœๆญขใ€ใ€้™็•Œใ‚’่ถ…ใˆใ‚Œใฐใ€Œ่ก็ชๅฏพ่ฑกใ‚’็ ดๅฃŠใ€ใ™ใ‚‹ใ‚ˆใ†ใซใชใ‚Šใพใ™ใ€‚

ใคใ„ใงใซ่จ€ใˆใฐ่ก็ชใซใฏๅค‰ๅฝขใŒใคใ„ใฆใใ‚‹ใ‚‚ใฎใง (ไพ‹ใˆใฐ้‡Ž็ƒใƒœใƒผใƒซใจใ‹ใฏๆ‰“ๆ’ƒใฎ็žฌ้–“ใ‚ใกใ‚ƒใใกใ‚ƒๆญชใ‚“ใงใ‚‹ใ‚‰ใ—ใ„ใงใ™ใญ)ใ€ใใ‚Œใ‚’ๅ…ฅใ‚Œใ‚‹ใจ็ตๆง‹ใ€Œๅ็™บๆ„Ÿใ€ใŒๅ‡บใพใ™ใ€‚ๆ’ƒๅŠ›ใ‚’ไธŽใˆใ‚‹ใซใฏๆ™‚้–“ใŒๅฟ…่ฆใชใฎใงใ™ใญ (Amebientใฎใจใใซใ‚‚ใกใ‚‡ใฃใจๆ›ธใใพใ—ใŸ)ใ€‚

 

ใพใใใ‚“ใช่ฉฑใ‚’ใ—ใŸใจใ“ใ‚ใง็งใฎไฝœใฃใŸใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใฎ9ๅ‰ฒ9ๅˆ†ใฏ็‰ฉ็†็พ่ฑกใซๅพ“ใฃใฆใ„ใชใ„ใ‚“ใงใ™ใŒใ€‚ใจใฏ่จ€ใˆใ‚„ใฏใ‚ŠๅŸบๆœฌใฏ็ŸฅใฃใฆใŠใในใใง (ใ“ใ‚Œใ‚‰ใฏใ€Œใƒ†ใ‚ฏใƒ‹ใƒƒใ‚ฏใ€ใ˜ใ‚ƒใชใ„ใงใ™ใ‹ใ‚‰ใญ๏ผ)ใ€ใใ“ใ‹ใ‚‰้€ธ่„ฑใ™ใ‚‹ใฎใ‚‚ใพใŸๆฅฝใ—ใ•ใ ใจๆ€ใฃใฆใ„ใพใ™ใ€‚

easing

ใชใ‚“ใง easing ใจๅ‘ผใฐใ‚Œใ‚‹ใ‚ˆใ†ใซใชใฃใฆใ‚‹ใฎใ‹ใฏ็งใฏใ‚ใ‹ใ‚‰ใชใ„ใ‚“ใงใ™ใŒใ€ใพใใชใ‚“ใ‹ใ€Œๅ‹•ใใ‚’่กจใ™้–ขๆ•ฐใ€ใฟใŸใ„ใชใ‚‚ใฎใ ใจๆ€ใ„ใพใ™ใ€‚

่ฟฝ่จ˜: ใ“ใ‚Œใฏๆ€ฅใชๅค‰ๅŒ–ใ‚’ใ€Œใ‚†ใ‚‹ใ‚„ใ‹ใ€ใซ็น‹ใใจใ„ใ†ๆ„ๅ‘ณใฃใฝใ„ใจใ„ใ†ใ“ใจใŒใ‚ใ‹ใ‚Šใพใ—ใŸใ€€ใŸใ—ใ‹ใซ

ใงใ€ไธ–ใฎไธญใซใฏใŸใใ•ใ‚“ใฎ easing ้–ขๆ•ฐใŒใ‚ใ‚‹ใฟใŸใ„ใชใ‚“ใงใ™ใŒใ€็งใฏใใ‚Œใ‚‰ใฏใปใผใƒŽใ‚คใ‚บๆƒ…ๅ ฑใ ใจๆ€ใฃใฆใ„ใพใ™ (ๆ˜”ใฏใ„ใ‚ใ„ใ‚ไฝฟใฃใฆใŸใ‘ใฉ)ใ€‚ไปŠๅ›žใฎใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใงใฏๅŸบๆœฌ็š„ใซ \exp ใ—ใ‹ไฝฟใฃใฆใพใ›ใ‚“ใ€‚

ใใฎ่ฉฑใฏไธ€ๆ—ฆใŠใ„ใจใ„ใฆใ€‚

easing ใซใฏใ€Œinใ€ใ€Œoutใ€ใ€Œin-outใ€ใฎ3็จฎ้กžใŒใ‚ใ‚Šใพใ™ใŒใ€in-out ใฏ in ใจ out ใ‚’ใใฃใคใ‘ใ‚Œใฐใ„ใ„ใฎใง่ฆใ‚Šใพใ›ใ‚“ (ๅฎŸ้š›ๅ•้กŒใ€Œๅ…ฅใ‚Šใ€ใจใ€Œๅ‡บใ€ใŒๅŒใ˜ๅ‹•ใ (= ๅŒใ˜ๆ„ๅ‘ณๅˆใ„ใƒปๅŒใ˜้‡่ฆๅบฆ) ใงใ‚ใ‚‹ใ“ใจใฃใฆ็„กใใชใ„ใงใ™ใ‹๏ผŸ)ใ€‚

ใถใฃใกใ‚ƒใ‘ out ใ‚‚ in ใ‚’ใฒใฃใใ‚Šใ‹ใˆใ—ใŸใ ใ‘ใงใ™ใŒใ€ใพใๆ™‚้–“็š„ๅ› ๆžœ้–ขไฟ‚ใจใ—ใฆใฏใ“ใฎ2ใคใฎ้•ใ„ใฏ้‡่ฆใงใ™ใ€‚

ใ—ใ‹ใ—ใ“ใ‚Œใ‚‚ๆ—ขใซ่ชฌๆ˜Žใ—ใฆใ„ใพใ™ใ€‚ใ€Œinใ€ใฏ็žฌ้–“ใซ็น‹ใ’ใ‚‹ใ€Œไบˆๅ‘ŠใฎใŸใ‚ใฎๅ‹•ใใ€ใงใ€ใ€Œoutใ€ใฏ็žฌ้–“ใ‹ใ‚‰็น‹ใŒใ‚‹ใ€Œๅฟœ็ญ”ใ‚’็คบใ™ๅ‹•ใใ€ใฎใ“ใจใงใ™ใ€‚

ไฝ•ๅบฆใ‚‚่จ€ใ„ใพใ™ใŒๅคงไบ‹ใชใฎ (= ๅ‹•ใใฎไธญใง็Ÿฅ่ฆšใซไธŽใˆใ‚‹ๅฝฑ้Ÿฟ้‡ใŒๅคšใ„ใ‚‚ใฎ) ใฏใ€Œๅค‰ๅŒ–้‡ใŒๅคงใใ„ใ‚ฟใ‚คใƒŸใƒณใ‚ฐใ€ใงใ™ใ€‚็งใฏ in/out ใฎๅŒบๅˆฅใŒใ„ใคใ‚‚ใ‚ใ‹ใ‚“ใชใใชใ‚‹ใฎใงๆœ€่ฟ‘ e1/e0 ใฃใฆๅ‘ผใ‚“ใงใพใ™ (1 (ใŠใ‚ใ‚Š) ใฎใ‚ฟใ‚คใƒŸใƒณใ‚ฐใŒ้‡่ฆใ‹ใ€0 (ใฏใ˜ใพใ‚Š) ใฎใ‚ฟใ‚คใƒŸใƒณใ‚ฐใŒ้‡่ฆใ‹)ใ€‚

ไพ‹ใˆใฐ UI ใงใƒœใ‚ฟใƒณใ‚’ๆŠผใ—ใŸใจใใฎๅๅฟœใฏใ€ๅณๅบงใซใƒฆใƒผใ‚ถใซๅฟœ็ญ”ใ‚’่ฟ”ใ™ในใใ€e0 ใ‚’ไฝฟใ„ใพใ™ใ€‚้€†ใซใ‚ทใ‚นใƒ†ใƒ ใ‹ใ‚‰่ฟ”ไบ‹ใŒใ‚ใ‚‹ใจใใฏใ€e1 ใ‚’ไฝฟใ†ใ“ใจใงไบˆๅ‘Šใ‚’่กŒใฃใฆใ€้ฉšใใ‚’ใ‚„ใ‚‰ใ‚ใ’ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚

 

ใ•ใฆใ€ใจใ“ใ‚ใงใฉใ‚“ใชๅ‹•ใใŒ่‡ช็„ถใซ่ฆ‹ใˆใ‚‹ (= ๅค–ๅŠ›ใ‚’ใฏใฃใใ‚Šใจๆ„Ÿใ˜ใ•ใ›ใชใ„) ใฎใงใ—ใ‚‡ใ†ใ‹๏ผŸ

ไพ‹ใˆใฐใ€Œๆ€ฅใซๅ‹•ใใŒใชใใชใ‚‹ใ€ใฎใฏใชใ‚“ใ ใ‹ไธ่‡ช็„ถใงใ™ใ€‚ใ‚†ใฃใใ‚Šใจ้€ŸๅบฆใŒ 0 ใซใชใฃใฆใปใ—ใ„ใงใ™ใ€‚้€†ใซใ€Œๆ€ฅใซ้€ŸๅบฆใŒๅ‡บใ‚‹ใ€ใฎใฏใพใ้–“้•ใ„ใชใๅค–ๅŠ›ใŒ็™บ็”Ÿใ—ใŸใ‚“ใงใ—ใ‚‡ใ†ใ‹ใ‚‰ใใ‚Œ่‡ชไฝ“ใฏๅ•้กŒใ‚ใ‚Šใพใ›ใ‚“ใ€‚

ใŸใ ใ€ใŸใจใˆใ€Œ้€ŸๅบฆใŒใ ใ‚“ใ ใ‚“ 0 ใซใชใฃใŸใ€ใจใ—ใฆใ‚‚ใ€ๆฌกใฎๅ‹•ใใซใฏใ€Œไฝ•ใ‹ใ€ใ‚’ๆ„Ÿใ˜ใพใ›ใ‚“ใ‹๏ผŸ

ใคใพใ‚Šใ€ŒใดใฃใŸใ‚Šใจๆญขใพใ‚Šใ™ใŽใฆใ„ใ‚‹ใ€ๆ„ŸใŒใ€‚

ใ“ใฎๆ„Ÿ่ฆšใฎๆญฃไฝ“ใฏๅŠ ้€Ÿๅบฆใฎไธ้€ฃ็ถšๆ€งใงใ™ใ€‚ใ‚ฐใƒฉใƒ•ใซใ™ใ‚‹ใจใ€ใ“ใ†ใ€‚

ใฑใใฃใจใ—ใกใ‚ƒใฃใฆใพใ™ใ€‚ใ€ŒๅŠ ้€Ÿๅบฆๅค‰ๅŒ–ใŒไธ้€ฃ็ถšใ€ใจใ„ใ†ใ“ใจใฏๆญฃใ—ใใ€Œใใ“ใงใดใฃใŸใ‚ŠๅŠ›ใ‚’ๅŠ ใˆใ‚‹ใฎใ‚’ใ‚„ใ‚ใŸใ€ใจใ„ใ†ใ“ใจ (F=ma ใชใฎใง)ใ€‚ใ—ใ‹ใ—ใใ‚Œใฃใฆ่‡ช็„ถใชใ“ใจใงใ—ใ‚‡ใ†ใ‹๏ผŸ

ไฝ•ใ‚‚ใ—ใฆใชใ„ใชใ‚‰ใ€ใ“ใ‚“ใชไธ้€ฃ็ถšใชๅค‰ๅŒ–ใŒ (ๆฝœๅœจ็š„ใซ) ่ตทใใฆใ„ใ‚‹ใฏใšใŒใ‚ใ‚Šใพใ›ใ‚“ใ€‚

ใคใพใ‚Š้€ŸๅบฆใŒใ ใ‚“ใ ใ‚“ 0 ใซใชใ‚‹ใ ใ‘ใงใชใใ€ๅŠ ้€Ÿๅบฆใ‚‚ใ ใ‚“ใ ใ‚“ 0 ใซใชใฃใฆใปใ—ใ„ใฎใงใ™ใ€‚

ใใ—ใฆๅŒๆง˜ใซๅŠ ้€Ÿๅบฆใฎๅค‰ๅŒ– (่บๅบฆ) ใ‚‚ใงใใ‚‹้™ใ‚Šใ ใ‚“ใ ใ‚“ 0 ใซใชใฃใฆใปใ—ใ„ใงใ™ใ€‚ใใ—ใฆโ€ฆ

ไปฅไธŠใฎ่ฉฑใ‹ใ‚‰ใ€ใ€Œ่‡ช็„ถใชๅ‹•ใใ€ใจใ„ใ†ใฎใฏใ€Œ็„ก้™ๅ›žๅพฎๅˆ†ๅฏ่ƒฝใ€ใงใ‚ใ‚‹ใ“ใจใ‚’ๆš—ใซ่ฆๆฑ‚ใ—ใฆใ„ใ‚‹ใฎใงใฏใชใ„ใ‹๏ผŸใจ่จ€ใˆใพใ™ใ€‚ไพ‹ใˆใฐ็ญ‰้€Ÿ็›ด็ทš้‹ๅ‹•ใ€‚ไพ‹ใˆใฐๆ”พ็‰ฉ็ทšใ€‚ไพ‹ใˆใฐ \sin ใ‚„ \cosใ€‚ใใ—ใฆ \exp ใงใ™ใ€‚

ใ—ใ‹ใ—็„ก้™ๅ›žๅพฎๅˆ†ๅฏ่ƒฝใงใ‚ใ‚‹ใ“ใจใ‚’่ฆๆฑ‚ใ™ใ‚‹ใจใ„ใ†ใ“ใจใฏใ€ใƒ†ใ‚คใƒฉใƒผๅฑ•้–‹ใ‚’่€ƒใˆใ‚‹ใจใ€Œใ‚ใ‚‹็žฌ้–“ใฎๅ‹•ใใ‹ใ‚‰ใ€้ŽๅŽปใƒปๅฐ†ๆฅใฎๅ‹•ใใ‚’ไบˆๆธฌใงใใ‚‹ใ€ใจใ„ใ†ใ“ใจใ‚’ๆ„ๅ‘ณใ—ใพใ™*1ใ€‚ใ“ใ‚Œใฏใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใฎๅฝนๅ‰ฒ็š„ใซใฏ่‰ฏใ„ใ“ใจใ ใจ่จ€ใˆใพใ™ใŒใ€ไพ‹ใˆใฐใ€Œๅ‹•ใใŒๅฎŒๅ…จใซใชใใชใฃใŸ็Šถๆ…‹ (= ๅฎšๆ•ฐ้–ขๆ•ฐ) ใซใชใ‚‹ใ€ใจใ„ใ†ใ“ใจใฏ้ŽๅŽปใซใ‚‚ๅ‹•ใใŒ็„กใ‹ใฃใŸใฏใšใจใ„ใ†ใ“ใจใซใชใ‚Šใพใ™ (ใ ใ‚“ใ ใ‚“ๅœๆญขใ™ใ‚‹ใ€Œ่‡ช็„ถใ€ใชใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใฏๅญ˜ๅœจใ—ใชใ„๏ผ)ใ€‚ใ“ใ‚Œใงใฏใ€Œๅœๆญขใ™ใ‚‹ใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ€ใŒไฝœใ‚Œใพใ›ใ‚“ใ€‚

ใจใ„ใ†ใ‚ใ‘ใงใฉใ†ใ—ใฆใ‚‚ใ“ใ“ใซๅฆฅๅ”ใฏๅฟ…่ฆใงใ™ใ€‚็งใฏ่ซฆใ‚ใฆ \exp ใ‚’้ฉๅฝ“ใชใจใ“ใ‚ใงๅˆ‡ๆ–ญใ™ใ‚‹ใ‚ˆใ†ใซใ—ใฆใฆใ€ๅœๆญขใ—ใฆใ‚‹ใ‚ˆใ†ใซ่ฆ‹ใˆใฆ้€Ÿๅบฆใ™ใ‚‰ 0 ใ˜ใ‚ƒใชใ‹ใฃใŸใ‚Šใ—ใพใ™ใ€‚ใงใ‚‚ใพใใ€ใปใผ 0 ใชใฎใง่ฆ‹ใ‹ใ‘ไธŠๅคงไธˆๅคซใงใ™ใ€‚

ไพ‹ใˆใฐ  x = -4 ใฎใจใใซ \exp(-4) = 0.018... ใชใฎใ‚’ใ€็„ก็†ใ‚„ใ‚Š 0 ใ ใฃใŸใ“ใจใซใ™ใ‚‹ใ“ใจใง 0 ใ‹ใ‚‰ 1 ใธใฎ้–ขๆ•ฐใซใ—ใฆใ„ใพใ™ใ€‚ๅ…ฅๅŠ›ใจๅ‡บๅŠ›ใซๆŽ›ใ‘็ฎ—ใจ่ถณใ—็ฎ—ใ‚’ใ™ใ‚‹ใ ใ‘ใ€‚

ใจใ„ใ†ใ‚ใ‘ใงใ“ใ‚“ใช้–ขๆ•ฐใ‚’ไฝฟใฃใฆใพใ™ใ€‚

float e0(float t, float k) {
    float x = exp(-saturate(t)*k);
    float s0 = 1;
    float s1 = exp(-k);
    return (x - s0) / (s1 - s0);
}
float e1(float t, float k) {
    return 1 - e0(1 - t, k);
}

ใ‚‚ใ†็งใฎใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใฎใ‚ฝใƒผใ‚นใ‚ณใƒผใƒ‰ใฎ่‡ณใ‚‹ใจใ“ใ‚ใซใ“ใ‚ŒใŒใ‚ใ‚Šใพใ™ใ€‚k ใงๅ‹•ใใฎ้‹ญใ•ใ‚’ๅค‰ใˆใ‚‰ใ‚Œใ‚‹ไธŠใ€t ใ‚’ๅฎšๆ•ฐๅ€ใƒปk ใ‚’ใใฎ้€†ๆ•ฐๅ€ใ™ใ‚‹ใ“ใจใงๆœ€ๅคงๅค‰ๅŒ–้‡ใ‚’็ถญๆŒใ—ใŸใพใพใ€Œ็ด ๆ—ฉใ็ต‚ใ‚ใ‚‹ใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ€ใ‚’ใคใใ‚‹ใ“ใจใ‚‚ใงใใพใ™ใ€‚ไพฟๅˆฉใ€‚

 

ใปใจใ‚“ใฉใŒใ“ใ‚Œใฎ็ต„ใฟๅˆใ‚ใ›ใงๅ‡บๆฅใฆใ„ใพใ™ใŒใ€ใŸใพใซๆฌฒใ—ใใชใ‚‹ใ‚‚ใฎใจใ—ใฆใ€Œใกใ‚‡ใฃใจ่กŒใฃใฆๆˆปใ‚‹ใ‚„ใคใ€ใŒใ‚ใ‚Šใพใ™ใ€‚

float eb(float t, float b) {
    t = 1 - t;
    return 1 - t*t*(b*t - b + 1);
}

ใ“ใฎ้–ขๆ•ฐใฏ f(0) = 0, f(1) = 1, f'(1) = 0 ใใ—ใฆ f(1/b) = 1 ใจใ„ใ†ๆกไปถใฎ่งฃใจใ—ใฆไฝœใฃใŸไธ‰ๆฌก้–ขๆ•ฐใงใ™ใ€‚out ็š„ใชๅ‹•ใใ‚’ใ™ใ‚‹ใ‚“ใ ใ‘ใฉใ€ใกใ‚‡ใฃใจ่กŒใ้ŽใŽใ‚‹ใฎใงใ™ใ€‚

ใ“ใ‚Œใ‚’ e0 ใฎ็ตๆžœใซใคใชใŽๅˆใ‚ใ›ใฆใ‚ใ’ใ‚‹ (้–ขๆ•ฐๅˆๆˆใ™ใ‚‹) ใ“ใจใงใ€Œใตใ‚ใฃใจใฒใ‚ใŒใฃใฆใ€ใกใ‚‡ใฃใจๆˆปใ‚‹ใ€ๅ‹•ใใ‚’ไฝœใฃใฆใ„ใพใ™ใ€‚

 

ใ“ใ‚Œใ ใ‘ใงๅ…จใฆใฎใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใŒ่ณ„ใˆใ‚‹ใ‹ใจใ„ใ†ใจใ‚‚ใกใ‚ใ‚“ใใ†ใงใฏใชใ„ใ‚“ใงใ™ใŒใ€ใ€Œ็žฌ้–“ใฎๅ‹•ใใ€ใฎๆฎ†ใฉใฏใ“ใ‚Œใงๅๅˆ†ใ ใจๆ€ใ„ใพใ™ใ€‚ๆŒ็ถš็š„ใชๅ‹•ใ (ใตใ‚ˆใตใ‚ˆๅ‹•ใ„ใฆใ‚‹ใ‚‚ใฎใจใ‹) ใฏ็งใฏใ‚นใƒ—ใƒฉใ‚คใƒณๆ›ธใ„ใŸใ‚Šใ—ใฆใพใ™ (CUEใฎใจใใซใ‚„ใฃใŸ)ใ€‚

ใชใ‚“ใงไธ–ใฎไธญใฎใƒขใƒผใ‚ทใƒงใƒณใ‚ฐใƒฉใƒ•ใ‚ฃใƒƒใ‚ฏใ‚นใŒใฟใ‚“ใชๆ‰‹ใงใ‚ซใƒผใƒ–ๆ›ธใ„ใฆไฝœใ‚‰ใ‚Œใฆใ„ใ‚‹ใฎใ‹ใฏใ‚ˆใใ‚ใ‹ใ‚‰ใชใ„ใ‚“ใงใ™ใŒ (ใ‚ใ‹ใ‚‹ใ‚“ใงใ™ใŒ)ใ€ใ‚ขใƒฌใฏใ€ŒไบบใŒไธๅฏงใซๅ‹•ใใ‚’ๆใ„ใŸใ“ใจใง็”Ÿใพใ‚Œใ‚‹ๆญชใฟใ€ใ‚’ๆฅฝใ—ใ‚“ใงใ„ใ‚‹ใ‚“ใงใ—ใ‚‡ใ†ใ‹๏ผŸใพใๅฎŸ้š›ใใ†ใ„ใ†ใจใ“ใ‚ใฏๅคšๅˆ†ใ‚ใ‚‹ใจๆ€ใ†ใ‚“ใงใ™ใ‘ใฉ (็™–ใŒใใฎใพใพใ€Œใ‚ฏใ‚ปใซใชใ‚‹ๆ„Ÿใ˜ใ€ใซใชใฃใฆใใ†)ใ€‚

็งใฎไฝœใฃใฆใ‚‹ๅ‹•ใใ‚‚ๆ˜Žใ‚‰ใ‹ใซ็งใฎ็™–ใŒๅ‡บใฆใ‚‹ใฎใงไบบใฎใ“ใจใฏ่จ€ใˆใชใ„ใงใ™ใ‘ใฉใญใ€‚ใŸใ ็งใฎ็™–ใฏใ€Œๆญชใฟใ€ใงใฏใชใ„ใจๆ€ใ†ใ€‚

ใ‚ซใƒผใƒ–ใ‚จใƒ‡ใ‚ฃใ‚ฟใซใฏ2้šŽๅพฎๅˆ†ใพใงใ‚’่กจ็คบใ™ใ‚‹ๆฉŸ่ƒฝใปใ—ใ„ใงใ™ใ‚ˆใญใ€‚

 

ใพใๆ‰‹ไฝœๆฅญใƒขใƒผใ‚ทใƒงใƒณ (็งใ‚’ๅซใ‚€) ใฏใ‚ฒใƒผใƒ ใ˜ใ‚ƒใชใ„ (interactiveใซๅ‹•ใใŒๅค‰ๅŒ–ใ—ใชใ„) ใ‹ใ‚‰ๅ‡บๆฅใ‚‹ใจใ“ใ‚ใ‚ใ‚Šใพใ™ใ‚ˆใญโ€ฆใ€‚ใใ‚Œใฏใ€Œ่‰ฏใ„ใ“ใจใ€ใงใ™ใ‘ใฉใ€‚

ๅฎŸ่ฃ…

ไปŠๅ›žใฎใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใฏใ€ๅ‰่ฟฐใ—ใŸใ‚ˆใ†ใซๅ…จใฆใŒใ‚ณใƒผใƒ‰ใงๆ›ธใ‹ใ‚Œใฆใ„ใพใ™ใ€‚็‰ฉไฝ“ใฎไฝ็ฝฎใƒปๅ›ž่ปขใƒป่‰ฒใƒปๅค‰ๅฝขใชใฉๅ…จใฆใงใ™ใ€‚

ใ“ใ‚“ใชๆ„Ÿใ˜ใ€‚

ใ“ใฎๆ–นๆณ•ใฎใƒกใƒชใƒƒใƒˆใƒปใƒ‡ใƒกใƒชใƒƒใƒˆใซใคใ„ใฆไธ€ๅฟœ่จ˜ใ—ใฆใŠใใพใ™ใ€‚

  • ใƒกใƒชใƒƒใƒˆ
    • ๅคšๆ•ฐใฎ็‰ฉไฝ“ใซๅฏพใ™ใ‚‹ๅ‹•ใใ‚’ไธ€ๆฐ—ใซ่จ˜่ฟฐใงใใ‚‹
      • ใใฎใ†ใกใ„ใใคใ‹ใ ใ‘้•ใ†ๅ‹•ใใ€ใฟใŸใ„ใชใ“ใจใ‚‚ใงใใ‚‹
    • ใ‚ทใƒณใƒ—ใƒซใช้–ขๆ•ฐใซๅพ“ใ†็‰ฉ็†็พ่ฑกใฎ่จ˜่ฟฐใŒๅฏ่ƒฝ
      • ใƒฉใƒณใƒ€ใƒ ใ‚‚ๆฐ—่ปฝใซไฝฟใˆใ‚‹ใ—ใพใใชใ‚“ใงใ‚‚
    • ๅ‹•ใใฎใƒขใ‚ธใƒฅใƒผใƒซๅŒ–ใƒปไฝฟใ„ๅ›žใ—ใŒๅฏ่ƒฝ
    • ๅ‹•ใใ‚’ๆŽ›ใ‘ใŸใ‚Š่ถณใ—ใŸใ‚Šใ—ใฆ็ต„ใฟๅˆใ‚ใ›ใ‚‹ใ“ใจใŒใงใใ‚‹
    • ๅพฎๅˆ†ใ‚’่‡ชๅ‰ใง่จˆ็ฎ—ใ™ใ‚‹ใ“ใจใง้€Ÿๅบฆใฎๅ€คใ‚’ใƒขใƒผใ‚ทใƒงใƒณใซไฝฟใˆใ‚‹
    • ้ž็ ดๅฃŠ็ทจ้›† (ใƒใƒผใ‚ธใƒงใƒณ็ฎก็†ใ‚‚็ฐกๅ˜)
    • ไฝ•ใ‚’ๆ„ๅ›ณใ—ใŸๅ‹•ใใชใฎใ‹ใ€Œ่ชญใ‚€ใ€ใ“ใจใŒใงใใ‚‹ (่จ€่ชžใงๆ›ธใ„ใฆใ‚ใ‚‹ใฎใง)
  • ใƒ‡ใƒกใƒชใƒƒใƒˆ
    • ่ชฐใงใ‚‚ๆ›ธใ‘ใ‚‹ใ‚ใ‘ใงใฏใชใ„
      • ใงใ‚‚ใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ‚ซใƒผใƒ–ใ‚‚ๅคงไฝ“ใฎไบบๆใ‘ใชใใชใ„ใงใ™ใ‹๏ผŸ (ๅคงไฝ“ใใซใ‚ƒใฃใฆใชใ‚‹ใ ใ‚ใ†ใ—)
    • ไฝ็ฝฎใ‚’ๆŒ‡ๅฎšใ™ใ‚‹ใจใใซๆ•ฐๅ€คใ‚’ๆ›ธใ‹ใชใใ‚ƒใ„ใ‘ใชใ„ใฎใงใกใ‚‡ใฃใจ็›ด่ฆณ็š„ใงใฏใชใ„
      • ใจใฏ่จ€ใˆใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ‚ซใƒผใƒ–ใ‚‚ๅˆฅใซใ€ŒๅฎŸ้š›ใฎไฝ็ฝฎใ€ใ‚’ๆŒ‡ๅฎšใ—ใฆใ‚‹ใ‚ใ‘ใงใฏใชใ„ใ—โ€ฆ
    • ใ“ใ‚Œใ‚’ๅ‹•ใใ‚ˆใ†ใซใ™ใ‚‹ใพใงใฎไป•็ต„ใฟไฝœใ‚ŠใŒ้ขๅ€’

ใ†ใƒผใ‚“ใ€‚ใ‚‚ใจใ‚‚ใจใƒกใƒชใƒƒใƒˆใจใƒ‡ใƒกใƒชใƒƒใƒˆใŒ1ๅฏพ1ๅฏพๅฟœใ™ใ‚‹ใ‚ˆใ†ใซๆ›ธใใŸใ„ใคใ‚‚ใ‚ŠใŒใ‚ใฃใŸใ‚“ใงใ™ใŒใ‚ณใƒฌใซ้–ขใ—ใฆใฏๅœงๅ€’็š„้ŽใŽใฆใ“ใ†ใชใ‚‹ใ—ใ‹ใชใ„ใงใ™ใญโ€ฆใ€‚

ใ“ใ†ใชใฃใฆใ„ใ‚‹ๅ…จใฆใฎๅŽŸๅ› ใฏใ€Œใƒ—ใƒญใ‚ฐใƒฉใƒ ่จ˜่ฟฐใ‚ˆใ‚Šใ‚‚ใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ‚ซใƒผใƒ–็ทจ้›†ใƒ„ใƒผใƒซใฎใปใ†ใŒไธŠๆ–นใฎใƒฌใ‚คใƒคใƒผใซใ‚ใ‚‹็‚บใ€ๅฝ“็„ถใƒ—ใƒญใ‚ฐใƒฉใƒ ่จ˜่ฟฐใฎใปใ†ใŒ็ดฐใ‹ใ„ใ“ใจใŒใงใใ‚‹ใ€ใจใ„ใ†็‚นใงใ™ใ€‚ใพใใ‚ใŸใ‚Šใพใˆใชใฎใ‚ˆใ€‚

ใจใฏ่จ€ใˆ็พๅฎŸ็š„ใชๅ•้กŒใฎ9ๅ‰ฒใฏ Unity ใฎ Animation ็ทจ้›†ๆฉŸ่ƒฝใŒ้›‘้ญšใชใ“ใจใซ่ตทๅ› ใ™ใ‚‹ใฎใงใใ“ใฏใพใโ€ฆใ€‚

ๆญฃ็›ดๅพฎๅˆ†ใ‚’่‡ชๅ‰ใง่จˆ็ฎ—ใ™ใ‚‹ใฎใใ‚“ใชใซๆฅฝใงใฏใชใ„ (็‰นใซ Quaternion ใจใ‹ๅ‡บใฆใใ‚‹ใจ) ใฎใง่‡ชๅ‹•็š„ใซใŒใกใ‚ƒใฃใฆใ‚„ใฃใฆใปใ—ใ„ใ‚“ใงใ™ใ‘ใฉใญใ€‚็„ก็†ใ‹ใชใพใใ€‚

 

่ฉฑใ‚’ๆˆปใ—ใฆใ€ใพใšไปŠๅ›žใฎๅฎŸ่ฃ…ใฏใ“ใ‚“ใชไป•็ต„ใฟใซใชใฃใฆใ„ใพใ™:

  • Timeline ใงๆ™‚้–“ใ‚’ๅธใ‚‹ Material ใฎใƒ‘ใƒฉใƒกใƒผใ‚ฟใ‚’ๅค‰ๅŒ–ใ•ใ›ใ‚‹
  • ใใฎ Material ใ‚’่ฒผใฃใŸ Quad ใ‚’ใ‚ซใƒกใƒฉใงๆ’ฎใฃใฆ RenderTexture ใซไฟๅญ˜
  • ๅ„ใ‚จใƒ•ใ‚งใ‚ฏใƒˆใŒใใฎ RenderTexture ใ‚’ๅ‚็…งใ—ใซ่กŒใฃใฆ็พๅœจๆ™‚ๅˆปใ‚’ๅ–ๅพ—
  • ๆ™‚ๅˆปใ‚’ใƒ‘ใƒฉใƒกใƒผใ‚ฟใจใ—ใฆใ‚จใƒ•ใ‚งใ‚ฏใƒˆใ‚’่จ˜่ฟฐ

ใ“ใ‚ŒใŒใใฎ Timeline ใงๆ“ไฝœใ—ใฆใ„ใ‚‹ Animation ใงใ™ใ€‚

  • ๆ–œใ‚ใฎ่ตคใ„ใ‚„ใคใŒใ€Œ็พๅœจใฎๅฐ็ฏ€ๆ•ฐใ€(ๆ•ดๆ•ฐๅ€ค) ใงใ™ใ€‚
  • 0 ไป˜่ฟ‘ใฎ้’ใจ็ท‘ใฎใ‚ฎใ‚ถใ‚ฎใ‚ถ (ไธ‰่ง’ๆณข) ใŒใ€ใ€Œๅฐ็ฏ€้–‹ๅง‹ใ‹ใ‚‰ใฎๆ™‚้–“ใ€ใ‚’่กจ็พใ—ใฆใ„ใพใ™ใ€‚
    • ใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใง้›ขๆ•ฃ็š„ใชๅ‹•ใใ‚’ใ™ใ‚‹ใจ่‰ฏใใชใ„ (ๆญฃ็ขบใชๅ€คใŒๅ–ใ‚Œใ‚‹ไฟ่จผใŒใชใ„) ใฎใงใ€2ใคใฎไธ‰่ง’ๆณขใ‹ใ‚‰ไฝ็›ธใ‚’่จˆ็ฎ—ใ™ใ‚‹ใ‚ˆใ†ใซใ—ใฆใ„ใพใ™ใ€‚
      • CUE ใฎใจใใซใ‚‚ใ‚„ใฃใŸใ€‚
        • (ใพใไปŠๅ›žใฏ 5 ๅˆ†ใ ใ‘ใชใฎใงใ‚ทใƒณใƒ—ใƒซใซไธ€ๆœฌใฎ็›ด็ทšใซใ—ใฆใ‚‚ใใ“ใพใง็ฒพๅบฆใฎๅ•้กŒใฏใชใ‹ใฃใŸใ‹ใ‚‚ใ—ใ‚Œใชใ„)

ๅ„ใ‚จใƒ•ใ‚งใ‚ฏใƒˆใŒๆ™‚้–“ใ‚’ๅ–ใ‚Šๅ‡บใ™้ƒจๅˆ†ใฏใ“ใ‚“ใชๆ„Ÿใ˜ใ€‚

sampler2D _TimeTexture;
float4 env;
void loadEnv() {
    env = tex2Dlod(_TimeTexture, float4(0.5, 0.5, 0, 0));
}
float localTime(int si, float sl) {
    float2 bt = env.xy;
    int i = bt.x - si;
    float l = bt.y - sl;
    return i * 4 + l;
}

ๅ„ vertex shader / fragment shader ใฎๅ…ˆ้ ญใง loadEnv() ใ‚’ๅ‘ผใณๅ‡บใ™ใ‚ˆใ†ใซใ—ใฆใ„ใฆใ€ใใ†ใ™ใ‚‹ใจไปฅ้™ๅฅฝใใชใจใ“ใ‚ใงใ€Œๅฅฝใใชใ‚ฟใ‚คใƒŸใƒณใ‚ฐใ‚’ๅŸบๆบ–ใซใ—ใŸๆ‹ๆ™‚้–“ localTimeใ€ใŒๅพ—ใ‚‰ใ‚Œใพใ™ใ€‚

ใ“ใ“ใพใงใใ‚Œใฐใ‚ใจใฏใ‚„ใ‚‹ใ ใ‘ใงใ™ใ€‚

 

ๅ…จใฆใฎใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ‚’่งฃ่ชฌใ—ใฆใ„ใ‚‹ใจ็„ก้™ใซ็ต‚ใ‚ใ‚‰ใชใ„ใฎใงใ€ๅฅฝใใชใจใ“ใ‚ใ‚’ใ„ใใคใ‹็ดนไป‹ใ—ใฆใ„ใ“ใ†ใ‹ใชใจๆ€ใ„ใพใ™ใ€‚

้–‹ๅง‹็›ดๅ‰

ใ“ใ“ใฎๅฝนๅ‰ฒใฏ2ใคใ‚ใ‚Šใพใ™ใ€‚

  • ๆ›ฒใŒๅง‹ใพใ‚‹ไธๅบฆไธ€ๆ‹ๅ‰ใซๅ‹•ใใŒใ‚ใ‚‹ใ“ใจใงใ€ใ€Œ้–‹ๅง‹็›ดๅ‰ใงใ‚ใ‚‹ใ“ใจใ€ใจใ€Œไธ€ๆ‹ใฎ้–“้š”ใ€ใฎๆƒ…ๅ ฑใ‚’ไผใˆใ‚‹ใ€‚
  • ๅพ…ๆฉŸใ‚จใƒ•ใ‚งใ‚ฏใƒˆใจใƒกใ‚คใƒณใ‚จใƒ•ใ‚งใ‚ฏใƒˆใฎ้–“ใ‚’็น‹ใใ€‚

ใ“ใ“ใฏใพใ ้ŸณใŒ้ณดใฃใฆใชใ„ใ‚“ใงใ™ใŒใ€ใใ‚Œใงใ‚‚ไธ€ๅบฆใ€Œใฐใฃใ€ใฃใฆๅคงใใใชใ‚Šใพใ™ใ€‚ๆ€ฅใชๅ‹•ใใงใฏใ‚ใ‚Šใพใ™ใŒใ€ๅฎŒๅ…จใซ่ช่ญ˜ใ™ใ‚‹ๅฟ…่ฆใฏใชใใ€Œๆฌกใ‚’่ช่ญ˜ใ™ใ‚‹็‚บใฎไบ‹ๅ‰ๅ‹•ไฝœใ€ใซใชใฃใฆใ„ใพใ™ใ€‚ใชใฎใงใŸใ ๅคงใใ•ใŒๅค‰ใ‚ใ‚‹็จ‹ๅบฆใงใ™ใ€‚

ใƒกใ‚คใƒณใƒขใƒผใ‚ทใƒงใƒณใฎ้–‹ๅง‹ใฏใกใ‚ƒใ‚“ใจ่ฆ‹ใฆใปใ—ใ‹ใฃใŸใฎใงใ€ใใฎๅ‰ใซ็ฐก็ด ใชๅ‹•ใใ‚’ๅ…ฅใ‚Œใ‚‹ใ“ใจใงๆณจ่ฆ–ใ•ใ›ใ‚‹ใจใ„ใ†่ฉฑใงใ™ใญใ€‚ใใ‚Œใพใง็”ป้ขใซๅ‹•ใใŒใชใ„ใฎใง่ฆ–็‚นใŒๆบใ‚‰ใ„ใงใ„ใ‚‹ใ“ใจใ ใจๆ€ใ†ใฎใงใ€‚

ใใ—ใฆใ€ๅง‹ใพใ‚ŠใŒ่ฟ‘ใฅใใซใคใ‚ŒไธŠใซๅŠ ้€Ÿใ—ใฆใ„ใใ€้–‹ๅง‹ใพใงใฎไบˆๆธฌใ‚’ๆ็คบใ—ใพใ™ใ€‚ใงใ€ใƒกใ‚คใƒณใ‚จใƒ•ใ‚งใ‚ฏใƒˆใซๆป‘ใ‚‰ใ‹ใซๅˆ‡ใ‚Šๆ›ฟใ‚ใ‚Šใพใ™ (ๅ†…้ƒจ็š„ใซใ‚‚ๅ…จใ้•ใ† 2 ใคใฎใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใงใ™)ใ€‚

่ฆ‹ใ‹ใ‘็š„ใซใฏ็น‹ใŒใ‚Šใฎใชใ„ 2 ใคใฎใ‚จใƒ•ใ‚งใ‚ฏใƒˆใงใ™ใŒใ€ใ€ŒๅŒใ˜ๆ–นๅ‘ใซๅŒใ˜ใใ‚‰ใ„ใฎ้€Ÿๅบฆใงๅ‹•ใ„ใฆใ„ใ‚‹ใ€ใจใ„ใ†่ฆ็ด ใ ใ‘ใง้–ข้€ฃๆ€งใ‚’ไฝœใฃใฆใพใ™ใ€‚็ด ๆ—ฉใ„ๅ‹•ใใ ใจใ“ใ†ใ„ใ†ใ“ใจใŒใงใใ‚‹ใฎใŒ้ข็™ฝใ„ใงใ™ใญใ€‚

ใ‚‚ใจใ‚‚ใจใƒกใ‚คใƒณใ‚จใƒ•ใ‚งใ‚ฏใƒˆใฏๆœ€ๅˆใซไฝœใฃใฆใ€ๅˆถไฝœ็ต‚็›คใซใชใฃใฆใใ“ใซใฉใ†็น‹ใ’ใ‚ˆใ†ใ‹ใช๏ฝžใจๆ€ใฃใฆใŸใ‚“ใงใ™ใŒ่ฉฆใ—ใซๅ…ฅใ‚ŒใฆใฟใŸใ‚‰ใดใฃใŸใ‚Šใ ใฃใŸใฎใงใ‚ˆใ‹ใฃใŸใ€ใจใ„ใ†ๆ„Ÿใ˜ใงใ—ใŸใ€‚

 

ๅฎŸ่ฃ…ใงใ™ใ€‚

if (lt > 47) {
    s += (1 - e0(map(47, 47.5, lt), 4)) * 0.2 + 0.2; // size
    p.y += e1(map(47.5, 47.75, lt), 6) * 0.5; // position
    c = 1.1; // color
}

ใกใชใฟใซ map ใฏใ‚ณใƒฌใงใ™ (map(a,b,a) = 0, map(a,b,b) = 1 ใซใชใ‚‹ใ‚ˆใ†ใช็ทšๅฝขๅค‰ๆ›)ใ€‚

float map(float a, float b, float x) {
    return saturate((x-a) / (b-a));
}

้–‹ๅง‹ๆ‹ใŒ 48 ใฎใ‚ฟใ‚คใƒŸใƒณใ‚ฐใชใฎใงใใฎไธ€ๆ‹ๅ‰ใ‹ใ‚‰้–‹ๅง‹ใ—ใพใ™ใ€‚ใพใšไธ€็žฌใงใ‚ตใ‚คใ‚บใ‚’ 0.4 ๅข—ใ‚„ใ—ใฆๅค‰ๅŒ–ใ‚’่ฆ–่ชใ•ใ›ใคใค 0.2 ใพใงๅŠๆ‹ๆŽ›ใ‘ใฆ (47 ใ‹ใ‚‰ 47.5 ใพใง) ่ฝใจใ—ใฆใ€Œไบˆๆ„Ÿใ€ใ‚’ไฝœใ‚Šใพใ™ใ€‚

ใใ—ใฆ 47.5 ใ‹ใ‚‰ 47.75 ใพใงใฎ 1/4 ๆ‹ใ‚’ไฝฟใฃใฆไธŠใซๅ‹•ใ‹ใ—ใ€ๆœ€ๅพŒใฎ 1/4 ๆ‹ใฏๅ‹•ใ‹ใ—ใพใ›ใ‚“ใ€‚ใ“ใ‚Œใฏใ€Œไธ€็žฌ่ฉฐใพใฃใŸๆ„Ÿ่ฆšใ€(ใƒ’ใƒƒใƒˆใ‚นใƒˆใƒƒใƒ—ใจไผผใŸใ‚ˆใ†ใชใ‚คใƒกใƒผใ‚ธ) ใซใชใฃใฆใใ‚Œใฆ (5ใƒ•ใƒฌใƒผใƒ ใ—ใ‹ใชใ„ใงใ™ใ‘ใฉ)ใ€ๆป‘ใ‚‰ใ‹ใ™ใŽใ‚‹ๅ•้กŒใ‚’่งฃๆถˆใ—ใพใ™ใ€‚

ใจใ„ใ†ใฎใ‚‚ใ€47.5 ใ‹ใ‚‰ 48 ใพใงๅ‹•ใ‹ใ—ใฆใ—ใพใ†ใจๆป‘ใ‚‰ใ‹ใซ็น‹ใŒใ‚Šใ™ใŽใฆใ—ใพใฃใฆใ€Œๆ›ฒใŒ้–‹ๅง‹ใ—ใŸใ€ใจใ„ใ†็žฌ้–“ใฎๆ„Ÿ่ฆšใŒ่–„ใ‚Œใฆใ—ใพใฃใŸใฎใงใ™ใ€‚ใชใฎใงไธ้€ฃ็ถšๆ€ง (= ๅคงใใชๅค‰ๅŒ–้‡) ใ‚’ๅ…ฅใ‚Œใพใ—ใŸใ€‚

 

โ€ฆใˆใƒผใ€ใ“ใฎๆง˜ๅญใ‚’่ฆ‹ใ‚‹ใจใ‚ใ‹ใฃใฆใ„ใŸใ ใ‘ใ‚‹ใ‹ใจๆ€ใ†ใ‚“ใงใ™ใŒใ€ใ‚ณใƒผใƒ‰ใงๆ›ธใ„ใŸใจใ—ใฆใ‚‚ใฉใ†ใ›ๆณฅ่‡ญใ„ใ“ใจใ‚’ใ™ใ‚‹ใ“ใจใซๅค‰ใ‚ใ‚Šใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚้“ๅ…ทใฎๅ•้กŒใชใฎใงใ™ใ€‚

ใชใฎใงใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณ่งฃ่ชฌใจใ—ใฆใฏใ‚‚ใ†ใ€ŒๅŸบ็คŽใ€ใง็ต‚ใ‚ใฃใฆใ„ใฆใ€ใ‚ใจใฏใใ‚Œใ‚’ใฉใ‚Œใใ‚‰ใ„ไฝฟใ†ใ‹ใ ใจๆ€ใฃใฆใ„ใพใ™โ€ฆใ€‚

ๆŠ˜่ง’ใชใฎใงใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ‚ซใƒผใƒ–ใงใฏๅŽณใ—ใใ†ใช้ƒจๅˆ†ใ‚’ๅคšใ‚ใซ็ดนไป‹ใ—ใพใ™ใ€‚

ๅฃฐ

ๅฎ‰็›ดใซใ€Œๆณขใ€ใงๅฃฐใ‚’่กจ็พใ—ใฆใ„ใพใ™ใ€‚็Ÿฉๅฝขๆณขใชใฎใฏๅˆๆˆ้Ÿณๅฃฐ็š„ใชใƒ‹ใƒฅใ‚ขใƒณใ‚นใงใ™ใญใ€‚ใพใใ—ใ‚…ใฃใจใ™ใ‚‹ใ—ใ€‚

ๅฝ“็„ถใ“ใฎๆณขใฏๆญฃใ—ใ„ใ‚‚ใฎใงใฏไธ€ๅˆ‡ใ‚ใ‚Šใพใ›ใ‚“ใŒใ€ไธ€ๅฟœ้Ÿณ็จ‹ใซๆฒฟใฃใฆๅ‘จๆณขๆ•ฐใŒๅค‰ใ‚ใ‚Šใพใ™ใ€‚

int ix = floor(it);
int ii = floor(ix / 16.0);
int ir = ix - ii * 16;
// 1212123- / 1212124-32 / 1212123- / 1212321-
float h[16] = { 1, 2, 1, 2, 1, 2, 4, 4, 4, 4, 3, 2, 2, 2, 2, 2 };

int h0 = h[ir];
if (ix < 0) h0 = 1;
else if (ii == 3 || (ii != 1 && ir >= 8)) h0 = 3;
if (ii != 1 && h0 == 4) h0 = 3;

ix++;
ii = ix / 16;
ir = ix % 16;

int h1 = h[ir];
if (ix < 0) h1 = 1;
else if (ii == 3 || (ii != 1 && ir >= 8)) h1 = 3;
if (ii != 1 && h1 == 4) h1 = 3;

ใ‚ใ‹ใ‚Šใซใใ„ใงใ™ใญใ€‚่ดใ„ใŸๆ„Ÿใ˜ 8 ๆ‹ๅ‘จๆœŸใง่ฟ‘ใ„้Ÿณ็จ‹ใซใชใฃใฆใŸใฎใงใใ‚Œใ‚’ๅŸบๆบ–ใจใ—ใ€8 ๆ‹ใ‚’ 16 ๅˆ†ๅ‰ฒใ—ใฆใ„ใพใ™ใ€‚

ๅŠๆ‹ๆฏŽใฎๅ‘จๆณขๆ•ฐใƒ†ใƒผใƒ–ใƒซใŒ h ใจใ„ใ†ใ‚„ใคใงใ™ใ€‚ๅ‘จๆœŸใ”ใจใซๅพฎๅฆ™ใซ้•ใฃใŸใ‚Šใ™ใ‚‹ๅˆ†ใฏๆฌกใฎๆกไปถๆ–‡ใงใฉใ†ใซใ‹ใ—ใฆใพใ™ใ€‚

ใงใ€‚ใ€Œ็พๅœจใฎๅŠๆ‹ใ€ใจใ€ŒๆฌกใฎๅŠๆ‹ใ€ใฎ้–“ใ‚’ใƒ–ใƒฌใƒณใƒ‰ใ™ใ‚‹ใŸใ‚ใซใ€h0 ใจ h1 ใ‚’่จˆ็ฎ—ใ—ใฆใ„ใพใ™ใ€‚ๆณขใฎๅฝขใฎ่จˆ็ฎ—ใฏๅ…จใฆ h0 h1 ใใ‚Œใžใ‚Œใซ่กŒใฃใฆใ€ๆœ€ๅพŒใซๆททใœใฆใ„ใพใ™ใ€‚

float a = eb(map(-0.3, 0.3, frac(it) - 0.5), 4);
if (ii == 1 && ir >= 9 || ix >= 38) a = smoothstep(-0.5, 0.5, frac(it) - 0.5);
bool efi0 = h0 >= 3 || ii == 1 && ir >= 9;
bool efi1 = h1 >= 3 || ii == 1 && ir >= 9;
float freq[5] = { 0, 9, 17, 25, 33 };
float sp0 = efi0 ? 4 : 2;
float sp1 = efi1 ? 4 : 2;
float wav0 = sin(loc * freq[h0] * 2 * pi + lt * sp0) * 0.5 + 0.5;
float wav1 = sin(loc * freq[h1] * 2 * pi + lt * sp1) * 0.5 + 0.5;
if (efi0) wav0 *= tanh(sin(loc * 170 + lt * 8) * 5) * 0.1 + 2;
if (efi1) wav1 *= tanh(sin(loc * 170 + lt * 8) * 5) * 0.1 + 2;
float eff = 0;
eff = max(eff, min(e0(lt-4, 8), 1 - e0(lt-9.75, 2)));
eff = max(eff, min(e0(lt-12, 8), 1 - e0(lt-19, 2)));
eff = max(eff, min(e0(lt-20, 8), 1 - e0((lt-25.75)/2, 2)));
eff = max(eff, e0(lt-28, 8));
base *= lerp(1, 0.5, eff);
base += lerp(wav0, wav1, a) * 2 * eff;

ใพใใคใพใ‚Š a ใŒใƒ–ใƒฌใƒณใƒ‰็Ž‡ใงใ€‚freq ใŒๅ‘จๆณขๆ•ฐใƒ†ใƒผใƒ–ใƒซ (64 ๅˆ†ๅ‰ฒใ•ใ‚Œใฆใ‚‹ใฎใง 32 ใŒ Nyquist ๅ‘จๆณขๆ•ฐใ€ใใ“ใ‹ใ‚‰ๅพฎๅฆ™ใซๅค–ใ‚Œใ‚‹ใ‚ˆใ†ใซๅ€คใ‚’้ธใ‚“ใงใ„ใพใ™) ใงใ€‚ๆ™‚ใ€…่ช‡ๅผตใ—ใŸใ‚Š (efi0, efi1)ใ€ๅฃฐใŒๅ‡บใฆใ‚‹ใจใใฏใƒ™ใƒผใ‚นๆณขใ‚’ๅผฑใใ—ใŸใ‚Šใ€ใ„ใ‚ใ„ใ‚ใงใ™ใญใ€‚

 

ใกใชใฟใซใ€ไปŠๅ›žไฝฟใฃใฆใ‚‹ไธ‰่ง’ๅฝขใฏๅฎŸ้š›ใซใฏๅ…จ้ƒจไธ‰่ง’ๆŸฑใงใ€‚ๅฅฝใใชใจใใซไผธใฐใ—ใŸใ‚Šใงใใ‚‹ใ‚ˆใ†ใซใชใฃใฆใพใ™ใ€‚ใ“ใ‚Œใ‚’้›†ใ‚ใฆไธฆในใฆๅฃฐใฎๆณขๅฝขใ‚’ไฝœใฃใฆใพใ™ใ€‚

ใฉใ†ไธฆในใ‚‹ใ‹ใ‚’่จˆ็ฎ—ใ™ใ‚‹็‚บใซใฏใ€Œ้šฃใฎๆณขใฎ้ซ˜ใ•ใ€ใ‚’็Ÿฅใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹ใฎใงใ€ใใ‚Œใ‚‚่จˆ็ฎ—ใ—ใฆใพใ™ใ€‚ใ“ใ†ใ„ใ†ใฎใฏๆ„ๅค–ใจๅคงๅค‰ใงใ™ใญใ€‚

็€ๅœฐใฎ่กๆ’ƒ

ใพใšๆ นๆœฌ็š„ใซใ€ๅ„ไธ‰่ง’ๅฝขใฎใƒ‘ใƒฉใƒกใƒผใ‚ฟๆŒ‡ๅฎšใ‚’่กŒใ†ใ‚คใƒณใ‚ฟใƒ•ใ‚งใƒผใ‚นใŒใ“ใ‚Œใงใ™ใ€‚

bool EffectVert(uint id, float z, inout float3 p, inout float4 q, inout float3x3 m, inout float4 c, inout float4 cs);

id ใฏIDใ€z ใฏๅ…ˆ็จ‹ใฎไธ‰่ง’ๆŸฑใฎๆ‰‹ๅ‰ (-1) ใ‹ๅฅฅ (+1) ใ‹ใ€‚ใ“ใ‚Œใ‚’ๅ…ฅๅŠ›ใจใ—ใฆใ€ไฝ็ฝฎ pใ€ๅงฟๅ‹ข (ใ‚ฏใ‚ฉใƒผใ‚ฟใƒ‹ใ‚ชใƒณ) qใ€ๅค‰ๅฝข่กŒๅˆ— mใ€่‰ฒ cใ€ๅ›ณๅฝขๆŒ‡ๅฎš cs ใ‚’่ฟ”ใ—ใพใ™ใ€‚

ไฝ็ฝฎใƒปๅงฟๅ‹ขใƒป่‰ฒใฏใŠใ‚ใ‹ใ‚Šใฎ้€šใ‚Šใ€‚ๅ›ณๅฝขๆŒ‡ๅฎšใฏไธ‰่ง’ๅฝขใซ็ฉดใ‚’้–‹ใ‘ใŸใ‚Š่ง’ไธธใซใ—ใŸใ‚Šใ™ใ‚‹ใƒ‘ใƒฉใƒกใƒผใ‚ฟใงใ™ใ€‚ใงใ€ๅค‰ๅฝข่กŒๅˆ—ใŒใพใๆฅฝใ—ใ„่ฆ็ด ใงใ€‚

ๅ˜็ด”ใซๅ˜ไฝ่กŒๅˆ—ใซใ‚นใ‚ฑใƒผใƒซๅ€ใ™ใ‚Œใฐๅคงใใ•ๆŒ‡ๅฎšใจใ—ใฆไฝฟใˆใ‚‹ใ‚“ใงใ™ใŒใ€ใพใใใ‚Œไปฅๅค–ใŒใงใใ‚‹ใ‚ใ‘ใงใ™ใญใ€‚

ๅ‰ใฎ่งฃ่ชฌใงๆ›ธใ„ใŸใ€Œไผธใฐใ™ใ€ใจใ„ใ†ใฎใŒใ“ใ‚Œใงใ€‚ใ“ใ‚“ใช้–ขๆ•ฐใ‚’ไฝœใ‚Šใพใ—ใŸใ€‚

float3x3 idM() {
    return float3x3(1, 0, 0, 0, 1, 0, 0, 0, 1);
}
float3x3 strM(float3 v) {
    float l = length(v);
    if (l < 0.00001) return idM();
    float3 w = v / l;
    return float3x3(
        1 + v.x*w.x,     v.x*w.y,     v.x*w.z,
            v.y*w.x, 1 + v.y*w.y,     v.y*w.z,
            v.z*w.x,     v.z*w.y, 1 + v.z*w.z
    );
}

idM ใฏๅ˜ไฝ่กŒๅˆ—ใ€‚strM ใŒๆŒ‡ๅฎšใ—ใŸๆ–นๅ‘ใซใ€Œไผธใฐใ™ใ€่กŒๅˆ—ใงใ™ใ€‚I+vv^T ใจใฏ็•ฐใชใ‚Šใ€ไผธใณใ‚’ v ใฎ้•ทใ•ใซๆฏ”ไพ‹ใ™ใ‚‹ใ‚ˆใ†ใซใ—ใฆใ„ใ‚‹ใฎใงๅฐ‘ใ—ๆ‰ฑใ„ใ‚„ใ™ใใชใฃใฆใพใ™ใ€‚

ใ‚ใจใฏใ“ใ‚Œใซ้€Ÿๅบฆใ‚’็ชใฃ่พผใ‚ใฐ็–‘ไผผ็š„ใชใƒขใƒผใ‚ทใƒงใƒณใƒ–ใƒฉใƒผใซใชใ‚Šใพใ™ใ€‚ใŠใ™ใ™ใ‚ใงใ™*2ใ€‚

ใจใ„ใ†ใ‚ใ‘ใง็€ๅœฐ่กๆ’ƒใฎ่จˆ็ฎ—ใŒใ“ใกใ‚‰ใ€‚

float3 blow(float effT, uint id, inout float3 p, inout float4 q, inout float3x3 m) {
    float slowSpeed = 0.005;
    float lastSpeed = 0.25;
    float weight = 12;
    float mt = effT < 0.125 ? effT : 0.125 + slowSpeed * (effT - 0.125) + (lastSpeed - slowSpeed) * pow((effT - 0.125) / 3.875, weight+1) / (weight+1) * 3.875;
    if (effT >= 4) {
        mt = 0.125 + slowSpeed * (4 - 0.125) + (lastSpeed - slowSpeed) * pow((4 - 0.125) / 3.875, weight+1) / (weight+1) * 3.875;
        mt += effT - 4;
    }
    float3 pp = p;
    float3 fullImp = normalize(pp) / length(pp) * (rand(float2(id,1)) + 0.5) * 500;
    float3 fullImq = randSphere(float2(id,0)) * 20;
    float dt = 0.001;
    float3 g = float3(0,-10,0);

    float ct = min(1, mt / dt);
    float imp = smoothstep(0, 1, ct);
    float impI = (pow(ct, 3) - pow(ct, 4) / 2 + max(0, mt / dt - 1) * 1) * dt;
    p += impI * fullImp;
    p += pow(mt, 2) / 2 * g;
    float3 v = 0;
    v += imp * fullImp;
    v += mt * g;
    q = mulQ(axisQ(impI * fullImq), q);
    v *= 0.075;
    m = mul(strM(v), m) * 0.75;
    return fullImp;
}

ใถใฃใกใ‚ƒใ‘็งใ‚‚ใŠใผใˆใฆใชใ„ใฎใง่งฃ่ชฌใงใใชใ„ใ‚“ใงใ™ใŒใ€ๆ™‚้–“่ปธ mt ใŒใพใšๆญชใ‚“ใงใ‚‹ใฃใฝใ„ใงใ™ใญโ€ฆใ€‚ๆœ€ๅˆใฏ็ญ‰้€Ÿ โ†’ ๆธ›้€Ÿ โ†’ ใ ใ‚“ใ ใ‚“ๅŠ ้€Ÿใ—ใฆใ‚‚ใจใซๆˆปใ‚‹ใ€ใฟใŸใ„ใชๅ‹•ใใ ใจๆ€ใ„ใพใ™ใ€‚

ๆ™‚้–“ใฎๅค‰ๅŒ–้‡ใŒ 1 โ†’ 0.005 ใ‹ใ‚‰ใ‚†ใฃใใ‚Šใจ 0.25 ใพใงๅข—ๅŠ  โ†’ ใใ“ใ‹ใ‚‰ 1 ใซๆˆปใ‚‹ใ€ใจใ„ใ†ๅ‹•ใใ‚’ใ—ใฆใ„ใพใ™ใ€‚ใงใ€ใ“ใ‚Œใ‚’็ฉๅˆ†ใ—ใฆๆ™‚้–“ใ‚’่จˆ็ฎ—ใ—ใฆใ„ใ‚‹ใฟใŸใ„ใงใ™ใ€‚็ฉๅˆ†ใฏใ ใ‚‹ใ„ใงใ™ใญใ€‚

ใ‚ใจใฏ่กๆ’ƒใฎ่จˆ็ฎ—ใงใ™ใŒใ€ใ“ใ‚Œใฏใ€Œไธญๅคฎใ‹ใ‚‰ใฎ่ท้›ขใฎ้€†ๆ•ฐใฎๅผทใ•ใงใ€ใƒฉใƒณใƒ€ใƒ ใชๅŠ›ใ‚’ไธŽใˆ (fullImp)ใ€ใ€Œใƒฉใƒณใƒ€ใƒ ใชใƒˆใƒซใ‚ฏใ‚’ไธŽใˆใ‚‹ (fullImq)ใ€ใ‚ˆใ†ใงใ™ใ€‚

ใŒใ€ใ“ใ‚Œใ‚’ไธ€็žฌใงไธŽใˆใ‚‹ใฎใงใฏใชใ 0.001 ็ง’ๆŽ›ใ‘ใฆใ‚‹ใ‚‰ใ—ใ„ใงใ™ใ€‚ใ“ใฎ impI ใฎ่จˆ็ฎ—ใฏ Amebient ใฎใจใใซใ‚„ใฃใŸใ€Œsmoothstep ใฎ็ฉๅˆ†ใ€ใงใ™ใŒใ€็ดฐใ‹ใ„ใ“ใจใฏๅฟ˜ใ‚Œใพใ—ใŸใ€‚

ใชใ‚“ใ‚„ใ‹ใ‚“ใ‚„ใงไฝ็ฝฎใ‚’่จˆ็ฎ—ใ—ใคใคใ€ใใฎๅพฎๅˆ†ใซใ‚ˆใฃใฆ้€ŸๅบฆใŒ็ฎ—ๅ‡บใงใใพใ™ใ€‚ใใ‚Œใ‚’ๅค‰ๅฝข่กŒๅˆ— m ใซ็ชใฃ่พผใ‚“ใงใ„ใพใ™ใญใ€‚

 

ใ“ใ“ใพใงไธๅฏง (๏ผŸ) ใซใ‚„ใ‚‹ๅฟ…่ฆใŒใ‚ใฃใŸใ‹ใฏใ‚ˆใใ‚ใ‹ใ‚Šใพใ›ใ‚“ใŒใ€ไธๅฏงใซใ‚„ใ‚‹ใจๅฐ‘ใชใใจใ‚‚ใ€Œใพใจใ‚‚ใชๅ‹•ใใ€ใ‚’ใ—ใฆใใ‚Œใ‚‹ใฎใงใ€่ฟทใ‚ใชใใฆ่‰ฏใ„ใ‚“ใ˜ใ‚ƒใชใ„ใ‹ใชใจๆ€ใ„ใพใ—ใŸใ€‚ใพใ‚‹ใ€‚

ใกใชใฟใซใ€ใ“ใฎใจใใฎ่จˆ็ฎ—ใซ้‡ๅŠ›ใ‚‚ๅ…ฅใฃใฆใ‚‹ (p += pow(mt, 2) / 2 * g;) ใฎใงใ€ใ„ใ„ๆ„Ÿใ˜ใซ่ฝไธ‹ใ—ใฆใใ‚Œใพใ™ใ€‚

ใฝใ‚ˆใฝใ‚ˆ

ใŠๆฐ—ใซๅ…ฅใ‚Šใงใ™ใ€‚ใ‹ใ‚ใ„ใ„ใ€‚

float ut = lt - spawns[id % 5] - 16 * (id / 5);
if (ut < 0) return false;
float4 p0 = poyoPoint(id, lt - dt);
float4 p1 = poyoPoint(id, lt + dt);
p = lerp(p0.xyz, p1.xyz, z);
p.y += noise(float2(id, lt*0.3 + rand(id.xx))) - 0.5;
m = 1;
if (distance(p0, p1) > 0.00001) {
    float3 t = normalize(p1 - p0);
    q = dirQ(float3(0, 0, 1), t);
    m = lerp(0.25, 1, exp(-distance(p0, p1)*0.5));
}
m += 1 - e0(ut, 4.0);
m *= e0(ut * 2, 9.0);
m *= lerp(0.5, 1.5, lerp(p0.w, p1.w, z));
if(ut > 0) c.rgb = lerp(c.rgb, 1.2, 1-e0(ut/2, 8));

ใ“ใ‚Œใฏไป•ไธŠใ’้ƒจๅˆ†ใฎใ‚ณใƒผใƒ‰ใงใ™ใ€‚ใฝใ‚ˆใกใ‚ƒใ‚“ใฎไฝ็ฝฎใฏ poyoPoint ใŒ่จˆ็ฎ—ใ—ใฆใใ‚Œใ‚‹ใฎใงใ€ใใฎ้–“ใ‚’ใ‚ซใƒ—ใ‚ปใƒซใงใคใชใŽใพใ™ใ€‚z ใฏไปŠๅ›žใฏ 0 ใ‹ใ‚‰ 1 ใฎ้–“ใฎๅ€คใ‚’ๅ–ใ‚‹ใฟใŸใ„ใงใ™ใญใ€‚m ใฏ่กŒๅˆ—ใงใฏใชใใŸใ ใฎใ‚นใ‚ฑใƒผใƒซใ‚’่กจใ™ใ‚นใ‚ซใƒฉใƒผๅ€คใซใชใฃใฆใพใ™ใ€‚

ๅ„ใ‚ซใƒ—ใ‚ปใƒซใ‚’็งปๅ‹•ๆ–นๅ‘ใซๅ›ž่ปข q = dirQ(float3(0, 0, 1), t); ใ—ใคใคใ€ๅ‹•ใใŒๅคงใใ„ใจใใซใฏ็ธฎใ‚ใ‚‹ๅ‡ฆ็† m = lerp(0.25, 1, exp(-distance(p0, p1)*0.5)); ใŒๅ…ฅใฃใฆใ„ใพใ™ใ€‚ใ“ใฎ็ธฎใ‚ใ‚‹ใ‚„ใคใŒใ‚ใกใ‚ƒใใกใ‚ƒใ‹ใ‚ใ„ใ„ใ‚“ใงใ™ใ‚ˆใญใ€‚ใชใ‚“ใ‹ใ€‚

ใ‚ใจใฏใ€Œ็™ปๅ ดๆ™‚ (ut = 0) ใฏใกใ‚‡ใฃใจ้Žๅ‰ฐใซ่†จใ‚‰ใ‚€ใ€m += 1 - e0(ut, 4.0); ใ€Œ็™ปๅ ดๆ™‚ใฏ 0 ใ‹ใ‚‰ไธ€็žฌใง่†จใ‚‰ใ‚€ใ€m *= e0(ut * 2, 9.0); ใจใ‹ใ€‚ใ‚ใจ poyoPoint ๅดใงๅคงใใ•ๆŒ‡ๅฎšใ—ใฆใ„ใ‚‹ๅˆ†ใ‚’ๅๆ˜ ใ™ใ‚‹ใจใ‹ใ€‚ๆœ€ๅพŒใฏใ€Œ็™ปๅ ดใ—ใŸ็žฌ้–“ใซ็™ฝใๅ…‰ใ‚‹ใ€ๅ‡ฆ็†ใงใ™ใญใ€‚

poyoPoint ใฏใพใใ‚ˆใใ‚ใ‹ใ‚‰ใชใ„ๅฎŸ่ฃ…ใซใชใฃใฆใพใ™ใŒใ€ๅŸบๆœฌ็š„ใซใฏใ€Œn ๆ‹็›ฎใงๆญฃ n ่ง’ๅฝขใฎๅฝขใซไธฆใถ (ใกใ‚‡ใฃใจไธŠไธ‹ใซใƒฉใƒณใƒ€ใƒ ใซใšใ‚Œใ‚‹)ใ€ใ€Œใใ‚Œใ‚‰ใ‚’่ฃœ้–“ใ™ใ‚‹ใ‚ˆใ†ใซ็งปๅ‹•ใ™ใ‚‹ใ€ใจใ„ใ†ๅ‹•ใใ‚’ใ—ใฆใ„ใพใ™ใ€‚่ฃœ้–“้–ขๆ•ฐใฏๆฌกใงใ™ใ€‚

float eb01(float t, float a) {
    t = saturate(t);
    return - 2 * t * t * t + (a + 3) * t * t - a * t;
}

ใ“ใ‚Œใฏ f(0) = 0, f(1) = 1, f'(0) = -a, f'(1) = a ใฎ่งฃใ‹ใชใ€‚ใพใใคใพใ‚Šใ€Œๆœ€ๅˆใซใใฃใจๆˆปใ‚‹ใ€ใ€Œ็€ๅœฐใฏๆ€ฅใซ่กŒใ†ใ€ใฎใ‚’ใ‚„ใ‚ŠใŸใ‹ใฃใŸใฎใงใ™ใ€‚a = 1 ใงไฝฟใฃใฆใพใ™ใ€‚

ๅพŒๆ–นใฎๅ††

ใ“ใ‚Œใฏใกใฃใกใ‚ƒใช่ฉฑใชใ‚“ใงใ™ใ‘ใฉใ€‚

ใพใšใ€Œใ‚นใ‚ฑใƒผใƒซใ‚’ๅค‰ๅŒ–ใ•ใ›ใ‚‹ใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณใ€ใฃใฆ่‡ช็„ถใซ่ฆ‹ใˆใชใ„ใจๆ€ใ†ใ‚“ใงใ™ใ‚ˆใญใ€‚ใƒ—ใƒชใƒŸใƒ†ใ‚ฃใƒ–ใชใ‚‚ใฎใชใ‚‰ใพใ ใ„ใ„ใ‚“ใงใ™ใŒใ€ๆง‹้€ ใ‚’ๆŒใฃใŸ็‰ฉไฝ“ใŒๆ‹กๅคง็ธฎๅฐใ™ใ‚‹ใจ้•ๅ’Œๆ„Ÿใ‚’่ฆšใˆใพใ™ใ€็งใฏใ€‚ใพใใ€Œๅค‰ๅฝขใ™ใ‚‹ๅ› ๆžœใŒใชใ„ใ€ใ‹ใ‚‰ใงใ—ใ‚‡ใ†ใ€‚

ใชใฎใง็งใฏใ€Œๅ…จไฝ“ใฎใ‚นใ‚ฑใƒผใƒซๅค‰ๅŒ–ใ€ใฏ่กŒใ‚ใชใ„ใ‚ˆใ†ใซใ—ใฆใ„ใพใ™ใ€‚ใŒใ€ใชใ‚“ใจใชใไฝœใฃใฆใฟใŸใ“ใฎๅ‹•ใใ€ใ‚นใ‚ฑใƒผใƒซๅค‰ๅŒ–ใซใชใฃใกใ‚ƒใฃใŸใ‚“ใงใ™ใ€‚

ๅŽณๅฏ†ใซๆ‹กๅคง็ธฎๅฐใ—ใฆใ„ใ‚‹ใ‚ใ‘ใงใฏใชใ„ใ‚“ใงใ™ใŒใ€ใใ‚Œใžใ‚Œใฎไธ‰่ง’ๅฝขใฎไฝ็ฝฎใซใ€ๅŒใ˜ๅ€็Ž‡ใ‚’ๆŽ›ใ‘ใฆ็ธฎใ‚ใŸใ‚‰ใŸใ—ใ‹ใซใใ‚Œใฏใ‚นใ‚ฑใƒผใƒซๅค‰ๅŒ–ใงใ™ใ€‚ใงใ‚‚ใ“ใฎๅ‹•ใใ‚’ใ‚„ใ‚ŠใŸใ„โ€ฆใ€‚

ๅ›ฐใฃใŸใฎใงใ€่ฉฆใ—ใซ ใ€Œๅ†…ๅดใ‚’ 0.2 ๆ‹้…ใ‚‰ใ›ใ‚‹ใ€ๅ‡ฆ็†ใ‚’ๅ…ฅใ‚Œใฆใฟใพใ—ใŸใ€‚ใ™ใ‚‹ใจใ‚นใ‚ฑใƒผใƒซๆ„ŸใŒใชใใชใ‚Šใ€ใ•ใ‚‰ใซๅ†…ๅดใจๅค–ๅดใงๅ”่ชฟๅ‹•ไฝœใ—ใฆใ‚‹้›ฐๅ›ฒๆฐ—ใ‚‚ๅ‡บใพใ—ใŸ๏ผใ‚„ใฃใŸใƒผใ€‚

ใจใ„ใ†่ฉฑใ€‚

่ก—

็พๅฎŸใฎ่ก—ใ‚’ใ†ใซใ†ใซๅ‹•ใ‹ใ™ใ‚„ใคใฏใใ“ใพใง้›ฃใ—ใ„ใ“ใจใ‚’ใ—ใฆใ„ใพใ›ใ‚“ใ€‚

v2f vert (appdata v)
{
    loadEnv();
    v2f o;
    o.origPos = mul(UNITY_MATRIX_M, v.vertex);
    o.vertex = UnityObjectToClipPos(v.vertex);
    o.screen = o.vertex;
    float angle = 0;
    v.vertex.xyz = CityVert(v.vertex.xyz, v.uv2, angle);
    o.vertex = UnityObjectToClipPos(v.vertex);
    o.normal = v.normal;
    o.normal.xz = mul(ei(angle), o.normal.xz);
    o.worldPos = v.vertex;
    return o;
}

้‡่ฆใชใฎใฏ o.screen ใซ่ก—ใ‚’ๅ‹•ใ‹ใ™ๅ‰ใฎใ‚นใ‚ฏใƒชใƒผใƒณๅบงๆจ™ใ‚’ๆ ผ็ดใ™ใ‚‹ ใจใ„ใ†ๆ‰€ใŸใ 1ใคใงใ™ใ€‚CityVert ้–ขๆ•ฐใซใ‚ˆใฃใฆ v.vertex ใฏๅฅฝใๅ‹ๆ‰‹ๅ‹•ใ„ใŸๅ€คใŒๅ…ฅใฃใกใ‚ƒใ„ใพใ™ใŒใ€o.screen ใ‹ใ‚‰ใฏๅ‹•ใ„ใฆใ„ใชใ„ใจใใฎใ‚นใ‚ฏใƒชใƒผใƒณๅบงๆจ™ใ‚’ๅ–ๅพ—ใงใใพใ™ใ€‚

ใ‚ใจใฏใ“ใฎๅบงๆจ™ใง GrabPass ใ‚’ใ‚ตใƒณใƒ—ใƒชใƒณใ‚ฐใ™ใ‚‹ใจใ€ใ€Œใพใ‚‹ใงๅ…ƒใฎไฝ็ฝฎใซใ‚ใฃใŸใƒ†ใ‚ฏใ‚นใƒใƒฃใŒ็งปๅ‹•ใ—ใŸใ‹ใฎใ‚ˆใ†ใซ่ฆ‹ใˆใ‚‹ใ€ใจใ„ใ†ใ‚ใ‘ใงใ™ใญใ€‚็ฐกๅ˜ใงใ™ใญใ€‚

ใ“ใฎๆ–นๆณ•ใฎ่‡ชๆ˜Žใชๆฌ ็‚นใฏ่ฃ้ขใŒ่ฆ‹ใˆใชใ„ใ“ใจใงใ™ใ€‚ใชใฎใงใƒ“ใƒซใ‚’ๅ›ž่ปขใ•ใ›ใ‚‹ใจๅญ˜ๅœจใ—ใชใ„้ขใŒใ‚ใกใ‚ƒใใกใ‚ƒ่ฆ‹ใˆใพใ™ใ€‚ใŒใ€ๅ›ž่ปขใฏใ†ใใ†ใใ•ใ‚’่กจใ™ใฎใซๅŠนๆžœ็š„ใ ใ—ใ€ใพใใฉใ†ใ›ใใ“ใพใงใ‚ขใƒผใƒ†ใ‚ฃใƒ•ใ‚กใ‚ฏใƒˆใฏๆฐ—ใซใ•ใ‚Œใชใ„ใจๆ€ใฃใŸใฎใงใ‚„ใฃใกใ‚ƒใ„ใพใ—ใŸใ€‚

ใ“ใ†ใ„ใ†ๅค‰ใชใ“ใจใŒใ‚ทใ‚งใƒผใƒ€ใฏๆฐ—่ปฝใซใงใใ‚‹ใฎใŒ้ข็™ฝใ„ใจใ“ใ‚ใงใ™ใญใ€‚็ฐกๅ˜ใใ†ใชใ“ใจใŒ้€†ใซใงใใชใ‹ใฃใŸใ‚Šใ—ใพใ™ใ‘ใฉใ‚‚ใ€‚

็ˆ†็ ด

ใ“ใ‚Œใฏ่‰ฒใ€…ใจๅคงๅค‰ใงใ—ใŸโ€ฆใ€‚ๆ็”ป่ฒ ่ทใ‚‚ๅคงๅค‰ใงใ—ใŸใญใ€‚

ใพใšๅ„ๅบงๆจ™ใซ 16 ้€šใ‚Šใฎๅ€คใ‚’ๅฎšใ‚ใพใ™ใ€‚ใ“ใ‚Œใฏใ€Œไฝ•ๅ›ž็›ฎใซๅ‰ฅใŒใ‚Œใ‚‹ใ‹ใ€ใ‚’่กจใ™ๆ•ฐๅ€คใงใ™ใ€‚

sampler2D _Noise;
#define peelN 16
int peelIndex(float2 p) {
    int g = tex2D(_Noise, p * 0.1).r * 4;
    float2 p2 = p + tex2D(_Noise, p * 0.3).rr * 2;
    float f = rand(voronoi(p2/2));
    return floor(rand(float2(f, g)) * (peelN - 1) + 1);
}
// int index = peelIndex(worldPos.xz / 16 + uv * 8);

ใงใ€ๅ„ใƒ“ใƒซใ‚’ 16 ๅ›žๅ‰ฅใŒใ™ๅ‹•ใใ‚’ไฝœใ‚Šใพใ™ใ€‚ๅŒใ˜้–“้š”ใ ใจๆง‹้€ ใŒใ‚ใ‹ใ‚Šใ‚„ใ™ใใชใฃใฆใ—ใพใ†ใฎใงๅ„ใƒ“ใƒซใงใ‚ฟใ‚คใƒŸใƒณใ‚ฐใ‚’ใšใ‚‰ใ—ใฆใ„ใพใ™ใ€‚

float3 ori = float3(0,1,0) + n * 0.3;
float3 o = p + n * 20 * e0(t, 4) * e1(t*2, 4);
float d = saturate(p.y / 60);
o += ori * pow(max(0, t * 2 - d), 2) * 100;
return o;

ๅ‰ฅใŒใ‚Œใ‚‹ๅ‹•ใใฏใ‚ณใƒฌใ‚‰ใ—ใ„ใงใ™ใ€‚ใ„ใ„ๆ„Ÿใ˜ใซไธ‹ใ‹ใ‚‰ๅ‰ฅใŒใ‚Œใฆใ„ใฃใฆใใ‚Œใพใ™ใ€‚

ใ‚ฟใ‚คใƒŸใƒณใ‚ฐใฏ ใ“ใ‚Œ ใจไผผใŸใ‚ˆใ†ใชใ“ใจใ‚’ใ‚„ใฃใฆใ„ใพใ™ใ€‚่งฃ่ชฌใงใใ‚‹ๆฐ—ใŒใ—ใชใ„ใฎใงใ‚ณใƒผใƒ‰ใฏ็„กใ—ใงโ€ฆใ€‚

ใ‚ใจใฏใ€Œๅ‰ฅใŒใ‚ŒใŸ้ƒจๅˆ†ใฏใ€็พๅœจใฎๅ‰ฅใŒใ‚Œๅ€คใจๅŒใ˜้ ˜ๅŸŸใ ใ‘็™ฝใ่กจ็คบใ€ใ€Œ่ก—ใฏใ€็พๅœจใฎๅ‰ฅใŒใ‚Œๅ€คใ‚ˆใ‚Šใ‚‚ๅคงใใ„้ ˜ๅŸŸใ ใ‘็™ฝใ่กจ็คบใ€ใ™ใ‚‹ใจใ„ใ„ๆ„Ÿใ˜ใซใชใ‚Šใพใ™ใ€‚ใชใ‚Šใพใ—ใŸใ€‚

ๅฎŸ่ฃ…ใ™ใ‚‹ๅ‰ใฏใ‚ณใƒฌๆœฌๅฝ“ใซใกใ‚ƒใ‚“ใจใ‹ใฃใ“ใ‚ˆใไฝœใ‚Œใ‚‹ใ‹ใช๏ฝž๏ฝž๏ฝžใฃใฆไธๅฎ‰ใ ใฃใŸใ‚“ใงใ™ใŒใ€ใชใ‚“ใจใ‹ใชใฃใฆใ‚ˆใ‹ใฃใŸใ€‚ไธ€็•ชใฎๆ‡ธๅฟตๆๆ–™ใงใ—ใŸใ€‚

ใพใใ‚ชใƒผใƒใƒผใƒ‰ใƒญใƒผใŒใ‚ใกใ‚ƒใใกใ‚ƒๅคšใใฆ้‡ใ„ใ‚“ใงใ™ใ‘ใฉใญ๏ผใŸใ ๅŒๆ™‚ใซๆ›ฒ่‡ชไฝ“ใ‚‚ใ€Œ้‡้‡ๆ„Ÿใฎใ‚ใ‚‹้ƒจๅˆ†ใ€ใ ใฃใŸใฎใงใ€ใ‚ใ‚‹ๆ„ๅ‘ณใงใฏใดใฃใŸใ‚Šใจใ„ใ†ใ“ใจใงโ€ฆใ€‚

ใŠใพใ‘

ใกใชใฟใซๆœ€ๅพŒใฎใ‚ญใƒฉใƒผใƒณใฃใฆใชใ‚‹ใ‚„ใคใ€ใƒใƒชใ‚ดใƒณใงใ™ใ€‚

ใพใจใ‚

ๅ€‹ๅˆฅใฎๆผ”ๅ‡บ่งฃ่ชฌใจใ„ใ†ใ‚ˆใ‚Šใฏๆœ€ๅˆใฎๅŸบ็คŽ้ƒจๅˆ†ใŒๆ›ธใใŸใใฆๆ›ธใ„ใŸใ€ใฟใŸใ„ใชใจใ“ใ‚ใ‚ใ‚Šใพใ™ใ€‚ๆฅฝใ—ใ„ๅ‹•ใใŒใ‚‚ใฃใจๅข—ใˆใ‚‹ใจๅฌ‰ใ—ใ„ใงใ™ใ€‚

ไปŠๅ›žใ€ๅ…ƒใ€…ใฏใ‚‚ใฃใจใƒใ‚นใƒˆใ‚จใƒ•ใ‚งใ‚ฏใƒˆใจใ„ใ†ใ‹ใ€ŒๅพŒๅ‡ฆ็†ใ€ใ‚’ใ†ใพใไฝฟใฃใฆ็ตตใ‚’ใ‹ใฃใ“ใ‚ˆใใงใใŸใ‚‰ใชใ€ใจใ‹ๆ€ใฃใฆใŸใ‚“ใงใ™ใŒๆœ€็ต‚็š„ใซใฏใใ“ใพใงใ„ใ‘ใพใ›ใ‚“ใงใ—ใŸใ€‚ใพใใ“ใ“ใพใงใงๆบ€่ถณใ—ใฆใ—ใพใฃใŸใจใ“ใ‚ใŒใ‚ใ‚‹ใ€‚

ๆ‰€่ฌ‚ใƒ‘ใƒผใƒ†ใ‚ฃใ‚ฏใƒซ็š„ใชใ‚จใƒ•ใ‚งใ‚ฏใƒˆใ‚‚ไฝฟใˆใชใ‹ใฃใŸ (ใ€Œไฝฟใ‚ใชใ‹ใฃใŸใ€ใฎใงใฏใชใ„ใฎใงใ™ใ€ไปŠๅ›žใซ้™ใฃใฆใฏ) ใฎใงใ‚จใƒ•ใ‚งใ‚ฏใƒˆๅŠ›ใ‚‚ใฃใจ้›ใˆใญใฐใจๆ€ใ„ใพใ—ใŸใ€‚ใพใ‚‹ใ€‚

็พ็Šถใฎ็งใฎ่ƒฝๅŠ›ใŒๅ‡บใ›ใŸใจใ„ใ†็‚นใงใฏๆบ€่ถณใ—ใฆใ„ใพใ™ใ€‚่‰ฒใ€…ใงใใ‚‹ใ‚ˆใ†ใซใชใ‚ŠใŸใ„ใ€‚

ใŠใ‚ใ‚Šใงใ™ใ€‚ไฝ•ใ‹ใ‚ใ‚Œใฐๆฐ—่ปฝใซใฉใ†ใžใ€‚

 


ใกใชใฟใซ่ฒผใฃใฆใ‚ใ‚‹ใ‚ฐใƒฉใƒ•ใฎๆฎ†ใฉใฏ Graphtoy ใงไฝœใ‚Šใพใ—ใŸใ€‚ๆœ€ๅˆใฎใ‚„ใคใฏ Wolfram|Alpha ใงใ™ใ€‚ๅ‹•ใใฎ gif ใฏ shadertoy ใงๆใ„ใŸใ‚‚ใฎใ‚’ ScreenToGif ใงๆ’ฎใฃใฆใพใ™ใ€‚

*1:็„ก้™ๅ›žๅพฎๅˆ†ๅฏ่ƒฝใ ใŒใƒ†ใ‚คใƒฉใƒผๅฑ•้–‹ใงใใชใ„้–ขๆ•ฐใฎ่ฉฑใฏใ—ใพใ›ใ‚“

*2:ไธ‰่ง’ๅฝขไปฅๅค–ใซ้ฉ็”จใ™ใ‚‹ใจใใฏใƒฉใƒณใƒ€ใƒ ใƒŽใ‚คใ‚บใ‚’ๆŽ›ใ‘ใ‚‹ใจใ„ใ„ๆ„Ÿใ˜ใฃใฝใ„ๆฐ—ใŒใ—ใพใ™