Tag Archives: 그래픽스

디지털 라이팅 & 렌더링/ 전체 정리

렌더링

컬러

가산 컬러

가산 컬러. R(1, 0, 0) G(0, 1, 0), B(0, 0, 1)는 가산 1차색 또는 가산 원색이라고 불린다. 가산원색들이 섞인 Yellow(1, 1, 0) Cyan(0, 1, 1) Magenta(1, 0, 1)은 가산 2차색이라 한다

감산 컬러

감산 컬러. 모니터 빛은 블랙에서 시작해서 RGB를 더하는데 반해 프린터는 하얀 종이에서 점점 어둡게 만들어 진다

컬러와 빛

다른 빛들이 겹쳐질 때 각 색상 값이 더해 (Add) 진다. 색이 들어간 빛이 색이 들어간 컬러를 만나면 곱해 (Multiplied) 진다

색 온도

색 온도. Red, Orange, Yellow는 따듯한 색상. Blue, Green은 차가운 색상. 사람들은 종종 차가운 색상을 멀리 있는 것으로 따뜻한 색상을 가까이 있는 것으로 인식한다.

셰이더 Shaders

셰이더란 3D 물체가 빛이 어떻게 반응하는지에 대한 정의. 빛이 물체 표면에 반사되는 가장 일반적인 3가지 방식 – 디퓨즈, 글로시, 스펙큘러

종류 설명
디퓨즈 Diffuse 빛이 모든 방향으로 일정하게 분산
글로시 Glossy 광선의 방향은 보존되지만 일부는 분산
스펙큘러 Specular 빛이 선명하게 완벽히 보존하면서 분산 없이 모든 광선을 반사
안티에일리어싱Anti-Aliasing 대각선을 따라 지글거리는 계단현상을 없애는 방법. 안티에일리어싱의 두 가지 요소는 오버샘플링과 필터링이다
레이트레이싱 Raytracing 3D 표면에서 빛의 자연스러운 반사(Reflection), 굴절(Refraction), 그림자(Shadow)를 시뮬레이션 하는 추가적인 렌더링 과정이다.
레이트레이싱은 현실과 반대로 광선이 카메라에서 장면 안으로 뻗어나간다.

 

  • 프리넬 효과
    • 물리학자 프리넬의 이름을 딴 빛의 파장 이론. 표면에 반사되는 빛 중 눈에 보이는 양이 시점에 따라 달라진다는 것
  • Z버퍼 렌더링
    • 리얼타임 렌더링을 위해 그래픽 카드에서 취하는 방법
  • 스캔라인 렌더링
    • 폴리곤이 아닌 가로 세로 1픽셀의 공간을 기초로 렌더링. 레이트레이싱이나 글로벌일루미네이션 같은 기법을 사용하지 않는 평범하고 기교 없는 렌더링
  • 하드웨어 렌더링
    • 그래픽카드에 의해 생성된 이미지를 렌더링 과정의 최종 결과물로 사용
  • GPU 가속
    • 기타 작업 과정의 속도를 향상시켜주는 리소스로 GPU의 프로세싱 파워를 활용하는 소프트웨어의 렌더링 방식

텍스쳐 매핑

표면의 여러 속성을 조절하고 렌더링의 여러 다른 효과들을 만들기 위해 사용한다. 컬러, 스펙큘러, 인캔더선스, 트랜스페어런시, 디스플레이스먼트, 범프, 노말의 7가지가 가장 흔한 매핑 기법

