본문 바로가기

분류 전체보기

(80)
3D Animation 이론 1 SRT - Scale, Rotation, Translation Skinning 장점 : 정점의 뼈 가중치를 갖는 메쉬가 비선형 방식으로 구부러진 것 처럼 부드럽게 변형되는 것 처럼 보일 수 있다-> 더 자연스러워 보여진다 프레임 구조에는 bone 구조, 메쉬 구조, bone과 메쉬 정점의 관계를 가지는 데이터들이 있다 메쉬 데이터는 노말, 텍스쳐 좌표와 같은 다른 데이터와 함께 루트 프레임에 상대적인 정점의 배열로 구성된다 정점의 pos는 주로 pose나 rest pos에 있다애니메이션 메쉬는 주로 쉐이더에서 렌더한다 Frame TransformationMatrix는 애니메이션 배열을 사용하는 Render Cycle로 채워져 있다 애니메이션 컨트롤러 오브젝트나 함수를 이용해서 Transform을 계산하고..
Tessellation 테셀레이션 (Tessellation) : 작은 조각들을 틈이 없게, 그리고 겹치지 않게 이어 붙여서 하나의 surface를 형성하는 것 -> 여러 개의 작은 기하구조들을 틈 없이 겹치지 않게 붙여서 하나의 표면을 만들어 내는 것 래스터 기반 컴퓨터 그래픽에서는 일반적으로 표면을 주로 삼각형들로 표현했다.삼각형이 항상 블록꼴이고 세 정점이 항상 같은 평면에 있다는 성질 때문이었다.하지만 삼각형으로는 평평한 기하학적 표면만을 표현할 수 있다는 제약이 있다.많은 수의 작은 삼각형들로 매끄러운 곡면을 근사하는 것이 가능하지만, 기본 단위인 삼각형은 여전히 평평하다. 곡면을 표현하는 기법NURBS (Non-Uniform Rational Basis Splines) : 매끄러운 곡면에 대한 일반화된 수학 형식세분 표..
코드의 재사용성 항상 '한 번 만들고 여러 번 사용한다' 는 사고방식을 가져야 한다 그 이유로는 코드가 단 하나의 프로그램에서만 이용되는 경우는 드물다재사용성 높은 디자인을 하면 시간과 돈을 절약할 수 있다작성되는 코드는 항상 팀 내 다른 프로그래머가 이용할 수 있어야 한다재사용성이 낮으면 중복 코드가 발생하게 되고 유지보수비용이 높아진다재사용성이 높은 디자인은 나 자신의 업무에 가장 먼저 도움이 된다 재사용성이 높은 코드를 디자인하는 방법 다른 분야의 어플리케이션이나 다른 사용 시나리오에서도 무리 없이 적용할 수 있도록 충분히 일반화되어 있어야 한다재사용성이 높은 코드는 언제나 사용하기 쉬워야 한다 재사용성이 높은 코드를 디자인할 때 가장 중요한 것은 '추상화' 이다.
STL컨테이너에 저장되어야할 항목과 반복자 STL 컨테이너: 데이터를 모아서 저장해둘 수 있는 제네릭 데이터구조항목 데이터를 값으로서 취급한다. 값 시맨틱을 적용하여 항목이 삽입될 때 항목을 복제해서 저장하고 외부에서 항목을 룩업할 때도 저장된 항목을 복제하여 넘겨준다. 디폴트 할당자와 비교자가 사용될 때, 컨테이너에 저장되는 항목이 가져야 할 상세 요건 1. 복제 생성자 : 원본과 같은 복제 항목을 만든다. 항목을 삽입하 때마다 매번 호출된다. 2. 이동 생성자 : 원본 항목의 내용물을 이동시킴으로써 새로운 항목을 만든다. 새로운 항목을 생성한 후 원본 항목이 소멸할 때 이용된다. 3. 대입 연산자 : 원본 항목의 복제를 통해 기존 항목의 내용물을 대체한다. 항목을 수정할 때마다 사용된다. 4. 이동 대입 연산자 : 원본 항목의 내용물을 다른 ..
Standard Template Library (STL) 표준 템플릿 라이브러리는 C++의 템플릿과 연산자 오버로딩을 광범위하게 사용하고 있음 C++ 표준 라이브러리 개괄 1. 문자열: 에 정의된 자체적인 string 클래스를 지원한다. 메모리 보호를 위한 인덱스 경계 검사, 대입, 비교, 문자열 연결, 문자열 추출, 문자 또는 문자열 치환 같은 여러 기능을 제공 2. 정규 표현식: 헤더 파일을 통해 지원한다. 문자열 처리에 이용되는 패턴 매칭을 쉽게 할 수 있게 해준다. 3. I/O 스트림: 파일, 콘솔/키보드, 문자열을 읽고 쓰는 함수들을 제공 4. 스마트 포인터: 좀 더 안정적인 프로그램을 만드는데 장애 요소 중 하나인 객체의 삭제를 자동으로 해준다.메모리 릭 - 객체를 아예 삭제하지 않아 메모리를 낭비하는 것댕글링 포인터 - 메모리 공간을 이미 반환해버..
Adaptation Adaptation : 눈이 밝기에 적응하는 것처럼 만들어주는 것 HDR은 카메라의 움직임이나 씬의 변화에 의해 이미지의 내용이 바뀌므로 평균 휘도 값이 매우 불안정하다이 불안정성에 의해 LDR 이미지의 밝기가 변함에 따라 Tone Mapping 범위가 두드러지게 출렁거린다 현재 프레임의 평균 휘도를 저장하는 대신, 직전 프레임의 평균 휘도를 Adaptation에 필요한 정도만큼 점진적으로 변화시킨다. 눈의 적응 시간은 상대적으로 기므로 Adaptation 값을 매우 적은 값으로 정하는 것은 적절하지 않다일반적으로 1 ~ 5초 범위 내에서 설정하는 것이 좋다. Δt : 마지막으로 렌더링된 프레임에서부터 흐른 시간% Per Second : 직전 평균 휘도에 현재 평균 휘도가 섞이는 초당 비율% 값이 0에 ..
Bloom 이론 Bloom : HDR에서 비디오카메라를 구현할 때 현실감을 주기 위해 흔히 쓰이는 PostEffect이다. 아주 밝은 픽셀에서 주변의 어두운 픽셀 쪽으로 빛을 흘리는 것 -> 매우 밝은 픽셀에서 빛이 새어나오는 현상이다. 평균 휘도(Luminance)를 통해 각 픽셀이 주변 픽셀에 얼마나 빛을 흘리는지 계산해야 하므로, HDR 렌더링이 필수적이다.LDR 값에서 Bloom을 시도하면 마치 그을린 것처럼 빛이 떠버리는 현상이 발생한다 Bloom 처리 과정 HDR 텍스처를 1/16로 다운스케일함으로써 시작된다 다운스케일 하는 이유메모리를 덜 사용할 수 있다.픽셀 수를 줄임으로써 속도가 더 빨라진다풀 해상도에서 사용하면 업스케일 덕분에 블러링 과정에서 추가적으로 성능 향상이 있다.다운스케일된 이미지는 다른 Ef..
객체지향과 클래스 객체지향 접근 방법: 실세계의 객체를 어떻게 모델링하는가? 객체지향 철학 1.. 객체 (Object) : 객체가 가지고 있는 정보(데이터) + 객체가 수행하는 기능(데이터 처리 함수) 2. 클래스 : 객체들을 구별한다. 공통된 속성과 연산을 갖는 객체의 집합 인스턴스 : 어떤 클래스에 속하지만 같은 클래스에 속한 다른 객체와 구별되는 특징이 있다 메세지 : 객체들 간에 상호작용을 하는데 사용되는 수단 3. 컴포넌트: 모여서 하나의 객체를 이루는 것 4. 프로퍼티 (Property): 어떤 객체를 설명하는 특징, 무엇이 이 객체를 다르게 하는가? 에 대한 답을 준다 5. 행동: 이 객체는 무엇을 하는가? / 이 객체를 이용하면 무엇을 할 수 있는가? 에 대한 답을 준다 6. 통합 (Collection): ..