초보라서 노드가 엉터리로 짜여져있을테니
프로그래머분들이나 지식이 있으신 분들께 비나이다
많은 가르침을 주소서!
끗.
..ㄱㄹㅈㅁㄷㅎ
같이 공부하실분 계속 모집중!
복습도 할겸 올립니다
널리 알려진 조명법중에 키라이트, 백라이트, 필라이트의 3조명법으로
입체적이고 풍부한 사진이나 영상을 얻어내지요
그 백라이트용으로 저번 작업들의 쉐이더에 넣었던게 프레넬이었는데 (뭐 결과물은 좋지 못했지만)


프레넬은 아이벡터를 내적하기때문에 (dot product).
(cross product가 외적 이라고 하네요)
기본적으로 마치 빌보드를 발라놓은듯 어느쪽에서 바라보든 항상 똑같이 생기게 되어있죠.
프레넬은 라이트가 어느쪽에, 있든말든, 외곽에.
저건 앰비언트쪽엔 시커매서 안보입니다만
라이트는 키라이트와 백라이트, 그리고 필라이트가 삼각형을 이루는 위치에 두는것이 적절하다고
옛날에 배웠던 기억이 나는데, 삼각형이라는 법칙은 일단 배재하고,
목표는 라이트1개로 라이트의 반대편에 들어가는 백라이트까지의 구현입니다.

얘가 항상 조명의 반대편에 입혀지는 백라이트에 지정된 컬러를 입힌 녀석이고
(백라이트 존나 과하네요 덜덜)

