예전에 모왔었던 3D용어들을 올립니다.
요새는 게임 회사에서 면접 볼때 간단히 제작 실무에 관한 용어들을 묻는 경우가 많다고 하더군요.
참, 출처는... 그냥 넘어가주시길... 정신없이 모은거라... 어디서 훔쳐왔는지 기억이... (^-^)a
중간에 가끔 이미지가 있긴 하지만 제가 요새 귀차니즘에 빠진 관계로...나중에 study 전용 자료실이 생기면 word문서로 올리죠. ^^
▷ 24-bit Precision
이 기능은 Z-Buffer와 내부 렌더링과 같은 비트수에 처리에 관한 부분을 정확하게 처리를 해주게 되는 기능입니다. 비트수가 높을수록 연산처리는 더욱 정확하게 될 것입니다. 이 기능은 화면에 나타나게 되는 화면 깨짐현상과 유사한 결함을 줄여주는 기능을 합니다. 부정확한 Z-Buffer연산은 트라이앵글이나 픽셀의 Drop 현상을 만들게 됩니다.
▷ 3D Engine
3차원공간의 형상을 만들기 위한 텍스쳐 맵이 적재된 Render polygonal 모델의 소프트웨어 적 순서의 집합
▷ 3DNow!
3D 그래픽의 속도를 올리고 x86-호환 프로세서의 다른 임무를 주는 21가지의 새로운 명령어. 1998년 AMD 사의 K6-2 프로세서에서 최초로 이 기술이 소개된 3DNow!는 사이릭스사및 IDT사 의 프로세서도 또한 지원합니다.
▷ Accelerated Graphics Port(AGP)
3D에만 모두 적용되지는 않으나 단순히 AGP를 적용한다는 것은 더욱 광대역이며 빠른 그래픽 카드로 부터 시스템 버스 경로와 비디오 카드로부터 텍스쳐 저장공간을 위한 시스템 메모리까지의 직접적인 경로를 제공하기 위하여 인텔이 개발한 상대적으로 새로운 규격을 적용하게 되는 것입니다. AGP는 개발자가 게임에서 더욱더 몰입된 영상및 실감나는 환경을 만들수 있도록 더 크고 지속적으로 더욱 세밀한 텍스쳐를 사용할수 있게 합니다.
▷ Algorithmic Procedure Texturing (텍스쳐 알고리즘 순서)
상(像)을 잠재적으로 rendering하여 제한없는 디테일을 생성할수 있도록하는 방법
▷ Alpha Blending
알파 블렌딩은 픽셀값을 주는 기능으로서 불투명하고,투명하거나 반투명인 객체를 렌더링 하는 기능입니다. 이는 액체나,보이지 않거나 부분적으로 저마다 보이지 않는 객체에도 적용될수 있읍니다.이 과정은 일반적으로 폭팔이나 물,불과 같은 특수효과를 묘사하는데 주로 사용됩니다.
▷ Anisotropic Filtering
일반적으로 최근의 게임에서 필요로하는 텍스쳐 필터링순서는 종종 anistropy(객체에 매핑 될때의 텍스쳐 픽셀의 연장선)를 위해 상쇄되지 않기도 합니다.이는 텍스쳐 세밀도 선택에 의존하는 blurring(객체를 흐리게 하는 작용) 또는 aliasing 기능을 가능하게 합니다. 뚜렷한 텍스쳐를 만들어내기 위해서, 3D Accellator는 텍스쳐가 하나의 객체에 맵핑될때에 픽셀이 원모양으로 정확하게 표현될수 있도록 하여주는 필터링해주는 anisotropic filtering 를 사용할수 있읍니다.
▷ Anti-aliasing
안티 알리아싱은 컴퓨터 화면에서 표헌되는 대각선의 들쑥날쑥한 끝부분을 부드럽게 해주는 필터링 기술입니다.
▷ Artifact
하나의 Artifact는 압축기술의 결점으로 인해 야기되는 하나의 그래픽측면에서의 결함 이라고 할수가 있읍니다. 이러한 결함은 단색으로 색표현시 종종 얼룩과 같은 현상으로 종종 나타납니다.
▷ Automatic Texture Compression (자동 텍스쳐 압축)
사용자 지연이 없이 실시간으로 텍스쳐를 압축하는 그래픽 카드의 기능입니다. 이 기능은 높은 해상도의 텍스쳐에서 사용시 더적은 텍스쳐 메모리에서 저장할수 있게 하나 일반적으로 텍스쳐 질이 떨어지게 됩니다. 그러나 S3 사의 텍스쳐 압축 기술인 S3 TC와 같은 텍스쳐 압축 기술은 장래성 있는 기술로서 앞으로 나오게 될 게임및 차세대 그래픽칩셋에서 적용될것이며 DirectX 6.0 이상에서 기본적으로 채용하고 있기도 합니다.
▷ Banding
Banding은 부드러운 색변화가 있는 곳에서 확실하게 나타나는 색의 띠가 명백할때 나타나는 경사면입니다. 이 문제는 Image나 장면이 너무 낮은 컬러수로 표현되어서 부드러운 경사면 이 보여지게되는 형태로 나타나게 될때 발생합니다.
▷ Bilinear Filtering
텍스쳐를 픽셀화가 적게 된것같이 보이게하는데 필요한 기법입니다. 이 과정은 RGB와 네개의 알파 Texel 값을 interpolating (삽입작용)및 평균화과정에 의하여 최종적으로 필터된 픽셀을 만드는 부분을 포함하고 있읍니다.
▷ Blocky
일종의 속어로서 부드럽고, 필터링된 텍스쳐에 반하여 딱딱하고 픽셀화된 텍스쳐를 지칭합니다.
▷ Bump-mapping
Bump-mapping은 영상 트릭의 일종으로서 텍스쳐의 거칠음 또는 부드러움을 보통 두개의 다른종류의 텍스쳐의 사용을 통하여 보여주게 되는데 하나는 실제 텍스쳐가 객체에 매핑된 것이며 다른하나는 얼마나 거칠거나 부드럽게 텍스쳐를 표현하는지를 확정하기 위해 사용되게 됩니다.
▷ Collision Detection
3D 객체를 물리학적으로 다른 객체와 공간및 시간측면에서 반작용하게 해주는 기능입니다. 최초로 3D 게임에서 사용했던 색상 조명효과는 백색광원 효과와 그림자에서 사용되었읍니다. CPU가 빨라지고 더나은 3D하드웨어가 나오면서, 게임은 이제 정말로 생동감있는 빛 효과를 이루는 각각 다른 색상을 섞게되는 순수한 기능을 가지게 되었읍니다.
▷ Compression Algorithm
얼마나 적절하게 하나의 이미지를 프로세서가 작은 패턴정보의 텍스쳐 데이터로 대신할수 있게 해주는지를 정의하는 공식. 최종적인 결과는 더작은 화일과 더 인공화된 객체의 형태로 나타나게 됩니다.
▷ Continuous Level of Detail
고정된 폴리곤 숫자를 보유하는것 대신에, 3D 객체는 가깝게 이동할수록 더욱 복잡하게 되며, 더 효과적이고 측정가능한 프로세서 능력을 만들며, 더많은 영상리얼리즘과 높은 프레임레이트를 생성하는 기능을 제공합니다.
▷ Coordinate Matrix
3D객체를 영상에 그리는데 요구되는 숫자의 배열. 하나의 3D 객체는 여러가지 숫자의 폴리곤으로 구성되어 있으며 각각의 꼭지점의 각각의 폴리곤은 가상 공간에서 자신의 위치를 표시하기 위해 자체의 coordinate matrix 가 요구됩니다.
▷ Dedicated Frame Buffer (할당된 프레임버퍼)
3D 프로세서는 frame-buffer/Z-buffer 데이터 저장공간을 위한 특화된 메모리 공간을 요구 합니다.이 용어는 두개의 독립적인 메모리공간이 필요한 3D 구조로서 하나는 프레임버퍼이 며 다른하나는 텍스쳐 저장공간인 분리된 메모리 구조를 묘사하는것을 의미합니다. 3Dfx's Voodoo/Voodoo2와 Intel's i740은 할당된 프레임버퍼를 요구하는 카드의 대표적인 예라고 할수가 있읍니다. 대부분의 나머지 카드는 합쳐진 메모리 구조를 사용하고 있읍니다.
▷ Deformation Lattice Modeling
모델링되는 객체를 둘러싸고 있는 이상적인 격자점을 3D 오브젝트에 적용함으로서 객체의 모양을 변경하는 것입니다. 격자의 이동은 객체에 강제로 영향을 미치게 하는 원인이 되며, 객체를 훼손시키는 원인이 되기도 합니다.
▷ Direct3D
개발자가 3D 처리의 부하를 전용 하드웨어를 통하여 덜어주는 방법에 의하여 게임을 더욱 빠르게 하고 더좋은 화질을 보여주는 것을 가능하게 하는것을 도와주는 3D 그래픽용 하드웨 어 가속을 사용하는 것을 가능하게 하는 프로그래밍된 API(Appliacation Programing Interface). Microsoft 사에서 제창한 규격입니다.
▷ Displacement Map
bump-mapping 상황에서, 어떻게 Shadowing 작용을 통하여 범프작용이 유사하게 되는지를 묘사하는 회색 2D 이미지.
▷ Dithering
이미지의 색상이 높은 색상에서 낮은 색상으로 낮어질때, Dither Down 이라고 합니다. 이중 상은 잃어버린 색상데이터가 우리눈으로 볼때 점이찍힌 형태나 인공물(깨짐증상)로 보여지 게 할 것입니다.
▷ Dynamic Attachment
하나의 껍데기나 객체가 다른 객체로 붙는것을 말합니다. 부드러운 껍데기로 3D 객체의 골 격을 둘러싸게 하는것은 폴리곤이 만나는 모서리가 있는 부분의 보이는 접합부분의 문제를 피하게 됩니다
▷ Environment Mapping
텍스쳐를 둘러싸고 있는 그 자체의 주변물의 영상을 정확하게 맵핑하는 텍스쳐 처리능력을 의미함. 이 기능은 예를 들어 크롬을 비슷하게 표현하게 하는 경우 높은 반사효과를 텍스쳐 에 할당하는데 유용합니다.
▷ Extruding
2차원의 경로 윤곽선 또는 3D 공간의 형태를 2D의 경로로 평면 수직확장 방법에 의해 그리 는것.
▷ Filtering
하나의 이미지에 픽셀포인트를 이용하는 기능으로서, 이웃한 픽셀값사이의 비교를 수행하 고, 두개의 픽셀 RGB 값이 삽입되게 되는 필터를 적용하여, 그때 이 포인트를 그 픽셀에 적용합니다. 이러한 기능의 예로는 Bilinear Filtering 및 Trilinear Filtering이 있읍 니다.
▷ Fogging
주변을 안개와 아주 비슷하게 표현하기위해 3D카드에서 필요한 기능이며 안개안에 들어간 객체를 정확하게 렌더링하는 것입니다. Fogging은 유사한 깊이와 분위기를 만듭니다. 더 멀리 떨어진 객체 또는 영역일수록 안개에 둘러싸인 것과 아주 유사하게 표현될 것입니 다.
▷ FPS
초당 프레임수입니다. 초당 횟수는 한 장면이 다시 그려져서 연속된 애니메이션의 착시현상 을 만들게 됩니다. 보통 영화의 경우 초당 24프레임 이며 게임에서 적절한 프레임 수는 30-40 정도가 좋습니다.
▷ Frame Buffer
화면에 표시되는 정보를 임시로 저장하기위한 메모리 블럭입니다. 그래픽카드는 보통 적은 메가바이트의 빠른메모리를 이 기능을 사용하기 위한 목적으로 가지고 있읍니다. 프레임 버퍼가 커질수록, 컴퓨터에 색상을 표시할수 있는 해상도가 높아지게 됩니다. 3D 그래픽카드는 프레임버퍼에서 3D객체및 텍스쳐를 또한 저장하게 될것입니다.
▷ Gamma Correction (감마 보정기능)
하나의 이미지의 적색,녹색,청색(RGB)감마값을 조정하는 기능입니다. 이 기능은 이미지를 얼마나 밝게 하거나 어둡게 하는지에 대해 영향을 줄수가 있읍니다.
▷ Geometric Distortion
화면에 표시되는 내용이 왜곡되거나 정상비율이 벗어나는 영상적인 결함, 직선이 곡선으로 보이고, 정사각형이 직사각형으로 보이고, 완벽한 원이 연장된 타원으로 보입니다.
▷ Geometry Transformation
화면에 나타나는 3D 객체의 골격을 렌더링하는 과정
▷ Glide
3Dfx사의 독자적인 VooDoo 계열의 3D 가속기 용 3D프로그래밍 함수입니다. 일반적으로 Direct 3D및 OpenGL 보다도 프로그래밍하기가 쉬우며 빠릅니다.
▷ Gouraud Shading
실감나는 3D환경을 창조하기 위해 3D폴리곤에 그림자 효과를 주는 과정
▷ Graphic Aperture Size
텍스쳐 데이터를 저장하기위해 AGP카드에서 사용하는 용도로 지정된 시스템 메모리의 양
▷ Level of Detail
그자체의 다중크기에 주어진 그래픽이 가지고있는 내용, 작은크기로 부터 높은해상도에 적용되고 있읍니다. 게임에서 각각의 다른 레벨의 세부 텍스쳐는 처리속도를 유지하기 위해 사용되곤 합니다. 세부레벨이 낮아질수록 해상도는 낮아지고, 그 크기는 작아집니다.
▷ Lighting Effects
게임에서 어떤종류의 픽셀을 밝아지게하는 작용이 각각의 객체에 광원으로 빛나는 효과를 비슷하게 표현하는 작용으로 수행되는 것입니다. 색상의 수가 많아질수록, 더욱더 실감나는 빛 효과를 나타나게 되며, 원래 빛이나는 색상부터 완전하게 빛나는 색상의 변화를 화면에 표현하여 줄수가 있읍니다.
▷ Meshes
컴퓨터 3D 객체의 표현입니다. 화면에 나타나는 3D 객체의 표면에 가까운 평면 폴리곤들의 집합입니다.
▷ Mip-mapping
비율화된 텍스쳐 맵에 사용되는 사용되는 기술로 두개의 매번 상반된 텍스쳐량(예: 1/4, 1/16, 1/32등)을 분류하기 위한 부 이미지를 만들어내는 부분을 포함하고 있읍니다. Mip-map을 생성하는것은 시간이 소요되며 텍스쳐가 클수록 시간이 오래 소요되게 됩니다.
▷ Multipass Texturing
다중 텍스쳐를 이미지 생성이 완료될때까지 multiple texturing passes(블렌딩이라고 함)를 수행하는 방법에 의해 모델의 폴리곤에 적용하는 방법.
▷ Object"Popping"
하나의 객체가 게임에서 두개의 세부 텍스쳐 레벨간에 급작스럽게 전환될때 나타나는 혼란 된 효과입니다. 사실성을 떨어뜨리고 게임의 영상적인 자연스러움을 상쇄시킵니다.
▷ OpenGL
실리콘 그래픽사에서 개발한 비교적 사용하기 쉬운 프로그래밍 API 입니다. OpenGL은 Quake2,Half-life 를 포함한 최근게임및 다른 많은 대부분의 응용프로그램의 중요한 API 입니다.
▷ Per-object Polygon Allowances
3D 화면에서의 다양한 객체에 할당되는 세부적인 크기. 지속적인 세부레벨이 없으면, 이들 허용치는 고정됩니다. 지속적인 세부레벨이 있어야 이들 허용치가 화면의 복잡도및 시스템 성능을 기초로하여 다양하게 변경될수가 있읍니다.
▷ Per-pixel Mip-mapping
per-polygon mip-mapping과 반대되는 개념으로서, 이 기법을 적용시 pixel-by-pixel 기초의 3D 폴리곤 모델의 비율화된 텍스쳐에 영향을 미치게 되며, 보다 자연스러운 결과를 만들어 냅니다. 빛이나는 공이 큰 방으로 이동하는 장면의경우 이기법이 적용되는 좋은 예라고 할 수 있읍니다.
▷ Perspective Correct (원근 교정)
위치또는 원근과 관계없이 3D 공간에 나타나는 폴리곤에 정확하게 텍스쳐를 적용하는 것을 뜻함. 원근 교정이 없으면,폴리곤의 텍스쳐가 어른거리거나 불규칙적인 움직임을 일으켜 3D 영상의 비정상적인 배열의 원인이 됩니다.
▷ Pixelation
각각의 픽셀들을 보이게하는 효과. 일반적으로 폴리곤 객체와 시점이 가깝게 설정될때 다른 것보다 작은 텍스쳐 맵이 커지는 결과로 적용되게 됩니다.
▷ Point Sampling
스크린에 표시되는 어떠한 부드러운 필터도 적용되지 않은 텍스쳐를 말합니다. 이 기법이 적용되는 경우 세밀함이 떨어지고 픽셀이 고르치 않게됩니다.
▷ Polygon
3D 영상객체의 형태를 만드는 2D 형태(일반적으로 삼각형또는 직사각형) 일반적으로 3D 객체의 뼈대를 구성하기 위해서는 수백또는 수천의 폴리곤이 사용되게 됩니 다.
▷ Raytrace
빛의 줄기가 각각 광원으로부터 빛이나는 객체와 카메라의 그림자까지 추적해가는 3D 렌더 링 방법입니다. Shading 과 illumination은 대단히 실감나는 화면을 제공하며 실제의 굴절, 반사및 투명함을 렌더링하는데 필요합니다.
▷ Reflective Mapping
"반사되는" 객체의 표면 텍스쳐위의 주변객체의 이미지를 도식화하는 광원추적 렌더링 효과 입니다. 수평해상도와 수직이미지의 디테일은 각각의 화면요소 또는 픽셀로서 측정됩니다. S
▷ Skin
게임 등장인물들과 관계되어 이것들에게 특별한 텍스쳐 또는"모습"을 주기위하여 사용되는 그래픽 화일
▷ Software Rendering
3D 하드웨어를 사용하지 않고 3D 장면을 렌더링하는 방법,3D 그래픽처리 작업은 CPU에서 모두 수행합니다.
▷ Specular Shading
3D렌더링에서 현재의 광원을 정확하게 폴리곤의 표면으로 그대로 반사해줄수 있는 폴리곤의 기능입니다. Specular shading 또는 highlighting은 실질적인 표면의 빛속성이 광원의 위치 와 관찰자 양쪽을 고려하는 것을 말합니다. Specular highlights 어떻게 빛나게 표면이 보 이는지 분석을 요구합니다. Specular highlights효과가 많을수록, 표면은 더 빛나게 됩니다. T
▷ Texel
TEXture ELement의 줄임말입니다. 각각의 픽셀이 폴리곤에 적용될때 텍스쳐로서 사용되는 비트맵 그래픽을 구성하는 각각의 픽셀을 말합니다.
▷ Texture
그래픽적인 요소, 보통 3D 공간에서 맵핑되는 하나의 비트맵입니다.
▷ Textures
3D 객체의 표면 그래픽들입니다. 텍스쳐들이 없다면, 3D 객체는 벌거벗은 폴리곤의 뼈대와 같이 보이게 될것입니다. 텍스쳐들은 사실감을 추가하여 줍니다, 벽돌벽,도마뱀의 피부, 또는 번쩍이는 우주선의 금속표면은 이러한 텍스쳐들이 적용되어야 표현될수있읍니다. 3D 프로그램은 텍스쳐를 그래픽 패턴으로서 저장하고 이것을 폴리곤의 구조로 적용합니다.
▷ Texture Compression (텍스쳐 압축)
텍스쳐양이 풍부한 어떤 형태의 데이터(압축하드웨어에 의하여 정의된)를 대체하고 적은 크기의 팔렛트로 사용될수 있도록 최적화하여 대체하는 방법으로 큰크기의 데이터로부터 작은크기로 텍스쳐 데이터를 압축하여 줄여주는 기능입니다. 이 기능은 낮은색상의 텍스쳐 와 영상인공물 (깨짐증상)이 나타남으로서 디더링 효과가나타나게 되는 원인이 됩니다.
▷ Texture Seams
서로이웃하여 매핑된 두개의 텍스쳐사이의 영상 깨짐증상및 갈라진 픽셀입니다. 보통 갈라짐은 흰색또는 흰 픽셀이거나, 세밀하게 보게되면 배경 그림을 보게 될것입니다. 일반적으로 프로그래밍 또는 비디오 드라이버의 오류로 인해 발생됩니다.
▷ Texture Storage (텍스쳐 저장공간)
텍스쳐 데이터(폴리곤에 적용되게 되는 비트맵 그래픽)가 저장되는 매체를 가리킵니다. 텍스쳐 저장공간은 (가장빠른것부터 느린것 까지)그래픽카드의 비디오 메모리, 시스템 메모 리,또는 하드드라이브 까지 적용될수가 있읍니다.
▷ Texture-mapped
하나의 이미지가 객체의 표면을 표현하기위해 전면(全面)에 덮힌 3D 객체입니다. 이 기법은 3D 게임에서 사실감을 표현하는데 있어 가장 중요한 기법입니다. 거의 모든 3D 게임은 이 기법에 의존합니다.
▷ Texture-mapping
일반적으로 3차원공간에 폴리곤위에 있는 하나의 비트맵과 같은 하나의 그래픽 요소를 매핑 하는 과정입니다.
▷ Triangle Setup
하나의 트라이앵글이 렌더링되기 전에 발생되는 처리과정입니다. 이것은 대단히 많은양의 처리과정입니다. 이전세대의 3D 하드웨어는 이러한 처리과정을 CPU에서 수행하는 것이 필요하였읍니다. 현재의 3D 카드는 이러한 처리과정을 CPU에 부하를 주지않고 처리합니다.
▷ Trilinear Filtering
텍스쳐를 덜 픽셀화(부드럽게)되게 만드는 기법입니다. 이기법은 bilinear filter효과를 두개의 각각 의 텍스쳐면 위에있는 두개의 mip-maps 에 적용하는것을 포함하고 있읍니다. 최종적으로 필터링된 텍스쳐는 다시 필터링 처리가 됩니다, 따라서"세번" Trilinear 입니 다. Trilinear filtering은 집약적인 처리과정이나, 전체적인 객체를 부드럽게 보여주는 역할을 합니다.
▷ Triple-Buffering
3D 카드가 프레임버퍼안에 있는 세개의 작은 버퍼를 구성할수있게하는 기법입니다. 이 기법 은 다중출력프레임을 렌더링할수 있고 처리할수가 있게 됩니다. Double-buffering은 두번째 의 버퍼에 정보가 채워지는 동안 첫버째 버퍼가 사용되는 기법입니다. Triple-Buffering 은 여기에 제 3의 버퍼를 추가하는 것입니다. U
▷ Unified Memory Buffer (결합된 메모리 버퍼)
프레임버퍼와 텍스쳐 저장공간의 양역할을 동시에 수행하기 위한 비디오 메모리를 사용하기 위한 비디오 프로세서의 기능을 지칭합니다. 비디오 메모리 사용방법은 텍스쳐 저장공간의 최우선순위를 갖게되는 frame/Z-buffer 와 같은 비디오 카드 구조를 통하여 제어됩니다. frame/Z-buffer 가 할당된후에 충분한 메모리가 남아있지 않다면, 그래픽칩셋(AGP 슬롯에 장착된 AGP 1x/2x 기능을 가진 칩셋)에서는 텍스쳐공간을 위한 시스템 메모리를 사용하게 됩니다. 만일 AGP 1x/2x 기능이 없다면 비디오카드는 텍스쳐 정보를 하드 디스크로부터 가져오게 됩니다. 이렇게 처리되는 경우 3D 렌더링성능이 현저하게 떨어지게 됩니다. V
▷ Vertex
3D 그래픽을 화면에 그리기위하여 사용하는 폴리곤의 모서리(가장자리)입니다. 하나의 객체가 움직이거나, 사용자의 객체의 시점이 변화되면, 컴퓨터는 가상공간의 각각의 모서리의 새로운 위치를 반드시 재연산 하여야 합니다. 이 처리과정은 matrix multiplication이라 불리는 처리과정과 함께 수행됩니다. ※ matrix multiplication (행렬 복제) 각각의 폴리곤은 3D 공간에서 수학적인 행렬형태의 위치정보를 가지고 있읍니다. 객체가 움직이거나 Viewpoint 가 변경되는 경우 이 위치정보를 연속적으로 부드럽게 변화 시켜주어야 합니다. 이 과정에서 위치정보의 미세한 변화를 통한 세밀한 시점전환및 움직임 을 표현해주기 위해서는 각각의 처음의 위치정보와 그 다음 프레임의 위치정보를 동일한 행렬구조와 거의 유사하게 동일한 복제형태로 구현해서 표현하게 되는 것입니다.
▷ Volumetric
깊이가 있고 안개 분위기를 느끼게 하는 불투명한 효과,하나의 평면을 정의하는데 포함 됩니다. 폴리곤의 숫자를 줄이고"Pop-up" 된 장면을 피하기위해 3D 장면에 많이 채용 됩니다.
▷ Volumetric Lighting
미세한 요소에서 정의된 빛효과 입니다. 작은 요소에서 구성되어진 형태는 중간정도의 연기 나 안개와 같은 두께를 가진 공간을 지나 빛이 투과되는 효과를 줄수가 있읍니다.
▷ VRML
Virtual Reality Modeling Language의 준말로서 가상현실을 모델링할수 있는 언어란 뜻입니다. 브라우져를 통해 볼수 있는 인터넷을 이용하여 3D 환경을 설계할수 있게 도와주는 공개된 규격이며, VRML은 현재 많은사람이 사장되거나 실질적으로 필요가 없다고 생각하 고 있읍니다. VRML의 적용은 더딘 인증작업, 대역폭의 문제와 일반적으로 어떠한 공동규격 과 관련된 부분에서 충돌을 일으키는 문제등으로 인하여 사실상 불가능하게 되었읍니다.
▷ V-Sync
대부분의 3D 카드는 수직주파수와 버퍼스와핑을 동기화하기 때문에, 이것이 적용되는 이상 수직주파수 이하의 프레임 레이트가 나오게 됩니다. 어떤 3D 카드는 수직주파수와 버퍼 스와핑을 동기화 하지 않는 기능을 가능하게 하는 것이 있읍니다. 이 기능을 활성화시키는 경우 거의 항상 프레임 레이트가 높게나오지만 화질이 손상되는 결과가 나오게 됩니다. 3D 카드가 수직주파수와 동기화작용이 없이 렌더링 처리를 하게되면 이미지의 찢어짐이나 변형됨과 같은 혼란된 영상이 출력되게 됩니다.
▷ Z-Buffer
3D 카드에서, 비디오 메모리는 보통 3D 카드에서 하나의 장면을 적절하게 렌더링하여 모니터에 표시하여 주기위해서 요구되는 모든 종류의 데이터를 저장하는 프레임버퍼를 구성하기 위해서 사용 됩니다. 실시간으로 3D 세계에서 상호작용하는 텍스쳐 매핑된 폴리곤 의 출현으로, 위치를 추적하는 버퍼의 필요성이 대두되게 되었읍니다. 하나의 Z-buffer는 화면 픽셀의 Z축 값(3차원 공간에서 앞에서 뒤로)을 저장합니다. 이 값은 계속 출력되는 Z-값의 데이터를 픽셀이 그려지는 것과 관계없이 어떻게 나타나게될 픽셀을 덮어씌워 줄것 인지 정의하는 것과 비교됩니다. Z-Buffer가 얼마나 정확한지는 3D 가속기가 Z-Buffer 연산 을 어떻게해주는지, 이것에 얼마나 많은 메모리가 할당되었는지에 달려 있읍니다. 높은 색상의 렌더링에는 더많은 Z-Buffer 메모리가 필요하게 되며, 픽셀정보의 양은 더많은 색상사용으로 커지게 됩니다. Z-Buffer는 다른 객체로 가려진 장면 부분에서 렌더링을 하지 않음으로서 게임속도를 높이게 됩니다.
복셀(VOXEL)이란?
복셀은 어감상으로 볼 때 픽셀이라는 단어와 어딘지 모르게 유사한 느낌을 받을 수 있는 것처럼, 서로 비슷한 개념입니다. 픽셀은 2차원의 면을 잘게 나눈 조각을 의미하고, 복셀은 3차원 물체를 잘게 나눈 미세한 정육면체를 의미합니다. 3D 그래픽을 표현하는 기법으로 폴리곤과의 간단한 비교로 이해하기 쉽게 설명해보겠습니다.
폴리곤은 작은 2차원의 면으로 된 삼각형 조각을 이어서 3차원 물체를 만들어내는 것이지만, 복셀은 입체를 연결하고 연결해 3차원 물체를 만들어내는 기법을 말합니다. 처음에는 의학용으로 사용되기 위해 개발된 것이라는군요. 수술 시뮬레이션의 경우 피를 사실적으로 흘러내리게 표현해야 하는데, 폴리곤처럼 면으로 구성하려면 너무나 힘들기도 했고, 만든다고 해도 사실적으로 보이는 데에는 한계가 있었으니까요.
3차원 물체를 표현하는 데에 있어서 복셀은 폴리곤에 비해 훨씬 뛰어난 기능을 갖고 있다는 것이 일반적입니다. 평면으로 3차원 물체를 만들어내는 것보다, 3차원 물체를 이용해 더 커다란 3차원 물체를 만들어내는 것이 겉으로 보기에도 더 쉬워보이죠?
더 좋다는 것을 알면서도 대부분의 게임들에서는 복셀 기법을 도입하지 않고 있습니다. 이유는 3D 가속 기능을 사용할 수 없기 때문입니다. 폴리곤으로 만들어진 게임들은 수많은 3D 가속기를 통해 부드럽고 빠르게 화면에 표현할 수 있지만, 복셀은 만들어진 기반이 다른데다 용도가 달랐기에 이를 지원하는 가속기가 없습니다. 따라서 속도가 느려질 수밖에 없죠. 게다가 전적으로 CPU의 속도와 메모리의 양에 의존해야 하는데, 현재의 CPU로는 완벽하게 표현해낼 수 없을 정도랍니다.
그 대표적인 예가 얼마 전 보물섬에서 소개했던 델타 포스 2라는 게임입니다. 이 게임은 복셀 기법을 최초로 시도했습니다. 화면 전체에 복셀을 적용한 것이 아니라 지형의 구조에만 사용했음에도 불구하고, 게임 실행을 위한 시스템 사양은 엄청나게 높습니다. 펜티엄 II-400, 128MB 램의 사양에서도 느릴 정도... C&C: Tiberian Sun에도 약간의 복셀이 적용되는 덕분에 이전 버전에 비해 높은 사양을 요구하게 됐죠.
<그림 1> 델타 포스 2 실행 화면
참고로 한 가지 더 추가하면 델타 포스 2는 폴리곤과 복셀이 혼합되어 있는 최초의 게임으로 기록될 예정입니다. 건물과 사물 등의 표현에는 폴리곤이, 지형에는 복셀이 적용되어 있습니다.
<pan>
카메라의 위치(eye location)는 고정시키고 바라보는 방향(center of interest)만을 바꾸는 카메라 워크.
<tumble (orbit)>
pan과는 정반대로 바라보는 물체는 고정시킨 상태에서 카메라의 위치를 움직이는 것.
<track>
카메라의 위치와 바라보는 방향이 동시에 수평이동 하는 방식의 카메라 워크. 다른 용어들과 마찬가지로 실제 영화 촬영에서 사용되는 용어를 차용해 왔는데, 철길처럼 생긴 트랙 위에 카메라를 얹어서 움직이는 방식 때문에 붙여진 이름이다.
<dolly>
바라보는 오브젝트를 향해 수직 방향으로 (모니터 상에서는 z축) 카메라를 움직여 center of interest에 다가가거나 멀어지도록 하는 것.
<pitch>
카메라를 X축으로 회전시키는 것. 사람의 시선으로 비유하자면 고개를 끄덕일 때 보여지는 것과 같은 변화.
<yaw>
카메라를 Y축으로 회전시키는 것. 고개를 좌우로 돌리는 효과. pan, tumble, track, dolly등이 영화 촬영 용어에서 유래한 반면 pitch, yaw, roll등은 항법 용어 중 배나 비행기의 움직임을 나타내는 말에서 유래했다.
<roll (tilt)>
카메라를 Z축으로 회전시키는 것. 고개를 갸우뚱거리는 효과. 180도를 회전시키면 화면의 아래위가 거꾸로 되어 물구나무서기해서 보는 장면이 된다
<zoom>
실제 카메라에서 줌 렌즈를 사용하는 것처럼 카메라의 위치변화나 움직임 없이 화면상에서 대상 오브젝트를 확대하거나 축소하는 것. 카메라의 위치를 움직여(dolly) 오브젝트 크기를 확대하거나 축소할 수도 있지만 zoom을 사용하면 단순히 오브젝트의 크기 변화 이외에 scene의 perspective 정도에도 변화가 생기는데, zoom in을 할수록 장면의 perspective가 강해지기 때문에 형태의 왜곡이 심해지고 반대로 zoom out을 할수록 투시 정도가 약해진다
<depth of field>
시야(cone of vision)에서 Z축 상의 거리에 의해 초점 구역을 설정해놓고 그보다 가깝거나 멀리 있는 오브젝트의 초점을 흐리는 기법. 실제 카메라 촬영에서의 피사계 심도를 뜻한다.
<clipping plane>
렌더링을 위해 계산을 수행할 때 아무 물체에도 닿지 않고 무한대로 뻗어나가는 빛을 계속해서 쫓아갈 수는 없기 때문에 시점에서부터 일정거리 이상 멀리 있는 물체는 렌더링 하지 않도록 하는 한계를 설정하게 되는데 이 한계값으로 설정된 평면을 far clipping plane이라고 한다. 마찬가지로 시점에 지극히 근접해있는 오브젝트들도 렌더링에서 제외되는데 이 가까운 한계값으로 설정된 평면은 near clipping plane이라고 한다. 원래 사람 눈의 경우에는 시점에서부터 원추형으로 시야가 뻗어나가게 되지만 컴퓨터의 경우 결과물을 출력하는 모니터가 사각형이기 때문에 사각뿔의 형태로 시선 영역을 설정하게 되고 far clipping plane과 near clipping plane에 의해 이 사각뿔의 꼭지점과 밑단이 잘려나간, 옆에서 보기에 사다리꼴처럼 생긴 입방체 형태의 가상의 영역이 렌더링을 위해 생성되는데 이것을 viewing frustum이라고 한다.
<lens length>
사람의 눈은 일반적으로 쓰이는 35mm 카메라에서 50mm렌즈를 사용해 사물을 바라보는 것과 비슷한 정도의 투시(perspective)를 갖고 있다. 50mm보다 초점거리가 짧은 렌즈를 사용할수록 보여지는 대상 오브젝트들의 형태는 왜곡되어 보이게 되고 반대로 50mm보다 초점 거리가 긴 렌즈를 사용할수록 물체의 투시 정도가 줄어들게 되는데, 예를 들어 20mm정도의 광각렌즈를 사용하면 시야 각은 넓어지는 대신에 마치 어항 속 물고기의 눈으로 세상을 보는 것처럼 물체들이 심하게 왜곡되어 실제의 스케일보다 거대한 물체처럼 보이고 반대로 100mm나 그 이상의 망원렌즈를 사용하게 되면 별로 원근감을 느낄 수 없을 정도로 평평한 이미지를 얻게된다.
<3D scanning>
수작업 모델링에 소요되는 막대한 시간과 단조롭고 고된 작업량을 줄이기 위해 실제 오브젝트를 스캔할 수 있다. 3D스캐너는 일반적으로 회전하는 플랫폼 위에 오브젝트를 올려놓고 레이저빔으로 오브젝트의 표면을 스캔하는 방식을 취하며, 사람의 몸처럼 좀 더 큰 오브젝트를 스캔하기 위해 사용하는 스캐너는 고정된 플렛폼 주변으로 레이저빔이 회전하기도 한다.
<3D digitizing>
3D 스캐닝의 일종이지만 센서를 손으로 직접 움직여 가면서 오브젝트의 표면을 스캐닝 하는 방식. 오브젝트가 복잡해서 레이저빔을 사용할 때 자체 그림자가 생기는 경우에 사용하기 적합한 방식이다.
<Normal>
법선, 수직선. 특히 폴리곤 평면의 수직방향을 뜻하는 surface normal은 광원과 이루는 각도에 의해 그 평면의 밝기를 결정하는
<Polygon>
3개 혹은 그보다 많은 수의 직선 모서리로 둘러싸인 다각형. 또는 그렇게 이루어진 영역. polygon의 모서리는 edge이고, 그 모서리의 끝점은 vertex (pl. vertices)이다.
<Triangulation>
4개 이상의 모서리로 이루어진 폴리곤을 삼각형들의 조합이 되도록 쪼개는 것. 이렇게 하면 모든 폴리곤들이 평면이 되므로 작업과정상 문제의 소지가 적어지고 모델 데이터의 호환성도 좋아지는 반면 데이터의 크기는 커진다.
<Patch (Surface)>
커브(일반적으로 U방향과 V방향 두 개)로부터 생성된 표면. 생성한 커브의 종류에 따라 b-spline patch, NURBS patch...등으로 나눈다. 보통은 평면이 아니라 3차원으로 굴곡진 표면을 가리키기 위해 사용하며, 패치로 이루어진 오브젝트는 솔리드 상태가 아니기 때문에 속이 텅 비어있게 된다. 또한 패치 오브젝트라고 할지라도 렌더링 할 때에는 내부적으로 폴리곤 평면으로 convert하게 된다
<Cardinal spline>
선을 구성하는 모든 컨트롤 포인트들을 통과하는 스플라인 커브. 카디널 스플라인의 장점은 컨트롤포인트의 위치와 커브가 그리는 궤적의 직접적인 상관관계에 있다. 특정한 지점을 지나는 커브를 그리기 위해서는 컨트롤포인트를 간단히 "그곳"에 위치시키면 된다. 하지만 컨트롤포인트의 위치가 의도하는 곡률에서 조금이라도 벗어나게 되면 이러한 직접적인 상관관계는 부드럽고 완만한 곡선을 그리기 위해서는 오히려 불편함이 될 수도 있다
<Bezier spline>
개발자의 이름을 딴 Bezier 커브는 카디널스플라인과 마찬가지로 모든 컨트롤포인트들을 통과하지만 각각의 컨트롤포인트마다 tangent vector라고 하는 방향과 길이를 동시에 표시하는 조절선을 가진다. 특정한 컨트롤 포인트에서 그 커브를 스치고 지나가는 이 접선(tangent)의 방향과 길이(vector)는 각각 그 스플라인 커브의 "곡률 방향" 및 tangent vector에 의해 "영향을 받는 범위"를 나타낸다.
<B-spline>
B는 수학용어로 basis를 뜻한다. Approximating spline의 일종인 B-spline은 카디널 스플라인과 달리 커브를 정의하는 어떤 컨트롤포인트도 통과하지 않고 단지 그 "근처"를 지나면서 커브를 구성한다. 따라서 같은 컨트롤포인트로 구성되는 커브라고 하더라도 카디널 스플라인에 비해 한층 부드럽고 완만한 곡률을 갖는 커브를 쉽게 그릴 수 있다.
Non-Uniform Rational B-Spline의 약자인 넙스커브는 위에서 언급된 스플라인 커브들의 장점을 고루 갖고 있다. 카디널 스플라인처럼 커브의 시작점과 끝점에서는 컨트롤 포인트를 지나면서도 중간 점들에서는 Approximating spline처럼 컨트롤 포인트 "주변"을 지나기 때문에 부드러운 곡률을 갖는다. 또한 넙스커브는 컨트롤포인트 외에 커브위에 존재하는 edit point라고하는 별도의 조절 점들을 갖기 때문에 상황에 따라 정확도가 필요한 경우에는 카디널 스플라인처럼 직접 커브가 지나는 위치를 조절을 할 수도 있다. 넙스커브가 가지는 또 하나의 중요한 특징은, 각각의 컨트롤 포인트마다 weight를 조정할 수 있다는 점인데 이 웨이트값이 클수록 커브는 그 컨트롤 포인트 쪽으로 치우치게 되므로 컨트롤 포인트의 위치이동 없이 커브의 미세한 곡률까지 조정할 수 있다. 단 웨이트값에 변화를 주게 되면 결과물의 렌더링 시간이 늘어나게 되고 데이터 호환에 있어서도 문제가 생길 수 있기 때문에 주의를 요한다.
<Shader>
물체 표면의 색 변화를 생성해내기 위한 알고리즘. 기본적으로 오브젝트 표면의 normal(법선, 수직방향)값에 대한 정보와 투명도나 반사도, 물체 색상 등의 일반적인 표면 속성, 조명의 종류와 개수와 방향 등에 대한 정보들을 이용해 계산한다. 일반적인 shading방식으로는 constant(uniform), lambert, gouraud, phong, blinn등이 있다.
<Constant (Uniform, Faceted) shading>
하나의 평면을 한가지 색상으로만 shading하는 가장 단순하고 빠른 방식의 shader. 각 폴리곤의 surface normal값이 광원과 이루는 각도를 계산해서 표면의 밝기를 결정한다. surface normal값이 광원을 지향할수록, 다시 말해 표면이 광원을 정면으로 바라볼수록 밝은 색을 띄게 된다. 표면의 반사도나 조명의 세부 속성등을 계산에 포함시키지 않기 때문에 표면 색상이나 매핑된 이미지의 색상이 원래 지정한 색상에 가장 가깝지만 현실 세계에서는 평면이라고 하더라도 한가지 색상만으로 이루어지는 경우가 없으므로 shading 된 이미지의 현실감은 별로 기대 할 수 없고 인접한 다른 폴리곤과의 모서리를 부드럽게 보간(interpolating)하지도 않는다.
<Gouraud shading>
개발자인 Henri Gouraud의 이름을 딴 gouraud shading은 phong, blinn등과 함께 각 폴리곤의 모서리들을 부드럽게 처리해서 곡면처럼 보이게 해 주는 smooth shading방식의 일종이다. 인접한 다른 폴리곤의 surface normal값과의 평균값을 계산해서 얻어진 normal값으로 그 해당 모서리에서의 표면 색깔을 설정하고 마찬가지로 계산된 맞은편 모서리까지의 표면 색 변화를 보간 하는 방식을 취한다. smooth shading방식 중 가장 단순하고 빠르기 때문에 작업중인 오브젝트의 형태를 실시간으로 보여주는 shading방식으로 많이 사용되며 하이엔드 그래픽 워크스테이션에서는 gouraud shading 알고리즘을 하드웨어에 심어서 더욱 속도를 향상시키기도 한다. 하지만 단순하고 빠른 만큼 단점도 가지고 있는데 그 중 가장 심각한 것이 각 폴리곤의 모서리 경계선 모양이 드러나 보인다는 점이다. 특히 물체 표면의 하이라이트가 맺히는 부분에서 더욱 부드럽지 못하고 어색하다. 이를 해결하는 방식이 phong shading이다.
<Lambert shading >
Gouraud shading을 기반으로 하는 알고리즘으로 표면의 반사도를 고려하지 않기 때문에 분필처럼 약간 거칠고 푸석푸석한 느낌을 주는 무광택 물체를 표현하기에 적합하다.
<Phong shading>
phong shading방식은 gouraud shading의 다소 부자연스러운 smoothing 문제를 해결하기 위해 약간 다른 계산 방식을 취한다. 인접 폴리곤의 surface normal값과의 평균으로 그 모서리의 normal값을 구하는 것까지는 같지만 그 normal값으로 표면 색을 계산해서 색을 보간 하는 것이 아니라 normal값 자체를 보간해서 결과적으로 보여지게 될 이미지의 각 픽셀별로 색을 계산하게 된다. 따라서 gouraud shading에 비해 한결 부드럽게 shading된 결과물을 얻을 수 있지만 자연히 계산에 소요되는 시간은 더 길어지게 된다. 일반적으로 플라스틱 질감을 표현하기에 적합하다고 말해진다. 1973년 Bui Tuong Phong에 의해 개발되어 오늘날 가장 많이 쓰이는 shading방식 중 하나가 되었다.
<Blinn shading >
퐁 shading방식과 거의 유사하지만 하이라이트가 맺히는 부분에서 광원을 보다 정확하게 반사해주기 때문에 금속 질감의 표현에 적합하다. James Blinn에 의해 개발되었다.
<Rendering>
최종 결과물로서의 이미지를 생성하는 것. 렌더링 알고리즘으로는 ray casting, ray tracing, radiosity 등이 있고 각 렌더링 알고리즘은 물체의 표면 색상을 계산하기 위해 shader 들을 서브 알고리즘으로 사용한다.
<Ray casting>
보는 이의 시점(실제로는 카메라의 시점)에서부터 특정 픽셀을 통해 빛을 투사(cast)해서 이 빛이 물체에 닿거나 보이는 영역에서 벗어날 때까지 따라감으로써 그 해당 픽셀의 색을 결정해 렌더링 이미지를 생성하는 방식. 물론 그 빛이 아무 물체에도 닿지 않는다면 해당 픽셀은 검은색이 되고, 빛이 어떤 오브젝트 표면에 도달하게 되면 프로그램은 그 빛이 hitting된 지점에서의 오브젝트 색상을 계산해서(이때 특정 shader를 sub-algorithm으로 사용하게된다) 그 값을 해당 픽셀의 색으로 결정한다. 생성될 전체 이미지의 각각의 픽셀마다 순차적으로 위와 같은 과정을 반복한다.
Ray casting은 작업 공간에 존재하는 오브젝트가 여러 개라고 할지라도 그 계산 방식의 특성상 각각 따로 존재하는 것처럼 렌더링하기 때문에 물체간의 반사나 투명도가 있는 물체를 표현하거나 물체 서로간에 그림자를 드리우는 효과를 계산할 수가 없다. 따라서 그러한 효과를 흉내내기 위해서 일종의 편법들을 사용하게 되는데 예를 들어 표면 반사를 위해서는 reflection mapping을 사용하고, 투명 오브젝트를 위해서는 겹쳐지는 두 오브젝트의 색상을 섞어서 (물론 이때 굴절은 기대할 수 없지만) 사용하며, 그림자는 z-buffer의 정보를 적절히 활용해서 만들어 주게 된다.
[이해를 돕기 위해 그림을 준비중입니다]
<Ray tracing>
Ray tracing방식의 렌더링 알고리즘은 scene을 구성하는 모든 오브젝트들을 한꺼번에 다루기 때문에, ray casting 방식에서 한번에 하나의 오브젝트만을 계산함으로서 생기는 몇 가지 한계들(반사나 굴절, 그림자의 생성)을 해결한다. 특정 오브젝트 한 지점에서의 색을 결정하기 위해서는 조명으로부터의 직접적인 빛뿐만 아니라 다른 오브젝트로부터 반사나 굴절된 빛, 혹은 드리워진 그림자의 영향까지도 고려해야 하는데 ray tracing 방식은 시점에서부터 거꾸로 (현실에서처럼 광원으로부터 빛을 추적하자면 무수히 많은 필요 없는 계산까지 해야하므로) 반사나 굴절되는 빛을 역 추적해 나감으로써 오브젝트 서로간에 주고받는 빛의 영향을 계산해 오브젝트 표면색상을 결정하게 된다. 예를 들어 시점에서부터 역 추적되는 빛이 반사도가 지정된 오브젝트의 표면에 부딪히게되면 그 표면이 시점과 이루는 반사각에 따라 방향이 바뀌어진 빛을 계속 추적하게 되고, 다시 그 빛이 유리와 같이 반사도와 투명도를 동시에 갖는 물체에 부딪히면 통과하는 빛(지정된 굴절률에 따라 방향이 약간 틀어진 상태로)과 반사되는 빛 두 갈래로 갈라져서 각각의 빛을 계속 추적하는 식으로 그 빛이 시선에서 사라지거나 반사도가 전혀 없는 물체에 닿거나 혹은 미리 지정된 반사 횟수(depth)에 이를 때까지(거울을 마주 놓은 것처럼 끊임없이 반복될 수도 있으므로) 계산을 계속하게 된다. 이처럼 오브젝트의 색상을 결정하기 위해서 해당 오브젝트뿐만 아니라 그 오브젝트에 영향을 미치는 요소들까지 추적해서 계산해야 하므로 ray casting 방식에 비해 계산량이 훨씬 많아지고 렌더링에 소요되는 시간 또한 길어지게 된다. Ray casting 방식으로는 해결 할 수 없는 많은 광학적 효과들을 ray tracing이 해결해 주기는 하지만 알고리즘의 특성상 빛의 확산(현실 세계에서는 반사도가 전혀 없는 종이같은 물체에서도 확산광이 반사된다)이나 회절효과를 기대 할 수 없기 때문에 일반적으로 "자연스럽게" 보이기에는 너무나 선명한 다소 "환상적"인 이미지를 결과물로 얻게 된다. 특히 smooth shadow 같은 추가적인 계산으로 그림자의 후반부를 흐려주지 않으면 오브젝트 외곽선 그대로의 비사실적인 선명한 그림자가 생성된다. Ray tracing 알고리즘의 이러한 단점은 radiosity 방식에 의해 매우 효과적으로 해결 될 수 있다.
<Radiosity>
Radiosity 렌더링 알고리즘에서는 광원으로부터의 빛뿐만 아니라 오브젝트 서로간에 주고받는 빛의 영향, 확산광 등을 계산하기 위해 모든 surface들을 광량(光量)의 분포에 따라 다시 작은 조각들로 쪼개어서 계산한다. 예를 들어 커다란 흰색 회벽 앞에 두꺼운 빨간색 종이가 벽을 비스듬히 바라보도록 세워져 있는 장면이 있다고 가정할 때 (ray tracing 렌더링 방식에서는 이런 경우 두 물체 모두 반사도가 없으므로 서로 영향을 미치지 않는다) 빨간색 종이로부터 반사된 확산광의 영향을 받아 불그스름해지는 부분은 큰 회벽의 전체 면에서 종이와 가까운 일부분이기 때문에 그 영향을 받는 정도에 따라 하나의 회벽 표면을 여러 조각으로 subdivide하게 되는데, 이때 빛의 변화 정도가 급격한 부분은 매우 잘게 쪼개고 특별히 빛의 변화가 별로 없는 부분은 큰 면으로 듬성듬성 쪼개게 된다(그림 참조). 일단 빛의 분포에 따라 면을 쪼갠 후에는 각각의 조각들이 서로 얼마나 가까이 있는지, 어느 정도의 각도로 서로 마주보고 있는지를 확인해서 form-factor를 결정하게 되는데 두 개의 면이 매우 가까운 거리에서 서로 마주보고 있다면 1에 가까운 값이 되고 반대로 먼 거리에서 매우 벌어진 각도로 바라보기 때문에 서로 영향을 거의 미치지 않는다면 form-factor는 0에 가까운 값이 된다. 이렇게 결정된 form-factor값을 이용해 surface들 서로간에 주고받는 빛의 양과 색을 계산함으로써 해당 surface의 색을 결정하게 된다. Radiosity 방식은 위와 같은 알고리즘의 특성 때문에 빛을 받는 모든 surface들이 사실상 광원의 역할을 하므로 Ray tracing이나 Ray casting과는 달리 현실 세계에서처럼 창문을 통해 들어오는 하나의 광원만으로도 실내의 구석구석까지 자연스럽게 밝아지는 매우 효과적이면서도 사실적인 결과물을 얻을 수 있지만 보다 자연스러운 효과를 얻기 위해서는 늘 그렇듯이 CPU에 부과되는 계산량이 다른 렌더링 방식에 비해 훨씬 많아지므로 렌더링 시간 또한 그와 비례해서 늘어나게 된다. Radiosity 렌더링 방식의 또 한가지 특징은, scene을 구성하는 오브젝트들의 위치가 변하지 않는 이상 form-factor값에는 변화가 없기 때문에 시점의 변화에 따른 반복적인 계산이 훨씬 줄어든다는 점(hidden surface removal, specularity등만 다시 계산하면 되므로)인데 이는 특히 건축물의 인테리어 등을 시뮬레이션 할 때 큰 장점으로 작용한다.
<Scan-line rendering>
모든 디지털 이미지들은 픽셀이라고 불리는 각각의 미세한 점들의 집합으로 이루어져 있는데 화면상에서 이 픽셀들의 가로 한 줄을 scan-line이라고 한다. 따라서 스켄라인 렌더링이란, 프로그램이 한 픽셀에서 다음 픽셀로, 한 줄의 스켄라인이 렌더링 되면 다음 스켄라인으로 넘어가는 식으로 순차적으로 각 픽셀들의 색상을 계산해 나가는 방식을 말한다. 일반적으로 디폴트 픽셀 컬러인 검정화면에서 시작해 차츰 위쪽 스켄라인에서부터 렌더링 된 픽셀들이 화면에 표시되는 것을 볼 수 있는데 이것이 스켄라인 방식으로 렌더링 되고 있음을 보여주는 것이다. 이렇게 픽셀, 스켄라인들을 순차적으로 렌더링 하는 방식의 장점 중 하나가 이미지 하나를 몇 개의 스켄라인 set으로 나누어 여러 대의 컴퓨터에서 따로 렌더링 한 후 나중에 하나의 이미지로 합칠 수 있다는 점이다.
<Painter's algorithm>
하나 이상의 오브젝트들로 구성된 scene을 렌더링 하는 경우 시선에 가까이 있는 물체 때문에 멀리 있는 물체의 일부 또는 전체가 가려질 수 있는데, 이렇게 보여질 물체와 가려질 물체를 구분하는 방식 중의 하나가 painter's algorithm이다. 화가가 그림을 그릴 때 우선 배경을 그리고 나서 가까이 있는 오브젝트를 그 위에 덧칠해 그려나가는 방식에서 그 이름을 따왔다. 렌더링을 시작하기 전에 모든 오브젝트들을 (사실상 모든 폴리곤들을) 시점에서부터의 거리 값을 기준으로 sorting하고 거리가 먼 오브젝트부터 렌더링을 시작해서 가까이 있는 오브젝트가 그 위로 덮어씌워지도록 렌더링 하는 방식이다. 장면을 구성하는 모든 폴리곤들을 미리 정렬해야하는 이유로 렌더링 시간이 오래 걸리기 때문에 이를 해결하는 유용한 대안으로 z-buffer algorithm이 주로 사용된다.
<Z-buffer algorithm>
컴퓨터로 어떤 이미지를 렌더링 할 때 그 그림에 대한 디지털 정보들은 frame buffer라고 불리는 특정 메모리 블럭에 각 픽셀별 색상값의 형태로 임시 저장되게 되는데, z-buffer algorithm에서는 각 오브젝트별로 시점에서부터의 깊이를 판별하기 위해 frame buffer와 거의 유사한 방식의 z-buffer를 사용한다. 이때 z-buffer에 저장되는 값은 픽셀별 색상값이 아니라 시점에서부터의 거리값이 되는데 거리가 멀수록 큰 값을, 가까울수록 작은 값을 할당한다. z-buffer algorithm의 경우 painter's algorithm처럼 미리 sorting하지 않았기 때문에 특별한 순서 없이 무작위로 오브젝트들을 렌더링 하게 되는데, 이미 계산되어 거리값이 지정된 픽셀에 또 다른 오브젝트가 중복되게 되면 새로 계산된 값과 이미 지정된 값을 비교해서 작은 값(가까운 오브젝트)을 취하게 된다. 이러한 z-buffer algorithm은 속도가 빠르기도 하지만 같은 정보가 물체의 그림자를 만들어주거나 범프매핑 등의 맵을 생성할 때도 유용하게 사용되기 때문에 매우 널리 사용되고 있다. 하이엔드 그래픽 워크스테이션이나 그래픽 가속보드에서는 z-buffering 기능을 하드웨어상에서 지원하기 때문에 실시간 depth sorting이 가능하다.
<Transparency mapping>
매핑된 이미지의 명도 단계에 따라 오브젝트의 투명도를 조절하는 방식. 보통 흰색 부분은 투명하게 검은색 부분은 불투명하게 처리한다.
<Bump mapping>
매핑 이미지의 명도 단계가 shading시의 surface normal값에 영향을 미치도록 하여 마치 오브젝트 표면이 굴곡지거나 울룩불룩한 것처럼 보이도록 하는 방식. 실제로 모델링 데이터에는 영향을 미치지 않기 때문에 오브젝트의 외곽선에서는 굴곡이 반영되지 않는다.
<Displacement mapping>
범프 매핑과 거의 비슷한 효과를 생성하지만 shading 할 때 실제로 오브젝트 geometry 자체에 영향을 주기 때문에 물체의 외곽선 까지 굴곡진 효과가 나타나게 되어 한층 사실감 있는 이미지를 얻을 수 있다. 보통 shading 할 때에만 효과를 계산하지만 경우에 따라 디스플레이스먼트 된 서피스로부터 모델링 데이터를 추출할 수도 있다.
<Reflection mapping>
ray-tracing방식의 단점인 긴 렌더링 시간을 단축하면서도 그와 비슷한 표면의 반사 효과를 얻기 위해 쓰이는 매핑방식. 우리 눈에 반사될 이미지를 미리 렌더링 하여 해당 표면에 매핑하는 방법으로, Phong shading과 함께 쓰이면 어지간한 ray-tracing 이미지 못지않은 현실감 있는 결과물을 훨씬 적은 렌더링 시간을 투자해서 얻을 수 있다. 일렉트릭 이미지가 대표적으로 ray-tracing 대신 이 방식을 택한다.
<Texture mapping>
2차원의 패턴이나 이미지를 3차원 물체의 표면에 감싸 입히는 방법. 텍스춰 매핑에 따라 단순한 기본 오브젝트만 가지고도 상당한 실재감을 주기도 한다. 매핑 될 이미지를 오브젝트에 어떻게 투영(projection) 하는가에 따라 평평한 면에 한 방향으로 투영하는 planar, 원기둥 형태로 감싸서 투영하는 cylindrical, 구의 형태로 감싸는 spherical 등의 방식이 있다.
<Procedural texture>
평면의 이미지를 오브젝트 표면에 감싸는 방식이 아니라 수학적 알고리즘에 의해 표면 텍스춰를 생성해 내는 방식. 주로 대리석이나 나무 무늬처럼 렌덤한 이미지 패턴을 생성해 내기 위해서 사용된다. 그림처럼 대리석 재질을 입힌 원기둥이 있다고 할 때 2D 이미지 매핑의 경우 자른 단면(그림에서의 원기둥 윗면)의 대리석 무늬를 표현하기 위새서는 따로 단면의 이미지를 입혀야 하고 그럴 경우라도 윗면과 옆면의 무늬를 일치시켜야하는 번거로움이 있지만 프로시져럴 텍스춰를 쓰면 이러한 문제를 쉽게 해결할 수 있다.
<Color>
가장 기본적인 표면 속성중 하나인 색상은, 흰색 조명(가시광선 스펙트럼의 모든 색 빛을 포함)을 받았을 때 해당 오브젝트의 표면이 흡수하지 않고 반사시키는 색들의 조합에 의해 결정된다. 무광택(matte)의 파란색 플라스틱이라면 대부분의 조명 조건에서 그대로 파랗게 보이겠지만 조명 색이 흰색이 아닌 특정한 단색(red, green, blue 등등)이거나 광택 있는 물체의 표면이 조명 반사에 의해서 뿌옇게 흐려지거나 하면 원래의 표면색이 무엇인지 알아내기가 쉽지 않다. 또한 똑같이 짙은 파란색을 지정하더라도 대상 오브젝트가 투명도를 준 얇은 판이라면 약간 푸르스름해 보이는 정도이겠지만 두꺼워진다면 거의 검은색에 가깝게 보인다.
<Specular reflection >
오브젝트 표면에 맺히는 광원(light source)의 반사. 보통 하이라이트라고 불리는 반사부분이다. specularity는 표면의 매끈거리는 광택의 정도를 말한다. 오브젝트의 표면이 매끄러운 광택 재질이라면 광원의 모양이 거울처럼 또렷하게 반사되고 반대로 거칠거칠한 무광택 재질이라면 광원은 뿌옇게 번져 보이게 되므로 이 specular reflection의 크기와 번지는 정도를 조절하면 표면의 시각적 속성을 효과적으로 바꿀 수 있다. 한가지 주목할만한 사실은, 유리나 플라스틱같은 일반적인 재질은 표면색과 관계없이 광원색과 동일한 specular reflection 색상이 나타나지만 금속의 경우 그 금속의 색상이 specular reflection 색상에 영향을 주게 된다는 점이다. 예를 들어 파란색 플라스틱 구슬에 흰색 조명을 비추면 흰색 하이라이트가 맺히지만 같은 조명을 금으로 만들어진 구슬에 비추면 밝은 노란색 하이라이트가 맺히는 것을 관찰할 수 있다. 이점이 금속과 금속이 아닌 재질이 갖는 특성의 가장 큰 차이이다.
<Diffuseness>
오브젝트 표면이 전체적으로 난반사 및 확산시키는 빛의 양. 표면의 광택이나 반사도(mirror reflectance)와는 무관하게 오브젝트 전체적인 색감을 밝게 하거나 어둡게 할 때 diffuse값을 조절한다. 같은 표면색을 가지고 같은 강도의 조명을 받는 오브젝트라고 하더라도 diffuse값을 작게 지정하면 물체가 전체적으로 어둡게 된다.
<Reflectivity>
반사도. 반사도가 지정된 오브젝트는 표면 위에 주변의 물체들을 반사시키게 된다. 반사도가 0이면 전혀 반사시키지 않는 것을 뜻하고 1이면 거울과 같은 100%의 반사를 뜻한다. 고광택 재질의 표면이라고 하더라도 언제나 같은 반사값을 갖지는 않는데, 예를들어 극도로 고광택 처리된 플라스틱도 스테인레스와 같은 반사도를 가질 수는 없다. 이는 재료 자체의 물리적 특성으로 우리가 실제로 스테인레스와 고광택 은색 플라스틱을 시각적으로 혼동하지 않고 인식하는 이유이다.
<Transparency>
투명도. 반대로 불투명도는 opacity. transparency 값이 0이면 빛을 전혀 통과시키지 않는 불투명한 오브젝트이고 transparency 값이 1이면 전혀 보이지 않는 투명도 100%의 물체가 된다. 일반적으로 투명도를 높이면 이전에 지정했던 하이라이트의 강도가 약해지기 때문에 specularity값을 다시 조정해 주어야 한다.
<Refractivity>
굴절률. 물잔에 반쯤 잠겨있는 빨대가 수면에서 꺾여 보이거나 유리잔 뒤의 물체가 일그러져 보이는 등의 굴절 효과를 생성할 때 사용한다. 투명체를 통과하면서 빛이 꺾이는 정도를 뜻하며 IOR (index of refraction)이라고도 하는데, 굴절에 영향을 미치지 않는 공기의 굴절률이 1이고, 물이 1.33 (얼음 1.30), 유리는 1.2~1.9, 다이아몬드가 2.4의 굴절률을 갖는다. 물론 굴절 효과를 계산하기 위해서는 ray-tracing 방식으로 렌더링 해야한다
<Animation>
빠른 속도로 재생해 보여줌으로서 마치 화면 안의 대상물이 실재로 부드럽게 움직이는 것처럼 느껴지도록 하는 일련의 스틸 이미지들을 만들어 내는 것. 또는 그 결과물. 사람 눈의 생리적 특성인 잔상현상을 이용하는데 프레임(각각의 정지된 이미지) 사이의 간격이 이 잔상의 지속 시간을 초과할 정도로 길어지면 화면이 뚝뚝 끊어져 보이게 된다. 영화에서는 초당 24 프레임, 우리나라와 미국, 일본이 채택한 NTSC 비디오 방식에서는 초당 30 프레임, 유럽과 북한이 사용하는 PAL 비디오 방식에서는 초당 25 프레임을 사용한다.
<Key frame>
셀 애니메이션의 발생 초기에, 애니메이션 제작 과정을 보다 효율적으로 만들기 위해 월트 디즈니 스튜디오에서 개발했던 작업 방식에서 유래했다. 경험 많은 마스터 애니메이터가 중간 중간의 중요한 프레임(키프레임)들을 그리고 보조 애니메이터들이 그 사이(in-betweens)를 그려서 메워 넣는 방식이다. 컴퓨터를 이용한 애니메이션에서도 이 개념은 그대로 적용되는데 작업자가 특정 프레임들을 세팅해서 키 프레임으로 지정하면 컴퓨터가 그 사이의 프레임들을 계산해서 자동으로 보간(interpolating)해주게 된다.
<Interpolation>
애니메이션에서의 보간(Interpolation)이란 각 키 프레임들 사이의 중간 프레임들(in-betweens)을 생성해 내는 것을 말한다. 가장 단순한 종류의 보간 방식으로 linear interpolation이 있는데 이는 프레임 번호와 애니메이션 되는 속성(오브젝트의 위치, 크기, 색깔 등)의 변형(transformation) 값을 두 축으로 놓고 그래프를 그렸을 때 나타나는 모양이 직선이 되기 때문이다. 예를 들어 A지점에서 B지점까지의 위치 변화를 지정한 두 개의 키 프레임을 linear interpolation에 의해 보간 하면 A지점에서 B지점으로 등속 운동하는 애니메이션을 얻게 된다. 딱딱한 등속운동이 아니라 보다 자연스러운 움직임을 쉽고 직관적으로 컨트롤 할 수 있게 하기 위해 많은 3D 어플리케이션들이 이 그래프의 모양(function curve, fcurve, animation curve)을 스플라인 커브처럼 직접 수정할 수 있는 기능을 지원한다. 또한 이러한 보간 방식을 선형 보간법에 대비해 spline interpolation이라고 한다.
[이해를 돕기 위해 그림을 준비중입니다]
<In-betweening>
사용자에 의해 지정된 보간(interpolation) 방식에 의해 컴퓨터가 두 키 프레임 사이의 오브젝트 속성을 자동으로 계산해서 중간 프레임들을 생성하는 것.
<Ease in / Ease out>
스플라인 보간(spline interpolation)방식의 일종으로 특정 키 프레임에 연결되는 function curve의 기울기를 점차 완만하게 조정해서 오브젝트 속성의 변화 정도가 부드럽게 감속 또는 가속 되도록 하는 것.
<Collision detection>
보통 우리가 작업하는 가상의 3차원 공간에서는 오브젝트들이 서로간의 아무 간섭이나 충돌 없이 자유롭게 겹치거나 움직일 수 있다. 하지만 경우에 따라 현실세계에서처럼 오브젝트가 충돌하거나 서로 물리적인 영향을 주고받을 필요가 있는데 이럴 경우에 collision detection을 사용한다.
<Inverse Kinematics>
여러 개의 오브젝트가 계층구조에 의해 연결된 모델(hierarchical model)을 애니메이션 할 때, 기계적인 물체의 비교적 단순한 움직임이라면 다른 일반적인 애니메이션에서 오브젝트의 위치를 조정하듯이 움직임의 시작점이 되는 root로부터 한 단계씩 parents에서 children으로 내려오면서 각각의 오브젝트를 수동으로 조절 할 수 있다. 이것을 지금 설명할 inverse kinematics에 대비해서 forward kinematics라고 한다. 하지만 사람의 관절 움직임이나 동물의 움직임을 애니메이션 하고자할 때 일일이 각 링크 오브젝트들의 위치를 수정하는 것은 대단히 번거로운 작업이 될 뿐만 아니라 직관적이지 않은 만큼 자연스러운 움직임을 표현하기도 어렵다. 이러한 번거로움을 해결하기 위한 방식으로 계층구조(hierarchy) 말단의 최하위 오브젝트인 effector의 위치를 조정함으로써 최상위 고정점인 root까지 연결된 링크 오브젝트들의 위치에 역방향으로 영향을 미치도록 하는 방식이 개발되었는데 이것을 inverse kinematics라고 한다. 예를 들어 마주 서 있는 두 사람이 서로 악수하는 장면을 애니메이션 해야한다면 forward kinematics 방식으로는 어깨에서부터 손가락까지 연결된 관절을 하나씩 일일이 움직여 두 사람의 가운데 지점에서 두개의 손바닥이 마주 닿도록 위치를 조정해 주어야 하지만 inverse kinematics방식을 사용하면 각각의 손을 끌어다 놓기만 하면 상위에 링크된 팔 관절들까지 미리 지정된 움직임의 각도가 허용하는 범위 내에서 따라 움직이게 된다.
<Forward Kinematics>
계층구조(hierarchy)의 말단에 자리한 effector의 위치를 조정함으로써 root까지 연결된 상위 링크 오브젝트들의 위치에 역방향으로 영향을 미치도록 하는 inverse kinematics에 대비해, 움직임의 시작점이 되는 root로부터 한 단계씩 parents에서 children으로 내려오면서 각각의 오브젝트를 수동으로 조절하는 방식을 말한다.
DWG
Autodesk사의 AutoCAD용 file format.
확장자 : dwg
DXF (Drawing Exchage File Format)
Autodesk사의 AutoCAD용 file exchage format. 오토캐드(파일 포멧 DWG) 내부적으로 혹은 다른 3D프로그램들과의 data 호환을 가능하게 하기 위해 개발되었으며, 오토캐드가 업계에서 광범위하게 사용됨에 따라 DXF 데이터 포맷도 사실상 가장 널리 쓰이는 3D 데이터의 공통 포맷이 되었다. DXF 데이터의 특징은 파일 구조가 ASCII문자로 구성되어있어서 일반적인 텍스트 편집기로도 내용 확인과 수정이 가능하다는 점이지만 파일의 용량이 상당히 커지는 단점도 가지고 있다.
확장자 : dxf
IGES (Initial Graphics Exchange Specification)
특정한 프로그램을 위해서 개발된 다른 파일 포맷들과는 달리 IGES는 CAD/CAM 시스템들간의 데이터 호환을 목적으로 미국의 국립 표준국(the National Bureau of Standards)에 의해 1980년에 발표된 표준 포맷이다. 그 이후 여러 번의 버전 변화를 거쳐 99년 현재 5.3 버전이 사용되고 있다. 대표적인 또 하나의 데이터 호환 포맷인 DXF와 마찬가지로 ASCII text 형식을 취하고 있으며 스플라인 커브나 넙스 곡면을 사용할 수 있기 때문에 폴리곤 모델 데이터 외에도 넙스 모델 데이터의 호환에 유용하게 사용된다.
확장자 : iges/igs
LWO (Lightwave)
Newtek사의 LightWave용 파일 포멧
확장자 : lwo
OBJ (Wavefront file format specification)
Wavefront의 Visualizer고유 파일 포맷. DXF나 IGES 처럼 ASCII 형태(확장자 .obj)로 데이터를 저장할 수도 있고 binary 형식(확장자 .mod)으로 저장할 수도 있다. ASCII 형태인 OBJ로 저장을 하더라도 DXF나 IGES 만큼 데이터의 크기가 커지지는 않으며 MTL이라는 별도의 material 파일을 사용하기 때문에 모델 정보 이외에 texture map이나 material에 대한 데이터를 함께 옮길때에는 관련된 MTL 데이터도 찾아서 같이 옮겨야 한다.
확장자 : obj (for ASCII), mod (for binary)
RIB (Pixar RenderMan scene description file)
픽사(Pixar)사의 scene description language인 렌더맨(RenderMan)용 파일 포멧.
확장자 : rib
SDL (Scene Description Language)
Alias|Wavefront사의 Alias Studio, Power animator 등에서 사용되는 Scene Description Language. Scene을 셋팅한 후 렌더링 명령을 내리면 결과물 이미지파일(RGB파일) 생성에 들어가기 전에 자동으로 SDL 파일이 생성되며 이 SDL 데이터만 있으면 따로 모델 데이터(WIRE 파일)가 없이도 렌더링이 가능하다.
확장자 : sdl
STL (StereoLithography)
Albert Consulting Group에 의해 만들어진 데이터 포맷으로 삼각형 단위 구조로 이루어져 있으며 입체성형(rapid prototyping systems)에서 널리 표준으로 사용된다. ASCII와 binary 두 가지 포맷이 있다.
VRML(The Virtual Reality Modeling Language)
Web상에서 3차원의 가상현실과 하이퍼링크를 구현하기 위해 개발된 모델링 언어. 1994년 제1회 WWW 컨퍼런스에서 처음으로 개념이 언급되었으며, 단순히 웹에서 3D를 표현하는 가능성을 보여주었던 처음의 VRML 1.0 규약에서 시작하여 사용자 상호작용과 애니메이션기능이 강화된 VRML 2.0을 거쳐 지금은 1997년 8월 ISO(국제 표준기구)에 의해 승인된 VRML 97규약이 사용되고 있다.
3DMF (3D Metafile)
윈도우즈의 Open GL에 상응하는, Apple사의 3D API(Application program interface;실행프로그램의 기본 인터페이스)인 QuickDraw 3D용 파일 포맷. 모델 구조 뿐만 아니라 오브젝트 색상과 texture map등 많은 화면 구성 요소를 포함한다.
확장자 : 3dmf
3DS (3D-Studio File Format)
AutoDesk의 3D-Studio에서 사용되는 파일 포멧.
확장자 : 3ds
요새는 게임 회사에서 면접 볼때 간단히 제작 실무에 관한 용어들을 묻는 경우가 많다고 하더군요.
참, 출처는... 그냥 넘어가주시길... 정신없이 모은거라... 어디서 훔쳐왔는지 기억이... (^-^)a
중간에 가끔 이미지가 있긴 하지만 제가 요새 귀차니즘에 빠진 관계로...나중에 study 전용 자료실이 생기면 word문서로 올리죠. ^^
▷ 24-bit Precision
이 기능은 Z-Buffer와 내부 렌더링과 같은 비트수에 처리에 관한 부분을 정확하게 처리를 해주게 되는 기능입니다. 비트수가 높을수록 연산처리는 더욱 정확하게 될 것입니다. 이 기능은 화면에 나타나게 되는 화면 깨짐현상과 유사한 결함을 줄여주는 기능을 합니다. 부정확한 Z-Buffer연산은 트라이앵글이나 픽셀의 Drop 현상을 만들게 됩니다.
▷ 3D Engine
3차원공간의 형상을 만들기 위한 텍스쳐 맵이 적재된 Render polygonal 모델의 소프트웨어 적 순서의 집합
▷ 3DNow!
3D 그래픽의 속도를 올리고 x86-호환 프로세서의 다른 임무를 주는 21가지의 새로운 명령어. 1998년 AMD 사의 K6-2 프로세서에서 최초로 이 기술이 소개된 3DNow!는 사이릭스사및 IDT사 의 프로세서도 또한 지원합니다.
▷ Accelerated Graphics Port(AGP)
3D에만 모두 적용되지는 않으나 단순히 AGP를 적용한다는 것은 더욱 광대역이며 빠른 그래픽 카드로 부터 시스템 버스 경로와 비디오 카드로부터 텍스쳐 저장공간을 위한 시스템 메모리까지의 직접적인 경로를 제공하기 위하여 인텔이 개발한 상대적으로 새로운 규격을 적용하게 되는 것입니다. AGP는 개발자가 게임에서 더욱더 몰입된 영상및 실감나는 환경을 만들수 있도록 더 크고 지속적으로 더욱 세밀한 텍스쳐를 사용할수 있게 합니다.
▷ Algorithmic Procedure Texturing (텍스쳐 알고리즘 순서)
상(像)을 잠재적으로 rendering하여 제한없는 디테일을 생성할수 있도록하는 방법
▷ Alpha Blending
알파 블렌딩은 픽셀값을 주는 기능으로서 불투명하고,투명하거나 반투명인 객체를 렌더링 하는 기능입니다. 이는 액체나,보이지 않거나 부분적으로 저마다 보이지 않는 객체에도 적용될수 있읍니다.이 과정은 일반적으로 폭팔이나 물,불과 같은 특수효과를 묘사하는데 주로 사용됩니다.
▷ Anisotropic Filtering
일반적으로 최근의 게임에서 필요로하는 텍스쳐 필터링순서는 종종 anistropy(객체에 매핑 될때의 텍스쳐 픽셀의 연장선)를 위해 상쇄되지 않기도 합니다.이는 텍스쳐 세밀도 선택에 의존하는 blurring(객체를 흐리게 하는 작용) 또는 aliasing 기능을 가능하게 합니다. 뚜렷한 텍스쳐를 만들어내기 위해서, 3D Accellator는 텍스쳐가 하나의 객체에 맵핑될때에 픽셀이 원모양으로 정확하게 표현될수 있도록 하여주는 필터링해주는 anisotropic filtering 를 사용할수 있읍니다.
▷ Anti-aliasing
안티 알리아싱은 컴퓨터 화면에서 표헌되는 대각선의 들쑥날쑥한 끝부분을 부드럽게 해주는 필터링 기술입니다.
▷ Artifact
하나의 Artifact는 압축기술의 결점으로 인해 야기되는 하나의 그래픽측면에서의 결함 이라고 할수가 있읍니다. 이러한 결함은 단색으로 색표현시 종종 얼룩과 같은 현상으로 종종 나타납니다.
▷ Automatic Texture Compression (자동 텍스쳐 압축)
사용자 지연이 없이 실시간으로 텍스쳐를 압축하는 그래픽 카드의 기능입니다. 이 기능은 높은 해상도의 텍스쳐에서 사용시 더적은 텍스쳐 메모리에서 저장할수 있게 하나 일반적으로 텍스쳐 질이 떨어지게 됩니다. 그러나 S3 사의 텍스쳐 압축 기술인 S3 TC와 같은 텍스쳐 압축 기술은 장래성 있는 기술로서 앞으로 나오게 될 게임및 차세대 그래픽칩셋에서 적용될것이며 DirectX 6.0 이상에서 기본적으로 채용하고 있기도 합니다.
▷ Banding
Banding은 부드러운 색변화가 있는 곳에서 확실하게 나타나는 색의 띠가 명백할때 나타나는 경사면입니다. 이 문제는 Image나 장면이 너무 낮은 컬러수로 표현되어서 부드러운 경사면 이 보여지게되는 형태로 나타나게 될때 발생합니다.
▷ Bilinear Filtering
텍스쳐를 픽셀화가 적게 된것같이 보이게하는데 필요한 기법입니다. 이 과정은 RGB와 네개의 알파 Texel 값을 interpolating (삽입작용)및 평균화과정에 의하여 최종적으로 필터된 픽셀을 만드는 부분을 포함하고 있읍니다.
▷ Blocky
일종의 속어로서 부드럽고, 필터링된 텍스쳐에 반하여 딱딱하고 픽셀화된 텍스쳐를 지칭합니다.
▷ Bump-mapping
Bump-mapping은 영상 트릭의 일종으로서 텍스쳐의 거칠음 또는 부드러움을 보통 두개의 다른종류의 텍스쳐의 사용을 통하여 보여주게 되는데 하나는 실제 텍스쳐가 객체에 매핑된 것이며 다른하나는 얼마나 거칠거나 부드럽게 텍스쳐를 표현하는지를 확정하기 위해 사용되게 됩니다.
▷ Collision Detection
3D 객체를 물리학적으로 다른 객체와 공간및 시간측면에서 반작용하게 해주는 기능입니다. 최초로 3D 게임에서 사용했던 색상 조명효과는 백색광원 효과와 그림자에서 사용되었읍니다. CPU가 빨라지고 더나은 3D하드웨어가 나오면서, 게임은 이제 정말로 생동감있는 빛 효과를 이루는 각각 다른 색상을 섞게되는 순수한 기능을 가지게 되었읍니다.
▷ Compression Algorithm
얼마나 적절하게 하나의 이미지를 프로세서가 작은 패턴정보의 텍스쳐 데이터로 대신할수 있게 해주는지를 정의하는 공식. 최종적인 결과는 더작은 화일과 더 인공화된 객체의 형태로 나타나게 됩니다.
▷ Continuous Level of Detail
고정된 폴리곤 숫자를 보유하는것 대신에, 3D 객체는 가깝게 이동할수록 더욱 복잡하게 되며, 더 효과적이고 측정가능한 프로세서 능력을 만들며, 더많은 영상리얼리즘과 높은 프레임레이트를 생성하는 기능을 제공합니다.
▷ Coordinate Matrix
3D객체를 영상에 그리는데 요구되는 숫자의 배열. 하나의 3D 객체는 여러가지 숫자의 폴리곤으로 구성되어 있으며 각각의 꼭지점의 각각의 폴리곤은 가상 공간에서 자신의 위치를 표시하기 위해 자체의 coordinate matrix 가 요구됩니다.
▷ Dedicated Frame Buffer (할당된 프레임버퍼)
3D 프로세서는 frame-buffer/Z-buffer 데이터 저장공간을 위한 특화된 메모리 공간을 요구 합니다.이 용어는 두개의 독립적인 메모리공간이 필요한 3D 구조로서 하나는 프레임버퍼이 며 다른하나는 텍스쳐 저장공간인 분리된 메모리 구조를 묘사하는것을 의미합니다. 3Dfx's Voodoo/Voodoo2와 Intel's i740은 할당된 프레임버퍼를 요구하는 카드의 대표적인 예라고 할수가 있읍니다. 대부분의 나머지 카드는 합쳐진 메모리 구조를 사용하고 있읍니다.
▷ Deformation Lattice Modeling
모델링되는 객체를 둘러싸고 있는 이상적인 격자점을 3D 오브젝트에 적용함으로서 객체의 모양을 변경하는 것입니다. 격자의 이동은 객체에 강제로 영향을 미치게 하는 원인이 되며, 객체를 훼손시키는 원인이 되기도 합니다.
▷ Direct3D
개발자가 3D 처리의 부하를 전용 하드웨어를 통하여 덜어주는 방법에 의하여 게임을 더욱 빠르게 하고 더좋은 화질을 보여주는 것을 가능하게 하는것을 도와주는 3D 그래픽용 하드웨 어 가속을 사용하는 것을 가능하게 하는 프로그래밍된 API(Appliacation Programing Interface). Microsoft 사에서 제창한 규격입니다.
▷ Displacement Map
bump-mapping 상황에서, 어떻게 Shadowing 작용을 통하여 범프작용이 유사하게 되는지를 묘사하는 회색 2D 이미지.
▷ Dithering
이미지의 색상이 높은 색상에서 낮은 색상으로 낮어질때, Dither Down 이라고 합니다. 이중 상은 잃어버린 색상데이터가 우리눈으로 볼때 점이찍힌 형태나 인공물(깨짐증상)로 보여지 게 할 것입니다.
▷ Dynamic Attachment
하나의 껍데기나 객체가 다른 객체로 붙는것을 말합니다. 부드러운 껍데기로 3D 객체의 골 격을 둘러싸게 하는것은 폴리곤이 만나는 모서리가 있는 부분의 보이는 접합부분의 문제를 피하게 됩니다
▷ Environment Mapping
텍스쳐를 둘러싸고 있는 그 자체의 주변물의 영상을 정확하게 맵핑하는 텍스쳐 처리능력을 의미함. 이 기능은 예를 들어 크롬을 비슷하게 표현하게 하는 경우 높은 반사효과를 텍스쳐 에 할당하는데 유용합니다.
▷ Extruding
2차원의 경로 윤곽선 또는 3D 공간의 형태를 2D의 경로로 평면 수직확장 방법에 의해 그리 는것.
▷ Filtering
하나의 이미지에 픽셀포인트를 이용하는 기능으로서, 이웃한 픽셀값사이의 비교를 수행하 고, 두개의 픽셀 RGB 값이 삽입되게 되는 필터를 적용하여, 그때 이 포인트를 그 픽셀에 적용합니다. 이러한 기능의 예로는 Bilinear Filtering 및 Trilinear Filtering이 있읍 니다.
▷ Fogging
주변을 안개와 아주 비슷하게 표현하기위해 3D카드에서 필요한 기능이며 안개안에 들어간 객체를 정확하게 렌더링하는 것입니다. Fogging은 유사한 깊이와 분위기를 만듭니다. 더 멀리 떨어진 객체 또는 영역일수록 안개에 둘러싸인 것과 아주 유사하게 표현될 것입니 다.
▷ FPS
초당 프레임수입니다. 초당 횟수는 한 장면이 다시 그려져서 연속된 애니메이션의 착시현상 을 만들게 됩니다. 보통 영화의 경우 초당 24프레임 이며 게임에서 적절한 프레임 수는 30-40 정도가 좋습니다.
▷ Frame Buffer
화면에 표시되는 정보를 임시로 저장하기위한 메모리 블럭입니다. 그래픽카드는 보통 적은 메가바이트의 빠른메모리를 이 기능을 사용하기 위한 목적으로 가지고 있읍니다. 프레임 버퍼가 커질수록, 컴퓨터에 색상을 표시할수 있는 해상도가 높아지게 됩니다. 3D 그래픽카드는 프레임버퍼에서 3D객체및 텍스쳐를 또한 저장하게 될것입니다.
▷ Gamma Correction (감마 보정기능)
하나의 이미지의 적색,녹색,청색(RGB)감마값을 조정하는 기능입니다. 이 기능은 이미지를 얼마나 밝게 하거나 어둡게 하는지에 대해 영향을 줄수가 있읍니다.
▷ Geometric Distortion
화면에 표시되는 내용이 왜곡되거나 정상비율이 벗어나는 영상적인 결함, 직선이 곡선으로 보이고, 정사각형이 직사각형으로 보이고, 완벽한 원이 연장된 타원으로 보입니다.
▷ Geometry Transformation
화면에 나타나는 3D 객체의 골격을 렌더링하는 과정
▷ Glide
3Dfx사의 독자적인 VooDoo 계열의 3D 가속기 용 3D프로그래밍 함수입니다. 일반적으로 Direct 3D및 OpenGL 보다도 프로그래밍하기가 쉬우며 빠릅니다.
▷ Gouraud Shading
실감나는 3D환경을 창조하기 위해 3D폴리곤에 그림자 효과를 주는 과정
▷ Graphic Aperture Size
텍스쳐 데이터를 저장하기위해 AGP카드에서 사용하는 용도로 지정된 시스템 메모리의 양
▷ Level of Detail
그자체의 다중크기에 주어진 그래픽이 가지고있는 내용, 작은크기로 부터 높은해상도에 적용되고 있읍니다. 게임에서 각각의 다른 레벨의 세부 텍스쳐는 처리속도를 유지하기 위해 사용되곤 합니다. 세부레벨이 낮아질수록 해상도는 낮아지고, 그 크기는 작아집니다.
▷ Lighting Effects
게임에서 어떤종류의 픽셀을 밝아지게하는 작용이 각각의 객체에 광원으로 빛나는 효과를 비슷하게 표현하는 작용으로 수행되는 것입니다. 색상의 수가 많아질수록, 더욱더 실감나는 빛 효과를 나타나게 되며, 원래 빛이나는 색상부터 완전하게 빛나는 색상의 변화를 화면에 표현하여 줄수가 있읍니다.
▷ Meshes
컴퓨터 3D 객체의 표현입니다. 화면에 나타나는 3D 객체의 표면에 가까운 평면 폴리곤들의 집합입니다.
▷ Mip-mapping
비율화된 텍스쳐 맵에 사용되는 사용되는 기술로 두개의 매번 상반된 텍스쳐량(예: 1/4, 1/16, 1/32등)을 분류하기 위한 부 이미지를 만들어내는 부분을 포함하고 있읍니다. Mip-map을 생성하는것은 시간이 소요되며 텍스쳐가 클수록 시간이 오래 소요되게 됩니다.
▷ Multipass Texturing
다중 텍스쳐를 이미지 생성이 완료될때까지 multiple texturing passes(블렌딩이라고 함)를 수행하는 방법에 의해 모델의 폴리곤에 적용하는 방법.
▷ Object"Popping"
하나의 객체가 게임에서 두개의 세부 텍스쳐 레벨간에 급작스럽게 전환될때 나타나는 혼란 된 효과입니다. 사실성을 떨어뜨리고 게임의 영상적인 자연스러움을 상쇄시킵니다.
▷ OpenGL
실리콘 그래픽사에서 개발한 비교적 사용하기 쉬운 프로그래밍 API 입니다. OpenGL은 Quake2,Half-life 를 포함한 최근게임및 다른 많은 대부분의 응용프로그램의 중요한 API 입니다.
▷ Per-object Polygon Allowances
3D 화면에서의 다양한 객체에 할당되는 세부적인 크기. 지속적인 세부레벨이 없으면, 이들 허용치는 고정됩니다. 지속적인 세부레벨이 있어야 이들 허용치가 화면의 복잡도및 시스템 성능을 기초로하여 다양하게 변경될수가 있읍니다.
▷ Per-pixel Mip-mapping
per-polygon mip-mapping과 반대되는 개념으로서, 이 기법을 적용시 pixel-by-pixel 기초의 3D 폴리곤 모델의 비율화된 텍스쳐에 영향을 미치게 되며, 보다 자연스러운 결과를 만들어 냅니다. 빛이나는 공이 큰 방으로 이동하는 장면의경우 이기법이 적용되는 좋은 예라고 할 수 있읍니다.
▷ Perspective Correct (원근 교정)
위치또는 원근과 관계없이 3D 공간에 나타나는 폴리곤에 정확하게 텍스쳐를 적용하는 것을 뜻함. 원근 교정이 없으면,폴리곤의 텍스쳐가 어른거리거나 불규칙적인 움직임을 일으켜 3D 영상의 비정상적인 배열의 원인이 됩니다.
▷ Pixelation
각각의 픽셀들을 보이게하는 효과. 일반적으로 폴리곤 객체와 시점이 가깝게 설정될때 다른 것보다 작은 텍스쳐 맵이 커지는 결과로 적용되게 됩니다.
▷ Point Sampling
스크린에 표시되는 어떠한 부드러운 필터도 적용되지 않은 텍스쳐를 말합니다. 이 기법이 적용되는 경우 세밀함이 떨어지고 픽셀이 고르치 않게됩니다.
▷ Polygon
3D 영상객체의 형태를 만드는 2D 형태(일반적으로 삼각형또는 직사각형) 일반적으로 3D 객체의 뼈대를 구성하기 위해서는 수백또는 수천의 폴리곤이 사용되게 됩니 다.
▷ Raytrace
빛의 줄기가 각각 광원으로부터 빛이나는 객체와 카메라의 그림자까지 추적해가는 3D 렌더 링 방법입니다. Shading 과 illumination은 대단히 실감나는 화면을 제공하며 실제의 굴절, 반사및 투명함을 렌더링하는데 필요합니다.
▷ Reflective Mapping
"반사되는" 객체의 표면 텍스쳐위의 주변객체의 이미지를 도식화하는 광원추적 렌더링 효과 입니다. 수평해상도와 수직이미지의 디테일은 각각의 화면요소 또는 픽셀로서 측정됩니다. S
▷ Skin
게임 등장인물들과 관계되어 이것들에게 특별한 텍스쳐 또는"모습"을 주기위하여 사용되는 그래픽 화일
▷ Software Rendering
3D 하드웨어를 사용하지 않고 3D 장면을 렌더링하는 방법,3D 그래픽처리 작업은 CPU에서 모두 수행합니다.
▷ Specular Shading
3D렌더링에서 현재의 광원을 정확하게 폴리곤의 표면으로 그대로 반사해줄수 있는 폴리곤의 기능입니다. Specular shading 또는 highlighting은 실질적인 표면의 빛속성이 광원의 위치 와 관찰자 양쪽을 고려하는 것을 말합니다. Specular highlights 어떻게 빛나게 표면이 보 이는지 분석을 요구합니다. Specular highlights효과가 많을수록, 표면은 더 빛나게 됩니다. T
▷ Texel
TEXture ELement의 줄임말입니다. 각각의 픽셀이 폴리곤에 적용될때 텍스쳐로서 사용되는 비트맵 그래픽을 구성하는 각각의 픽셀을 말합니다.
▷ Texture
그래픽적인 요소, 보통 3D 공간에서 맵핑되는 하나의 비트맵입니다.
▷ Textures
3D 객체의 표면 그래픽들입니다. 텍스쳐들이 없다면, 3D 객체는 벌거벗은 폴리곤의 뼈대와 같이 보이게 될것입니다. 텍스쳐들은 사실감을 추가하여 줍니다, 벽돌벽,도마뱀의 피부, 또는 번쩍이는 우주선의 금속표면은 이러한 텍스쳐들이 적용되어야 표현될수있읍니다. 3D 프로그램은 텍스쳐를 그래픽 패턴으로서 저장하고 이것을 폴리곤의 구조로 적용합니다.
▷ Texture Compression (텍스쳐 압축)
텍스쳐양이 풍부한 어떤 형태의 데이터(압축하드웨어에 의하여 정의된)를 대체하고 적은 크기의 팔렛트로 사용될수 있도록 최적화하여 대체하는 방법으로 큰크기의 데이터로부터 작은크기로 텍스쳐 데이터를 압축하여 줄여주는 기능입니다. 이 기능은 낮은색상의 텍스쳐 와 영상인공물 (깨짐증상)이 나타남으로서 디더링 효과가나타나게 되는 원인이 됩니다.
▷ Texture Seams
서로이웃하여 매핑된 두개의 텍스쳐사이의 영상 깨짐증상및 갈라진 픽셀입니다. 보통 갈라짐은 흰색또는 흰 픽셀이거나, 세밀하게 보게되면 배경 그림을 보게 될것입니다. 일반적으로 프로그래밍 또는 비디오 드라이버의 오류로 인해 발생됩니다.
▷ Texture Storage (텍스쳐 저장공간)
텍스쳐 데이터(폴리곤에 적용되게 되는 비트맵 그래픽)가 저장되는 매체를 가리킵니다. 텍스쳐 저장공간은 (가장빠른것부터 느린것 까지)그래픽카드의 비디오 메모리, 시스템 메모 리,또는 하드드라이브 까지 적용될수가 있읍니다.
▷ Texture-mapped
하나의 이미지가 객체의 표면을 표현하기위해 전면(全面)에 덮힌 3D 객체입니다. 이 기법은 3D 게임에서 사실감을 표현하는데 있어 가장 중요한 기법입니다. 거의 모든 3D 게임은 이 기법에 의존합니다.
▷ Texture-mapping
일반적으로 3차원공간에 폴리곤위에 있는 하나의 비트맵과 같은 하나의 그래픽 요소를 매핑 하는 과정입니다.
▷ Triangle Setup
하나의 트라이앵글이 렌더링되기 전에 발생되는 처리과정입니다. 이것은 대단히 많은양의 처리과정입니다. 이전세대의 3D 하드웨어는 이러한 처리과정을 CPU에서 수행하는 것이 필요하였읍니다. 현재의 3D 카드는 이러한 처리과정을 CPU에 부하를 주지않고 처리합니다.
▷ Trilinear Filtering
텍스쳐를 덜 픽셀화(부드럽게)되게 만드는 기법입니다. 이기법은 bilinear filter효과를 두개의 각각 의 텍스쳐면 위에있는 두개의 mip-maps 에 적용하는것을 포함하고 있읍니다. 최종적으로 필터링된 텍스쳐는 다시 필터링 처리가 됩니다, 따라서"세번" Trilinear 입니 다. Trilinear filtering은 집약적인 처리과정이나, 전체적인 객체를 부드럽게 보여주는 역할을 합니다.
▷ Triple-Buffering
3D 카드가 프레임버퍼안에 있는 세개의 작은 버퍼를 구성할수있게하는 기법입니다. 이 기법 은 다중출력프레임을 렌더링할수 있고 처리할수가 있게 됩니다. Double-buffering은 두번째 의 버퍼에 정보가 채워지는 동안 첫버째 버퍼가 사용되는 기법입니다. Triple-Buffering 은 여기에 제 3의 버퍼를 추가하는 것입니다. U
▷ Unified Memory Buffer (결합된 메모리 버퍼)
프레임버퍼와 텍스쳐 저장공간의 양역할을 동시에 수행하기 위한 비디오 메모리를 사용하기 위한 비디오 프로세서의 기능을 지칭합니다. 비디오 메모리 사용방법은 텍스쳐 저장공간의 최우선순위를 갖게되는 frame/Z-buffer 와 같은 비디오 카드 구조를 통하여 제어됩니다. frame/Z-buffer 가 할당된후에 충분한 메모리가 남아있지 않다면, 그래픽칩셋(AGP 슬롯에 장착된 AGP 1x/2x 기능을 가진 칩셋)에서는 텍스쳐공간을 위한 시스템 메모리를 사용하게 됩니다. 만일 AGP 1x/2x 기능이 없다면 비디오카드는 텍스쳐 정보를 하드 디스크로부터 가져오게 됩니다. 이렇게 처리되는 경우 3D 렌더링성능이 현저하게 떨어지게 됩니다. V
▷ Vertex
3D 그래픽을 화면에 그리기위하여 사용하는 폴리곤의 모서리(가장자리)입니다. 하나의 객체가 움직이거나, 사용자의 객체의 시점이 변화되면, 컴퓨터는 가상공간의 각각의 모서리의 새로운 위치를 반드시 재연산 하여야 합니다. 이 처리과정은 matrix multiplication이라 불리는 처리과정과 함께 수행됩니다. ※ matrix multiplication (행렬 복제) 각각의 폴리곤은 3D 공간에서 수학적인 행렬형태의 위치정보를 가지고 있읍니다. 객체가 움직이거나 Viewpoint 가 변경되는 경우 이 위치정보를 연속적으로 부드럽게 변화 시켜주어야 합니다. 이 과정에서 위치정보의 미세한 변화를 통한 세밀한 시점전환및 움직임 을 표현해주기 위해서는 각각의 처음의 위치정보와 그 다음 프레임의 위치정보를 동일한 행렬구조와 거의 유사하게 동일한 복제형태로 구현해서 표현하게 되는 것입니다.
▷ Volumetric
깊이가 있고 안개 분위기를 느끼게 하는 불투명한 효과,하나의 평면을 정의하는데 포함 됩니다. 폴리곤의 숫자를 줄이고"Pop-up" 된 장면을 피하기위해 3D 장면에 많이 채용 됩니다.
▷ Volumetric Lighting
미세한 요소에서 정의된 빛효과 입니다. 작은 요소에서 구성되어진 형태는 중간정도의 연기 나 안개와 같은 두께를 가진 공간을 지나 빛이 투과되는 효과를 줄수가 있읍니다.
▷ VRML
Virtual Reality Modeling Language의 준말로서 가상현실을 모델링할수 있는 언어란 뜻입니다. 브라우져를 통해 볼수 있는 인터넷을 이용하여 3D 환경을 설계할수 있게 도와주는 공개된 규격이며, VRML은 현재 많은사람이 사장되거나 실질적으로 필요가 없다고 생각하 고 있읍니다. VRML의 적용은 더딘 인증작업, 대역폭의 문제와 일반적으로 어떠한 공동규격 과 관련된 부분에서 충돌을 일으키는 문제등으로 인하여 사실상 불가능하게 되었읍니다.
▷ V-Sync
대부분의 3D 카드는 수직주파수와 버퍼스와핑을 동기화하기 때문에, 이것이 적용되는 이상 수직주파수 이하의 프레임 레이트가 나오게 됩니다. 어떤 3D 카드는 수직주파수와 버퍼 스와핑을 동기화 하지 않는 기능을 가능하게 하는 것이 있읍니다. 이 기능을 활성화시키는 경우 거의 항상 프레임 레이트가 높게나오지만 화질이 손상되는 결과가 나오게 됩니다. 3D 카드가 수직주파수와 동기화작용이 없이 렌더링 처리를 하게되면 이미지의 찢어짐이나 변형됨과 같은 혼란된 영상이 출력되게 됩니다.
▷ Z-Buffer
3D 카드에서, 비디오 메모리는 보통 3D 카드에서 하나의 장면을 적절하게 렌더링하여 모니터에 표시하여 주기위해서 요구되는 모든 종류의 데이터를 저장하는 프레임버퍼를 구성하기 위해서 사용 됩니다. 실시간으로 3D 세계에서 상호작용하는 텍스쳐 매핑된 폴리곤 의 출현으로, 위치를 추적하는 버퍼의 필요성이 대두되게 되었읍니다. 하나의 Z-buffer는 화면 픽셀의 Z축 값(3차원 공간에서 앞에서 뒤로)을 저장합니다. 이 값은 계속 출력되는 Z-값의 데이터를 픽셀이 그려지는 것과 관계없이 어떻게 나타나게될 픽셀을 덮어씌워 줄것 인지 정의하는 것과 비교됩니다. Z-Buffer가 얼마나 정확한지는 3D 가속기가 Z-Buffer 연산 을 어떻게해주는지, 이것에 얼마나 많은 메모리가 할당되었는지에 달려 있읍니다. 높은 색상의 렌더링에는 더많은 Z-Buffer 메모리가 필요하게 되며, 픽셀정보의 양은 더많은 색상사용으로 커지게 됩니다. Z-Buffer는 다른 객체로 가려진 장면 부분에서 렌더링을 하지 않음으로서 게임속도를 높이게 됩니다.
복셀(VOXEL)이란?
복셀은 어감상으로 볼 때 픽셀이라는 단어와 어딘지 모르게 유사한 느낌을 받을 수 있는 것처럼, 서로 비슷한 개념입니다. 픽셀은 2차원의 면을 잘게 나눈 조각을 의미하고, 복셀은 3차원 물체를 잘게 나눈 미세한 정육면체를 의미합니다. 3D 그래픽을 표현하는 기법으로 폴리곤과의 간단한 비교로 이해하기 쉽게 설명해보겠습니다.
폴리곤은 작은 2차원의 면으로 된 삼각형 조각을 이어서 3차원 물체를 만들어내는 것이지만, 복셀은 입체를 연결하고 연결해 3차원 물체를 만들어내는 기법을 말합니다. 처음에는 의학용으로 사용되기 위해 개발된 것이라는군요. 수술 시뮬레이션의 경우 피를 사실적으로 흘러내리게 표현해야 하는데, 폴리곤처럼 면으로 구성하려면 너무나 힘들기도 했고, 만든다고 해도 사실적으로 보이는 데에는 한계가 있었으니까요.
3차원 물체를 표현하는 데에 있어서 복셀은 폴리곤에 비해 훨씬 뛰어난 기능을 갖고 있다는 것이 일반적입니다. 평면으로 3차원 물체를 만들어내는 것보다, 3차원 물체를 이용해 더 커다란 3차원 물체를 만들어내는 것이 겉으로 보기에도 더 쉬워보이죠?
더 좋다는 것을 알면서도 대부분의 게임들에서는 복셀 기법을 도입하지 않고 있습니다. 이유는 3D 가속 기능을 사용할 수 없기 때문입니다. 폴리곤으로 만들어진 게임들은 수많은 3D 가속기를 통해 부드럽고 빠르게 화면에 표현할 수 있지만, 복셀은 만들어진 기반이 다른데다 용도가 달랐기에 이를 지원하는 가속기가 없습니다. 따라서 속도가 느려질 수밖에 없죠. 게다가 전적으로 CPU의 속도와 메모리의 양에 의존해야 하는데, 현재의 CPU로는 완벽하게 표현해낼 수 없을 정도랍니다.
그 대표적인 예가 얼마 전 보물섬에서 소개했던 델타 포스 2라는 게임입니다. 이 게임은 복셀 기법을 최초로 시도했습니다. 화면 전체에 복셀을 적용한 것이 아니라 지형의 구조에만 사용했음에도 불구하고, 게임 실행을 위한 시스템 사양은 엄청나게 높습니다. 펜티엄 II-400, 128MB 램의 사양에서도 느릴 정도... C&C: Tiberian Sun에도 약간의 복셀이 적용되는 덕분에 이전 버전에 비해 높은 사양을 요구하게 됐죠.
<그림 1> 델타 포스 2 실행 화면
참고로 한 가지 더 추가하면 델타 포스 2는 폴리곤과 복셀이 혼합되어 있는 최초의 게임으로 기록될 예정입니다. 건물과 사물 등의 표현에는 폴리곤이, 지형에는 복셀이 적용되어 있습니다.
<pan>
카메라의 위치(eye location)는 고정시키고 바라보는 방향(center of interest)만을 바꾸는 카메라 워크.
<tumble (orbit)>
pan과는 정반대로 바라보는 물체는 고정시킨 상태에서 카메라의 위치를 움직이는 것.
<track>
카메라의 위치와 바라보는 방향이 동시에 수평이동 하는 방식의 카메라 워크. 다른 용어들과 마찬가지로 실제 영화 촬영에서 사용되는 용어를 차용해 왔는데, 철길처럼 생긴 트랙 위에 카메라를 얹어서 움직이는 방식 때문에 붙여진 이름이다.
<dolly>
바라보는 오브젝트를 향해 수직 방향으로 (모니터 상에서는 z축) 카메라를 움직여 center of interest에 다가가거나 멀어지도록 하는 것.
<pitch>
카메라를 X축으로 회전시키는 것. 사람의 시선으로 비유하자면 고개를 끄덕일 때 보여지는 것과 같은 변화.
<yaw>
카메라를 Y축으로 회전시키는 것. 고개를 좌우로 돌리는 효과. pan, tumble, track, dolly등이 영화 촬영 용어에서 유래한 반면 pitch, yaw, roll등은 항법 용어 중 배나 비행기의 움직임을 나타내는 말에서 유래했다.
<roll (tilt)>
카메라를 Z축으로 회전시키는 것. 고개를 갸우뚱거리는 효과. 180도를 회전시키면 화면의 아래위가 거꾸로 되어 물구나무서기해서 보는 장면이 된다
<zoom>
실제 카메라에서 줌 렌즈를 사용하는 것처럼 카메라의 위치변화나 움직임 없이 화면상에서 대상 오브젝트를 확대하거나 축소하는 것. 카메라의 위치를 움직여(dolly) 오브젝트 크기를 확대하거나 축소할 수도 있지만 zoom을 사용하면 단순히 오브젝트의 크기 변화 이외에 scene의 perspective 정도에도 변화가 생기는데, zoom in을 할수록 장면의 perspective가 강해지기 때문에 형태의 왜곡이 심해지고 반대로 zoom out을 할수록 투시 정도가 약해진다
<depth of field>
시야(cone of vision)에서 Z축 상의 거리에 의해 초점 구역을 설정해놓고 그보다 가깝거나 멀리 있는 오브젝트의 초점을 흐리는 기법. 실제 카메라 촬영에서의 피사계 심도를 뜻한다.
<clipping plane>
렌더링을 위해 계산을 수행할 때 아무 물체에도 닿지 않고 무한대로 뻗어나가는 빛을 계속해서 쫓아갈 수는 없기 때문에 시점에서부터 일정거리 이상 멀리 있는 물체는 렌더링 하지 않도록 하는 한계를 설정하게 되는데 이 한계값으로 설정된 평면을 far clipping plane이라고 한다. 마찬가지로 시점에 지극히 근접해있는 오브젝트들도 렌더링에서 제외되는데 이 가까운 한계값으로 설정된 평면은 near clipping plane이라고 한다. 원래 사람 눈의 경우에는 시점에서부터 원추형으로 시야가 뻗어나가게 되지만 컴퓨터의 경우 결과물을 출력하는 모니터가 사각형이기 때문에 사각뿔의 형태로 시선 영역을 설정하게 되고 far clipping plane과 near clipping plane에 의해 이 사각뿔의 꼭지점과 밑단이 잘려나간, 옆에서 보기에 사다리꼴처럼 생긴 입방체 형태의 가상의 영역이 렌더링을 위해 생성되는데 이것을 viewing frustum이라고 한다.
<lens length>
사람의 눈은 일반적으로 쓰이는 35mm 카메라에서 50mm렌즈를 사용해 사물을 바라보는 것과 비슷한 정도의 투시(perspective)를 갖고 있다. 50mm보다 초점거리가 짧은 렌즈를 사용할수록 보여지는 대상 오브젝트들의 형태는 왜곡되어 보이게 되고 반대로 50mm보다 초점 거리가 긴 렌즈를 사용할수록 물체의 투시 정도가 줄어들게 되는데, 예를 들어 20mm정도의 광각렌즈를 사용하면 시야 각은 넓어지는 대신에 마치 어항 속 물고기의 눈으로 세상을 보는 것처럼 물체들이 심하게 왜곡되어 실제의 스케일보다 거대한 물체처럼 보이고 반대로 100mm나 그 이상의 망원렌즈를 사용하게 되면 별로 원근감을 느낄 수 없을 정도로 평평한 이미지를 얻게된다.
<3D scanning>
수작업 모델링에 소요되는 막대한 시간과 단조롭고 고된 작업량을 줄이기 위해 실제 오브젝트를 스캔할 수 있다. 3D스캐너는 일반적으로 회전하는 플랫폼 위에 오브젝트를 올려놓고 레이저빔으로 오브젝트의 표면을 스캔하는 방식을 취하며, 사람의 몸처럼 좀 더 큰 오브젝트를 스캔하기 위해 사용하는 스캐너는 고정된 플렛폼 주변으로 레이저빔이 회전하기도 한다.
<3D digitizing>
3D 스캐닝의 일종이지만 센서를 손으로 직접 움직여 가면서 오브젝트의 표면을 스캐닝 하는 방식. 오브젝트가 복잡해서 레이저빔을 사용할 때 자체 그림자가 생기는 경우에 사용하기 적합한 방식이다.
<Normal>
법선, 수직선. 특히 폴리곤 평면의 수직방향을 뜻하는 surface normal은 광원과 이루는 각도에 의해 그 평면의 밝기를 결정하는
<Polygon>
3개 혹은 그보다 많은 수의 직선 모서리로 둘러싸인 다각형. 또는 그렇게 이루어진 영역. polygon의 모서리는 edge이고, 그 모서리의 끝점은 vertex (pl. vertices)이다.
<Triangulation>
4개 이상의 모서리로 이루어진 폴리곤을 삼각형들의 조합이 되도록 쪼개는 것. 이렇게 하면 모든 폴리곤들이 평면이 되므로 작업과정상 문제의 소지가 적어지고 모델 데이터의 호환성도 좋아지는 반면 데이터의 크기는 커진다.
<Patch (Surface)>
커브(일반적으로 U방향과 V방향 두 개)로부터 생성된 표면. 생성한 커브의 종류에 따라 b-spline patch, NURBS patch...등으로 나눈다. 보통은 평면이 아니라 3차원으로 굴곡진 표면을 가리키기 위해 사용하며, 패치로 이루어진 오브젝트는 솔리드 상태가 아니기 때문에 속이 텅 비어있게 된다. 또한 패치 오브젝트라고 할지라도 렌더링 할 때에는 내부적으로 폴리곤 평면으로 convert하게 된다
<Cardinal spline>
선을 구성하는 모든 컨트롤 포인트들을 통과하는 스플라인 커브. 카디널 스플라인의 장점은 컨트롤포인트의 위치와 커브가 그리는 궤적의 직접적인 상관관계에 있다. 특정한 지점을 지나는 커브를 그리기 위해서는 컨트롤포인트를 간단히 "그곳"에 위치시키면 된다. 하지만 컨트롤포인트의 위치가 의도하는 곡률에서 조금이라도 벗어나게 되면 이러한 직접적인 상관관계는 부드럽고 완만한 곡선을 그리기 위해서는 오히려 불편함이 될 수도 있다
<Bezier spline>
개발자의 이름을 딴 Bezier 커브는 카디널스플라인과 마찬가지로 모든 컨트롤포인트들을 통과하지만 각각의 컨트롤포인트마다 tangent vector라고 하는 방향과 길이를 동시에 표시하는 조절선을 가진다. 특정한 컨트롤 포인트에서 그 커브를 스치고 지나가는 이 접선(tangent)의 방향과 길이(vector)는 각각 그 스플라인 커브의 "곡률 방향" 및 tangent vector에 의해 "영향을 받는 범위"를 나타낸다.
<B-spline>
B는 수학용어로 basis를 뜻한다. Approximating spline의 일종인 B-spline은 카디널 스플라인과 달리 커브를 정의하는 어떤 컨트롤포인트도 통과하지 않고 단지 그 "근처"를 지나면서 커브를 구성한다. 따라서 같은 컨트롤포인트로 구성되는 커브라고 하더라도 카디널 스플라인에 비해 한층 부드럽고 완만한 곡률을 갖는 커브를 쉽게 그릴 수 있다.
Non-Uniform Rational B-Spline의 약자인 넙스커브는 위에서 언급된 스플라인 커브들의 장점을 고루 갖고 있다. 카디널 스플라인처럼 커브의 시작점과 끝점에서는 컨트롤 포인트를 지나면서도 중간 점들에서는 Approximating spline처럼 컨트롤 포인트 "주변"을 지나기 때문에 부드러운 곡률을 갖는다. 또한 넙스커브는 컨트롤포인트 외에 커브위에 존재하는 edit point라고하는 별도의 조절 점들을 갖기 때문에 상황에 따라 정확도가 필요한 경우에는 카디널 스플라인처럼 직접 커브가 지나는 위치를 조절을 할 수도 있다. 넙스커브가 가지는 또 하나의 중요한 특징은, 각각의 컨트롤 포인트마다 weight를 조정할 수 있다는 점인데 이 웨이트값이 클수록 커브는 그 컨트롤 포인트 쪽으로 치우치게 되므로 컨트롤 포인트의 위치이동 없이 커브의 미세한 곡률까지 조정할 수 있다. 단 웨이트값에 변화를 주게 되면 결과물의 렌더링 시간이 늘어나게 되고 데이터 호환에 있어서도 문제가 생길 수 있기 때문에 주의를 요한다.
<Shader>
물체 표면의 색 변화를 생성해내기 위한 알고리즘. 기본적으로 오브젝트 표면의 normal(법선, 수직방향)값에 대한 정보와 투명도나 반사도, 물체 색상 등의 일반적인 표면 속성, 조명의 종류와 개수와 방향 등에 대한 정보들을 이용해 계산한다. 일반적인 shading방식으로는 constant(uniform), lambert, gouraud, phong, blinn등이 있다.
<Constant (Uniform, Faceted) shading>
하나의 평면을 한가지 색상으로만 shading하는 가장 단순하고 빠른 방식의 shader. 각 폴리곤의 surface normal값이 광원과 이루는 각도를 계산해서 표면의 밝기를 결정한다. surface normal값이 광원을 지향할수록, 다시 말해 표면이 광원을 정면으로 바라볼수록 밝은 색을 띄게 된다. 표면의 반사도나 조명의 세부 속성등을 계산에 포함시키지 않기 때문에 표면 색상이나 매핑된 이미지의 색상이 원래 지정한 색상에 가장 가깝지만 현실 세계에서는 평면이라고 하더라도 한가지 색상만으로 이루어지는 경우가 없으므로 shading 된 이미지의 현실감은 별로 기대 할 수 없고 인접한 다른 폴리곤과의 모서리를 부드럽게 보간(interpolating)하지도 않는다.
<Gouraud shading>
개발자인 Henri Gouraud의 이름을 딴 gouraud shading은 phong, blinn등과 함께 각 폴리곤의 모서리들을 부드럽게 처리해서 곡면처럼 보이게 해 주는 smooth shading방식의 일종이다. 인접한 다른 폴리곤의 surface normal값과의 평균값을 계산해서 얻어진 normal값으로 그 해당 모서리에서의 표면 색깔을 설정하고 마찬가지로 계산된 맞은편 모서리까지의 표면 색 변화를 보간 하는 방식을 취한다. smooth shading방식 중 가장 단순하고 빠르기 때문에 작업중인 오브젝트의 형태를 실시간으로 보여주는 shading방식으로 많이 사용되며 하이엔드 그래픽 워크스테이션에서는 gouraud shading 알고리즘을 하드웨어에 심어서 더욱 속도를 향상시키기도 한다. 하지만 단순하고 빠른 만큼 단점도 가지고 있는데 그 중 가장 심각한 것이 각 폴리곤의 모서리 경계선 모양이 드러나 보인다는 점이다. 특히 물체 표면의 하이라이트가 맺히는 부분에서 더욱 부드럽지 못하고 어색하다. 이를 해결하는 방식이 phong shading이다.
<Lambert shading >
Gouraud shading을 기반으로 하는 알고리즘으로 표면의 반사도를 고려하지 않기 때문에 분필처럼 약간 거칠고 푸석푸석한 느낌을 주는 무광택 물체를 표현하기에 적합하다.
<Phong shading>
phong shading방식은 gouraud shading의 다소 부자연스러운 smoothing 문제를 해결하기 위해 약간 다른 계산 방식을 취한다. 인접 폴리곤의 surface normal값과의 평균으로 그 모서리의 normal값을 구하는 것까지는 같지만 그 normal값으로 표면 색을 계산해서 색을 보간 하는 것이 아니라 normal값 자체를 보간해서 결과적으로 보여지게 될 이미지의 각 픽셀별로 색을 계산하게 된다. 따라서 gouraud shading에 비해 한결 부드럽게 shading된 결과물을 얻을 수 있지만 자연히 계산에 소요되는 시간은 더 길어지게 된다. 일반적으로 플라스틱 질감을 표현하기에 적합하다고 말해진다. 1973년 Bui Tuong Phong에 의해 개발되어 오늘날 가장 많이 쓰이는 shading방식 중 하나가 되었다.
<Blinn shading >
퐁 shading방식과 거의 유사하지만 하이라이트가 맺히는 부분에서 광원을 보다 정확하게 반사해주기 때문에 금속 질감의 표현에 적합하다. James Blinn에 의해 개발되었다.
<Rendering>
최종 결과물로서의 이미지를 생성하는 것. 렌더링 알고리즘으로는 ray casting, ray tracing, radiosity 등이 있고 각 렌더링 알고리즘은 물체의 표면 색상을 계산하기 위해 shader 들을 서브 알고리즘으로 사용한다.
<Ray casting>
보는 이의 시점(실제로는 카메라의 시점)에서부터 특정 픽셀을 통해 빛을 투사(cast)해서 이 빛이 물체에 닿거나 보이는 영역에서 벗어날 때까지 따라감으로써 그 해당 픽셀의 색을 결정해 렌더링 이미지를 생성하는 방식. 물론 그 빛이 아무 물체에도 닿지 않는다면 해당 픽셀은 검은색이 되고, 빛이 어떤 오브젝트 표면에 도달하게 되면 프로그램은 그 빛이 hitting된 지점에서의 오브젝트 색상을 계산해서(이때 특정 shader를 sub-algorithm으로 사용하게된다) 그 값을 해당 픽셀의 색으로 결정한다. 생성될 전체 이미지의 각각의 픽셀마다 순차적으로 위와 같은 과정을 반복한다.
Ray casting은 작업 공간에 존재하는 오브젝트가 여러 개라고 할지라도 그 계산 방식의 특성상 각각 따로 존재하는 것처럼 렌더링하기 때문에 물체간의 반사나 투명도가 있는 물체를 표현하거나 물체 서로간에 그림자를 드리우는 효과를 계산할 수가 없다. 따라서 그러한 효과를 흉내내기 위해서 일종의 편법들을 사용하게 되는데 예를 들어 표면 반사를 위해서는 reflection mapping을 사용하고, 투명 오브젝트를 위해서는 겹쳐지는 두 오브젝트의 색상을 섞어서 (물론 이때 굴절은 기대할 수 없지만) 사용하며, 그림자는 z-buffer의 정보를 적절히 활용해서 만들어 주게 된다.
[이해를 돕기 위해 그림을 준비중입니다]
<Ray tracing>
Ray tracing방식의 렌더링 알고리즘은 scene을 구성하는 모든 오브젝트들을 한꺼번에 다루기 때문에, ray casting 방식에서 한번에 하나의 오브젝트만을 계산함으로서 생기는 몇 가지 한계들(반사나 굴절, 그림자의 생성)을 해결한다. 특정 오브젝트 한 지점에서의 색을 결정하기 위해서는 조명으로부터의 직접적인 빛뿐만 아니라 다른 오브젝트로부터 반사나 굴절된 빛, 혹은 드리워진 그림자의 영향까지도 고려해야 하는데 ray tracing 방식은 시점에서부터 거꾸로 (현실에서처럼 광원으로부터 빛을 추적하자면 무수히 많은 필요 없는 계산까지 해야하므로) 반사나 굴절되는 빛을 역 추적해 나감으로써 오브젝트 서로간에 주고받는 빛의 영향을 계산해 오브젝트 표면색상을 결정하게 된다. 예를 들어 시점에서부터 역 추적되는 빛이 반사도가 지정된 오브젝트의 표면에 부딪히게되면 그 표면이 시점과 이루는 반사각에 따라 방향이 바뀌어진 빛을 계속 추적하게 되고, 다시 그 빛이 유리와 같이 반사도와 투명도를 동시에 갖는 물체에 부딪히면 통과하는 빛(지정된 굴절률에 따라 방향이 약간 틀어진 상태로)과 반사되는 빛 두 갈래로 갈라져서 각각의 빛을 계속 추적하는 식으로 그 빛이 시선에서 사라지거나 반사도가 전혀 없는 물체에 닿거나 혹은 미리 지정된 반사 횟수(depth)에 이를 때까지(거울을 마주 놓은 것처럼 끊임없이 반복될 수도 있으므로) 계산을 계속하게 된다. 이처럼 오브젝트의 색상을 결정하기 위해서 해당 오브젝트뿐만 아니라 그 오브젝트에 영향을 미치는 요소들까지 추적해서 계산해야 하므로 ray casting 방식에 비해 계산량이 훨씬 많아지고 렌더링에 소요되는 시간 또한 길어지게 된다. Ray casting 방식으로는 해결 할 수 없는 많은 광학적 효과들을 ray tracing이 해결해 주기는 하지만 알고리즘의 특성상 빛의 확산(현실 세계에서는 반사도가 전혀 없는 종이같은 물체에서도 확산광이 반사된다)이나 회절효과를 기대 할 수 없기 때문에 일반적으로 "자연스럽게" 보이기에는 너무나 선명한 다소 "환상적"인 이미지를 결과물로 얻게 된다. 특히 smooth shadow 같은 추가적인 계산으로 그림자의 후반부를 흐려주지 않으면 오브젝트 외곽선 그대로의 비사실적인 선명한 그림자가 생성된다. Ray tracing 알고리즘의 이러한 단점은 radiosity 방식에 의해 매우 효과적으로 해결 될 수 있다.
<Radiosity>
Radiosity 렌더링 알고리즘에서는 광원으로부터의 빛뿐만 아니라 오브젝트 서로간에 주고받는 빛의 영향, 확산광 등을 계산하기 위해 모든 surface들을 광량(光量)의 분포에 따라 다시 작은 조각들로 쪼개어서 계산한다. 예를 들어 커다란 흰색 회벽 앞에 두꺼운 빨간색 종이가 벽을 비스듬히 바라보도록 세워져 있는 장면이 있다고 가정할 때 (ray tracing 렌더링 방식에서는 이런 경우 두 물체 모두 반사도가 없으므로 서로 영향을 미치지 않는다) 빨간색 종이로부터 반사된 확산광의 영향을 받아 불그스름해지는 부분은 큰 회벽의 전체 면에서 종이와 가까운 일부분이기 때문에 그 영향을 받는 정도에 따라 하나의 회벽 표면을 여러 조각으로 subdivide하게 되는데, 이때 빛의 변화 정도가 급격한 부분은 매우 잘게 쪼개고 특별히 빛의 변화가 별로 없는 부분은 큰 면으로 듬성듬성 쪼개게 된다(그림 참조). 일단 빛의 분포에 따라 면을 쪼갠 후에는 각각의 조각들이 서로 얼마나 가까이 있는지, 어느 정도의 각도로 서로 마주보고 있는지를 확인해서 form-factor를 결정하게 되는데 두 개의 면이 매우 가까운 거리에서 서로 마주보고 있다면 1에 가까운 값이 되고 반대로 먼 거리에서 매우 벌어진 각도로 바라보기 때문에 서로 영향을 거의 미치지 않는다면 form-factor는 0에 가까운 값이 된다. 이렇게 결정된 form-factor값을 이용해 surface들 서로간에 주고받는 빛의 양과 색을 계산함으로써 해당 surface의 색을 결정하게 된다. Radiosity 방식은 위와 같은 알고리즘의 특성 때문에 빛을 받는 모든 surface들이 사실상 광원의 역할을 하므로 Ray tracing이나 Ray casting과는 달리 현실 세계에서처럼 창문을 통해 들어오는 하나의 광원만으로도 실내의 구석구석까지 자연스럽게 밝아지는 매우 효과적이면서도 사실적인 결과물을 얻을 수 있지만 보다 자연스러운 효과를 얻기 위해서는 늘 그렇듯이 CPU에 부과되는 계산량이 다른 렌더링 방식에 비해 훨씬 많아지므로 렌더링 시간 또한 그와 비례해서 늘어나게 된다. Radiosity 렌더링 방식의 또 한가지 특징은, scene을 구성하는 오브젝트들의 위치가 변하지 않는 이상 form-factor값에는 변화가 없기 때문에 시점의 변화에 따른 반복적인 계산이 훨씬 줄어든다는 점(hidden surface removal, specularity등만 다시 계산하면 되므로)인데 이는 특히 건축물의 인테리어 등을 시뮬레이션 할 때 큰 장점으로 작용한다.
<Scan-line rendering>
모든 디지털 이미지들은 픽셀이라고 불리는 각각의 미세한 점들의 집합으로 이루어져 있는데 화면상에서 이 픽셀들의 가로 한 줄을 scan-line이라고 한다. 따라서 스켄라인 렌더링이란, 프로그램이 한 픽셀에서 다음 픽셀로, 한 줄의 스켄라인이 렌더링 되면 다음 스켄라인으로 넘어가는 식으로 순차적으로 각 픽셀들의 색상을 계산해 나가는 방식을 말한다. 일반적으로 디폴트 픽셀 컬러인 검정화면에서 시작해 차츰 위쪽 스켄라인에서부터 렌더링 된 픽셀들이 화면에 표시되는 것을 볼 수 있는데 이것이 스켄라인 방식으로 렌더링 되고 있음을 보여주는 것이다. 이렇게 픽셀, 스켄라인들을 순차적으로 렌더링 하는 방식의 장점 중 하나가 이미지 하나를 몇 개의 스켄라인 set으로 나누어 여러 대의 컴퓨터에서 따로 렌더링 한 후 나중에 하나의 이미지로 합칠 수 있다는 점이다.
<Painter's algorithm>
하나 이상의 오브젝트들로 구성된 scene을 렌더링 하는 경우 시선에 가까이 있는 물체 때문에 멀리 있는 물체의 일부 또는 전체가 가려질 수 있는데, 이렇게 보여질 물체와 가려질 물체를 구분하는 방식 중의 하나가 painter's algorithm이다. 화가가 그림을 그릴 때 우선 배경을 그리고 나서 가까이 있는 오브젝트를 그 위에 덧칠해 그려나가는 방식에서 그 이름을 따왔다. 렌더링을 시작하기 전에 모든 오브젝트들을 (사실상 모든 폴리곤들을) 시점에서부터의 거리 값을 기준으로 sorting하고 거리가 먼 오브젝트부터 렌더링을 시작해서 가까이 있는 오브젝트가 그 위로 덮어씌워지도록 렌더링 하는 방식이다. 장면을 구성하는 모든 폴리곤들을 미리 정렬해야하는 이유로 렌더링 시간이 오래 걸리기 때문에 이를 해결하는 유용한 대안으로 z-buffer algorithm이 주로 사용된다.
<Z-buffer algorithm>
컴퓨터로 어떤 이미지를 렌더링 할 때 그 그림에 대한 디지털 정보들은 frame buffer라고 불리는 특정 메모리 블럭에 각 픽셀별 색상값의 형태로 임시 저장되게 되는데, z-buffer algorithm에서는 각 오브젝트별로 시점에서부터의 깊이를 판별하기 위해 frame buffer와 거의 유사한 방식의 z-buffer를 사용한다. 이때 z-buffer에 저장되는 값은 픽셀별 색상값이 아니라 시점에서부터의 거리값이 되는데 거리가 멀수록 큰 값을, 가까울수록 작은 값을 할당한다. z-buffer algorithm의 경우 painter's algorithm처럼 미리 sorting하지 않았기 때문에 특별한 순서 없이 무작위로 오브젝트들을 렌더링 하게 되는데, 이미 계산되어 거리값이 지정된 픽셀에 또 다른 오브젝트가 중복되게 되면 새로 계산된 값과 이미 지정된 값을 비교해서 작은 값(가까운 오브젝트)을 취하게 된다. 이러한 z-buffer algorithm은 속도가 빠르기도 하지만 같은 정보가 물체의 그림자를 만들어주거나 범프매핑 등의 맵을 생성할 때도 유용하게 사용되기 때문에 매우 널리 사용되고 있다. 하이엔드 그래픽 워크스테이션이나 그래픽 가속보드에서는 z-buffering 기능을 하드웨어상에서 지원하기 때문에 실시간 depth sorting이 가능하다.
<Transparency mapping>
매핑된 이미지의 명도 단계에 따라 오브젝트의 투명도를 조절하는 방식. 보통 흰색 부분은 투명하게 검은색 부분은 불투명하게 처리한다.
<Bump mapping>
매핑 이미지의 명도 단계가 shading시의 surface normal값에 영향을 미치도록 하여 마치 오브젝트 표면이 굴곡지거나 울룩불룩한 것처럼 보이도록 하는 방식. 실제로 모델링 데이터에는 영향을 미치지 않기 때문에 오브젝트의 외곽선에서는 굴곡이 반영되지 않는다.
<Displacement mapping>
범프 매핑과 거의 비슷한 효과를 생성하지만 shading 할 때 실제로 오브젝트 geometry 자체에 영향을 주기 때문에 물체의 외곽선 까지 굴곡진 효과가 나타나게 되어 한층 사실감 있는 이미지를 얻을 수 있다. 보통 shading 할 때에만 효과를 계산하지만 경우에 따라 디스플레이스먼트 된 서피스로부터 모델링 데이터를 추출할 수도 있다.
<Reflection mapping>
ray-tracing방식의 단점인 긴 렌더링 시간을 단축하면서도 그와 비슷한 표면의 반사 효과를 얻기 위해 쓰이는 매핑방식. 우리 눈에 반사될 이미지를 미리 렌더링 하여 해당 표면에 매핑하는 방법으로, Phong shading과 함께 쓰이면 어지간한 ray-tracing 이미지 못지않은 현실감 있는 결과물을 훨씬 적은 렌더링 시간을 투자해서 얻을 수 있다. 일렉트릭 이미지가 대표적으로 ray-tracing 대신 이 방식을 택한다.
<Texture mapping>
2차원의 패턴이나 이미지를 3차원 물체의 표면에 감싸 입히는 방법. 텍스춰 매핑에 따라 단순한 기본 오브젝트만 가지고도 상당한 실재감을 주기도 한다. 매핑 될 이미지를 오브젝트에 어떻게 투영(projection) 하는가에 따라 평평한 면에 한 방향으로 투영하는 planar, 원기둥 형태로 감싸서 투영하는 cylindrical, 구의 형태로 감싸는 spherical 등의 방식이 있다.
<Procedural texture>
평면의 이미지를 오브젝트 표면에 감싸는 방식이 아니라 수학적 알고리즘에 의해 표면 텍스춰를 생성해 내는 방식. 주로 대리석이나 나무 무늬처럼 렌덤한 이미지 패턴을 생성해 내기 위해서 사용된다. 그림처럼 대리석 재질을 입힌 원기둥이 있다고 할 때 2D 이미지 매핑의 경우 자른 단면(그림에서의 원기둥 윗면)의 대리석 무늬를 표현하기 위새서는 따로 단면의 이미지를 입혀야 하고 그럴 경우라도 윗면과 옆면의 무늬를 일치시켜야하는 번거로움이 있지만 프로시져럴 텍스춰를 쓰면 이러한 문제를 쉽게 해결할 수 있다.
<Color>
가장 기본적인 표면 속성중 하나인 색상은, 흰색 조명(가시광선 스펙트럼의 모든 색 빛을 포함)을 받았을 때 해당 오브젝트의 표면이 흡수하지 않고 반사시키는 색들의 조합에 의해 결정된다. 무광택(matte)의 파란색 플라스틱이라면 대부분의 조명 조건에서 그대로 파랗게 보이겠지만 조명 색이 흰색이 아닌 특정한 단색(red, green, blue 등등)이거나 광택 있는 물체의 표면이 조명 반사에 의해서 뿌옇게 흐려지거나 하면 원래의 표면색이 무엇인지 알아내기가 쉽지 않다. 또한 똑같이 짙은 파란색을 지정하더라도 대상 오브젝트가 투명도를 준 얇은 판이라면 약간 푸르스름해 보이는 정도이겠지만 두꺼워진다면 거의 검은색에 가깝게 보인다.
<Specular reflection >
오브젝트 표면에 맺히는 광원(light source)의 반사. 보통 하이라이트라고 불리는 반사부분이다. specularity는 표면의 매끈거리는 광택의 정도를 말한다. 오브젝트의 표면이 매끄러운 광택 재질이라면 광원의 모양이 거울처럼 또렷하게 반사되고 반대로 거칠거칠한 무광택 재질이라면 광원은 뿌옇게 번져 보이게 되므로 이 specular reflection의 크기와 번지는 정도를 조절하면 표면의 시각적 속성을 효과적으로 바꿀 수 있다. 한가지 주목할만한 사실은, 유리나 플라스틱같은 일반적인 재질은 표면색과 관계없이 광원색과 동일한 specular reflection 색상이 나타나지만 금속의 경우 그 금속의 색상이 specular reflection 색상에 영향을 주게 된다는 점이다. 예를 들어 파란색 플라스틱 구슬에 흰색 조명을 비추면 흰색 하이라이트가 맺히지만 같은 조명을 금으로 만들어진 구슬에 비추면 밝은 노란색 하이라이트가 맺히는 것을 관찰할 수 있다. 이점이 금속과 금속이 아닌 재질이 갖는 특성의 가장 큰 차이이다.
<Diffuseness>
오브젝트 표면이 전체적으로 난반사 및 확산시키는 빛의 양. 표면의 광택이나 반사도(mirror reflectance)와는 무관하게 오브젝트 전체적인 색감을 밝게 하거나 어둡게 할 때 diffuse값을 조절한다. 같은 표면색을 가지고 같은 강도의 조명을 받는 오브젝트라고 하더라도 diffuse값을 작게 지정하면 물체가 전체적으로 어둡게 된다.
<Reflectivity>
반사도. 반사도가 지정된 오브젝트는 표면 위에 주변의 물체들을 반사시키게 된다. 반사도가 0이면 전혀 반사시키지 않는 것을 뜻하고 1이면 거울과 같은 100%의 반사를 뜻한다. 고광택 재질의 표면이라고 하더라도 언제나 같은 반사값을 갖지는 않는데, 예를들어 극도로 고광택 처리된 플라스틱도 스테인레스와 같은 반사도를 가질 수는 없다. 이는 재료 자체의 물리적 특성으로 우리가 실제로 스테인레스와 고광택 은색 플라스틱을 시각적으로 혼동하지 않고 인식하는 이유이다.
<Transparency>
투명도. 반대로 불투명도는 opacity. transparency 값이 0이면 빛을 전혀 통과시키지 않는 불투명한 오브젝트이고 transparency 값이 1이면 전혀 보이지 않는 투명도 100%의 물체가 된다. 일반적으로 투명도를 높이면 이전에 지정했던 하이라이트의 강도가 약해지기 때문에 specularity값을 다시 조정해 주어야 한다.
<Refractivity>
굴절률. 물잔에 반쯤 잠겨있는 빨대가 수면에서 꺾여 보이거나 유리잔 뒤의 물체가 일그러져 보이는 등의 굴절 효과를 생성할 때 사용한다. 투명체를 통과하면서 빛이 꺾이는 정도를 뜻하며 IOR (index of refraction)이라고도 하는데, 굴절에 영향을 미치지 않는 공기의 굴절률이 1이고, 물이 1.33 (얼음 1.30), 유리는 1.2~1.9, 다이아몬드가 2.4의 굴절률을 갖는다. 물론 굴절 효과를 계산하기 위해서는 ray-tracing 방식으로 렌더링 해야한다
<Animation>
빠른 속도로 재생해 보여줌으로서 마치 화면 안의 대상물이 실재로 부드럽게 움직이는 것처럼 느껴지도록 하는 일련의 스틸 이미지들을 만들어 내는 것. 또는 그 결과물. 사람 눈의 생리적 특성인 잔상현상을 이용하는데 프레임(각각의 정지된 이미지) 사이의 간격이 이 잔상의 지속 시간을 초과할 정도로 길어지면 화면이 뚝뚝 끊어져 보이게 된다. 영화에서는 초당 24 프레임, 우리나라와 미국, 일본이 채택한 NTSC 비디오 방식에서는 초당 30 프레임, 유럽과 북한이 사용하는 PAL 비디오 방식에서는 초당 25 프레임을 사용한다.
<Key frame>
셀 애니메이션의 발생 초기에, 애니메이션 제작 과정을 보다 효율적으로 만들기 위해 월트 디즈니 스튜디오에서 개발했던 작업 방식에서 유래했다. 경험 많은 마스터 애니메이터가 중간 중간의 중요한 프레임(키프레임)들을 그리고 보조 애니메이터들이 그 사이(in-betweens)를 그려서 메워 넣는 방식이다. 컴퓨터를 이용한 애니메이션에서도 이 개념은 그대로 적용되는데 작업자가 특정 프레임들을 세팅해서 키 프레임으로 지정하면 컴퓨터가 그 사이의 프레임들을 계산해서 자동으로 보간(interpolating)해주게 된다.
<Interpolation>
애니메이션에서의 보간(Interpolation)이란 각 키 프레임들 사이의 중간 프레임들(in-betweens)을 생성해 내는 것을 말한다. 가장 단순한 종류의 보간 방식으로 linear interpolation이 있는데 이는 프레임 번호와 애니메이션 되는 속성(오브젝트의 위치, 크기, 색깔 등)의 변형(transformation) 값을 두 축으로 놓고 그래프를 그렸을 때 나타나는 모양이 직선이 되기 때문이다. 예를 들어 A지점에서 B지점까지의 위치 변화를 지정한 두 개의 키 프레임을 linear interpolation에 의해 보간 하면 A지점에서 B지점으로 등속 운동하는 애니메이션을 얻게 된다. 딱딱한 등속운동이 아니라 보다 자연스러운 움직임을 쉽고 직관적으로 컨트롤 할 수 있게 하기 위해 많은 3D 어플리케이션들이 이 그래프의 모양(function curve, fcurve, animation curve)을 스플라인 커브처럼 직접 수정할 수 있는 기능을 지원한다. 또한 이러한 보간 방식을 선형 보간법에 대비해 spline interpolation이라고 한다.
[이해를 돕기 위해 그림을 준비중입니다]
<In-betweening>
사용자에 의해 지정된 보간(interpolation) 방식에 의해 컴퓨터가 두 키 프레임 사이의 오브젝트 속성을 자동으로 계산해서 중간 프레임들을 생성하는 것.
<Ease in / Ease out>
스플라인 보간(spline interpolation)방식의 일종으로 특정 키 프레임에 연결되는 function curve의 기울기를 점차 완만하게 조정해서 오브젝트 속성의 변화 정도가 부드럽게 감속 또는 가속 되도록 하는 것.
<Collision detection>
보통 우리가 작업하는 가상의 3차원 공간에서는 오브젝트들이 서로간의 아무 간섭이나 충돌 없이 자유롭게 겹치거나 움직일 수 있다. 하지만 경우에 따라 현실세계에서처럼 오브젝트가 충돌하거나 서로 물리적인 영향을 주고받을 필요가 있는데 이럴 경우에 collision detection을 사용한다.
<Inverse Kinematics>
여러 개의 오브젝트가 계층구조에 의해 연결된 모델(hierarchical model)을 애니메이션 할 때, 기계적인 물체의 비교적 단순한 움직임이라면 다른 일반적인 애니메이션에서 오브젝트의 위치를 조정하듯이 움직임의 시작점이 되는 root로부터 한 단계씩 parents에서 children으로 내려오면서 각각의 오브젝트를 수동으로 조절 할 수 있다. 이것을 지금 설명할 inverse kinematics에 대비해서 forward kinematics라고 한다. 하지만 사람의 관절 움직임이나 동물의 움직임을 애니메이션 하고자할 때 일일이 각 링크 오브젝트들의 위치를 수정하는 것은 대단히 번거로운 작업이 될 뿐만 아니라 직관적이지 않은 만큼 자연스러운 움직임을 표현하기도 어렵다. 이러한 번거로움을 해결하기 위한 방식으로 계층구조(hierarchy) 말단의 최하위 오브젝트인 effector의 위치를 조정함으로써 최상위 고정점인 root까지 연결된 링크 오브젝트들의 위치에 역방향으로 영향을 미치도록 하는 방식이 개발되었는데 이것을 inverse kinematics라고 한다. 예를 들어 마주 서 있는 두 사람이 서로 악수하는 장면을 애니메이션 해야한다면 forward kinematics 방식으로는 어깨에서부터 손가락까지 연결된 관절을 하나씩 일일이 움직여 두 사람의 가운데 지점에서 두개의 손바닥이 마주 닿도록 위치를 조정해 주어야 하지만 inverse kinematics방식을 사용하면 각각의 손을 끌어다 놓기만 하면 상위에 링크된 팔 관절들까지 미리 지정된 움직임의 각도가 허용하는 범위 내에서 따라 움직이게 된다.
<Forward Kinematics>
계층구조(hierarchy)의 말단에 자리한 effector의 위치를 조정함으로써 root까지 연결된 상위 링크 오브젝트들의 위치에 역방향으로 영향을 미치도록 하는 inverse kinematics에 대비해, 움직임의 시작점이 되는 root로부터 한 단계씩 parents에서 children으로 내려오면서 각각의 오브젝트를 수동으로 조절하는 방식을 말한다.
DWG
Autodesk사의 AutoCAD용 file format.
확장자 : dwg
DXF (Drawing Exchage File Format)
Autodesk사의 AutoCAD용 file exchage format. 오토캐드(파일 포멧 DWG) 내부적으로 혹은 다른 3D프로그램들과의 data 호환을 가능하게 하기 위해 개발되었으며, 오토캐드가 업계에서 광범위하게 사용됨에 따라 DXF 데이터 포맷도 사실상 가장 널리 쓰이는 3D 데이터의 공통 포맷이 되었다. DXF 데이터의 특징은 파일 구조가 ASCII문자로 구성되어있어서 일반적인 텍스트 편집기로도 내용 확인과 수정이 가능하다는 점이지만 파일의 용량이 상당히 커지는 단점도 가지고 있다.
확장자 : dxf
IGES (Initial Graphics Exchange Specification)
특정한 프로그램을 위해서 개발된 다른 파일 포맷들과는 달리 IGES는 CAD/CAM 시스템들간의 데이터 호환을 목적으로 미국의 국립 표준국(the National Bureau of Standards)에 의해 1980년에 발표된 표준 포맷이다. 그 이후 여러 번의 버전 변화를 거쳐 99년 현재 5.3 버전이 사용되고 있다. 대표적인 또 하나의 데이터 호환 포맷인 DXF와 마찬가지로 ASCII text 형식을 취하고 있으며 스플라인 커브나 넙스 곡면을 사용할 수 있기 때문에 폴리곤 모델 데이터 외에도 넙스 모델 데이터의 호환에 유용하게 사용된다.
확장자 : iges/igs
LWO (Lightwave)
Newtek사의 LightWave용 파일 포멧
확장자 : lwo
OBJ (Wavefront file format specification)
Wavefront의 Visualizer고유 파일 포맷. DXF나 IGES 처럼 ASCII 형태(확장자 .obj)로 데이터를 저장할 수도 있고 binary 형식(확장자 .mod)으로 저장할 수도 있다. ASCII 형태인 OBJ로 저장을 하더라도 DXF나 IGES 만큼 데이터의 크기가 커지지는 않으며 MTL이라는 별도의 material 파일을 사용하기 때문에 모델 정보 이외에 texture map이나 material에 대한 데이터를 함께 옮길때에는 관련된 MTL 데이터도 찾아서 같이 옮겨야 한다.
확장자 : obj (for ASCII), mod (for binary)
RIB (Pixar RenderMan scene description file)
픽사(Pixar)사의 scene description language인 렌더맨(RenderMan)용 파일 포멧.
확장자 : rib
SDL (Scene Description Language)
Alias|Wavefront사의 Alias Studio, Power animator 등에서 사용되는 Scene Description Language. Scene을 셋팅한 후 렌더링 명령을 내리면 결과물 이미지파일(RGB파일) 생성에 들어가기 전에 자동으로 SDL 파일이 생성되며 이 SDL 데이터만 있으면 따로 모델 데이터(WIRE 파일)가 없이도 렌더링이 가능하다.
확장자 : sdl
STL (StereoLithography)
Albert Consulting Group에 의해 만들어진 데이터 포맷으로 삼각형 단위 구조로 이루어져 있으며 입체성형(rapid prototyping systems)에서 널리 표준으로 사용된다. ASCII와 binary 두 가지 포맷이 있다.
VRML(The Virtual Reality Modeling Language)
Web상에서 3차원의 가상현실과 하이퍼링크를 구현하기 위해 개발된 모델링 언어. 1994년 제1회 WWW 컨퍼런스에서 처음으로 개념이 언급되었으며, 단순히 웹에서 3D를 표현하는 가능성을 보여주었던 처음의 VRML 1.0 규약에서 시작하여 사용자 상호작용과 애니메이션기능이 강화된 VRML 2.0을 거쳐 지금은 1997년 8월 ISO(국제 표준기구)에 의해 승인된 VRML 97규약이 사용되고 있다.
3DMF (3D Metafile)
윈도우즈의 Open GL에 상응하는, Apple사의 3D API(Application program interface;실행프로그램의 기본 인터페이스)인 QuickDraw 3D용 파일 포맷. 모델 구조 뿐만 아니라 오브젝트 색상과 texture map등 많은 화면 구성 요소를 포함한다.
확장자 : 3dmf
3DS (3D-Studio File Format)
AutoDesk의 3D-Studio에서 사용되는 파일 포멧.
확장자 : 3ds
다음검색