종류 설명
컬러 매핑 Color Mapping 디퓨즈 매핑 Diffuse Mapping 이라고도 부름. 텍스쳐를 이용해 모델의 주된 서피스 컬러를 바꾼다.
렌더링 시 빛은 라이트에 의해 더해지므로 하이라이트, 그림자 또는 라이팅 변화가 컬러맵 상에 드러나지 않도록 하는 것이 가장 좋다.
스펙큘러 매핑 Specular Mapping 물체 표면의 밝기와 스펙큘러 하이라이트 색에 변화를 준다. 스펙큘러 맵 자체만으론 스펙큘러 하이라이트를 만들지 못하고 광원으로부터 와야 한다.
인캔더선스 매핑Incandescence Mapping 루미너시티 Luminosity, 앰비언스 Ambience 또는 콘스턴트 Constant 매핑이라고도 불린다.
텍스쳐 맵을 사용하여 물체의 자기발광 속성을 흉내낸다. 인캔더선스 맵의 컬러는 빛을 고려하지 않고 최종 렌더링에 그 컬러를 추가한다.
디스플레이스먼트 매핑Displacement Mapping 물체 표면의 모양을 바꾸는 맵. 범프나 노말과 달리 실제 모양을 변형한다.
범프 매핑 Bump Mapping 실제로 지오메트리를 이동시키지 않고 물체의 표면 위에 작은 디테일을 흉내내는 방법
노멀 매핑 Normal Mapping 범프처럼 실제 모델의 모양을 변화시키지는 않지만 범프 보다 더 직접적이고 구체적으로 교란시킨다.
노멀 매핑의 가장 일반적인 사용법은 하이폴리곤 모델과 로우폴리곤 모델 사이의 디테일 차이를 가리는 것이다.

 

  • UV 좌표
    • 텍스쳐맵 상의 픽셀위치를 X와 Y로 표시하는 것과 같은 방식으로 서피스 상의 위치를 표시. XYZ 앞에 있는 문자가 UVW이므로 UV라 붙여졌다

카메라

  • 피사계심도 Depth of Field
    • 얼마나 많은 장면의 영역이 초점 안에 들어올지를 결정
  • 2/3 법칙
    • 카메라와 가까운 쪽으로 1/3은 전경
    • 초점 밖 2/3는 배경으로 본다는 것

렌즈 결점 효과

실제 카메라 렌즈가 가지는 왜곡 현상. 의도적으로 사용한다

종류 설명
렌즈 디스토션 Lens Distortion 직선을 휘어져 보이게 하는 현상
색수차 Chromatic Aberration 높은 콘트라스트의 가장자리나 밝은 선 주변에 색이 들어간 띠처럼 나타나는 현상
비네팅 효과 Vignetting 프레임의 가장자리나 코너를 중앙부보다 어둡게 만드는 현상
렌즈 플레어 Lens Flares 밝은 빛을 바라볼 때 육각형이나 원형 띠가 나타나는 현상
헐레이션 Halation 광원 주변에 번쩍임이 보이는 현상

 

샷의 크기

종류 설명
익스트림 클로즈업 Extreme Close-Up(ECU) 캐릭터 얼굴의 한 부분처럼 아주 작은 디테일로 스크린을 채운다
클로즈업 Close-Up(CU) 캐릭터의 얼굴 같은 특정 부분을 꽉찬 샷으로 잡는다
미디엄 클로즈업 Medium Close-Up(MCU) 캐릭터의 머리와 어깨 정도
미디엄 샷 Medium Shot(MS) 캐릭터의 상체와 머리, 팔 정도
와이드 샷 Wide Shot(WS or Wide) 촬영 장소는 물론 주제와 액션 전체를 보여준다

 

  • Z축 블로킹 Z-Axis Blocking
    • 클로즈업과 와이드샷을 동시에 구현. 어떤 캐릭터는 클로즈업 되어 있고 다른 캐릭터들은 배경에 남아있다
  • 시점 샷 Point-of-View (POV)
    • 캐릭터의 시점에서 장면을 바라 봄
  • 투 샷 Two-Shot
    • 두 캐릭터가 서로 마주보고 있는 장면이나 인터뷰 또는 대화하고 있는 장면을 연출
  • 오버숄더 샷 Over-the-Shoulder Shot(OSS)
    • 클로즈업이나 미디엄샷으로 한 캐릭터를 잡고 다른 캐릭터는 등이나 어깨 정도를 보여 줌

카메라 앵글

동작선 Line of Action

동작선이란 몇 가지 다른 각도의 카메라에서 장면을 촬영하여 끊김 없는 하나의 시퀀스로 묶어 편집할 생각이라면 동작선 한쪽 편에 위치 시키고 촬영해야 한다

퍼스펙티브 Perspective

퍼스펙티브란 카메라의 위치 또는 시점

카메라 움직임

팬 Pan카메라의 위치는 고정된 채 좌우로 방향을 회전하여 대상을 촬영

종류 설명
틸트 Tilt 카메라의 위치는 고정된 채 상하로 회전하여 촬영
줌 Zoom 시야각을 조절하여 장면을 확대/축소한다. 줌-아웃은 시야각을 넓혀 축소하고 줌-인은 시야각을 좁혀 확대한다.
돌리 Dolly 물체를 따라 카메라의 실제 위치가 변경. 돌리-인이면 캐릭터에 다가가고 돌리-아웃이면 캐릭터에서 멀어진다.
랙 포커스 Rack Focus 카메라의 초점을 변화시켜 대상을 초점 안에 들어오거나 흐려지게 한다. 포커스 풀이라고도 한다.

 