얘가 그 노드입니다.
요는 서페이스벡터를 마이너스값으로 돌린 것입니다.
(실은 마이너스값을 넣는다는건 생각도 못했었습니다. 이자리를 빌어 호환씨 정말 감사합니닷!!)
서페이스벡터에 -1의 콘스탄트를 곱해서 내적, 그리고 그 백라이트의 크기와 강도를 조절할 수 있는 콘스탄트를 추가했구요 거기에 디퓨즈맵과 컬러를 주었습니다.
응용해서 특정부위에 색을 넣는것만이 아니라 다양하게 사용할데가 있을 것 같습니다.
조명에서 백라이트를 비추는 의도는 반사광입니다.
바닥이나 주변에 반사된 빛이 사물의, 직사광선이 닿지 않는 곳에도 도달해서 입체적이고
이쁘게 보이게 하는데, 이걸 위해 빛의 확산, 반사, 굴절의 GI가 존재하지만
사실 온라인 게임을 만드는데 있어서 엔진에 실시간으로 포톤입자를 뿌려서 GI를 적용한다는건
다소 무리가 있고, 어떻게 보면 이건 가짜GI의 일환이라고도 볼 수 있겠지요.
뭐 실제로 레이트레이스나 Indirect illumination으로 주변에 반사된 빛이 입혀지는게 아니라서
기능이 상당히 제한적이고 조금은 구식 게임에나 쓰일법한 쉐이더지만
언젠가 진짜 GI처럼 보일 수 있는걸 만들어보고 싶네요. 가능할려나
이제 기본적인 기능 구현이 되었으니 저걸 알흠답게 보이도록 수정하는건
여러분께 맡깁니다.
......
차라리 라이트를 하나 더 박는게 나을것같다구여?
저도 그렇게 생각해여
......
인테리어나 영화나 사진이나 조명을 하나만 사용하지 않는 이유는 어떻게해도 덜예쁘기 때문이고
라이트를 심으면 간단하게 해결될 문제를 왜 이렇게 복잡하게 하냐면
1. 라이트를 늘렸을때 게임에 어느정도의 부담이 가는지는 몰라서 헤헤
2. 공부할라구
그럼 국민복지를 위해 야한 사진이나 올릴것이지 이딴건 왜 올렸냐그염?
같이 공부하자구여!
와 뭔말인지 하나도 모르겠음
답글삭제안경 폼으로 쓰는게 아니군요??
@장님 - 2009/09/17 00:13
답글삭제어...이거 폼인데요
ㅁ젣랴ㅓㅈㅁㄷㅎ
림라이트처럼 항상 뒤에 맺히는 걸 만들고 싶은게 아니라..
답글삭제말그대로 주변의 빛을 투명하는 형태의 백라이트를 만들고 싶은건가..
림라이트라면 오브젝트의 페이스노멀벡터값에 카메라-그 페이스를 바라보는
시각-에서 버텍스까지의 단위벡터를 계산해서 뿌려주면 가능한데..
그냥 단순히 일정 값을 뿌려주기만 하는 거면 처음에 만들었다는 프레넬이랑
별로 다를바가 없고,조금 더 낮은 단위에서의 라이트 하나만으로
효과를 만든다면,게임상에 기본적으로 옴니라이트 하나만 박고 라이트맵을
굽는다는 전제로 접근해본다면,예전에 S4에서 잠깐 해본 적이 있는
라이트맵의 컬러값을 오브젝트에 적용하는 방법 있었잖아..
고걸 이용해서 지금 조조가 만든 것처럼 일정한 색을 백라이트에 투영하는데
그 값이 라이트맵컬러랑 현재 들어오는 라이트 색의 혼합-가산혼합-으로
이루어지면 왠지 기존의 빛도 적용되면서 암부의 그림자와도 매칭되는
좀 그럴싸하나 백라이트 색을 실시간으로 만들어 낼 수 있지 않을까..
아..근데 라이트맵에도 색깔을 다양하게 넣는 방법있던가..있겠지..[...]
내가 말한게 조조가 생각한게 맞는지 아닌지도 모르겠군..
야이년아 포스팅 다음에 올라온 포스팅치고는 너무 하드코어하네여
trackback from: RimLight
답글삭제쪼쪼답지 않은 간단한 백라이트 공부 포스팅해서 트랙백합니다.립흘 적은김에 생각나서 적어봅니다.프로그램적으로나 쉐이더에 거의 문외한에 가깝기 때문에이렇게 구현하면 괜찮지 않을까 싶은 부분을 정리해두려고 합니다.방식은 오브젝트의 페이스노멀값과 카메라와의 거리를 측정한다음에 노멀값과 카메라 시야각사이의 각도를 통해서 바라보고 있는 오브젝트의 외곽을 결정하고 카메라와 오브젝트의 수평에서 약 130도의 외곽선부근에 빛을 뿌려준다...라는 건데요..음.....
@nb5 - 2009/09/17 11:22
답글삭제음..조금더 생각해보니 프레넬이라고 불리우는거
UE3에서 프렌셀이라고 불리우는 거 아냐?
난 단순한 림라이트보다 저런식으로 은은하게
들어가는게 훨씬 색도 많아보이고 좋은 거 같던데..
@nb5 - 2009/09/17 11:22
답글삭제호곡! 주루룩 달렸어!
이건 협박받아 기능구현을 한거야 ㅎㅎ
위에도 썼지만 내가 구현하고싶은건 실시간GI.
동적으로 상호작용을 할 수 있어야하고 반사되는 것은 그 결과물이어야 해
그걸 하기위해선 코딩을 할수있어야 되는데 난 못하니..
리얼타임렌더링 책을 사서 기초부터 공부를 좀 해야겠..큭
저번에 그 스타2 pdf에 나온 SSAO도 해봐야하는데 말이지
그리구 저걸 이쁘게 만들거나 다양하게 활용하는건 여러분의 몫입니다~
근데 UE3의 프렌셀이 어떤건진 모르겠는데 프레넬은 fresnel.
내가 영어 못해서 예전에 프레즈널이라고 읽었던 바로 그분 ㅁ제대렂ㄷㅎ
이걸 송선생에게 부탁받은걸 알고 있다.
답글삭제@IX. - 2009/09/18 00:49
답글삭제그리고 자눼가 또망가료눈 굿또 알고이치
어.. 알고있다니!!
나... 내 직업에 자신이 없어졌어.
답글삭제아냐. 난 3D(강조) 프로그래머가 아니니깐 괜춘할꺼야. 하하;;
노드 이미지는 무슨 미로네연(...)
근데 이거 맥스에 있는 기능이야?
전에 UE3 에디터에서 비슷한 걸 본 기분인데...
@로딘 - 2009/09/18 15:32
답글삭제그진말! 님은 실력자로 소문났자나영!
게다가 난 저렇게 GUI가 아니면 손도못대는..큭!
지식도 거의 없어서 간단한거 말구는..
저거 ShaderFX 라구 맥스 플러그인같은건데
언리얼에디터 노드짜는거랑 방식이 똑같앵
근데 이름들이 다르대
헐...간지나고 있어보이네요 ...
답글삭제I cannot see the earlier mentioned remark for reasons unknown
답글삭제