κΈ°λ§κ³ μ‚¬Β λλ‚˜μ„œ λ‹€μ‹œ λŒμ•„μ™”μŒ



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec85fa11d028318672c324147e3f6f5673e300c8e3092fc24cdbad703662d378ae19c1d7cc04bcc6b52e8c5695e98baea02e6cd0ad6f16535e93



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec85fa11d028318672c324147e3f6f5673e300c8e3092fc24cdbad703662d33cfb4ca8d1cb07bb9bf47384d5ec657ec270355ea86594


ν”„λ ˆμž„μ΄ λΆˆμ•ˆμ •ν•œ μ΄μœ λŠ” μ—…λ°μ΄νŠΈλ§ˆλ‹€ μŠ€λ ˆλ“œλ₯Ό 4~5개 μƒˆλ‘œ μƒμ„±ν•΄μ£ΌλŠ”λ°, 이게 ν•©μ³μ„œ λŒ€λž΅ 8ms κ±Έλ¦Ό. μŠ€λ ˆλ“œν’€ μ“Έ 생각.

λ ‰κ±Έλ¦¬λŠ”κ±΄ μ•„λ‹˜


청크메쉬와 lod메쉬가 항상 λ™μ‹œμ— μ—…λ°μ΄νŠΈλ˜κ²Œ ν–ˆλ”λ‹ˆ λ„ˆλ¬΄ 느림.

κ·Έλƒ₯ μ²­ν¬λ©”μ‰¬λŠ” λ˜λŠ”λŒ€λ‘œ μ—…λ°μ΄νŠΈ ν•΄μ•Ό ν•  λ“―.

lodλ””ν…ŒμΌ μ‚¬μ΄μ˜ ν‹ˆμƒˆλ₯Ό λ§€μš°λŠ”κ±΄, ν˜„μž¬ λ…Έμ΄μ¦ˆκ°’μ„ μ‚¬μš©μ€‘μ΄κΈ° λ•Œλ¬Έμ— μ–΄λ ΅μ§€ μ•ŠμŒ.


μ΄ˆλ‹Ή 120λΈ”λ‘μœΌλ‘œ 이동함

청크 ν•˜λ‚˜μ˜ 크기가 32x32x32인걸 μƒκ°ν•˜λ©΄ ν˜„μž¬ λ‘œλ“œ 속도가 크게 λ‚˜μ˜μ§„ μ•ŠμŒ. κ°œμ„ ν•΄μ•Όκ² μ§€λ§Œ.


아무리 많이 이동해도, μ—…λ°μ΄νŠΈ ν•  λ‚΄μš©μ΄ 큐에 λ‹΄κ²¨μ„œ 천천히 μ—…λ°μ΄νŠΈ λ˜λ―€λ‘œ μ•ˆμ „ν•¨

ν”Œλ ˆμ΄μ–΄ κΈ°μ€€ 반경n만큼 λ‘œλ“œλ˜λŠ”κ²Œ μ•„λ‹ˆλΌ, 계산쀑인 μœ„μΉ˜ 반경 n만큼 λ‘œλ“œλ˜μ–΄μžˆλŠ” κ΅¬μ‘°μž„.

ν”Œλ ˆμ΄μ–΄κ°€ μ—¬λŸ¬μ²­ν¬ μ›€μ§μ˜€λ‹€λ©΄, 계산쀑인 μœ„μΉ˜κ°€ 계산을 ν• λ•Œλ§ˆλ‹€ 청크1μ”© 움직이며 ν”Œλ ˆμ΄μ–΄λ₯Ό 따라감.



κ³„μ‚°ν•˜λŠ” μ •λ³΄μ—λŠ” 지역정보, 청크데이터정보, 청크메쉬, lod용 높이맡, lod데이터+메쉬 μ΄λ ‡κ²Œ 5κ°€μ§€κ°€ 있음.


계산쀑인 μœ„μΉ˜μ˜ μ£Όλ³€ λ‘œλ“œκ±°λ¦¬μ— λ§žμΆ°μ„œ 항상 이 λͺ¨λ“  정보(클래슀)듀이 μ˜€μ°¨μ—†μ΄ μ‘΄μž¬ν•¨.

단, 이 ν΄λž˜μŠ€λ“€μ€ 정보가 λ“€μ–΄μžˆμ§€ μ•Šμ€ 빈 κ»λ°κΈ°μž„.

