UDN
Search public documentation:

DevelopmentKitGemsUsingLightFunctionsKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > UDK 젬 > 라이트 함수 사용하기

라이트 함수 사용하기


문서 변경내역: James Tan 작성. 홍성진 번역.
UDK 2011년 6월 버전으로 최종 테스팅, PC 호환

개요


라이트 함수는 깜빡이는 빛, 텍스처 입힌 빛 등 조금 더 재미있는 라이팅 셋업을 만드는 데 사용하는 것입니다. 언리얼 엔진 2 경험이 있으시다면, 라이트 함수란 프로젝터와 비슷한 것이라 생각하시면 됩니다. 라이트 함수는 언리얼 엔진 3 의 머티리얼 시스템을 사용하므로, 더욱 쉽게 만들 수 있습니다.

이 UDK 젬에서는 여러가지 라이트 함수를 사용하여 게임을 돋보이게 하는 법을 선보이겠습니다. 기술적으로 자세한 내용에 대해서는 Light Functions KR 페이지를 참고하시기 바랍니다.

텍스처 입힌 스트로브 라이트


텍스처 입힌 스트로브(디스코장처럼 현란하게 깜빡이는) 라이트는 라이트 벡터에서 쏘아져 나오는 텍스처를 가지고 규칙적으로 씬에 비추는 라이트입니다. 이 방법으로 텍스처를 벽에다 쉽게 쏠 수 있으며, 물속의 라이트에서 화선(caustics)을 던지고자 하는 상황에도 좋습니다.

(커서를 올리시면 애니메이트됩니다.)

TexturedStrobeLightFunction_Thumbnail.jpg

머티리얼 레이아웃

이 머티리얼의 작동 방식은 스케일된 텍스처 두 개를 패닝하고 로테이트한 다음 그 결과를 더해 화선(caustics)을 만들어 내는 것입니다. 스트로빙(잠깐씩 꺼졌다 켜졌다 하는) 효과를 내기 위해 사인 곡선을 사용하여 전체적인 밝기를 조절합니다. -1.f 에서 1.f 사이의 사인을 0.f 에서 1.f 로 옮기는 데 ConstantBiasScale 이 사용됩니다. 그리고 그 결과를 곱한 다음 이미시브로 전해줍니다.

TexturedStrobeLightMaterialLayout_Thumbnail.jpg

네온 스트로브 라이트


네온 스트로브 라이트는 텍스처 입힌 스트로브 라이트와 비슷한데, 텍스처를 쏜 다음 빛의 색을 변경한다는 점이 다릅니다. 이런 스타일의 라이트는 네온사인, 프로젝터 등에 좋습니다. 이 예제에서 보면 텍스처가 타일링되지 않도록 클램핑하고, 라이트 함수를 포인트 라이트가 아닌 스포트 라이트로 사용하여 프로젝터같은 식으로 돌아가고 있습니다.

(커서를 올리시면 애니메이트됩니다.)

NeonStrobeLightFunction_Thumbnail.jpg

머티리얼 레이아웃

이 머티리얼의 작동 방식은 텍스처 입힌 스트로브 라이트와 비슷하지만, 두 가지 다른 색을 보간하여 "네온"같은 모습을 내는 방법을 시연해 보입니다. 바이어스된 (-1.f 에서 1.f 범위의 사인을 0.f 에서 1.f 범위로 옮긴) 사인 곡선을 사용하고, 두 가지 색을 선형 보간시켜 이뤄내고 있습니다. 그런 다음 텍스처를 곱해줍니다. 텍스처를 클램핑(clamp, 제한)하고 샘플에 0.5f, 0.5f 고정 패닝을 적용한 이유는 스포트 라이트가 텍스처를 올바르게 쏴줄 수 있도록 하기 위해서입니다.

TexturedStrobeLightMaterialLayout_Thumbnail.jpg

단순한 스트로브 라이트


단순한 스트로브 라이트는 일정한 시간 패턴으로 방을 밝혔다 말았다 하는 것입니다. 라이트의 밝기를 일정한 비율로 변경해 주기만 하는 것이라 매우 단순한 라이트 함수입니다.

(커서를 올리시면 애니메이트됩니다.)

StrobeLightFunction_Thumbnail.jpg

머티리얼 레이아웃

