728x90 반응형 전체 글161 윈도우API)1. 기본템플릿 분석 윈도우 API를 공부하는 이유 윈도우API는 운영체제에 일련의 함수들을 호출하여 필요한 기능을 수행하는 것을 의미한다. 이러한 윈도우API를 이용하여 간단한 게임을 만드는것으로써 게임엔진의 전체적인 구조를 만들고 게임엔진에 대한 이해도를 높이는것이 본 포스팅의 이유이다. 윈도우 애플리케이션 기본템플릿 기본템플릿은 꽤나 긴 코드로 이루어져 있지만 핵심적인 내용은 wWinmain 안의 3가지로 축약할수 있다. 1) 윈도우 창 정보 등록 MyRegisterClass(hInstance); 윈도우 창 정보 등록에는 위와 같은 함수를 사용한다. 위의 함수는 WindowAPI에서 제공하는 함수가 아닌 프로그램상에서 만든 함수이다. 그중에서 주요한 부분은 다음과같다. ATOM MyRegisterClass(HINSTAN.. 게임엔진/윈도우API 2022. 12. 10. 취미생활) 예전 작품들 다 삭제했다고 생각했던 옛날 결과물들이 남아있었다. 비록 세상에 나오지 못했지만 마지막으로 여기에라도 남겨보고자 한다. 취미생활/Maya 2022. 10. 15. 취미생활)7. 얼굴 다듬기 얼굴 다듬기 지난 포스팅에서 입술까지 완성하였다. 이번 포스팅에서는 전체적으로 사진과 유사하게 다듬는 작업을 하였다. 다듬기 작업은 시간도 많이 걸릴 뿐더러 시행착오와 반복이 필요하므로 결과만 올리도록 한다. 앞면 전체적으로 Edge가 모자라 엣지를 많이 추가했다. Edge가 추가되니 사진과 비슷해지기 시작하였다. 사진과 비교해보면 유사도가 더욱 명확해진다. 다만 눈위치(실제 사람은 완전한 대칭을 이루지 않기 때문에)나 얼굴 윤곽선이 다르긴 하지만 이건 원본을 미화했다라고 생각해 두자. 옆면 앞면과 마찬가지로 꽤나 3D모델로써의 모습을 갖추기 시작했다. 사진과 비교하면 더더욱 잘 유사도가 잘 나타난다. 반 측면 취미생활/Maya 2022. 10. 7. 취미생활)6. 입술 얼굴에서 눈과 코만큼이나 입또한 매우 중요한 부위이다. 이번 포스팅에서는 입술을 만들고자 한다. 입술 제작 윗 입술 윗입술의 경우 그림과 같이 한번의 돌출후 안으로 말려 들어가는 구조로 되어 있다. 사진과 동일한 구조로 Edge를 만들도록 하자. 먼저 윗 입술쪽 Edge를 Extruede한다. Extruede한 Edge는 Rotation을 통해 위치를 잡아준다. 위치를 잡았다면 다시 Extruede를 한다. Extruede한 Edge를 Rotation과 Translate로 위치를 잡아준다. 마찬가지로 한번더 Extruede하고 위치를 잡아 윗입술을 마무리한다. 아랫 입술 아랫입술도 이와 비슷한 방법으로 제작하면 된다. 먼저 아랫입술쪽 Edge를 Extruede한다. Extruede한 Egde를 Rotat.. 취미생활/Maya 2022. 10. 7. 취미생활)5. 눈꺼플 지난 포스팅에서는 안구를 제작하였다. 안구가 있다면 당연히 그것을 덮을 눈꺼플이 존재해야된다. 눈꺼플 제작 눈 꺼플이 될 Edge를 선택하고 Extrude해야된다. Extrude는 Shift버튼이나 오른쪽 Component창의 Extrude를 선택하면된다. 윗꺼플을 Extrude했다면 아랫쪽도 Extrude한다. Extrude한 윗꺼플 아랫꺼플을 얼굴쪽과 잘 연결하면 눈꺼플이 완성된다. 완성된 눈꺼플을 얼굴에 붙이고 잘 다듬으면 다음과 같이 된다. 여기서 주의해야될 점은 내안각과 외안각에 충분한 Edge가 존재하지 않으면 눈이 제대로 떠지지 않는다는 점이다. 내/외안각의 Edge를 넣어주고 필요하다면 추가 하도록 한다. 취미생활/Maya 2022. 10. 6. 취미생활)4. 안구 제작 모델에 있어서 가장 중요하다고 생각되는 세가지 부위는 얼굴전체의 윤곽, 코, 눈이라고 생각한다. 특히 애니메이션의 경우 역동적인 감정표현을 위해서 실제 사람보다 눈을 더 크게 제작하는것이 일반적이다. 인간의 눈은 이런식으로 한겹의 막과 시신경으로 이루어져있다. 하지만 우리눈에 보이는 것은 각막과 홍채/모양체이다. 눈을 제작하는데는 많은 방법이 있다. 이번 포스팅에서는 2겹의 눈을 만들고자 한다. 눈 제작 먼저 눈이 될 스피어2개를 생성한다. 하나는 ctrl+H로 Hide 시키고 하나는 홍채와 모양체를 표현하기 위해 가운데를 b를 눌러서 조절해주고 수정체자리는 제거해준다. 완전히 같은 스케일을 가지면 랜더링에 오류가 생길수 있으므로 안쪽 눈의 스케일을 0.99로 설정한다. 그 후 바깥쪽 눈은 각막이므로 투.. 취미생활/Maya 2022. 10. 6. 취미생활)3. 대략적인 코 생성 저번 얼굴에서는 각진 코로 마무리 했었다. 2D캐릭터라면 이대로 뾰족코로 마무리하면 되겠지만 3D캐릭터의 경우 코끝과 코볼이 어느정도 구현되어야 한다. 이런식으로 코끝과 코볼을 구현하였다. 취미생활/Maya 2022. 10. 5. 취미생활)2. 모델링 시작 모델 선정 모델링에 있어서 모델선정은 매우 중요하다. 특히 실사풍 모델링을 만든다면 저작권/초상권의 우려가 심하다. 그런 이유로 실사풍 모델링 연습시 자신의 얼굴을 모델로 하는 경우 또한 적지 않다. 본 포스팅에서는 본인의 사진을 이용하여 모델링하는 글을 작성하고자 한다. 촬영 모델을 선정했다면 모델링을 할 자료가 필요하다. 위에서 언급했듯이 본인을 모델링할 경우 본인의 사진이 필요한건 당연하며 나중에 텍스쳐로도 쓸수 있기 때문에 실사풍 모델링을 한다면 사진을 찍는것을 권장한다. 모델링하기 위해서는 최소한 앞과 옆사진은 반드시 필요하다. 모델링 시작 먼저 모델링을 시작하기 위해서는 마야에서 이미지 플랜을 켜두는것부터 시작한다. 이미지 플랜은 상단에 책갈피처럼 생긴것을 누르면 생성된다. 이러한 식으로 모델.. 취미생활/Maya 2022. 10. 4. 취미생활)1. 취미생활 글을 쓰는 이유 목적 본인은 프로그래밍을 하면서 모델링튤 또한 배운적이 있다. 하지만 주위에서는 프로그래머가 모델링튤을 만지는 것은 시간낭비라는 소리를 자주 듣곤 하였다. 결과적으로 기껏 배웠던 모델링으로 이루어낸 성과는 없지만 가끔씩 취미로써 만지고자 하는 것이 취미 생활에 글을 쓰는 목적이다. 취미생활/Maya 2022. 10. 4. MultiPlayerGame) 20. 줍기 시스템 줍기 시스템 무기가 있더라도 아이템을 획득하지 못한다면 무기가 아니라 그냥 배경과 다르지 않을 것이다. 이번 포스팅에서는 아이템을 줍는것을 구현하고자 한다. 1.줍기 위젯 생성 먼저 유저인터페이스->위젯블루프린트를 생성하고 텍스트를 추가 해준다. 다음으로 C++에도 추가해준다. //Weapon.h private: UPROPERTY(VisibleAnywhere, Category = "Weapon") class UWidgetComponent* PickUpWidget; //Weapon.cpp #include "Components/WidgetComponent.h" AWeapon::AWeapon() { PickUpWidget= CreateDefaultSubobject(TEXT("PickUPWidget")); Pi.. UE5/UE5 MultiPlayerGame 2022. 6. 22. MultiPlayerGame) 19. 무기 시스템 무기 시스템 무기는 게임에 있어서 캐릭터만큼이나 중요한 요소이다. 보통 무기를 구현할때는 enum을 이용하여 구현을 한다. 무기 액터 생성 먼저 무기로 쓸 액터를 생성하고, 기본적으로 필요한 컴포넌트들(스켈레톤,충돌에 필요한 컴포넌트)을 추가하고 오브젝트와 콜리젼 설정을 해준다. //Weapon.h private: UPROPERTY(VisibleAnywhere,Category="Weapon") USkeletalMeshComponent* WeaponMesh; UPROPERTY(VisibleAnywhere, Category = "Weapon") class USphereComponent* AreaSphere; //Weapon.cpp #include "Components/SphereComponent.h" AWe.. UE5/UE5 MultiPlayerGame 2022. 6. 21. MultiPlayerGame) 17. SeamLess Travel / Non-SeamLess Travel 언리얼 엔진은 두가지 SeamLess Travel과 Non-SeamLessTravel이 있다. 언리얼에서는 SeamLess Travel쪽을 더 선호한다. 그렇다면 왜 SeamLess Travel을 선호하는지, 이 둘은 어떤식으로 작동하는지 알아보도록 한다. Non-SeamLessTravel 클라이언트가 원활하게 이동하지 않을 때마다 현재 서버에서 연결이 끊긴 다음 동일한 서버에 다시 연결한다. 이는 물론 다시 연결되는데 시간이 오래걸리고, 다른 연결할때 문제가 다른 레벨로 이동하는등의 문제가 발생할수 있다. Non-SeamlessTravel은 맵을 처음 로드할 때나 서버에 처음 연결할 때, 그리고 온라인 상태의 게임이 끝나고 새로운 게임이 시작될 때 사용된다. 모든 클라이언트는 연결을 끊었다가 다시 서버.. UE5/UE5 MultiPlayerGame 2022. 6. 16. 이전 1 ··· 5 6 7 8 9 10 11 ··· 14 다음 728x90 반응형