기술(Tech, IT)/컴퓨터 그래픽스 (Computer Graphics) 23

[CG] Scene Graph - 재정리

Scene Graph는 컴퓨터 그래픽, 게임 개발, 가상 현실 애플리케이션에서 graphic scene의 논리적이고 종종 공간적인 표현을 관리하고 구성하기 위해 일반적으로 사용되는 데이터의 구조다. 이를 통해 개발자는 오브젝트, 조명, 카메라 등 많은 요소가 포함된 복잡한 장면을 구조화된 방식으로 처리할 수 있다. Scene Graph의 핵심 개념은 scene의 오브젝트를 그래프의 노드로 표현하는 것으로, 각 노드는 여러 개의 자식을 가질 수 있지만 일반적으로 하나의 부모만 가질 수 있다. 이러한 계층적 구조를 통해 오브젝트와 그 속성은 물론 오브젝트 간의 관계를 효율적으로 관리할 수 있다. 예를 들어, 부모 노드에 적용된 변환(이동, 회전, 크기 조정 등)은 모든 자식에 자동으로 영향을 미치므로 캐릭터..

[CG] Linear-Speed Vertex Cache Optimisation - 4

7. Results 이 알고리즘을 개발하는 동안 다양한 테스트 mesh가 사용됐다. 그 중 4개에 대한 결과가 여기에 나와있다. 이 중 3개는 일반적인 인터랙태브(예: 게임) mesh를 대표하며, 1개는 알고리즘의 건전성 검사에 사용된 보다 이상화된 mesh다. 이상화된 mesh의 결과는 지형 높이 필드(terrain height-fields)나 세밀하게 tesellated 모델과 같이 매우 규칙적인 표면과 관려히 있지만, 알고리즘의 방향에 큰 영향을 미치지는 않았으며, 보다 현실적인 mesh를 훨씬 더 중요하게 고려했다. mesh의 종류는 다음과 같다: GrannyRocks: 흔들 의자에 앉은 할머니 mesh다. Grann Viewer(http://www.radgametools.com/gradown.h..

[CG] Linear-Speed Vertex Cache Optimisation - 3

5. The Constants 위 코드에 사용된 4개의 상수는 추측과 판단, 며칠 동안의 무차별(brute-force) 대입을 통해 아주 전형적인 데이터 세트와 아주 전형적인 hardware cache 구조의 시뮬레이션을 통해 전송된 결과를 종합해 가장 좋은 점수를 얻은 것으로 결정되었다. 아직 발견되지 않은 더 나은 설정과 값이 존재할 가능성도 있다. 또한 점수에 거듭제곱 함수를 사용하는 것이 적절한 함수인지 여부와 다른 함수나 사용자가 커스터마이징한 look-up-table을 사용하는 것이 더 나을 결과를 낳을 수도 있다. 그러나 도출된 결과는 최적이라고 간주되는 값에 상당히 근접하며, 나머지 개성 사항은 거의 없을 것으로 보인다. 요약하자면, 이러한 값은 대부분의 목적에 "충분히 좋은" 것으로 보인..

[CG] Linear-Speed Vertex Cache Optimisation - 2

계속해서 살펴보자. 4. Vertex Scores in Detail 주어진 정점의 점수는 해당 정점을 사용하는 삼각형이 다음에 렌더링 목록에 추가될 가능성을 나타낸다. 점수가 높을수록 가능성이 높아지고 점수가 낮을수록 가능성이 낮아진다. 점수는 여러 가지 요소에 따라 달라진다. 첫 번째는 정점이 최근에 사용되었을 수록 점수가 높다는 것이다. 점수는 LRU cache에서 정점의 위치를 0에서 1 사이의 실수로 계산하는데, 마지막(LRU) 위치는 0이고 첫 번째(MRU) 위치는 1이다. 그런 다음 이 스케일링된 위치는 1보다 큰 거듭제곱으로 올라간다. 거듭된 시뮬레이션을 통해 거듭제곱의 값을 선택했는데, 1.5가 좋은 결과를 가져다주는 것으로 보인다. 단순한 선형 점수가 아닌 거듭제곱을 사용하면 규모에 더 ..

[CG] Linear-Speed Vertex Cache Optimisation - 1

Tom Forsyth 라는 Graphics Coder 가 소개한 Optimization 테크닉을 번역한 내용이다. (28th September 2006 발표) Linkedin과 본인 블로그에 따르면 Intel을 비롯한 graphics 관련 회사들에서 경력을 쌓은 이 분야의 전문가로 보인다. 내가 수강한 Computer Graphics 교수님이 제공한 자료를 통해 알게 됐다. Introduction : 이 페이퍼는 크기가 알려지지 않은 다양한 Hardware Vertex Cache에 적합하도록 색인된(indexed) 삼각형 목록을 최적화하는 알고리즘을 소개한다. 이 방법은 다양한 cache 크기와 교체 정책에 보편적으로 적합하며 mesh의 삼각형 수에 비례하는 선형적인 시간(Linear time)과 공간에..

[CG] Scenegraph - 2

Scenegraph의 scene management에 대해 좀 더 알아보자. Scenegraph를 통한 scene management에는 lights, cameras, meshes (3D models), animations 등 3D scene의 다양한 요소를 구성하고 제어하는 작업이 포함된다. 이는 scene 조작 및 렌더링 프로세스를 간소화하는 Scenegraph의 계층적 구조에 의해 수행된다. 작동 방식은 아래와 같다. Transformations and Propagation : 계층 구조의 부모 노드에 적용된 transformations (예: translation, rotation, scaling)은 모든 자식 노드에 영향을 준다. 예를 들어, 부모 노드인 비행기 모델을 회전하면 모든 부분(날개,..

[CG] Scenegraphs

Scenegraph는 복잡한 장면을 관리하고 렌더링하는 데 일반적으로 사용되는 데이터 구조다. 이는 그래픽 객체를 계층적 트리(Hierarchial tree)와 같은 구조로 구성하며, 트리의 각 노드는 scene의 그래픽 요소를 나타낸다. 이 구조를 사용하면 많은 요소가 있는 복잡한 장면을 효율적으로 렌더링, 조작 및 관리할 수 있다. 주요 특징과 용도는 아래와 같다. Hierarchial Organization : 객체는 상위-하위 계층 구조로 구성된다. 즉, 상위 노드에 적용된 transformations(예: translation, rotation, scaling)은 하위 노드에 자동으로 영향을 준다. 예를 들어, 자동차 모델을 이동하면 바퀴와 문과 같은 하위 요소도 이동한다. Scene Manag..

[CG] UV mapping vs Normal mapping

UV mapping과 Normal mapping 모두 texture에 관여하는 테크닉이다. 둘을 간단하고 직관적으로 비교해보면 아래와 같다. UV mapping은 색칠 공부에서 2D 이미지의 각 부분이 3D 모델에 그려질 영역의 윤곽을 그리는 것과 같다. 경계를 설정하고 이미지가 과도하게 늘어나거나 겹치지 않고 선 안에 깔끔하게 맞도록 한다. Normal mapping은 색연필 세트를 사용해 윤곽선 안에 texture와 depth를 추가하는 것과 같다. 평면적인 색상 대신 3D 모델에 실제로 존재하지 않았던 그림자(lighting), 하이라이트 및 표면 디테일의 모양을 추가하는 것이다. 예를 들어, 용의 피부에 울퉁불퉁한 표면이나 옷의 복잡한 직물 직조와 같은 착각을 불러 일으키는 것과 같다. 즉, UV..

[CG] Tangent space (탄젠트 공간)

탄젠트 공간은 컴퓨터 그래픽에서 텍스쳐, 특히 노멀 맵을 3D 모델의 표면에 적용하는 데 사용되는 좌표계다. 탄젠트 공간은, texture map에 표면 디테일을 인코딩해 3D 모델에 정확하고 효율적으로 적용할 수 있는 방법으로, 처리 능력이나 메모리에 큰 비용을 들이지 않고도 보다 사실적인 lighting과 material 효과를 구현할 수 있다. 정의 : mesh surface의 각 vertex에 고유하게 정의되는 로컬 공간이다. 이 로컬 공간은 geometry surface에 정렬돼 Tangent는 surface에 평행하며 일반적으로 texture coordinates (u-axix)에 정렬되고, Bitangent는 Tangent에 수직이며 surface를 따라 놓여 다른 texture axis (..

[CG] CPU - Graphics Rendering

CPU가 rendring 과정을 초기화하고 기획하는 이유를 자세히 살펴보자. 디자인 철학 (1) CPU (Central Processing Unit, 중앙 처리 장치) : CPU는 범용 프로세서로 설계됐다. task switching, branch prediction, 다양한 연산 처리에 최적화돼 있다. 컴퓨터의 '두뇌'로서 파일 입출력, 시스템 작동, 네트워키, 게임 로직 등 다양한 작업을 관리한다. (2) GPU (Graphics Processing Unit, 그래픽 처리 장치) : 반면 GPU는 병렬 처리를 위해 설계됐다. 대량의 데이터에 대해 동시에 동일한 연산을 수행하는데 탁월하므로, ㅇ례를 들어 수백만 개의 pixel이나 vertex에 대해 동일한 연산을 수행해야 하는 그래픽 작업에 적합하다...