구도

종류 설명
3분할 법칙 Rule of Thirds 가로 세로 3등분 된 선들이 만나는 지점에 대상이나 주제를 배치하면 구도가 더 좋아진다
포지티브 스페이스 Positive Space 프레임 내의 주제나 전경의 물체를 보여주는 공간
네거티브 스페이스 Negative Space 물체를 둘러싼 부분이나 배경
시각적 무게감 Graphic Weight 같은 장면 내 다른 사물과 비교해서 구도를 지배하거나 관객의 시선을 끄는 상대적인 비중
구도선 샷 안에 보이는 지배적인 선. 사람들의 시선은 이 선을 따라 움직인다.
탠전시 Tangency 구도 안의 두 라인이 만나는 지점

라이팅

직접광, 간접광

직접광 Direct Light

직접광은 전구나 태양같이 직접 빛을 내어 물체를 비추는 광원

간접광 Indirect Light

간접광은 다른 오브젝트를 비추기 전에 이미 반사되거나 다른 표면에 부딪혀 나오는 빛

라이트

라이트 종류 설명
포인트 라이트 Point Light 옴니 omni 또는 옴니디렉셔널라이트라고도 함. 한 점에서 모든 방향으로 고르게 빛을 방출
스팟 라이트 Spot Light 한 점에서 특정 방향을 향하는 지정된 라이트콘이나 빛기둥. 그림자를 제어하는데 효율적
디렉셔널 라이트 Directional Light 태양의 직사광선을 흉내 낸 라이트. 모든 물체를 같은 각도로 비춘다
에어리어 라이트 Area Light 에어리현실에 존재하는 광원의 물리적 크기를 흉내 낸 라이트. 구형, 사격형, 원판형, 선형 등

 

라이트 역할을 하는 모델

오브젝트를 광원으로 사용. 네온사인 등 렌더링 시간이 느려지는 관계로 다른 라이팅을 이용하여 비슷한 효과를 낸다

라이트 종류 설명
인바이런먼트 라이트Environment Light 스카이돔. 장면 전체를 둘러싸서 조명을 공급한다
앰비언트 라이트Ambient Light 모든 빛을 의미 –하늘에서 오는 빛이나 반사 되는 빛 등– CG에서 앰비언트라이트는 물체를 고르게 밝혀서 비현실적으로 보이게 한다. 안 쓰는 것이 답

 

그림자

그림자의 기능

  • 공간적 관계 정리
  • 다른 각도의 노출
  • 구도의 확장
  • 콘트라스트 추가
  • 장면 밖 공간의 표시
  • 요소들의 결합

그림자 알고리즘의 대표적인 2가지

  • 뎁스맵 섀도 Depth map Shadows
    • 어디에 그림자가 렌더링 될 것인지 결정하기 위해 뎁스맵을 미리 계산
  • 레이트레이스드 섀도 Raytraced Shadows
    • 광원과 조명을 받는 물체 사이에서 빛의 광선을 추적하여 그림자를 계산

오클루젼 Occlusion

오클루젼이란 물체가 빛을 가로 막을 때 생기는 차단효과. 원칙적으로 그림자도 오클루젼의 일종이지만 보통 “그림자가 아닌 다른 종류의 라이트에 의한 차단”이라 한다

앰비언트 오클루젼 Ambient Occlusion

장면 내 다른 물체에 의해 차단되어 있거나 외부로 노출되지 않은 부분을 어둡게 만들기 위해 고안된 기능. 필라이트의 그림자를 보충하거나 대체하는 데 사용할 수 있다

글로벌 일루미네이션 Global Illumination(GI) 상의 오클루젼

장면 안의 서피스 사이에서 상호 반사되는 인다이렉트 라이트를 계산하는 렌더링 방식. 앰비언트 오클루젼이 장면 내 일부분을 따로 어둡게 만드는 데 비해 GI는 바운스라이트나 인다이렉트라이트를 흉내내기위해 빛을 추가한다

  • GI의 종류
    • 래디오시티
    • 포톤매핑
    • 파이널개더링
    • 커스틱스

데이라이트(주광) Day Light

주광의 종류

