프로그래밍 공부

서울게임아카데미 교육과정 6개월 국비과정 113

카테고리 설명
  • 캡슐형 오브젝트와 구, 캡슐, 사각형, 레이 오브젝트 끼리 충돌과정을 구현해보자. CapsuleCollider는 구체형 Collider에서 선분 Vector를 추가하여 충돌확인을 한다. CapsuleCollider는 위와같이 생겼다. 선분의 양 끝단에 구체가 생겨있고. 모든 선분이 중심점으로 이루어진. 무한히 많은 구가 선분에 끼어져 있다고 생각하면 된다. 대충 위와같이. 무한히 많은 구체가 선분을 따라 생겨있다고 이해하면된다. 그래서, 대부분의 충돌은 구체와 다른 오브젝트와의 충돌이라고 이해하면 된다. 이제 Collider의 정의에 대해 알아보자. CapsuleCollider class CapsuleCollider : public Collider { public: CapsuleCollider(float..

  • DirectX에서 FBXModel을 Import하고 Save할 때 원래 생각해놓고 구현해놓았던 방식대로 정상적으로 Import가 되지 않으면 매우 곤란하다. 이번에는 만약, Import 하였을 시, Mesh와 Matarial의 개수가 일치하지 않을 때, 각 Mesh에 Matarial을 밀어넣어줄 수 있는 코드를 작성한다. 우선 데이터 구조상, Model에서 Matarial과 Mesh값, Name값을 알아야 한다. 이전에 작성하였던 ModelExporter에서 동작하는 동작사항을 일부 수정해서 가져와 사용해야 한다는 의미이다. 또한, Model이 가지고있던 데이터에 접근하여 수정해야 하고, MeshData값을 ModelMesh가 가지고 있어야 한다. (프레임워크 상 MeshData는 ModelMesh가 아..

  • 3인칭 카메라를 구현해보자. Obejct의 Front와 Back, 그리고 Cam의 Rotationvalue와 Movevalue값을 알고 있어야 한다. 간단한 코드 예시를 살펴보자. float distance = 20.0f; float height = 20.0f; float moveDamping = 5.0f; // 따라가는 속도 float rotDamping = 0.0f; // 회전에서 따라가는 속도 float rotY = 0;// 쿼터뷰로 하였을 때, 45도각도를 바라보고 싶을 수도있기 때문, float destRot = 0.0f; Vector3 destPos; Vector3 focusOffset;// 카메라의 타겟 오프셋 // 특정 타겟을 바라보는데 X축 앵글로만 안바라보게 하고싶을 수 있다. // 모..

  • 함수포인터를 사용해서 애니메이션의 자동 프레임전환을 구현해보자. 언리얼에서 사용하는 애니메이션의 자동 전환은. 일정 시간 뒤에 애니메이션이 자동으로 전환되는 형식으로 구성되어있는데, https://docs.unrealengine.com/4.27/ko/AnimatingObjects/SkeletalMeshAnimation/Sequences/ 애니메이션 시퀀스 Animation Sequence, 애니메이션 시퀀스 애셋은 한 애니메이션을 이루는 모든 트랜스폼 데이터가 들어있는 개별 애셋입니다. docs.unrealengine.com 이러한 애니메이션간 선형전환방식을 사용할것 이다. class ModelClip { private: friend class ModelAnimator; ModelClip() = defa..

  • 저번에 만들었던 선형보간의 개량이다. 선형보간 시, Buffer에 데이터를 넘긴 후, 처리하는 방법이 있고, 데이터를 Device에서 처리 후 Buffer에 넘기는 방법이 있는데, 전에 만들었던 방법은, 데이터를 넘기기 전 Device에서 처리 후, Buffer에 넘기는것 이었는데, 이번에 한 방법은 Buffer에 데이터를 다 때려박은 후 DeviceContext에서 데이터를 처리하는 방법이다. Buffer를 수정한다. // Frame 구조체: 애니메이션 재생에 사용되는 프레임 정보를 저장하는 구조체 struct Frame { int clip = 0; // 현재 재생 중인 클립의 인덱스 int curFrame = 0; // 현재 프레임 인덱스 float time = 0.0f; // 현재 프레임에서의 경과..

  • 애니메이션의 저장을 clip형태로 하였음으로, 이제 데이터를 보관하고, Texture2D형태로 구현한 뒤, DeviceContext에서 출력할 일만 남았다. 일단 DeviceContext로 넘겨줄, ConstBuffer를 정의해주어야 한다. // ClipTransform 구조체: 각 프레임 및 본에 대한 변환 매트릭스를 저장하는 구조체 struct ClipTransform { Matrix transform[MAX_FRAME][MAX_BONE]; // 각 프레임 및 본에 대한 변환 매트릭스 배열 }; // Frame 구조체: 애니메이션 재생에 사용되는 프레임 정보를 저장하는 구조체 struct Frame { int clip = 0; // 현재 재생 중인 클립의 인덱스 int curFrame = 0; // ..