728x90

전체 글 837

DirectX 11 스터디 - GameObject 의 첫 컴포넌트 Transform

GameObject 의 Scale, Rotation, Translation 을 처리할 컴포넌트를 생성해서 코드를 모듈화 해본다. Component 클래스를 만들고, 이 클래스를 상속받아 Transform 컴포넌트를 생성해줌. 유니티의 그것과 동일한 네이밍. 동일한 기능을 만들어본다. Transform 클래스를 만들고, GameObject 가 들고있던 _localScale, _localRotation, _localPosition 을 옮겨줌. 관련 Get/Set 메소드들도 모두 만들어준다. 로컬좌표계의 SRT 변환을 처리해줄 행렬 Matrix _matLocal 을 생성해주고, 이 행렬을 활용해서 월드좌표를 계산할 메소드 UpdateTransform() 함수를 만들어준다. #include "Component...

DirectX 11 스터디 - 고유 물체를 정의할 GameObject 만들기

여기까지 개발한 렌더링 처리 객체인 Pipeline, 그리고 물체마다 고유한 값을 가질 수 있는 객체들을 모아서 GameObject 를 만들어본다. 방향성은, 유니티 엔진의 GameObject 스타일로 만들고, Transform 처리는 컴포넌트 형태로 만들어 붙여보는 순서로 진행. 한번에 몰아서 구현하던 Game 클래스에서, 물체마다 고유한 값을 가져야 하는 객체들을 모두 GameObject 로 옮겨서 구현. class GameObject { public: GameObject(ComPtr device, ComPtr deviceContext); ~GameObject() {} void Update(); void Render(shared_ptr pipeline); private: ComPtr _device; ..

DirectX 11 스터디 - 모듈화 (2), 렌더링을 책임질 Pipeline클래스 작성

앞에서 Geometry, VertexData 부터 Output Merger 의 BlendState까지 모두 모듈화 해서 DX COM객체를 캡슐화 했고, 이번엔 모듈화한 객체들을 가지고 Rendering Pipeline 을 실제 수행하는 객체를 작성해본다. 파이프라인에서 고유하게 존재하고 사용되어야 하는 모듈들과, 3D 물체마다 값/설정이 변경되어야 하는 모듈을 구분한다. 3D 물체마다 설정이 변경되어야 하는 객체들을 별도로 그룹화 해서 PipelineInfo 구조체로 묶어준다. 렌더링 파이프라인에 이 구조체를 기준으로 설정을 바꿔서 태워주면 새로운 물체를 그릴 수 있게 됨. PipelineInfo 는 아래 구성 요소가 포함됨. 여기서 ConstantBuffer는 3D 메시마다 필요할 수도, 필요하지 않을..

로지텍 버티컬 마우스 MX VERTICAL, LIFT 직접 체험해보러 다녀왔습니다 (+ MX Master 3S 체험)

회사와 집 모두에서 트랙볼 마우스를 사용했는데, 집에서 쓰던 트랙볼이 수명을 다 해서 일반 마우스를 오래 쓰다보니 손목에 피로가 좀 쌓이는 느낌이에요. 게임 개발자라는 직업 특성상 마우스도 많이 사용하는데, 트랙볼 마우스가 망가진 이후에는 그냥 아무 마우스 집히는 걸 쓰고 있어서 좀 신경을 덜쓴 것 같습니다. 그래서 이번엔 버티컬 마우스를 써볼까 합니다. 친구에게 추천받기도 했던 로지텍 MX VERTICAL, 그리고 LIFT 두 제품을 고려 해보고 있었습니다. 장비에 투자를 해야 게임 개발도 더 잘 되지 않을까 하는 그런 느낌적인 느낌으로. 두 제품 모두 저렴한 가격대가 아니었기 때문에, 무턱대로 사기보다는 직접 만져보고 사봐야겠다는 생각으로 근처 로지텍 매장을 찾아서 방문해봤습니다. 가깝고 차로 가기 ..

DirectX 11 스터디 - 모듈화 (1)

앞선 스터디 과정에서는 하나의 클래스에 DirectX 객체들을 모두 모아서 구현했었음. 한 클래스에 모아서 구현했던 객체들과 개념, 동작들은 아래와 같음. DirectX 핵심 객체 : Device, DeviceContext, SwapChain Render Target : SwapChain 에서 백버퍼를 가져와서 RenderTarget 생성 RenderBegin : 렌더타겟뷰 셋팅, 클리어. 뷰포트 셋팅. RenderEnd : 에서 SwapChain->Present 호출해서 백버퍼 고속복사로 화면 갱신. Geometry 데이터 생성 및 관리 Vertex Buffer, Index Buffer 생성 Input Layout 생성 및 설정 Vertex Shader, Pixel Shader Texture 로드, S..

일본 유니티 개발자가 언리얼 엔진에 입문하면서 느낀 생각의 차이점

일본에서 10년간 유니티를 사용하다가 UE 를 이제 막 시작해서 1주일 정도 사용해본 분의 경험담. 표현 중 기억에 남는 재밌는 글이 있어서 스크랩. (원문 내용을 부분부분 스크랩 한 글이라 존댓말이 섞여있음.) 구성 - 원문 핵심 정리 - 전체 요약 원문 핵심 정리 결론부터 언리얼 엔진은 simple가 아니라 easy이다. 언리얼 엔진은 "(FPS|TPS|3D 액션 게임) 쯔꾸르"이다. 여기서 쯔꾸르 특성 참고. RPG를 만드는데 필요한 기능은 모두 갖추어져 있으며, 그 안에서 완결되는 것이라면 간단(easy)으로 만들 수 있습니다. 하지만, 아오오니 등이 유명한 것처럼 RPG 이외에도 만들 수 있습니다. 조금 힘들지만. 그래서 UE도 FPS/TPS/3D 액션 게임을 만드는 데 특화된 게임 엔진이라고 ..

유니티 덕분(?)에 핫해진 고도 엔진(Godot Engine)을 간단하고 빠르게 알아보자

유니티 엔진(Unitye Engine) 덕(?)분에 고도 엔진(Godot Engine)이 요즘 주변에서 많이 언급되고 있습니다. 어제 유니티의 새 가격 정책이 공개된 여파인 것 같습니다. (아래 링크) (유니티 엔진 새로운 요금 정책! 다운로드 수만큼 돈 내라? https://blog.naver.com/sorang226/223210350857 유니티 엔진 새로운 요금 정책! 다운로드 수만큼 돈 내라? 좀, 아니 많이 충격적입니다. 유니티로 개발한 게임에서 발생한 다운로드 수만큼 수수료를 더 지불하라니요... blog.naver.com 저도 아직 제대로 사용해 보진 않은 엔진인데요. 이번 기회에 조금 알아보면서 수집하고 정리한 내용들, 빠르게 공유해 봅니다. 이름의 유래부터, 무료인지 유료인지, 사용 언어..

행렬(Matrix) 스터디 - 실습 및 SimpleMath for DirectXMath

DirectX 행렬식 계산 편의를 위해 DirectXTK 의 DirectXMath 랩핑 모듈이 필요. SimpleMath.h/.cpp/.iln 파일들. 아래에서 다운로드 받을 수 있음. https://github.com/microsoft/DirectXTK/blob/3b3fd6cfc962c7ffdd03c311a6f6d6364ce96b0a/Inc/SimpleMath.inl SimpleMath.h 를 보면 아래와 같이랩핑한 DirectX 하위 클래스들을 확인할 수 있음. 여기서 Vector 시리즈와 Matrix 가 앞에서 학습한 행렬 수식과 관련된 클래스들. Matrix 메소드를 보면 앞에서 다뤘던 역행렬, 전치, Translation, Scale, Rotation 행렬 생성 시리즈들을 모두 볼 수 있음. 해..

망각 곡선 (forgetting curve hypothesizes)

망각 곡선에 대한 이해를 높이기 위한 자료 스크랩. 결론 : 망각 주기를 늦추고 망각으로 잃는 기억을 줄이려면 재학습을 해야 한다. 한 번 학습한 것을 다시 학습한다면 망각 속도가 느려지고 효과가 중복 적용되어 복습이 중첩될수록 망각 속도는 점점 느려지면서 장기 기억으로 남는 양도 많아진다. 19세기 후반에 독일의 심리학자 헤르만 에빙하우스(H. Ebbinghaus)가 망각에 대해 연구한 후, 시간 경과에 따라 나타나는 일반적인 망각의 정도를 그래프를 통해 제시한 가설. https://ko.wikipedia.org/wiki/%EB%A7%9D%EA%B0%81_%EA%B3%A1%EC%84%A0 망각 곡선 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 망각 곡선의 예 망각 곡선 가설(영..

행렬(Matrix) 스터디 - 좌표계 변환, World 변환, View 변환, Projection 변환 행렬

좌표계 변환 행렬 A좌표계에서 B좌표계로 변환하는 행렬. 좌표계 A에서 좌표계 B로의 변환 행렬은 일반적으로 각 축의 방향 벡터와 원점의 이동을 나타냄. v = [x, y, z, 1] | u_x u_y u_z 0 | | v_x v_y v_z 0 | | w_x w_y w_z 0 | | Qx Qy Qz 1 | 역기서 u, v, w 는 A좌표계의 방향 단위 백터를 B좌표계 기준으로 표현한 것. Q요소는 대상 좌표계 B 의 원점에서 A좌표계 원점의 좌표. 로컬 좌표계의 좌표들을 월드 좌표계로 변환해야할 때, 계층 순서대로 부모의 좌표계 SRT 행렬들을 곱해주는 방식으로 활용 됨. World 변환 행렬 로컬(모델)좌표계의 SRT 를 부모의 SRT 변환 행렬을 World(Root)가 나올 때까지 순서대로 행렬 곱연..

728x90
반응형