μ‹€μ œ λ°μ΄ν„°λŠ” μŠ€λ ˆλ“œμ—μ„œ 계산함.


5개 μ „λΆ€ μ„œλ‘œλ‹€λ₯Έ μŠ€λ ˆλ“œμ—μ„œ λ³‘λ ¬λ‘œ 처리됨.Β 


μ²­ν¬λ°μ΄ν„°λŠ” 지역이 λ‘œλ“œλ˜κΈ° μ „κΉŒμ§€ λŒ€κΈ°ν•˜κ³ , μ²­ν¬λ©”μ‰¬λŠ” 청크데이터가 λ‘œλ“œλ˜κΈ°κΉŒμ§€ λŒ€κΈ°ν•˜κ³ ,

lodλ°μ΄ν„°λŠ” lod높이맡이 λ‘œλ“œλ˜κΈ° μ „κΉŒμ§€ λŒ€κΈ°ν•¨.


μ΄λ ‡κ²Œ λŒ€κΈ°ν• κ±°λ©΄μ„œ μ™œ λ³‘λ ¬λ‘œ μ²˜λ¦¬ν•˜λƒλ©΄, μ„œλ‘œ λ‘œλ“œκ±°λ¦¬κ°€ λ‹€λ₯΄κΈ° λ•Œλ¬Έμž„.


청크 데이터 λ‘œλ“œκ±°λ¦¬ = μ²­ν¬λ‘œλ“œκ±°λ¦¬ + 2

μ§€μ—­ λ‘œλ“œκ±°λ¦¬ > 청크데이터 λ‘œλ“œκ±°λ¦¬

lod높이맡 λ‘œλ“œκ±°λ¦¬ = lodλ‘œλ“œκ±°λ¦¬ + 1


청크λ₯Ό μ΄λ™ν•΄μ„œ μ—…λ°μ΄νŠΈκ°€ λ°œμƒν–ˆμ„ λ•Œ,Β 

청크메쉬가 μ‚¬μš©ν•  μ²­ν¬λ°μ΄ν„°λŠ” 이미 λ‘œλ“œκ°€ λ˜μ–΄μžˆκΈ°λ•Œλ¬Έμ— λ°”λ‘œ 계산이 μ‹œμž‘λ˜κ³ ,

청크데이터가 μ‚¬μš©ν•  지역데이터도 이미 λ‘œλ“œκ°€ λ˜μ–΄μžˆκ³ , lod데이터가 μ‚¬μš©ν•  높이데이터도 이미 λ‘œλ“œκ°€ λ˜μ–΄μžˆμ–΄μ„œ μ™ λ§Œν•΄μ„  5개 μ „λΆ€ λ³‘λ ¬λ‘œ λŒμ•„κ°.


lodκ°€ κ³„μ‚°λŸ‰μ΄ λ„ˆλ¬΄ λ§Žμ•„μ„œ, 8λ“±λΆ„μœΌλ‘œ λ‚˜λˆ μ„œ μ—…λ°μ΄νŠΈ ν•˜λ„λ‘ ν–ˆλŠ”λ° μ§„μ§œ ν—·κ°ˆλ¦Ό.

8은 λ³€μˆ˜λ‘œ, 쑰정이 κ°€λŠ₯함.


λ‚΄ μ‹œμŠ€ν…œμ—μ„œ, ν˜„μž¬ 계산쀑인 μœ„μΉ˜ μ£Όλ³€μœΌλ‘œ μ •ν™•ν•˜κ²Œ 정보듀이(빈 껍데기듀) λ‘œλ“œκ°€ λ˜μ–΄μžˆμ–΄μ•Όλ§Œ 함.

κ·Έλ ‡κΈ° λ•Œλ¬Έμ—, lodμ—…λ°μ΄νŠΈλ₯Ό nλ“±λΆ„μœΌλ‘œ λ‚˜λˆˆκ²ƒμ²˜λŸΌ λ‚˜λ¨Έμ§€ μ—…λ°μ΄νŠΈλ“€λ„ μ „λΆ€ nλ“±λΆ„μœΌλ‘œ λ‚˜λˆ μ€¬μŒ.



κ°€μž₯ 핡심이 λ˜λŠ”κ±΄ μ—…λ°μ΄νŠΈ νμž„.