이 머티리얼의 작동 방식은 단순히 바이어스된 사인을 이미시브로 직접 출력시켜 주는 것입니다.

SimpleStrobeLightMaterialLayout

텍스처 입힌 깜빡이는 빛


텍스처 입힌 깜빡이는 빛은 깜빡이며 랜덤하게 그림자를 드리우는 방과 같은 효과를 내기 좋습니다. 방에 단순히 깜빡이기만 하는 빛이 내지 못하는 분위기와 역동성을 낼 수 있습니다.

(커서를 올리시면 애니메이트됩니다.)

TexturedFlickeringLightFunction_Thumbnail.jpg

머티리얼 레이아웃

이 머티리얼의 작동 방식은 회전하고 패닝하는 텍스처 샘플러 둘을 스케일 적용하여 더해주는 것입니다. 결과값이 0.f 에서 1.f 사이에 있도록 한 다음 이미시브 인풋으로 출력합니다.

TexturedFlickeringLightMaterialLayout_Thumbnail.jpg

간격을 두고 깜빡이는 빛


간격을 두고(interval) 깜빡이는 빛은 깜빡이는 빛을 쉽게 조절할 수 있습니다. 라이트 함수 사용시 머티리얼 인스턴스를 통해 깜빡이는 속도를 변경하는 것입니다.

(커서를 올리시면 애니메이트됩니다.)

IntervalFlickeringLightFunction_Thumbnail.jpg

머티리얼 레이아웃

이 머티리얼이 작동하는 방식은 두 사인과 코사인 곡선을 사용하여 그 결과를 더하는 것입니다. 간격 비율은 FlickerInterval 이라는 스칼라 파라미터로 Time 값을 조절하여 변경합니다. 그런 다음 사인과 코사인을 더해주고 floor 를 적용(시켜 가장 큰 정수를 반환), 결과를 클램핑하여 그 결과를 이미시브로 연결합니다.

IntervaledFlickeringLightMaterialLayout_Thumbnail.jpg

단순히 깜빡이는 빛


이 머티리얼은 변경할 수 있는 파라미터가 없다는 점만 빼면 간격을 두고 깜빡이는 빛과 완전 똑같은 식으로 작동합니다.

(커서를 올리시면 애니메이트됩니다.)

FlickeringLightFunction_Thumbnail.jpg

머티리얼 레이아웃

FlickeringLightMaterialLayout_Thumbnail.jpg

큐브 매핑된 라이트


텍스처는 보통의 2D 텍스처를 사용해도 되고 큐브 맵을 사용해도 됩니다. 포인트 라이트처럼 여러 방향으로 빛이 나갈 경우는 큐브 맵이 더 좋습니다. 디렉셔널 라이트나 스포트 라이트처럼 한 방향으로 나가는 빛의 경우엔 2D 텍스처가 더 낫습니다. 포인트 라이트(나 기타 방향이 여럿인 라이트)에 2D 텍스처를 사용하면 스트레칭(늘어짐)이나 밴딩(띠현상)이 나타날 수 있습니다. 큐브 맵으로는 이 문제를 명확히 해결합니다.

CubeMappedLightFunction.jpg

머티리얼 레이아웃

이 머티리얼은 단순히 큐브 맵을 이미시브로 출력하는 것입니다. 큐브 맵 룩업 좌표가 라이트 벡터에 설정됩니다.

CubeMappedLightMaterialLayout.jpg

구름빛


이 라이트 함수는 구름의 흐름을 시뮬레이션하기 위해 단순히 래핑된 패닝 텍스처를 출력합니다. 간단하지만 씬에 더해지는 효과는 큽니다.

CloudLightFunction.jpg

머티리얼 레이아웃

CloudLightMaterialLayout.jpg

값싼 그림자 빛


값싼 다이내믹 섀도우를 만드는 데 사용할 수 있는 기법입니다. 그늘진 영역을 만들려면 마스크를 만들면 됩니다. 그러나 이 방법은 그림자를 드리우는 오브젝트와 라이트 사이에 아무것도 올 수 없을 때만 작동한다는 점에 유의하시기 바랍니다.

(커서를 올리시면 애니메이트됩니다.)

CheapShadowedLightFunction.jpg

머티리얼 레이아웃

CheapShadowMaterialLayout_Thumbnail.jpg

내려받기