분류 전체보기

후... 이걸 완성하려고 달리다보니 글 쓸 시간도 없었다. boost 라이브러리를 활용해 파일로 클래스를 입출력 할 수 있게 되었기 때문에, 다음과 같은 구조를 만들어 주었다. class FileIO { public: template static void Save(Ty_ t, std::string filename); template static void Load(Ty_& data, std::string filename); }; template inline void FileIO::Save(Ty_ t, std::string filename) { std::ofstream out(filename); boost::archive::text_oarchive oArchive(out); oArchive > data; }..
현재 렌더링은 매 프레임마다 Rendering Data를 받아와서 Rendering을 진행하도록 하고 있다. Rendering Data에는 모델링 정보, Transform, Material의 이름 정보를 받아왔다. 그리고 queue에 집어넣고 렌더링을 수행하면서 팝팝팝.. 너무 느린 것 아니니. 아예 렌더러에서 Scene에 있는 데이터를 참조하여 자동으로 계속 그려내도록 하는게 빠를 것 같다. 그러려면 Scene 내부에서 Renderer가 붙은 녀석들에 대해서 Renderer가 알도록 해주어야 한다. 현재 렌더링을 수행함에 있어서 Grid는 Texture가 필요없으며, Ai 모델링은 텍스쳐를 필요로 한다. 텍스쳐가 필요한지 아닌지는 Material을 보고 Renderer가 판단한다. InputLayout..
2월이 끝나가는데 개발 진척이 너무 더디다. 이제 UI까지 만들었으니 그래픽 수준을 올려보도록 하자. 먼저 Input 처리부터 해주고... 에러는 Debug Assertion Failed! vector subscript out of range 라고 떴고, 검색을 해보니 vector에 저장된 것 보다 더 큰 인덱스 값을 참조하려고할 때 문제가 된다고 한다. 그래서 input 클래스에서 vector를 사용하는 친구들을 찾아봤다. 키보드에서 생기는 문제니까 키보드를 봤는데, 예전에 bitset 벡터가 문제를 일으키는 것 같았다. 코드를 보니까 벡터의 사이즈를 지정만 해놓고, 원소를 추가 해주질 않았었다. 그러니까 capacity는 5인데 size가 0이라서 생기는 문제였다. 그래서 다음과 같이 초기화해서 집어..
오늘은 2의 날이다. 오늘은 2의 날이다. 어 왜 2번 써지지? 어 왜 2번 써지지? 음... 왠지 서글퍼진다. 열심히 뭔갈 만들어도 자랑할 곳이 없다. 아싸의 인생이 원래 이렇지만.. 어제에 이어 CameaComponent도 InspectorUI를 만들어주었다. Camera::Camera(GameObject* gameObject) : Component("Camera", gameObject) { INSPECTOR_PROPERTY("bool", "IsPerspective", &camOption.isPerspective); INSPECTOR_PROPERTY("float", "Field Of View", &camOption.fov); INSPECTOR_PROPERTY("float", "AspectRatio",..
이제 아픈 것도 다 나았고, 오늘 와이파이 상태도 나쁘지 않은 듯 하다. 어서 Scene Graph를 구현하고, 모델 select를 구현한 후 컴포넌트를 출력할 수 있도록 해보자. 저번에 Picking을 구현해보긴 했지만 아직 Sphere만 가능하고 모델링 선택은 불가능하다. 그리고 모델링 선택을 구현하려면 카메라 공간에 있는 물체를 대상으로만 체크할 수 있도록 해야해서 어떤게 카메라 범위 내에 있는지 체크해줄 Frustum culling 작업을 수행해주어야 한다. 그러니까 이 작업은 좀 보류하고, 일단 UI로 선택했을 때 Inspector 창이 나올 수 있도록 하는게 우선일 것 같다. 그러면 저번에 만든 Node 를 가지고 Scene Graph를 만들어야 하는데, 이 Node로 저장하는 방식의 문제점은..
아프기도 하고... 이펙트 공부도 하고... 그러다보니 제대로 진행을 못하고 있었다. 현재 삼각형과 광선의 교차를 판정하는 부분에서 막혀가지고 sphere와 광선에 대해서만 체크를 할 수 있도록 되어있다. 이건 결국 물리쪽이니 좀 나중에 하는 게 좋을 것 같다... 선형대수학 강의를 처음부터 보고 있는데 용어가 너무 어려워서 잘 못하겠다. 행교환이 어떻고 닷 프로덕트 열분해..이런 한자쓰면서 얘기하면 머리가 아파진다. 오히려 영어가 더 편한 것 같다.. 아무튼, 오늘은 간단하게 지금까지 한 것에 대해서 코드를 좀 정리해보도록 한다. 외부 라이브러리를 사용하다보면, 그 라이브러리를 사용하기 위해서 단 하나의 헤더파일만 포함시켜주면 그 기능을 모두 사용할 수 있었다. 나도 매번 헤더파일을 만들면서 필요한 헤..
·VFX
먼저 유니티나 언리얼 엔진에서 사용하는 이펙트 기술 종류는 다음과 같다. 1. Particle System 2. Mesh 3. Flipbook Animations 4. Shader Effects 1. Particle System Particle(입자)라는 말처럼 작은 먼지들을 여러 개를 제어하면서 이펙트를 만드는 방식이다. 구현상 파티클은 하나의 quad를 만들어서 거기에 텍스쳐를 붙인 형태에 불과하다. 이 quad들을 제어하기 위한 여러 기능들을 추가하면 파티클 시스템이 만들어진다. 보통 사용하는 텍스쳐의 Blend 타입이 2가지인데, 그냥 alphaBlend를 사용하거나, Additive모드가 있다. 2.Mesh 말 그대로 메쉬에 본을 붙이거나 해서 애니메이션을 출력하거나, 아니면 특정 메쉬에 텍스쳐..
·Programming
영어로 자료를 찾을 수 있도록 영어로 표기하였을 때 어떤 단어인지도 적어둔다. 구 : Sphere 광선 : ray 교차 : intersect / 또는 ray tracing 키워드로도 관련 내용이 있는 것 같다. 다각형 : polygon / triangle(삼각형) 먼저 교차 판정을 하기 전에 구는 무엇이고, 다각형이 무엇인지 정의를 해야 한다. 수학적인 정의를 말이다. 구 3차원 상에서 원점을 기준으로(원점이 아닌 경우는 transformation을 하면 된다.) 거리가 r만큼 떨어진 모든 점의 집합으로 정의할 수 있다. 그러므로 피타고라스 정리에 의해 $\sqrt{x^2 + y^2 + z^2} = r$ 이 된다. 이를 벡터로 표현한다면 구의 원점을 나타내는 위치 벡터 origin과 구 평면상의 임의의 ..
gohen
'분류 전체보기' 카테고리의 글 목록 (6 Page)