Notice
Recent Posts
Recent Comments
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก2022/04 (31)

KoreanFoodie's Study

์–ธ๋ฆฌ์–ผ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ ˆ์ด์–ด (Layered Animation), ๋ณธ๋งˆ๋‹ค ๋ ˆ์ด์–ด๋กœ ๋ธ”๋ Œ๋”ฉ (Layered Blend Per Bone)

์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ ˆ์ด์–ด ์–ธ๋ฆฌ์–ผ์—์„œ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ฐ„์˜ ์ž์—ฐ์Šค๋Ÿฌ์šด ์ „ํ™˜์„ ์œ„ํ•ด ๋ธ”๋ Œ๋“œ ์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ UpperBody ๋งŒ ์ด์„ ๋“œ๋Š” ๋ชจ์…˜์„ ์žฌ์ƒํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ํ•˜์ž. ๋ธ”๋ Œ๋“œ ์ŠคํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•ด ํŠน์ • ๋ถ€์œ„๋งŒ ๋™์ž‘์„ ๋ฐ”๊พธ๋Š” ๋“ฑ์˜ ๊ธฐ๋Šฅ๋„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„๊นŒ? ์–ธ๋ฆฌ์–ผ์—์„œ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ ˆ์ด์–ด๋ฅผ ํ™œ์šฉํ•ด ์œ„์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 1. ๋จผ์ € ๋ธ”๋ Œ๋“œํ•  ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์„ ํƒํ•œ๋‹ค. 2. ๊ฒŒ์ž„ ๋ชจ๋“œ์˜ Default Pawn Class ๋ฅผ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•  ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ํƒ€๊นƒ๋œ ์Šค์ผˆ๋ ˆํ†ค์œผ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค. 3. ์• ๋‹˜ ๋ชฝํƒ€์ฃผ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. 4. ์• ๋‹˜ ๋ชฝํƒ€์ฃผ์—์„œ ๋‹๋ณด๊ธฐ ํด๋ฆญ ํ›„, ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ์Šฌ๋กฏ์œผ๋กœ ์ง€์ •ํ•œ๋‹ค. 5. ์Šฌ๋กฏ์ด ์—†์„ ๊ฒฝ์šฐ ์ƒˆ๋กœ ์ƒ์„ฑํ•œ๋‹ค. 6. ์›ํ•˜๋Š” ์Šฌ๋กฏ์„ ์ง€์ •ํ•œ๋‹ค. 7. ์• ๋‹˜ ๊ทธ๋ž˜ํ”„๋กœ ์ด๋™ํ•œ๋‹ค. 8...

Game Dev/Unreal C++ : Study 2022. 4. 6. 20:08
์–ธ๋ฆฌ์–ผ ๋ธ”๋ Œ๋“œ ์ŠคํŽ˜์ด์Šค (Blendspace)

๋ธ”๋ Œ๋“œ ์ŠคํŽ˜์ด์Šค ๋งŒ์•ฝ ์†๋„์— ๋”ฐ๋ผ ๊ฑท๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ๋›ฐ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์žฌ์ƒํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ• ๊นŒ? ๋‹จ์ˆœํžˆ ์†๋„๊ฐ€ ๋‚ฎ์„ ๋•Œ๋Š” ๊ฑท๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์„, ๋†’์„ ๋•Œ๋Š” ๋›ฐ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์—ฐ๊ฒฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์ง€๋งŒ, ์†๋„๊ฐ€ float ๊ฐ’์œผ๋กœ ์—ฐ์†์ ์ผ ๋•Œ๋Š” ์†๋„๊ฐ€ ๋ฐ”๋€Œ๋Š” ์‹œ์ ์— ๋”ฐ๋ผ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๊ธ‰์†๋„๋กœ ๋ณ€ํ•˜๋Š” ๊ฒƒ์ด ๋ถ€์ž์—ฐ์Šค๋Ÿฌ์›Œ ๋ณด์ผ ๊ฒƒ์ด๋‹ค. ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋™์ž‘์—์„œ์˜ ์ž์—ฐ์Šค๋Ÿฌ์›€์„ ๋ณด์žฅํ•˜๋ฉด์„œ, ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํŠน์ • ๋ณ€์ˆ˜์— ๋งž๊ฒŒ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์„ค์ •ํ•˜๋Š” ์ผ ๋”ฐ์œ„์˜ ํ•˜๋“œ์ฝ”๋”ฉ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด, ์–ธ๋ฆฌ์–ผ์—์„œ๋Š” ๋ธ”๋ Œ๋“œ ์ŠคํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค. ๋ธ”๋ Œ๋“œ ์ŠคํŽ˜์ด์Šค๋ž€, ๋ง ๊ทธ๋Œ€๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜๋“ค์„ ์ฃผ์–ด์ง„ input ๊ฐ’์— ๋งž๊ฒŒ ํ˜ธ์ถœํ•˜๋„๋ก ์„ž์–ด(๋ธ”๋ Œ๋“œ) ๋งŒ๋“  ๊ณต๊ฐ„(์ŠคํŽ˜์ด์Šค) ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์‹œ ๋ธ”๋ Œ๋“œ ์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๋ฉด, ์™ผ์ชฝ์—์„œ ์ถ•์˜ ์ตœ๋Œ“/์ตœ์†Ÿ๊ฐ’์„ ๊ฒฐ์ •ํ•˜..

