็ตตๆ–‡ๅญ—๐Ÿ˜„ใง็‰ฉ็†ๆผ”็ฎ—ใŒใ—ใŸใ„๐Ÿ‘Œ

็š†ใ•ใ‚“ใฏ็ตตๆ–‡ๅญ—๐Ÿ˜„ใง็‰ฉ็†ๆผ”็ฎ—๐Ÿ’จใŒใ—ใŸใใชใฃใŸใ“ใจใฏใ‚ใ‚Šใพใ™ใ‹๏ผŸ
็งใฏใ‚ใ‚Šใพใ™ใ€‚๐Ÿ˜‰
ใจใ„ใ†ใ“ใจใงไฝœใฃใฆใฟใพใ—ใŸใ€‚

emoji.gif

ใƒ‡ใƒขใƒšใƒผใ‚ธ

Github

่งฃ่ชฌ

็ตตๆ–‡ๅญ—ใง็‰ฉ็†ๆผ”็ฎ—ใ™ใ‚‹ใŸใ‚ใซใฏๅคงใใๅˆ†ใ‘ใฆไบŒใคใฎใƒใ‚คใƒณใƒˆใŒใ‚ใ‚Šใพใ™ใ€‚
ไธ€ใค็›ฎใฏ ็ตตๆ–‡ๅญ—ใฎๅฝ“ใŸใ‚Šๅˆคๅฎš ใ€ไบŒใค็›ฎใฏ ็‰ฉ็†ๆผ”็ฎ—ใฎใ‚จใƒณใ‚ธใƒณใซใคใ„ใฆใงใ™ใ€‚

็ตตๆ–‡ๅญ—ใฎๅฝ“ใŸใ‚Šๅˆคๅฎš

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

ๅฝ“ใŸใ‚Šๅˆคๅฎšไฝœๆˆใฎๆตใ‚Œใฏไปฅไธ‹ใฎ้€šใ‚Šใงใ™ใ€‚

  1. ็ตตๆ–‡ๅญ—ใ‚’canvasใซๆ็”ปใ™ใ‚‹
  2. canvasใซๆ็”ปใ—ใŸ็”ปๅƒใ‚’ไฝฟใฃใฆ่ผช้ƒญใ‚’ๆŠฝๅ‡บใ™ใ‚‹

ใใ‚Œใปใฉ้›ฃใ—ใใชใ„ใงใ™ใญใ€‚

็‰ฉ็†ๆผ”็ฎ—ใฎใ‚จใƒณใ‚ธใƒณ

็‰ฉ็†ๆผ”็ฎ—ใ‚’ใ™ใ‚‹ไปฅไธŠใใ‚Œใ‚ˆใ†ใฎใ‚จใƒณใ‚ธใƒณใŒๅฟ…่ฆใงใ™ใ€‚
่‡ชๅˆ†ใงๆ›ธใ„ใฆใ‚‚ใ„ใ„ใงใ™ใŒใ‚ใพใ‚Šใซใ‚‚้ขๅ€’ใชใฎใงๆ—ขๅญ˜ใฎใ‚‚ใฎใ‚’ไฝฟใ„ใพใ™ใ€‚
ไปŠๅ›žใฎใƒ‡ใƒขใงใฏMatter.jsใ‚’ไฝฟ็”จใ—ใพใ—ใŸใ€‚
ใ“ใ‚Œใ‚’้ธใ‚“ใ ็†็”ฑใฏ็‰นใซใชใใ€ใ‚ฐใ‚ฐใฃใŸใ‚‰ๅ‡บใฆใใŸใ‚‚ใฎใ‚’ไฝฟ็”จใ—ใฆใ„ใพใ™ใ€‚