라이트 종류 설명
선 라이트 Sun Light 태양에서 직접 오는 조명. 태양광
스카이 라이트 Sky Light 하늘에서 오는 조명. 천공광
인다이렉트 라이트 Indirect Light 장면 안의 다른 서피스에서 반사되어 나오는 빛. 간접광

 

쓰리 포인트 라이트(삼점 조명) Three-Point Light

가장 기본적이고 널리 알려진 고전적인 할리우드식 조명 방식. 삼점 조명의 종류

라이트 종류 설명
키 라이트 Key Light 물체의 주요 조명. 가장 밝다
필 라이트 Fill Light 키 라이트에 의해 받는 조명을 부드럽게 확장시켜 물체가 더 잘 보이도록 만든다. 반사광이나 장면의 간접광원효과를 흉내 낼 수 있다.
림 라이트 Rim Light 대상과 배경 간의 시각적인 구분을 돕는 가장자리를 만든다. 대상의 머리카락을 빛내기도 하기 때문에 헤어라이트라고도 한다.

Unity/ 셰이더/ Surface Shader 작성법

Surface Shader

Vertex-Fragment Shader보다 좀 더 높은 수준에서 작성되는 셰이더. Vertex-Fragment 에서 번거롭고 복잡하게 작성해야 하는 것 –라이팅 계산 등– 들을 프로그램 내부에서 자동으로 처리하고, 프로그래머는 직관적인 속성들만 제어하면 되도록 정의되어 있다. –물론 그 자동으로 처리되는 부분을 커스터마이징 하고자 한다면 할 수 있다.

Surface Shader는 유니티에서 주로 사용하는 셰이더이다. 처음 셰이더 파일을 만들면 Default 로 들어가 있는 코드가 서피스 셰이더로 작성되어 있음.

파이프라인


http://www.alanzucconi.com/2015/06/17/surface-shaders-in-unity3d/

Surface Shader에서는 주로 Surface Function을 이용하여 재질을 제어하는 코드를 작성하지만, 필요하다면 Vertex를 제어하거나 Lighting을 제어하는 코드도 만들 수 있다. 위 이미지는 그 3가지 프로세스의 순서를 나타내고 있다.

Continue reading

Unity/ 셰이더/ Vertex-Fragment Shader 기본 작성법

Vertex-Fragment Shader

Vertex Shader + Fragment Shader. 절차상 2개이지만 보통 함께 쓰이기 때문에 Vertex-Fragment Shader라고 한다. 참고로 HSLS(DirectX)에서는 Fragment 대신 Pixel이라는 표현을 쓴다.

유니티에서는 Surface Shader를 주로 사용하지만, 이전의 DirectX 기반으로 게임을 만들 때는 Vertex-Pixel Shader를 주로 사용하였다.

파이프라인


https://www.khronos.org/opengl/wiki/Rendering_Pipeline_Overview

Continue reading

Unity/ 셰이더/ Fixed Function Shader 기본 작성법

Fixed Function Shader

고정 함수 셰이더. 이름 그대로 고정되어 있기 때문에 커스터마이징이 불가능하지만, 그 반대 급부로 처리 속도가 빠르고 낮은 성능의 기기에서도 잘 동작한다는 장점이 있다. 보다 정확한 특징은 아래 참조.

  • 버텍스당 라이팅 연산이 이루어진다.
  • 커스터마이징이 불가능하다
  • 처리 속도가 빠르다.
  • 구형 디바이스에서도 잘 동작한다.
  • 작성이 간편하다.

성능 상 좋지만 고급 효과를 구성하기에는 한계가 있으므로 보통은 잘 쓰지 않는다. 이 페이지에서는 간단한 내용만 이해하고 넘어가기로 한다.

Continue reading

Unity/ 셰이더/ 기본 작성법

셰이더란

프로그래머가 자신이 원하는 그래픽 효과를 구현하기 위해 GPU에게 명령하는 것. GPU는 그래픽 데이터를 처리하는 파이프라인 중간에 프로그래머의 명령을 받아 효과를 반영한다.

셰이더의 종류 자체는 여러가지인데 유니티에서는 Fixed Function Shader, Vertex-Fragment Shader, Surface Shader를 많이 사용한다. –이 외에 Geometry Shader 같은 것도 있지만 잘 쓰이지 않으니 생략.