Game Dev/Unreal C++ : Study 2022. 4. 6. 20:08
์–ธ๋ฆฌ์–ผ ์ฝ”์–ด ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ (Core Redirect)

์ฝ”์–ด ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ž€? ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฉ‹์ง€๊ฒŒ ์™„์„ฑํ–ˆ๋Š”๋ฐ, ๋งŒ์•ฝ ๋ณ€์ˆ˜ ๋ช…์ด๋‚˜ ์• ์…‹ ๋ช…์„ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค๋ฉด ์–ด๋–จ๊นŒ? ํ•ด๋‹น ๋ณ€์ˆ˜๋‚˜ ์• ์…‹์„ ์ฐธ์กฐํ•˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ „๋ถ€ ํ—ค์ง‘์–ด ๋†“๋Š” ๊ฒƒ์€ ์ƒ๋‹นํ•œ ๋‚ญ๋น„๋ฅผ ์ˆ˜๋ฐ˜ํ•  ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ์œ„ํ•ด, ์–ธ๋ฆฌ์–ผ์—์„œ๋Š” "๊ธฐ์กด ์ด๋ฆ„ -> ์ƒˆ๋กœ์šด ์ด๋ฆ„" ์„ ํ•œ๋ฒˆ์— ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š”๋ฐ, ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ '์ฝ”์–ด ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ' ์ด๋‹ค. ์ฝ”์–ด ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋Š” DefaultEngine.ini ํŒŒ์ผ์ด๋‚˜, Default.ini ํŒŒ์ผ ๋“ฑ์— ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. ์˜ˆ์‹œ๋ฅผ ๋ณด์ž. [CoreRedirects] +ClassRedirects=(OldName="Pawn",NewName="MyPawn",InstanceOnly=true) +ClassRedirects=(OldName="/Script/MyModule.MyOldClass",NewN..

Game Dev/Unreal C++ : Study 2022. 4. 4. 13:40
์–ธ๋ฆฌ์–ผ ๋ฌธ์ž์—ด (FName, FString, FText) ํด๋ž˜์Šค

์–ธ๋ฆฌ์–ผ ๋ฌธ์ž์—ด ํด๋ž˜์Šค ์–ธ๋ฆฌ์–ผ ๋ฌธ์ž์—ด ํด๋ž˜์Šค๋Š” 3 ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. (FName, FString, FText) ์ด ์ค‘, ์กฐ์ž‘์ด ๊ฐ€๋Šฅํ•œ ํด๋ž˜์Šค๋Š” FString ์ด๋‹ค. ์ฐธ๊ณ  - ๋ฌธ์ž์—ด์˜ ๋ณ€ํ™˜ : ์ถœ์ฒ˜ FName ์€ FName(*FString) ๊ผด์„, FString ์€ .ToString( ) ๊ผด์„, FText ๋Š” FText::FromName( ) ๊ผด์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ธฐํƒ€ ์„ธ๋ถ€ ๊ตฌํ˜„์€ ์†Œ์ œ๋ชฉ ๋งํฌ์˜ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์ž. FName FName ์€ ์ฝ˜ํ…์ธ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์• ์…‹ ์ด๋ฆ„์„ ์ง€์„ ๋•Œ, ์Šค์ผˆ๋ ˆํƒˆ ๋ฉ”์‹œ์—์„œ ๋ณธ์— ์ ‘๊ทผํ•  ๋•Œ ๋“ฑ๋“ฑ์— ์‚ฌ์šฉ๋œ๋‹ค. FName ์€ ๋ฌธ์ž์—ด์„ ํ•˜๋‚˜ํ•˜๋‚˜ ๋น„๊ตํ•˜์ง€ ์•Š๊ณ , ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์„ ํ•ด์‹ฑํ•œ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•œ ํ›„, index ๋กœ ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค. ์ด ๋•Œ๋ฌธ์— ํ‚ค๋กœ FName ์— ์ ‘๊ทผํ•˜๋Š” ์†๋„๊ฐ€ ..

Game Dev/Unreal C++ : Study 2022. 4. 1. 15:09
์–ธ๋ฆฌ์–ผ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ (Unreal Garbage Collection)

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์–ธ๋ฆฌ์–ผ์—์„œ UProperty ๋ฅผ ๋ถ™์ธ ๊ฐ์ฒด๋Š” ์–ธ๋ฆฌ์–ผ ์—”์ง„์ด ์ž๋™์œผ๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋ฅผ ์ด์šฉํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์ˆ˜ํ–‰ํ•จ์— ์žˆ์–ด ๋ฆฌํ”Œ๋ ‰์…˜ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์—”์ง„์ด ๊ฐ์ฒด์™€ ์†์„ฑ๊ฐ’์„ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ, ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์•„ ์‚ญ์ œํ•ด๋„ ๊ดœ์ฐฎ์€ ๊ฐ์ฒด๋“ค์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์–ธ๋ฆฌ์–ผ ์—”์ง„์—์„œ๋Š” Reference Graph ๋ฅผ ๋งŒ๋“ค์–ด ์˜ค๋ธŒ์ ํŠธ๋“ค์˜ ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค. ์ด ๊ทธ๋ž˜ํ”„ ๋ฃจํŠธ์—๋Š” "Root Set" ์ด๋ผ ์ง€์ •๋œ ์˜ค๋ธŒ์ ํŠธ ์…‹์ด ์กด์žฌํ•˜๋ฉฐ, "Root Set" ์— ํฌํ•จ๋œ ๊ฐ์ฒด๋“ค์€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๋Œ€์ƒ์—์„œ ์ œ์™ธ๋œ๋‹ค. UObject::BaseUtility::AddToRoot ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ์ฒด๋ฅผ "Root Set" ์— ์ถ”๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ( ์˜ˆ์‹œ : UMyObject->AddToRo..

Game Dev/Unreal C++ : Study 2022. 4. 1. 14:49
์–ธ๋ฆฌ์–ผ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ(Unreal Smart Pointer) ์ •๋ฆฌ 1 : ์ข…๋ฅ˜, ์ด์ ๊ณผ ์˜ˆ์ œ

์Šค๋งˆํŠธ ํฌ์ธํ„ฐ 3๋Œ€์žฅ C++ ์—๋Š” ๋Œ€ํ‘œ์ ์ธ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ 3 ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ, ์–ธ๋ฆฌ์–ผ์—์„œ๋Š” ์ด๋ฅผ T๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ œ๊ณตํ•œ๋‹ค. TUniquePtr TSharedPtr TWeakPointer ๊ธฐ๋ณธ์ ์ธ ์›๋ฆฌ์™€ ๊ธฐ๋Šฅ์€ C++ ์™€ ๋น„์Šทํ•˜๋‹ค. ๊ธฐ๋ณธ์ ์ธ ๋ฉ”์„œ๋“œ ์ฐจ์ด๋งŒ ์ž ๊น ์งš๊ณ  ๋„˜์–ด๊ฐ€๋ฉด, TUniquePtr : C++ ์—์„œ std::move ๋ฅผ ์ด์šฉํ•ด ์†Œ์œ ๊ถŒ์„ ์ด์ „ํ–ˆ๋‹ค๋ฉด, ์–ธ๋ฆฌ์–ผ์—์„œ๋Š” MoveTemp ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. TSharedPtr : C++ ์—์„œ std::maked_shared ๋ฅผ ์ด์šฉํ–ˆ๋‹ค๋ฉด, ์–ธ๋ฆฌ์–ผ์—์„œ๋Š” MakeShared ์„ ์‚ฌ์šฉํ•œ๋‹ค. ํ•ด์ œ ์‹œ Reset( ) ์„ ํ˜ธ์ถœํ•œ๋‹ค. shared_ptr(new MyClass()) ๊ฐ™์€ ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ๋•Œ๋Š” MakeShareable ์„ ์‚ฌ์šฉํ•œ๋‹ค. MakeSharea..

Game Dev/Unreal C++ : Study 2022. 4. 1. 13:44