일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 정렬
- 유니온 파인드
- 트리
- 유니티
- VR
- 그래프
- c++
- Team Fortress 2
- 시뮬레이션
- 수학
- 백트래킹
- 문자열
- 다익스트라
- Unreal Engine 5
- 다이나믹 프로그래밍
- 구현
- XR Interaction Toolkit
- BFS
- 투 포인터
- 재귀
- 알고리즘
- 브루트포스
- DFS
- 그리디 알고리즘
- 자료구조
- 스택
- ue5
- 누적 합
- 백준
- 우선순위 큐
- Today
- Total
목록c++ (497)
1일1알

// HeaderUPROPERTY(BlueprintReadOnly)float GroundSpeed = 0.f;// Cppvoid UDBAnimInstance::NativeUpdateAnimation(float DeltaSeconds){ Velocity = MovementComponent->Velocity; GroundSpeed = Velocity.Size2D();} AnimInstance 클래스를 상속받은 DBAnimInstance Class를 생성, 애니메이션 재생에 필요한 정보들을 정의해서 프레임마다 NativeUpdateAnimation 함수를 통해 정보들을 갱신한다. 예를들어 Speed를 정의하고, Character Movement 컴포넌트의 Velocity를 이용하여 Spee..

밸브에서는 상업적으로 사용하지 않는다면 리소스를 사용하는 것은 괜찮다고 한다.스팀 라이브러리에서 게임을 우클릭하고 로컬 파일 보기를 눌러서 해당 게임의 파일들이 있는 폴더로 이동할 수 있다. 폴더 내에는 vpk(Valve Pack File)라는 형식의 파일이 있는데, 이것이 리소스들이 들어있는 파일이다. misc는 메쉬, 애니메이션 등의 정보, Sound는 사운드 정보, Texture는 텍스쳐 정보가 들어있는 파일인 것 같다.이 vpk파일은 그냥 열수는 없고 GCFScape라는 프로그램을 통해서 열 수 있다. Sound파일들은 .wav로 되어있어서 우클릭 -> Extract를 통해 추출하여 그대로 사용할 수 있다. Texture 파일들은 .vtf라는 파일로 되어있는데..

Team Fortress 2는 2007년에 출시된 밸브에서 만든 게임이다. 어떠한 경로로 이 게임을 접하게 되었는지는 기억이 나지 않지만 중학생때 이 게임에 푹 빠진 기억이 있다.특히 닷지볼이라는 모드를 주로 했는데, 날아오는 로켓을 파이로라는 캐릭터의 공기 분사를 통해 반사하는 모드이다. https://www.youtube.com/watch?v=c7rzHYWYzUk팀포트리스2 닷지볼 플레이 영상(본인은 아님) 언리얼 엔진5를 학습하면서 만들어보면 좋을 게임이 뭐가 있을까 하다가 중학생 시절에 푹 빠져있던 팀포트리스2 닷지볼을 만들어보기로 결심했다. 언리얼 Dedicated server를 학습 후 멀티플레이까지 구현해 볼 생각이다.

3D 캐릭터에 애니메이션을 적용하려면 어떻게 해야할까? 2D라면 여러개의 이미지를 준비하여 이미지들을 빠르게 보여주면 애니메이션 효과를 낼 수 있지만, 3D는 수많은 정점들로 이루어져있어서 모든 장면의 정점 정보들을 따로 저장하는 것은 매우 비효율적일것이다. 3D 오브젝트에는 모델에 뼈대를 심어서 정점들이 어떤 뼈대의 영향을 받아서 움직일 것을 정하는 리깅 작업을 통해 애니메이션을 적용한다. { shared_ptr converter = make_shared(); converter->ReadAssetFile(L"Kachujin/Run.fbx"); converter->ExportAnimationData(L"Kachujin/Run"); } // f : keyfrmae // b : bone Matrix toRo..

단순한 도형이 아닌 가상 공간에 배치되는 물체들은 정점들이 굉장히 많을 것이다. 이런 물체의 정점 정보들을 코드로 하나하나 채워줄 수 없기 때문에 외부에서 만든 파일을 읽어서 사용해야 한다. fbx 포맷의 파일을 사용했고, Assimp라는 라이브러리를 사용해 fbx파일을 읽어서 파일을 분석한 뒤 필요한 정보만 뽑아서 따로 저장하고 사용할 때는 따로 저장한 정보를 읽어서 사용했다. 필요한 정보만 따로 저장하는 이유는 Assimp라이브러리를 사용해 파일을 로드하면 이런저런 잡다한 정보들까지 모두 추출하여 시간이 오래 걸리기 때문이다. shared_ptr converter = make_shared(); converter->ReadAssetFile(L"Tank/Tank.fbx"); converter->Expor..

지금까지 작성한 코드와 쉐이더로 가죽 무늬 텍스쳐를 구와 큐브 메시에 적용한 모습이다. 분명 잘 적용된 모습이지만 굴곡이 표현되지 않아서 뭔가 아쉬운 모습이다. 이것은 큐브로 예를 들자면 큐브의 한 면에 있는 4개의 꼭짓점의 정점의 normal값이 모두 같아서 보간 작업을 해도 모든 픽셀이 같은 normal값을 갖기 때문이다. 그렇다면 이 텍스쳐를 더 입체적으로 굴곡이 있는 모습을 표현하려면 어떻게 해야할까? 제일 직관적인 방법은 굴곡이 있는 부분마다 정점을 추가하는 방법이 있을 것이다. 하지만 이 방법은 정점의 개수가 너무 많아지고 텍스쳐마다 다르게 적용해야 하기 때문에 좋은 방법은 아닐 것이다. 그렇다면 정점의 개수를 늘리지 않고 물체를 더욱 생동감 있게 표현하려면 어떻게 해야할까? 이럴때 사용하는 ..