ν•˜λ‚˜μ˜ 청크λ₯Ό μ΄λ™ν–ˆμ„ λ•Œ, 정보 μ—…λ°μ΄νŠΈκ°€ ν•„μš”ν•œ ν΄λž˜μŠ€λ“€μ„ ν•˜λ‚˜μ˜ 큐에 λ„£κ³  μŠ€λ ˆλ“œμ— 전달해주면, μŠ€λ ˆλ“œμ—μ„œ ν•΄λ‹Ή 큐에 μžˆλŠ” 정보λ₯Ό κ³„μ‚°ν•΄μ€Œ.


각 정보가 κ³„μ‚°λ˜λŠ” 속도가 λ‹€λ₯΄κ³ , 각 μ •λ³΄λ§ˆλ‹€ λ³‘λ ¬λ‘œ 처리되기 λ•Œλ¬Έμ—, 느리게 μ²˜λ¦¬λ˜λŠ” μ •λ³΄λŠ” μ—…λ°μ΄νŠΈ 큐에 뭐가 많이 μŒ“μΌ μˆ˜κ°€ 있음.

μŒ“μΈ μƒνƒœλ‘œ 많이 μ΄λ™ν•˜κ²Œ 되면 ν•΄λ‹Ή 큐 μ•ˆμ— λ¬΄νš¨κ°€ λ˜λŠ”, λ‘œλ“œλ²”μœ„μ˜ 밖에 μœ„μΉ˜ν•œ 정보가 μžˆλŠ” κ²½μš°κ°€ 생김.


이렇기 λ•Œλ¬Έμ— μœ„μ— λ§ν–ˆλ“―μ΄, 계산쀑인 μœ„μΉ˜ 주변에 μ •ν™•ν•˜κ²Œ λ‘œλ“œλ²”μœ„λ§ŒνΌ λͺ¨λ“  데이터(λΉ„μ–΄μžˆλ”λΌλ„) 항상 λ‘œλ“œκ°€ λ˜μ–΄μžˆμ–΄μ•Ό 함.

큐에 μžˆλŠ” 데이터가 λ‘œλ“œλœ 데이터듀쀑 ν•˜λ‚˜λΌλ©΄, μ΄λŠ” μœ νš¨ν•œ 데이터고, κ·Έλ ‡μ§€ μ•Šλ‹€λ©΄ λ¬΄νš¨ν•œ λ°μ΄ν„°μ΄λ―€λ‘œ 계산을 μŠ€ν‚΅ν•¨.


덀으둜, μ‚­μ œλ„ κΉ”λ”ν•˜κ²Œ μ²˜λ¦¬κ°€ κ°€λŠ₯해짐.

μŠ€λ ˆλ“œμ—μ„œ 데이터λ₯Ό μ²˜λ¦¬μ€‘μ—λŠ” 이 데이터λ₯Ό μ‚­μ œν•˜λ©΄ μ•ˆλ¨.Β 

특히, μ—…λ°μ΄νŠΈ 큐에 뭐가 많이 μŒ“μΌμˆ˜λ‘ μ—…λ°μ΄νŠΈ μ²˜λ¦¬μ€‘μ— ν•΄λ‹Ή 데이터가 μ‚­μ œλ  κ°€λŠ₯성이 높아짐.

ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ•„μ˜ˆ μŠ€λ ˆλ“œμ™€ λ²ˆκ°ˆμ•„ μ²˜λ¦¬ν•˜κ±°λ‚˜, μŠ€λ ˆλ“œκ°€ λŒμ§€ μ•Šμ„λ•ŒκΉŒμ§€ λŒ€κΈ°ν•˜λŠ” 방법이 μžˆλŠ”λ°, λ‹€λ₯Έλ°©λ²•도 있음.

동기화λ₯Ό ν•˜λ©΄μ„œ μ‚­μ œν•˜λŠ”κ²Œ μ•„λ‹ˆκΈ° λ•Œλ¬Έμ—, 계산쀑인 λ°μ΄ν„°μ˜ μ‚­μ œλ₯Ό 막고, μ‚­μ œλœ 데이터(μ—…λ°μ΄νŠΈ νμ—μ„œ 였래 κΈ°λ‹€λ¦°)의 계산 μ‹œλ„λ₯Ό 막아야 함.


