Power by Lenshuang~2+3D Game Vfx Base since 2003~2014
  • 2010年12月09日

    Gamebryo Light Settings - [Gamebryo教程]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/lenshuang-logs/87725986.html

     Environmental Steeins ( 환경설정 )

      - Gamebryo 3ds max Plug-in 에서 배경 색은 Rendering > Environment > Common Parameters > Background Color 를 통해

       설정합니다.

       Environment Map 을 고르는 옵션은 아무런 효과가 없습니다.

       Gamebryo 3ds max Plug-in 에서 Global Lighting 섹션의 Ambient 컬러는 Ambient light 값을 제어하며, 이 컬러를 완전한

       검은색으로 설정하면 Gamebryo 3ds max Plug-in 은 별도의 라이트를 익스포트 하지 않을 것입니다.

     ◈ Light setting ( 라이트 설정 )

      - Max의 omni light , directional light , spot light가 지원되며, on/off 플래그는 애니메이트 시킬수 없지만 라이트를 끄거나

       키고 싶다면 컬러를 검정색으로 애니메이트 시킬 수는 있습니다.(라이트는 RGB 0,0,0 에서 꺼집니다)

      

       Gamebryo 엔진에는 ambient light의 개수에 제한이 없으나, 3ds max에는 ambient light가 하나뿐입니다.

       따라서 Gamebryo 3ds max Plug-in 을 통해 라이트와 함께 익스포트 된 씬에는 ambient light 가 하나만 있을 것입니다.

       3ds max 의 ambient light 컬러는 Rendering > Environment > Global Lighting 옵션을 통해 설정할 수 있으며,

       라이트가 더 필요한 경우엔 프로그램적으로 설정 해줘야 합니다.

       Omni light와 spotlight는 위치와 방향을 가지고 익스포트 되지만, Direct light는 무한 라이트이기 때문에 3ds max direct light의

       위치는 무시됩니다.

    ◈ Include / Exclude : 동적 라이트를 관리하는 쉬우면서도 중요한 방법입니다.

     

       Exclude(혹은 Include)를 클릭하면 나타나는 창.

    1. Include 리스트에 포함된 오브젝트가 있다면 해당 라이트는 include에 포함되지 않는 건 모두 무시합니다.

       (Include 리스트에 포함된 오브젝트에만 라이트를 비추게 됩니다.) 

    2. Include / Exclude 리스트에 아무것도 없으면 라이트는 모든 오브젝트를 비추게 됩니다. 

    3. Exclude 리스트에 포함된 오브젝트가 있다면 해당 라이트는 exclude에 포함되어 있는건 무시하고 그 외 나머지

      오브젝트를 비추게 됩니다.

    ◈ 1차식 감쇠(Inverse:역) 2차식 감쇠(Inverse:역 제곱)

       

        

        왼쪽 스피어 그룹은 2차식 감쇠(Inverse:역 제곱)       /       오른쪽 스피어 그룹은 1차식 감쇠(Inverse:역)

       - 감쇠는 Omni light와 Spot light에만 지원되며 아래와 같이 전환됩니다.

            

       라이트 감쇠가 작동하려면 Decay 타입을 켜두어야 합니다.

       Gamebryo에선 라이트에 Far Attenuation 값만 영향을 미칩니다.

       Spot light의 "Light Cone : Falloff" angle 이 익스포트 되며, 쉐이더 파이프라인을 사용 할 때는 Spot light의 "Light Cone :

       Hotspot" angle이 익스포트 됩니다. 

    ◈ Atmospheres & Effects 는 지원되지 않습니다. 

      

    ◈ Projected Effects

      - Projector Parameters 롤아웃에 맵을 로드하면 그 맵은 라이트 맵을 투영하게 됩니다.

      - 그림자를 투영하려면 맵을 shadow Parameters 롤아웃의 Map에 로드합니다.

         

      - "Light Affects Shadow Color"는 투영된 맵을 환경 맵으로 만듭니다. 

    정적 라이팅 ( Static Lighting )

      - 동적 라이트는 한 두개 밖에 없을 때에도 씬에 라이트가 많이 있는 것처럼 보이게 최적화 하는 방법이 많습니다.

       이 기술을 Static Lighting(정적 라이팅)이라 하며, 지오메트리에 버텍스나 픽셀 수준으로 라이팅을 미리 구워서 지오메트리가

       빛을 받고 있는 것 같은 느끼을 만들어 냅니다.

       이 기술은 대부분의 엔진이 적당한 프레임율로 돌아가면서 좋은 라이팅을 얻게 되는 방법입니다.

       정적 라이팅은 버텍스를 페인팅 해서 버텍스 수준에서 처리하거나, 매우 섬세한 그림자가 필요할 땐 메트리얼에 Dark map이나

       Light map을 할당해서 픽셀 수준에서 처리 할 수 있습니다.

    버텍스 컬러로 명암주기

      - 버텍스 페인팅에는 Vertex paint modifier나 Assign Vertex Colors 유틸리티를 사용합니다.

      - 맥스 뷰에서 버텍스 컬러를 확인 할려면 오브젝트 오른쪽 버튼 > Object Properties > Vertex Chammel Display 를 체크

       해줘야 합니다.

       버텍스 컬러는 오브젝의 버텍스 컬러 채널로 설정되며, Unwrap UVW나 UVW Map 에서 Vertex Color Cahnnel을 설정해

       줄 수 있습니다. 

      - Src Mode 가 Amb - Dif 이면 버텍스 컬러는 텍스처 위에서 변조 됩니다. 흰색은 원래의 텍스처 값을 나타내므로 이 변조에

       서는 텍스처가 어두워지기만 합니다. 씬의 동적 라이트(3ds max 라이트)는 여전히 텍스처에 영향을 미칩니다.

      - Src Mode가 Emissive이면 버텍스 컬러는 텍스처에 자가 조명(self - illuminating)을 만들어 냅니다. 텍스처는 버텍스 컬러에

       의해 정적으로 비춰집니다.

       이것은 완전히 정적인 씬에 쓰이는 모드이며, 텍스처들이 라이트 리스트에 포함되면 버텍스 컬러는 라이트 컬러에 첨가되어

       결국은 하얗게 됩니다.

       Max 는 라이트를 포함하고자 하기 때문에 Max에서 이 모드를 생성하는 건 좀 까다롭습니다.

      - Src Mode가 lgnore이면 버텍스 컬러를 보이지 않는 데이터에 쓰기 위한 모드이므로 라이팅에 사용하지 않습니다.

    다크맵으로 명암주기

      - 복잡한 그림자에 쓸 Dark Map을 만들려면 그림자를 맵핑하려는 방식에 맞는 뷰포트에서 렌더링해서 grayscale lighting   

       stencil 이 되게 해야 합니다.

       Dark Map 를 미리 생성하는 방법에는 여러가지가 있습니다.

       좋은 그림자 맵을 만들었다면,  이 맵을 새로운 UVW채널을 사용해서 새로운 UVW modifer로 오브젝트에 맵핑하며, Dark Map

       로드 버튼을 통해 Gamebryo에 로드됩니다. 

      - 라이트가 움직이지 않는 모든 경우엔 되도록 정적라이팅으로서 버텍스 컬러나 다크맵(혹은 라이트맵)을 사용해야 하며,

       이 작업에선 모든 라이트에 감쇠(attenuation)를 설정해주는 것이 중요합니다.

       씬의 라이팅에 동적 라이트를 사용하는게 더 쉽다고 느낀다면, 프로그래머가 동적 라이트를 자동으로 버텍스 컬러에 구워서

       처리해 줄 수 있을 것입니다.(이 방식이 필요한지를 프로그래머와 상의 하십시오)

    3ds Max와 동적 라이팅

      - 라이팅을 셋업하는 가장 쉬운 방법은 Max의 표준 라이트를 이용하는 것입니다.

       그러나, 동적 라이트는 비용이 많이 들며, 라이트가 움직이지 않는 경우라면 동적 라이트를 사용하는 건 너무 과합니다.

       라이트가 씬에서 움직여야 한다면 그 때 동적 라이트를 사용하십시오.

       라이팅의 작동 방식은 모든 프레임에서 각 버텍스나 픽셀마다 라이팅을 계산 하는 방법인데,이때 어플리케이션이 최고의

       속도로 구동되게 하려면 잘 판단해서 되도록 적은 라이트를 사용해야 합니다.  

       라이트의 종류마다 퍼포먼스가 다릅니다.

       directional light, omni light, spot light 순으로 비용이 적게 들며, 라이트의 종류에 따른 퍼포먼스의 차이는 라이팅을

       픽셀 당 처리 할 때 더욱 중요해집니다. 

       디폴트로 디퓨즈 라이팅과 스펙큘러 하이라이트는 버텍스 당 계산되지만, 메트리얼에서 Normal map이나 Parallax map이

       쓰인다면 라이팅을 픽셀 당 계산해야 합니다.

       라이팅을 픽셀 당 계산하면 그 결과는 더 좋게 나오나 퍼포먼스가 나빠질 수 있습니다.

       렌더링 되고 있는 오브젝트가 동적 그림자를 받을 경우에도 라이팅을 픽셀 당 계산해야 합니다.

    分享到: