ν™”λ©΄ 내뢀에 κ· μΌν•˜κ²Œ 점을 μ°λŠ” 방법은 뭐가 μžˆμ„κΉŒ?

λ¨Όμ € λ– μ˜¬λ¦΄ 수 μžˆλŠ” 방법은 λžœλ€ν•˜κ²Œ μ°λŠ”κ²ƒμ΄λ‹€

24b0d121e09c28a8699fe8b115ef046f564c9b9d


이러면 점듀이 νŠΉμ • μ˜μ—­μ— λ­‰μ³μžˆκ³ 
μ–΄λ–€ 점듀은 거의 κ²ΉμΉ  μ •λ„λ‘œ 가깝고, μ–΄λ–€ 점듀은 λ„ˆλ¬΄ λ©€λ‹€

μ–΄μ©” 수 없이 ν†΅κ³„μ μœΌλ‘œ μ™„μ „νžˆ λžœλ€ν•œ λΆ„ν¬λŠ” ν•„μ—°μ μœΌλ‘œ ν΄λŸ¬μŠ€ν„°λ₯Ό λ§Œλ“ λ‹€.Β 

κ·Έλ ‡λ‹€λ©΄ 점듀이 λ„ˆλ¬΄ 가깝지 μ•Šλ„λ‘Β  μ΅œμ†Œ κ±°λ¦¬λŠ” 보μž₯ν•˜λ©° λ¬΄μž‘μœ„μ„±μ„ μœ μ§€ν•˜κ³ Β 
곡간을 효율적으둜 μ±„μ›Œ μ‹œκ°μ μœΌλ‘œ μ•ˆμ •λ˜λ„λ‘ ν•  방법은 μ—†μ„κΉŒ?

λ‹€λ₯Έ 방법듀도 μžˆκ² μ§€λ§Œ 이런 μƒν™©μ—λŠ”
푸아솑 λ””μŠ€ν¬ μƒ˜ν”Œλ§λ₯Ό μ΄μš©ν•  수 μžˆλ‹€


24b0d121e09c28a8699fe8b115ef046ecd48cefe


λͺ¨λ“  점듀 사이에 μ΅œμ†Œ 거리λ₯Ό 보μž₯ν•˜κ³ Β 
λžœλ€ν•˜κ³  μžμ—°μŠ€λŸ¬μš΄ 뢄포λ₯Ό λ§Œλ“€κ³ 
λ‹€κ°ν˜• 곡간을 효율적으둜 μ±„μšΈ 수 μžˆλ‹€


μ—¬λŸ¬ κ΅¬ν˜„μ΄ μžˆμ§€λ§Œ μ΄λ²ˆμ—λŠ” Bridson κ΅¬ν˜„μ„ ν™œμš©ν•΄μ„œ μ‚¬μš©ν•΄λ³΄κ² λ‹€

https://github.com/udit/poisson-disc-sampling/blob/master/addons/PoissonDiscSampling/poisson_disc_sampling.gd

Rate limit Β· GitHubRate limit Β· GitHubgithub.com


μœ„ μ½”λ“œλ₯Ό μ‚¬μš©ν–ˆλ‹€

μ•„μ΄ν…œ ν•΄κΈˆμ‹œ ν‘œμ‹œλ˜λŠ” 화면인데 일반적인 λžœλ€μ„ μ‚¬μš©ν•˜λ©΄ ν•œμͺ½μœΌλ‘œ 치우칠 수 μžˆμ–΄ λΆˆνŽΈν•¨μ΄ μžˆλ‹€.


24b0d121e09c28a8699fe8b115ef046f5e499d96af


보면 μ‹œκ°μ μœΌλ‘œ κ· μΌν•˜μ§€ μ•Šκ³  κ²ΉμΉ˜λŠ” 점듀이 μ‘΄μž¬ν•œλ‹€

반면 푸아솑 λ””μŠ€ν¬ μƒ˜ν”Œλ§μ„ μ‚¬μš©ν•˜λ©΄ 점듀간에 μœ μ§€ν•΄μ•Ό ν•˜λŠ” 거리λ₯Ό μ„€μ • ν•  수 있고 
이λ₯Ό 톡해 λžœλ€ν•˜μ§€λ§Œ κ· μΌν•œ 결과물을 λ§Œλ“€ 수 μžˆλ‹€


λ¨Όμ € CollisionPolygon2D둜 UI μ˜μ—­μ„ λΊ€ μ•„μ΄ν…œμ΄ 배치될 μ˜μ—­μ„ μ‹œκ°μ μœΌλ‘œ λ³Ό 수 μžˆλ„λ‘ μ§€μ •ν•˜κ³ 
μ € λ‚΄λΆ€μ—μ„œ μ•„μ΄ν…œμ΄ μœ„μΉ˜ ν•  수 μžˆλŠ” 점을 λ¨Όμ € λ§Œλ“€λ„λ‘ ν–ˆλ‹€


24b0d121e09c28a8699fe8b115ef046b656b9231



푸아솑 λ””μŠ€ν¬ μƒ˜ν”Œλ§μœΌλ‘œ 뽑은 점듀이닀 κ· μΌν•˜κ²Œ λΆ„ν¬λ˜μ–΄ μžˆλŠ”κ±Έ λ³Ό 수 μžˆλ‹€


24b0d121e09c28a8699fe8b115ef0464df89e4cd


이제 이걸 μ€‘μ•™μ—μ„œ κ°€κΉŒμš΄ μˆœμ„œλ‘œ μ •λ ¬ν•˜κ³ 

μ•„μ΄ν…œμ„ λ°°μΉ˜ν•˜λ©΄ 완성이닀


24b0d121e09c28a8699fe8b115ef046f5d4d9a97a1


μ΄λŸ°κ²ƒ 뿐만 μ•„λ‹ˆλΌ 절차적 μƒμ„±μ‹œ λ‚˜λ¬΄ 돌 λ“± μ§€ν˜•μ§€λ¬Όμ˜ 뢄포 생성 λ“±μ˜
λžœλ€ν•˜λ©° κ· μΌν•˜κ²Œ λ§Œλ“€κ³  싢은 μ—¬λŸ¬κ°€μ§€μ— ν™œμš© κ°€λŠ₯ν•˜λ‹€

Bridson은 거리 기반 μ•Œκ³ λ¦¬μ¦˜μ΄λΌ 생성할 포인트 수λ₯Ό μ§€μ •ν•˜μ§€ λͺ»ν•˜μ§€λ§ŒΒ 
생성을 보μž₯ν•΄μ•Όν•˜λŠ” 포인트 μˆ˜κ°€ μžˆμ„ κ²½μš°μ—λŠ”Β 
Weighted Sample Elimination λ“± μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš© ν•΄ λ³Ό 수 μžˆλ‹€

μ—¬κΈ°μ„œλŠ” κ·Έ μ •λ„λ‘œ μ •ν™•ν•œ ν¬μΈνŠΈκ°€ ν•„μš”ν•˜μ§€ μ•Šμ•„Β 
λΉ λ₯Έ 속도와 μ λ‹Ήν•œ ν’ˆμ§ˆκ³Ό κ°„λ‹¨ν•œ κ΅¬ν˜„μ˜ κ· ν˜•μ„ κ°€μ§€κ³  μžˆλŠ” Bridson μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν–ˆλ‹€