μš°μ„ , 데이터λ₯Ό μ‚­μ œλ₯Ό λ°”λ‘œ ν•˜λŠ”κ²Œ μ•„λ‹ˆλΌ μ‚­μ œ 큐에 λ„£μ–΄μ€Œ. ν•΄λ‹Ή λ°μ΄ν„°μ˜ μ‚­μ œκ°€ λ§‰ν˜€μžˆμ§€ μ•Šμ€ κ²½μš°μ—λ§Œ μ‚­μ œν•΄μ€„ 수 μžˆλ„λ‘.


μŠ€λ ˆλ“œλ₯Ό 돌리기 μ „,Β 

μœ„μ—μ„œ λ§ν•œ "μœ νš¨ν•œ 데이터"라면, 이 λ°μ΄ν„°λŠ” ν˜„μž¬ 계산쀑인 μœ„μΉ˜μ˜ λ‘œλ“œλ²”μœ„ λ‚΄μ˜ 데이터이고, μ ˆλŒ€λ‘œ 아직 μ‚­μ œκ°€ μΌμ–΄λ‚˜μ§€ μ•Šμ€ λ°μ΄ν„°μž„.Β 

μŠ€λ ˆλ“œ 돌리기 전에 μ‚­μ œλ₯Ό 막고, μŠ€λ ˆλ“œκ°€ λ‹€ λŒμ•„κ°€λ©΄ μ‚­μ œλ₯Ό λ‹€μ‹œ κ°€λŠ₯ν•˜κ²Œ ν•΄μ£Όλ©΄ 됨.


λ°˜λŒ€λ‘œ 무효 데이터면 μ—…λ°μ΄νŠΈ νμ—μ„œ μ œμ™Έμ‹œμΌœμ€Œ.Β 

무효 λ°μ΄ν„°λΌλŠ”κ±΄ μ‚­μ œνμ— 이미 μ˜¬λΌκ°”λ‹€λŠ” μ˜λ―Έμž„. 높은 ν™•λ₯ λ‘œ 이미 μ‚­μ œλœ λ°μ΄ν„°μž„.


이 λ¬΄νš¨λ°μ΄ν„°λ₯Ό μ œμ™Έμ‹œμΌœμ£ΌλŠ” μž‘μ—…μ„ κΉœλΉ‘ν–ˆλ‹€κ°€ ν•œμ°Έμ„ ν•΄λ©¨μŒ. 자꾸 ν¬λž˜μ‹œλ‚˜λ‹ˆκΉ λ„ˆλ¬΄ μŠ€νŠΈλ ˆμŠ€λ°›λ”λΌ.




κΈ€λ‘œ ν‘œν˜„ν•˜μ§€ λͺ»ν• μ •λ„λ‘œ 할일도 많고 신경쓸것도 λ§Žμ•˜μŒ.Β 

μ§„μ§œ μ—„μ²­ νž˜λ“€μ—ˆλŠ”λ° ν¬λž˜μ‹œκ°€ μ•ˆλ‚˜λ‹ˆκΉ λ„ˆλ¬΄ μ’‹λ‹€.Β 


lodλ°μ΄ν„°μ˜ 크기가 청크와 같은 32x32x32λΌμ„œ μž‘μ—…λŸ‰μ΄ λ„ˆλ¬΄ λ§Žμ•„μ§„λ‹€λŠ”κ²Œ 걱정인데, μ‹€μ œ μ›”λ“œ 데이터λ₯Ό λ°˜μ˜ν•˜λŠ” lodλΌμ„œ, 청크와 크기λ₯Ό μΌμΉ˜μ‹œν‚¬ λ•Œ μž‘μ—…ν•˜κΈ°κ°€ μ‰¬μ›Œμ„œ 일단 μ΄λŒ€λ‘œ 가보렀고.Β 


이 ν”„λ‘œμ νŠΈλŠ” κ²Œμž„μ„ λ§Œλ“€κΈ°λ³΄λ‹¨, λ˜λŠ”λ°κΉŒμ§€ 해보고 μ‹ΆμŒ. μš•μ‹¬μ„ λΆ€λ €μ„  κ²Œμž„μ΄ 완성이 μ•ˆλ˜λŠ”λ°, μ’€ μš•μ‹¬μ„ 뢀리고 μ‹ΆμŒ.