셰이더를 작성하는 언어도 여러가지인데, OpenGL에서 사용하는 GLSL과 DirectX에서 사용하는 HLSL, NVIDIA에서 개발한 CG 등이 있다. 유니티에서는 보통 CG를 이용하여 작성하는데, CG가 OpenGL과 DirectX 모두 호환되기 때문.

Continue reading

셰이더 프로그래밍 입문

제목 그대로 셰이더 프로그래밍에 대한 기초적인 내용을 다루는 책. 오랜 실무 경험을 쌓은 저자가 학교에서 학생들을 가르치면서 쌓은 강의 경험도 함께 녹여내어 친절하면서도 실용적인 책. 비슷한 시기에 읽은 <유니티로 배우는 게임 수학> 보다 이해하는데 좀 더 좋았음. –물론 그 책은 순수 셰이더는 아니고 3D 개념이 중심이고 셰이더는 막판에 조금 다룬다.

제목에도 쓰여 있지만 '입문' 책이기 때문에 이 책 이후로도 다양한 셰이더 프로그래밍 책을 함께 봐야 좀 더 능숙한 셰이더 프로그래밍을 할 수 있겠지만, 각종 셰이더 프로그래밍에 대한 개념 설명이 무척 잘 되어 있으니 일단 이 책부터 시작하는게 좋다고 생각 됨. 개인적으로는 일단 가볍게 본 수준이라, 한 번 더 읽으면서 좀 더 깊이있게 스터디를 해볼 생각.

디지털 라이팅 & 렌더링

간만에 책 소개해 드립니다
이번에 소개해 드릴 책은 제레미 번 지음, 오영관 옮김의 '디지털 라이팅 & 렌더링' 입니다
뭐 제목 그대로 CG에 관한 책으로 예전부터 관심은 있었으나 공부는 못해보고 있던 차에 우연히 회사에 비치된 것을 슬쩍 보고 냉큼 구입하여 읽게 된 책이지요

책 자체가 게임 보다는 영화 쪽에 초점이 맞추어진터라 –물론 게임 얘기가 없지는 않았지만– 3D 아티스트가 아닌 제가 이해하기에는 더욱 어려움이 있었습니다만
그럼에도 불구하고 제가 읽고 나서 많이 배웠다고 느낀 책이었으니 꽤나 좋은 책인 것 같습니다

그럼 책을 살펴보지요
이 책은 총 12개의 챕터로 이루어져 있는데 전체적으로 라이팅 -> 카메라 -> 렌더링 정도의 흐름을 가지고 있습니다
Chapter 01 – 라이팅 디자인의 기초
Chapter 02 – 라이팅의 기초와 올바른 연습
Chapter 03 – 그림자와 오클루전
Chapter 04 – 환경과 건축물의 라이팅
Chapter 05 – 크리처와 캐릭터의 라이팅 그리고 애니메이션
Chapter 06 – 카메라와 노출
Chapter 07 – 구도와 연출
Chapter 08 – 색의 예술과 과학
Chapter 09 – 셰이더와 렌더링 알고리즘
Chapter 10 – 텍스처의 디자인 지정
Chapter 11 – 렌더링 패스와 컴포지팅
Chapter 12 – 프로덕션 파이프라인과 전문가가 갖춰야 할 것들

목차를 보시면 흐름이 쉽게 이해가 되시겠지만 
1-5챕터까지는 라이팅을 6, 7챕터에서는 카메라를, 8-11챕터까지 렌더링에 대한 이야기를 합니다
 – 마지막 챕터는 작업 방식에 대한 것인데 영화쪽에 관련한 내용이라 저는 훑어만 봤습니다

역자의 글에도 나오는 내용입니다만 이 책은 특정 프로그램을 –마야나 맥스 등– 중심으로 
CG를 설명하는 기법서가 아니라 빛, 카메라, 촬영법, 컬러, 페인팅 등과 같은 보다 CG분야의 근본적인 이론을 다루는 이론서로 CG의 기본적인 부분에 대해 충실히 설명을 하는 책입니다
게다가 단순히 CG 자체만을 이야기하는 것이 아니라 실세계와 관련하여 CG에 대해 설명하고 있기 때문에 더욱 이해가 잘 되지요

책 수준은 3D 아티스트가 아닌 저에겐 한 번 읽고는 이해하기 어려운 부분이 많았지만
3D 아티스트에게 있어 이 책은 기초 체력을 길러주는 정도라 하니 관심 있으신 분들이라면 부담 없이 한 번쯤 읽어 볼만한 책이라 생각 됩니다