Matter.jsใซใฏ้ ‚็‚นๅบงๆจ™(ไบŒๆฌกๅ…ƒๅบงๆจ™)ใ‹ใ‚‰ใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆ(Matter.jsใงใฏBody)ใ‚’ไฝœๆˆใ™ใ‚‹้–ขๆ•ฐใŒๅญ˜ๅœจใ—ใพใ™ใ€‚
ใ“ใฎ้–ขๆ•ฐใซOpenCVใงไฝœๆˆใ—ใŸ่ผช้ƒญใ‚’ๅ…ฅใ‚Œใฆใ‚„ใ‚Œใฐ็ต‚ใ‚ใ‚Šใงใ™ใ€‚
ใจ่จ€ใ„ใŸใ„ใจใ“ใ‚ใงใ™ใŒMatter.js็‰นๆœ‰ใฎๆณจๆ„ไบ‹้ …ใŒใ‚ใ‚Šใพใ™ใ€‚
ใใ‚Œใฏๅ‡ธ็Šถ(Convex)ใงใชใ„ใจใ†ใพใๆ‰ฑใˆใชใ„ใจใ„ใ†ใ“ใจใ€ไฝœๆˆใ—ใŸใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใซใƒ†ใ‚ฏใ‚นใƒใƒฃใ‚’ๅผตใ‚‹ใ“ใจใงใ™ใ€‚
ไธ€ๅฟœๅ‡ธ็Šถใงใชใชใใฆใ‚‚ใ€poly-decomp.jsใ‚’ๅ…ฅใ‚Œใ‚Œใฐๆ‰ฑใˆใชใ„ใ“ใจใ‚‚ใชใ„ใฎใงใ™ใŒๆŒ™ๅ‹•ใŒๅพฎๅฆ™ใ ใฃใŸใฎใง่ซฆใ‚ใพใ—ใŸใ€‚
ๅ‡ธ็Šถใซๅค‰ๆ›ใ™ใ‚‹ๆ–นๆณ•ใฏใ„ใใคใ‹ใ‚ใ‚‹ใฎใงใ™ใŒใ€ไปŠๅ›žใฏใชใ‚“ใจใชใOpenCVใฎconvexHullใ‚’ไฝฟใฃใฆๅ‡ธ็Šถใซๅค‰ๆ›ใ—ใพใ—ใŸใ€‚
ใƒ†ใ‚ฏใ‚นใƒใƒฃใซใคใ„ใฆใฏMatter.jsใฎใ‚ฝใƒผใ‚นใ‚’่ฆ‹ใชใŒใ‚‰่ชฟๆ•ดใ—ใพใ—ใŸใ€‚

ๅฝ“ใŸใ‚Šๅˆคๅฎšใ€็‰ฉ็†ๆผ”็ฎ—ใฎใ‚จใƒณใ‚ธใƒณใŒใใ‚ใˆใฐใ‚ใจใฏๆ™ฎ้€šใซ่ฟฝๅŠ ใ™ใ‚‹ใ ใ‘ใงๅฎŒๆˆใงใ™ใ€‚

ๆœ€ๅพŒใซ

ใ‚„ใฃใฆใ‚‹ใ“ใจ่‡ชไฝ“ใฏๅ˜็ด”ใงใ™ใŒใ€OpenCVใ‚„Matter.jsใฎไฝฟใ„ๆ–นใŒๅˆ†ใ‹ใ‚‹ใพใงใซ่‹ฆๅŠดใ—ใพใ—ใŸใ€‚
ใ‚‚ใฃใจไฝ•ใ‹้ข็™ฝใใ†ใชใ“ใจใŒใงใใใ†ใชๆฐ—ใ‚‚ใ—ใพใ™ใŒใ‚ใ‚“ใฉใใ•ใใชใฃใฆใใŸใฎใงใ“ใ‚ŒไปฅไธŠใฏใ‚„ใ‚Šใพใ›ใ‚“ใ€‚
OpenCVใ‚’ไฝฟใฃใฆ่ผช้ƒญใ‚’ๆŠฝๅ‡บใ™ใ‚‹ใจใ„ใ†ใ‚‚ใฎใฏไปฅไธ‹ใฎใƒ„ใ‚คใƒผใƒˆใง่กŒใ‚ใ‚Œใฆใ„ใ‚‹ใ‚‚ใฎใ‚’ๅ‚่€ƒใซใ•ใ›ใฆใ„ใŸใ ใใพใ—ใŸใ€‚

(ไบŒ็•ช็…Žใ˜ใงใ™ใŒใƒ–ใƒฉใ‚ฆใ‚ถไธŠใงๅ‹•ใ‹ใ™ใ“ใจใ€็ตตๆ–‡ๅญ—ใ‚’ไฝฟใ†ใจใ„ใ†ใ“ใจใ‚„ใฃใฆใฟใŸใ‹ใฃใŸใฎใงใ™ใ€‚)