목록전체 글 (13)
buntalk.com
재질의 구성요소 Drawing 개체는 저마다의 재질을 가져야 비로소 실제모양이 갖춰진다. 개체중에는 자체색상만 가지는 개체 (Diffuse) 빛이 정방향으로 비치면 반사하는 개체 (Specular) 빛이 비추지 않는 곳에도 어느정도의 색상을 가지는 개체 (Ambient) 자체적으로 발광하는 개체 (Emission) 로 구성된다. 이 중 Diffuse는 빛의 방향, 빛의 세기에 연관되는 성분, Specular는 보는 방향, 빛의 방향, 빛의 세기에 연관되는 성분, Ambient, Emission은 보는 방향, 빛의 방향, 빛의 세기에 연관되지 않는다. Diffuse, Specular 그리고 음영 형식 Diffuse, Specular는 음영(Shading)방식에 따라 달라지는 성분이다. 음영형식은 물리적으로..
빛의 형식은 크게 4가지로 구분할 수 있다. Ambient Light 구성요소: 빛의 색 특정한 위치만 빛을 비추는 것이 아닌 전체적으로 빛이 은은하게 비치는 형식 이 빛이 장면에 담겨 있다면, 그 장면 내의 모든 물체는 기본적으로 빛이 있어 어느정도는 Diffuse색상을 표시한다. 물론 장면에 따라 Ambient 조명이 영향을 주는 최대 계수를 달리할 수 있다. Directional Light 구성요소: 빛의 색, 빛의 방향 태양과 같이 모든 물체에 같은 방향으로 빛이 비치는 형식 물체에 면마다 설정된 법선 벡터와 연산되어 빛의 양이 결정된다. 만약 빛의 방향이 면에 수직으로 비친다면 표시할 색상은 최대가 될 것이며, 각도가 틀어지면서 표시할 색상 강도는 적어지게 된다. 표시할 색상 강도는 내적을 통해..
2010/07/26 빛은 Red, Green, Blue로 구성된다. 빛이 자체에 색상을 가진 물체에 비춰지면 어떤 색상으로 보여지는가 ? 빛이 합성된 결과 연산식은 각 성분끼리의 곱이다. (R1, G1, B1) * (R2, G2, B2) = (R1*R2, G1*G2, B1*B2) 빛이 다음과 같이 흰색이라고 하자. (Lr, Lg, Lb) = (1, 1, 1) 색상 (Diffuse 성분) 이 다음과 같은 물체에 비춰지면 어떻게 될까? (Dr, Dg, Db) = (1, 0, 0) (Lr*Dr, Lg*Dg, Lb*Db)=(1, 0, 0) 즉, 붉은색이 된다. 만약 빛이 파란색이면 어떻게 될까? (Lr, Lg, Lb) = (0, 0, 1) (Dr, Dg, Db) = (1, 0, 0) (Lr*Dr, Lg*Dg, ..
2010/07/26 OpenGL ES 2.0에서 glUseProgram을 통한 쉐이더 전환은 의외로 오버헤드가 적다. 그러나 유니폼 변수할당은 오버헤드가 크므로 가급적 유니폼 변수 갯수를 줄이는 것이좋다. 즉, 무엇보다 CPU영역 메모리 데이터를 GPU영역 메모리로 전달하는 횟수를 줄이는 것이 전체 성능향상에 이롭다.
2010/07/26 Camera 변환에는 LookAt 변환과 카메라의 회전량과 위치를 통한 변환이 있다. 여기서는 먼저 Lookat에 대해 먼저 다루도록 하겠다. LookAt변환은 상대적으로 단순한 형태로서 눈의 위치(eye) 에서 보는 위치(at) 그리고 카메라의 윗 방향 (up)으로 구성된다. 카메라 공간도 공간임에 따라 행렬로 설명할 수 밖에 없다. 그러므로 카메라 변환을 살펴보기 앞서 행렬공간에 대해 짤막하게 미리 살펴보자. 에디터가 행렬을 나타내기 여의치 않으므로 MATLAB에서 나타내는 행렬 표기방식으로 설명을 진행한다. " "는 다음 열의 값을 ";"은 다음행의 값을 나타낸다. [1 2]는 1행 2열 행렬을 [1;2]는 2행 1열의 행렬이다. 공간을 정의함은 3개의 기저벡터를 지정하는 것이라..
2019/04/08 Tutorial 07: Seeking http://dranger.com/ffmpeg/tutorial07.html 탐색 명령 다루기 이제 재생기에 탐색 기능을 추가한다. 또한 av_seek_frame 이 얼마나 쉽게 사용할 수 있는지 확인한다. 작게 앞뒤로 가는 것과 많이 앞뒤로 가는 것을 만들 것이다. 왼쪽 오른쪽 방향은 10초, 위 아래 방향은 60초이다. 그러니 먼저 메인루프에 키 입력을 받도록 처리한다. 키입력을 받은 곳에서 직접적으로 av_seek_frame을 호출할 수는 없다. 이 것은 decode_thread루프에서 처리해야한다. 그러니 큰 구조체에 추가적인 변수를 추가하여 탐색 플래그를 설정한다. int seek_req; int seek_flags; int64_t seek..