๋ชฉ๋ก์ ์ฒด ๊ธ (1099)
KoreanFoodie's Study
์ด ๊ฐ์๋ ์ ํฌ๋ธ์ ๋ฌด๋ฃ๋ก ๊ณต๊ฐ๋์ด ์๋ ํ์ ํ ๊ต์๋์ ์ปดํจํฐ ๊ทธ๋ํฝ์ค ๊ฐ์ข๋ฅผ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ฐ์๋ฅผ ์ง์ ๋ค์ผ์๊ฑฐ๋ ์ฑ ์ ๊ตฌ์ ํ์ ์ ํ์ธํด ๋ณด์ธ์. ๊ฐ์ ์๋ฃ๋ ๊นํ ๋งํฌ์ ์ฌ๋ผ์ ์์ต๋๋ค. ์์ฝ : 1. ์ํ๋ณํ์ Scaling, Rotation, Translation ํ๋ ฌ์ ๊ฒฐํฉ์ผ๋ก, [L|t] ๋ก ํํํ ์ ์๋ค. ์๋ฌด๋ฆฌ ๋ง์ ๋ณํ์ ํด๋ ๊ฒฐ๊ตญ ๋จ์ผํ [L|t] ๋ก ํํ ๊ฐ๋ฅํ๋ค! 2. ํ๋ ฌ์์ ์ด์ ํ๋ ์ถ๊ฐํด ํ์ฅ์ ์ํค๋ฉด, Translation ์ ํ๋ ฌ์ ์ด์ฉํด ํํํ ์ ์๋๋ฐ, ์ด๋ ๋ฏ ํ์ฅ๋ ํ๋ ฌ์ ์ขํ๊ณ๋ฅผ ๋์ฐจ์ขํ๊ณ(Homogeneous Coordinates) ๋ผ๊ณ ํ๋ค. 3. ์์ ์ด ์๋ ์ ์ ๊ธฐ์ค์ผ๋ก ๋ฌผ์ฒด๋ฅผ ํ์ ํ๋ ค๋ฉด, ๊ธฐ์ค ์ ์ ์์ ์ผ๋ก Translation ํ,..
์ด ๊ฐ์๋ ์ ํฌ๋ธ์ ๋ฌด๋ฃ๋ก ๊ณต๊ฐ๋์ด ์๋ ํ์ ํ ๊ต์๋์ ์ปดํจํฐ ๊ทธ๋ํฝ์ค ๊ฐ์ข๋ฅผ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ฐ์๋ฅผ ์ง์ ๋ค์ผ์๊ฑฐ๋ ์ฑ ์ ๊ตฌ์ ํ์ ์ ํ์ธํด ๋ณด์ธ์. ๊ฐ์ ์๋ฃ๋ ๊นํ ๋งํฌ์ ์ฌ๋ผ์ ์์ต๋๋ค.์์ฝ : 1. ๊ทธ๋ํฝ์ค์์๋ ๋ฌผ์ฒด๋ฅผ ํด๋ฆฌ๊ณค ๋ฉ์์ ์กฐํฉ์ผ๋ก ํํํ๋ค. ์ด๋ ํด๋ฆฌ๊ณค์ผ๋ก๋ ์ผ๋ฐ์ ์ผ๋ก ์ผ๊ฐํ์ ์ฌ์ฉํ๋ค. 2. ํด๋ฆฌ๊ณค ๋ฉ์๋ค์ ์ ์ ์ขํ์ Normal ์ Vertex Array ์ ํํ๋ก ์ ์ฅํ๋ค. 3. ํ๋ฉด ๋ฒ์ (Surface Normal)์ ํด๋ฆฌ๊ณค ๋ฉ์ ์ผ๊ฐํ์ Normal ๋ฒกํฐ์ด๋ฉฐ, ์ ์ ๋ฒ์ (Vertex Normal) ์ ํน์ Vertex ์์์ Normal ๋ฒกํฐ์ด๋ค. ๋งค๋ํ ๋ฌผ์ฒด๋ฅผ ํํํ ๋๋ Vertex Normal ์ด ๋งค์ฐ ์ ์ฉํ๋ค.ํด๋ฆฌ๊ณค ๋ฉ์ (Polygon Mesh)ํด..
์ด ๊ฐ์๋ ์ ํฌ๋ธ์ ๋ฌด๋ฃ๋ก ๊ณต๊ฐ๋์ด ์๋ ํ์ ํ ๊ต์๋์ ์ปดํจํฐ ๊ทธ๋ํฝ์ค ๊ฐ์ข๋ฅผ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ฐ์๋ฅผ ์ง์ ๋ค์ผ์๊ฑฐ๋ ์ฑ ์ ๊ตฌ์ ํ์ ์ ํ์ธํด ๋ณด์ธ์. ๊ฐ์ ์๋ฃ๋ ๊นํ ๋งํฌ์ ์ฌ๋ผ์ ์์ต๋๋ค. ์์ฝ : 1. ์ขํ๊ณ๋ Orthonormal ํ ๊ธฐ์ ๋ฒกํฐ๋ก ์ ์ํ ์ ์๋ค. 2. ๋ฒกํฐ๋ฅผ ๋ด์ ํ๋ฉด ์ ๋๊ฐ์ ์ฝ์ฌ์ธ ๊ฐ์ ๊ณฑํ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค. 90 ๋์ผ ๊ฒฝ์ฐ 0 ์ด๋ค! 3. ์ธ์ ์ ๊ฒฝ์ฐ, ์ค๋ฅธ์ ๋ฒ์น์ผ๋ก ๋ฐฉํฅ์ ๊ตฌํ ์ ์๋ค. ์ธ์ ์ ์ ๋๊ฐ์ ๋ ๋ฒกํฐ๊ฐ ๋ง๋๋ ํํ์ฌ๋ณํ์ ๋์ด์ด๋ค. ์ขํ๊ณ (Coordinate System and Basis) ์ ๋ฒกํฐ์ ๋ด์ /์ธ์ ์ขํ๊ณ๋ ์์ (origin)๊ณผ ๊ธฐ์ (basis) ๋ก ์ด๋ฃจ์ด์ง๋ค. ์์ ๊ทธ๋ฆผ์๋ 2D ๊ณต๊ฐ์ ์ด๋ฃจ๋ ๊ธฐ์ ๋ฒกํฐ์ ์กฐํฉ์ด ๋์ ์๋๋ฐ, ..
์ด ๊ฐ์๋ ์ ํฌ๋ธ์ ๋ฌด๋ฃ๋ก ๊ณต๊ฐ๋์ด ์๋ ํ์ ํ ๊ต์๋์ ์ปดํจํฐ ๊ทธ๋ํฝ์ค ๊ฐ์ข๋ฅผ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ฐ์๋ฅผ ์ง์ ๋ค์ผ์๊ฑฐ๋ ์ฑ ์ ๊ตฌ์ ํ์ ์ ํ์ธํด ๋ณด์ธ์. ๊ฐ์ ์๋ฃ๋ ๊นํ ๋งํฌ์ ์ฌ๋ผ์ ์์ต๋๋ค. ์์ฝ : 1. ๊ทธ๋ํฝ์ค ์์ ๊ณผ์ ์ ๋ชจ๋ธ๋ง -> ๋ฆฌ๊น -> ์ ๋๋ฉ์ด์ -> ๋ ๋๋ง -> ํฌ์คํธ ํ๋ก์ธ์ฑ์ผ๋ก ๋๋์ด ๋ณผ ์ ์๋ค. 2. ์ค์๊ฐ ๊ทธ๋ํฝ์ค์์๋ ์ ๋๋ฉ์ด์ ์ฌ์, ๋ ๋๋ง, ํฌ์คํธ ํ๋ก์ธ์ฑ์ ์ฒ๋ฆฌํ๋ค. 3. ๊ฒ์์์ง์ ๊ทธ๋ํฝ์ค API ๋ฅผ ์ฌ์ฉํ๋๋ฐ, ๊ทธ๋ํฝ์ค API ๋ GPU ๋ฅผ ๊ฐ๋ํ๋๋ฐ ํ์ํ ์ํํธ์จ์ด ์ธํฐํ์ด์ค๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค! ๊ทธ๋ํฝ์ค ๊ฐ๋ก ์ปดํจํฐ ๊ทธ๋ํฝ์ค์ ์ฐ์ฐ์ ์คํ๋ผ์ธ๊ณผ ๋ฐํ์์ผ๋ก ๋๋๋๋ฐ, modeling ๊ณผ rigging, animation ์ฒ๋ฆฌ๋ ๊ทธ๋ํฝ ์ํฐ์คํธ๋ค์ด ..
์ธ๋ฆฌ์ผ ๋ ๋๋ง ์ต์ ํ : Visibility ์ ์คํด๋ฃจ์ ์ปฌ๋ง(Occlusion Culling) ํต์ฌ : 1. ๋ ๋๋ง์๋ ์ปฌ๋ง(Culling) ์ด๋ผ๋ ๊ฐ๋ ์ด ์๋ค. ์ด ๊ฐ๋ ์, ์นด๋ฉ๋ผ์ ์์ ์์ ๋ณด์ด์ง ์๋ ๋ ์๋ค์ ๊ตณ์ด ๋ ๋๋ง ํ ํ์ ์์ด ๊ฑท์ด๋ด๋(Culling) ๊ธฐ๋ฅ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์กํฐ์ Visibility ๋ Bounds Scale ์ ์ค์ ํด ํด๋น ์กํฐ๋ฅผ ์นด๋ฉ๋ผ์ ๋ณด์ฌ์ค ๋ฒ์๋ฅผ ์ค์ ํ ์ ์๋ค. 2. ์ปฌ๋ง ๋ฐฉ๋ฒ(Culling Method) ์๋ ํฌ๊ฒ 4 ์ข ๋ฅ๊ฐ ์๋ค : Distance, View Frustum, Precomputed Visibility, Dynamic Occulusion. 3. Culling ๊ณผ ๊ด๋ จ๋ ์ ๋ณด๋ค์ 'stat initviews' ๋ช ๋ น์ด๋ก ํ์ธํ ์ ์๋๋ฐ, ์ด ..
[์ธ๋ฆฌ์ผ] Visual Studio ํ๊ธ ๊นจ์ง (Log ํ๊ธ ๊นจ์ง) ํต์ฌ : 1. ์์ ๋ฐฉํธ์ผ๋ก ํ๊ธ ๋์ ์์ด ๋ก๊ทธ๋ง ๋์ค๊ฒ ํ๊ธฐ 2. ์ปดํจํฐ ํ๊ฒฝ์ ์ธ์ฝ๋ฉ ์ธํ ์ ๋ฐ๊พธ๊ธฐ (๋ถ์์ ) 3. cl-filter ๋ฅผ ์์ ํด์ '์๋ฒฝ'ํ๊ฒ ํด๊ฒฐํ๊ธฐ ๊ตฌ๊ธ๋ง ์ค ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฐพ์๊ณ , ๊ฐ๊ฐ์ ์ ์ฉํด ๋ณธ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ๋ค. ์์ ๋ฐฉํธ์ผ๋ก ํ๊ธ ๋์ ์์ด ๋ก๊ทธ๋ง ๋์ค๊ฒ ํ๊ธฐ ์ด ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์. ์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ์ด๋ค. ๊ทผ๋ฐ ํ๊ธ๋ ๋์์ผ ๋๋ ์ํฉ์ด๋ฉด... ์ด๋ ๊ฒ ํ๋ฉด ์๋๋ค. ๋น๊ทผ. ์ปดํจํฐ ํ๊ฒฝ์ ์ธ์ฝ๋ฉ ์ธํ ์ ๋ฐ๊พธ๊ธฐ (๋ถ์์ ) ์ด ๋งํฌ์ ๋๋ฒ์งธ ๋ฐฉ๋ฒ์ ์ฐธ๊ณ ํ์. ์ ๋ ํ์ง ๋ง๊ธฐ. ๊ธฐ์กด ํ์ผ๋ค ์์ ๋ค ๊นจ์ง๋ค. cl-filter ๋ฅผ ์์ ํด์ '์๋ฒฝ'ํ๊ฒ ํด๊ฒฐํ๊ธฐ God ์ค๋ ฅ์ ๋ถ์ด ์ฌ๋ฆฌ์ ๋งํฌ๋ฅผ ํตํด ์์ ์ ์๋ํ๋ค. (..
TSharedRef ๋ฅผ ํด๋์ค ๋ฉค๋ฒ ๋ณ์๋ก ์ ์ธํ ๋ ์๋ฌ ํต์ฌ : 1. TSharedRef ๋ฅผ ์ ์ธํ ๋๋ ๋ฐ๋์ ์ด๊ธฐํ๋ฅผ ํด ์ฃผ์. 2. TSharedRef ๋ฅผ ์ด๊ธฐํํ ๋๋ MakeShareable ๋ณด๋ค MakeShared ๋ฅผ ์ฌ์ฉํ์. 3. ์ด๊ธฐํ๊ฐ ํ๋ค๋ฉด TSharedPtr ๋ก ์ ์ธํ๋ ๊ฒ๋ ๋์์ด๋ค. TSharedRef ๋ฅผ ๋ฉค๋ฒ ๋ณ์๋ก ์ ์ธํ ๋, ๋ง์ฝ ํค๋ํ์ผ์ด๋ ์์ฑ์์์ ์ด๊ธฐํ๋ฅผ ํด ์ฃผ์ง ์๋๋ค๋ฉด ์๋์ ๊ฐ์ ์๋ฌ๋ฅผ ๋ง๋๊ฒ ๋๋ค... void EnsureRetrievingVTablePtrDuringCtor(const TCHAR* CtorSignature) { UE_CLOG(!GIsRetrievingVTablePtr, LogCore, Fatal, TEXT("The %s constructor..
TTypeCompatibleBytes ํ์ ํต์ฌ : 1. TTypeCompatibleBytes ์ ๊ธฐ๋ณธ ํ์ ์ด ์๋ ๋ฐ์ดํฐ ๋ฐฐ์ด๋ก, ์ปดํ์ผ ํ์ alignment ๊ฐ ๊ฐ๋ฅํ๋ค. 2. Alignment ๊ฐ ๋๋ ๊ธฐ๋ณธ ๋จ์๋ ํ ํ๋ฆฟ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ ํ์ ์ผ๋ก๋ถํฐ ๊ณ์ฐ๋ ์ฌ์ด์ฆ๋ก ์ ์๋๋ค. 3. GetTypedPtr ๋ก ํด๋น Element ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. TypeCompatibleBytes.h ์ ์ ์๋ ๊ตฌํ์ ๋ณด๋ฉด, /** An untyped array of data with compile-time alignment and size derived from another type. */ template struct TTypeCompatibleBytes : public TAlignedBytes< sizeo..
์ธ๋ฆฌ์ผ ์ค๋งํธ ํฌ์ธํฐ ๊ตฌํ ์ธ๋ถ์ฌํญ๊ณผ ํ ํต์ฌ : 1. ์ค๋งํธ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ ์ง ๊ณ ๋ คํ ๋๋ ํญ์ ํผํฌ๋จผ์ค์ ๋ํด ์๊ฐํด์ผ ํ๋ค. ์ค๋งํธ ํฌ์ธํฐ๋ ์์ ๊ด๋ฆฌ์๋ ์ ํฉํ์ง๋ง ์ผ๋ถ ์ค๋งํธ ํฌ์ธํฐ ํ์ ์ C++ ๊ธฐ๋ณธ ํฌ์ธํฐ๋ณด๋ค ๋ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค. 2. TSharedPtr ๋ ๋น์นจ๋ฒํ(non-intrusive) ๋ก, ์ค๋ธ์ ํธ๊ฐ ์ค๋งํธ ํฌ์ธํฐ์ ์์ ํ์ ์๋์ง ์ ์ ์๋ค. ์ค๋ธ์ ํธ๋ฅผ TSharedRef ๋๋ TSharedPtr ๋ก ์ ๊ทผํ๋ฉด, ์ค๋ธ์ ํธ ํด๋์ค๋ฅผ TSharedFromThis ์์ ํ์์์ผ์ผ ํ๋ค. 3. ์ค๋งํธ ํฌ์ธํฐ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฑ๊ธ ์ค๋ ๋์์ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋ค. ๋ฉํฐ ์ค๋ ๋์์ ์ฌ์ฉํด์ผ ํ๋ค๋ฉด, ์ค๋ ๋ ์ธ์ดํ ๋ฒ์ ์ ์ฌ์ฉํ์. ์ค๋งํธ ํฌ์ธํฐ ๊ตฌํ ์ธ๋ถ์ฌํญ ์ธ๋ฆฌ์ผ ์ค๋งํธ ํฌ์ธํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ..
TOptional ํต์ฌ : 1. TOptional ์ ์ธ์๋ก ๋ค์ด๊ฐ ๋ ์์ด ์์ฑ๋์๋์ง ์๋์ง ์ฌ๋ถ๋ฅผ ๊ฐ๋จํ๊ฒ ํ์ธํ ์ ์๋ Wrapper ํด๋์ค์ด๋ค. 2. Optional.h ์ ๋ณด๋ฉด Value ์ bIsSet ์ด ์๋๋ฐ, Value ๊ฐ ์ค์ ๋๊ธฐ๋ ๋ฐ์ดํฐ์ด๊ณ , bIsSet ์ด ํด๋น ๋ฐ์ดํฐ์ ์์ฑ์๊ฐ ํธ์ถ๋์๋์ง ์ฌ๋ถ๋ฅผ ํ๋จํ๋ ๋ ์์ด๋ค. IsSet, Emplace, GetValue ๋ฑ์ ์ฌ์ฉํ๋ฉด ํด๋น ํด๋์ค๋ฅผ ์ ์ฉํ๊ฒ ํ์ฉํ ์ ์๋ค. 3. TOptional ์ ์ฌ์ฉํ๋ ์ฅ์ ์ค ํ๋๋, ํน์ ๋ณ์๊ฐ ์ด๊ธฐํ๋์๋์ง๋ฅผ ํ๋จํ๊ธฐ ์ํด 'Magic Number' ๋ฅผ ์ธ ํ์๊ฐ ์์ด์ง๋ค๋ ๊ฒ์ด๋ค! TOptional ๊ตฌ์กฐ์ฒด ์ผ๋จ, Optional.h ์ ์ ์๋ TOptional ๊ตฌ์กฐ์ฒด์ ๋๋ต์ ์ธ ๊ตฌ์กฐ๋ฅผ ๋ณด์..