Loading...
2011. 6. 22. 19:17

빛의 감쇠 계산

빛의 감쇠를 계산하는 방법1. 기본적인 방법.점광원으로부터 방출되어서 하나의 표면을 떄리는 에너지는 표면과의 거리가 멀어짐에 따라 감소한다.간단하게 func(Attenuation) = 1/d(L) 을 사용하기도 하는데 이보다는 제곱을 사용하는것이 결과물이 더 좋다.func(Attenuation) = 1 / (d(L) * d(L))그런데 테스트 해 보면 알 수 있지만 이 공식의 문제는 가까울 때에는 너무 선명하고 멀어질 수록 너무 극명하게 약해진다는 것이다.그래서 Direct3D에서 점광의 감쇠는 아래의 공식을 사용한다.func(Attenuation) = 1 / ( A(0) + A(1) * d(L) + A(2) * d(L) * d(L) )여기서 A0,1,2는 감쇠 상수이다.A1 = 0, A2>0이면 방사성..

2011. 5. 5. 17:43

조명효과 - 램버트 확산 조명

사실적인 화면(렌더링 장면이나 회화)을 볼 때 이것을 3차원 이라고 인식할 수 있도록 하는 중요한 두가지 요소는 바로 원근과 음영이다. 원근 : 멀리 떨어져 있는 것을 입체적 으로 그리는 방법. 투시변환을 통해 재현되고 있다. 음영 : 물체에 조명을 비추었을 때 조명이 정면으로 비치는 부분은 밝고, 비치지 않는 부분은 어둡게 하는 방법. 이 기법을 통해 물체의 요철(오목함과 볼록함)이나 질감을 느낄 수 있다. 램버트 확산 조명. 1. 확산 반사광 : 빛은 입사각이 직각에 가까울수록 밝으며 직각에서 멀어질수록 어두워진다. 즉, 구에 빛을 비추면 정면으로 빛을 받는 부분은 초낸 밝지만 뒷부분은 어두워 진다. 이러한 현상은 당연하다고 생각될 만큼 늘상 보아오던 것이다. 또 하나 생각해 볼 것이 있다. 손정등을..

PartialPrecision

// D3DXSHADER_PARTIALPRECISION // Force all computations in resulting shader to occur at partial precision. // This may result in faster evaluation of shaders on some hardware. 이 옵션을 사용하면 shader의 float의 정밀도를 반으로 줄인다. 그럼으로 인해서 shader들의 연산 속도를 높인다. // 그 외 기타 shader 옵션 //---------------------------------------------------------------------------- // D3DXSHADER flags: // ----------------- // D3DXSHA..

Gemetric Modeling Systems

링크 : http://blog.naver.com/dombi77?Redirect=Log&logNo=110037299640 솔리드(3d solid)는 덩어리 형식으로 두께가 있고부피가 있는 반면 서페이스는(surface) 3차원으로 종이 같이두께가 없는 면으로 구성되어 있습니다. 3d solid를 폭파시키면 surface로 변형되고 suface를 폭파하면 선,호,곡선등으로 바뀝니다. surface 관련 명령어들을 나열하자면 edgesurf, rulesurf, tabsurf, revsurf 등이 있고 변수로 surftab1, surftab2 값을 크게주면 정밀하게 해줍니다 솔리드(solid)란 의미 그대로 담는 그릇에 따라 모양이 바뀌는 물이나 공기같은 것이 아니라 모양이 고정된 물체, 즉 고체를 의미한다. ..

3D 모델링의 개요 및 종류

■ 3차원 모델링과 주얼리캐드의 종류 1. 3차원 모델링(3D Modeling)의 개요 및 종류 1) 3차원 모델링의 개요 2) 3차원 모델링의 종류 2. 주얼리 관련 CAD의 종류 1) JewelCAD 2) JCAD3/Pro 3) Rhino Jewelry Cad 4) 3D Studio Max, AutoCAD, ...etc. (일반 캐드프로그램의 활용) 1. 3차원 모델링(3D Modeling)의 개요 및 종류 1) 3차원 모델링의 개요 모델링(geometric modeling)이라는 용어는 1970년대의 CAD/CAM 시스템의 발전과 더불어 사용되기 시작했다. CAD에서 제품을 설계하고, 그 결과를 컴퓨터의 화면에 시각적으로 나타내는 것이다. 실물과 같이 보고 느낄 수 있도록 물체의 형상을 구성하는 과..

shader 2.0 & 3.0

이전에 입사하면서 2.0과 3.0의 차이를 말하라는 면접질문을 받은적이 있다. 지금도 그렇지만 그때는 더욱 아는게 없었고 그래서 머 농담식으로 "3.0이 2.0보다 더 좋을 겁니다" 라고 했었었다. 그냥 그때 알고 있던 거라도 말할걸 그랬나 하고 일년반이나 지난 지금 후회하고 있긴 하지만... 머, 결국은 회사 잘 다니고 있으니까.. ㅎㅎㅎ. shader 공부를 하는도중에 생각이 나서좀 정리를 해두고싶네.. 2.0과 3.0의 차이점. 1. 유연한 입출력 선언. 세이더 프로그램에 대한 입력의 수가 지원되는 입력 레지스터의 수를 초과하더라도, 여러 입력들을 한 레지스터에 함께 넣ㅇ르 수 있다. 2. 조건자의 제공. 동적인 쓰기 마스킹이 가능한 4개의 불린 플래그들의 묶음으로 이루어진 레지스터. 이 레지스터를..

일정한 크기의 빌보드.

너무 오래동안 삽질했다..젝1.!!!!!!! 카메라 거리에 따른 스케일량 공식 (카메라 FOV * 0.5f) * 카메라와의 거리 카메라와의 거리 D3DXVECTOR3 vLen = D3DXVECTOR3(m_pkRenderer->GetEyePos()->x - pkEntityFont->GetFontPos()->x, m_pkRenderer->GetEyePos()->y - pkEntityFont->GetFontPos()->y, m_pkRenderer->GetEyePos()->z - pkEntityFont->GetFontPos()->z); float fLen = D3DXVec3Length(&vLen); 스케일 값 float scale = tan(m_pkRenderer->GetFov()/2)*fLen*0.4f; 가장..

3d 좌표를 2d로 바꾸는 법.

[출처] 3D 좌표 2D 좌표로 바꾸기 |작성자 하이요 //CONVERT_3DTO2D_POINT (함수) POINT CAppForm::CONVERT_3DTO2D_POINT ( const D3DVIEWPORT9& vp, const D3DXMATRIX& matView, const D3DXMATRIX& matProj, D3DXVECTOR3 v ) { D3DXMATRIXA16 matCombine = matView * matProj; D3DXVec3TransformCoord ( &v, &v, &matCombine ); v.x += 1.0f; v.y += 1.0f; v.x = ( vp.Width * (v.x ) ) / 2.0f + vp.X; v.y = ( vp.Height * (2.0f-v.y) ) / 2.0f +..