목록공부/3D강의 (101)
응애맘마조
모델에 뼈를 구성하는 본(bone)에 대해서 강의했었습니다. 모델은 T-Pose가 기본자세이며 여기에서 위치 변경이나 애니메이션 효과를 계산합니다. 만약 다른 자세가 기본자세라면 한쪽이 너무 치우치거나 원하는 모습대로 나오지 않을 수 있습니다. #pragma once #define MAX_BONE 256 class Skeleton { static ID3D11Buffer* bonesBuffer; public: Skeleton() {}; Matrix bones[MAX_BONE]; Matrix bonesOffset[MAX_BONE]; string file; void BonesUpdate(GameObject* node); static void CreateStaticMember(); static void Dele..
저번 금요일에 했던 로드에 이어서 노멀 매핑에 대해서 강의했습니다. 구글 검색만 해도 obj 다운로드할 수 있는 파일은 굉장히 많이 나오지만 막상 로드할 수 있는 파일은 그렇게 많지 않고 코드 상에서도 많이 터지는 경우도 있습니다. 뿐만 아니라 만드는 사람마다 방식이 전부 다르기 때문에 정점이 안 맞는 경우도 있고 따로 되어있는 경우도 있습니다. 그래서 확실하게 검증된 파일을 사용하는 것이 좋은데 유니티 엔진에서 원활하게 움직이는 파일이라면 DirectX에서도 문제없이 사용할 수 있다고 했습니다. #include "Common.hlsl" struct VertexInput { float4 Position : POSITION0; float2 Uv : UV0; float3 Normal : NORMAL0; fl..
어제는 obj나 fbx 파일을 로드를 하는데 필요한 Mesh를 로드를 하는데 덮어쓰기가 되어 하나만 표시가 되는 문제가 발생하여 해결하지 못했지만 오늘은 해결했습니다. MakeHierarchy 함수 내의 반복문을 수정했습니다. MakeMesh 함수 내부에서 int 변수에 node->mMeshes[i]로 번호를 다시 넣고 current를 for문 밖에서 안으로 넣었습니다. 이후에 로드를 하게 되면 정상적으로 파일이 출력되는 것을 확인할 수 있습니다. #pragma once class Main : public Scene { private: Camera*Cam; Grid*grid; Actor*temp; stringfile; Assimp::Importerimporter; const aiScene*scene; p..
과제 풀이 겸 해서 Assimp 로드할 수 있게 코드를 작성 중이었습니다. #pragma once class Main : public Scene { private: Camera*Cam; Grid*grid; Actor*temp; stringfile; Assimp::Importerimporter; const aiScene*scene; public: Main(); ~Main(); virtual void Init() override; virtual void Release() override; //해제 virtual void Update() override; virtual void LateUpdate() override;//갱신 virtual void Render() override; virtual void Pr..
Assimp에 대해서 강의를 했었습니다. 이걸로 이제 본인이 원하는 모델을 로드할 수 있게 되었고 로드 목적 말고는 사용하지 않습니다. #pragma once class Main : public Scene { private: Camera*Cam; Grid*grid; Actor*temp; stringfile; Assimp::Importerimporter; const aiScene*scene; public: Main(); ~Main(); virtual void Init() override; virtual void Release() override; virtual void Update() override; virtual void LateUpdate() override; virtual void Render() ..