라이트 맵을 구운 후 OptiX Denoiser를 적용하는 방법

Unity 2018 이전 버전의 라이트매퍼는 디노이즈에 대응하고 있지 않기 때문에 어떻게든 하자고 하는 이야기.

이 방법은 라이트 맵에 한정되지 않고 렌더링 된 이미지 시퀀스에도 사용할 수 있습니다.

※ 위: 디노이즈 후 하: 디노이즈 전
라이트매퍼에 디노이저가 붙어 있는 Unity 2019 이후 버전에서도, 디노이즈를 실행하려면 다시 라이트맵을 베이크할 필요가 있으므로, 디노이즈의 처리를 나누어 실행하고 싶을 때에도 유효(한 하즈 모쿠지
  • OptiX Denoiser 다운로드
  • Arnold와 함께 제공되는 디노이저


  • Windows용 배치 스크립트
  • 다운로드
  • 사용방법

  • 필터 설정 참고
  • 결론

  • OptiX Denoiser 다운로드



    다음 리포지토리에서 OptiX 디노이저 CLI 도구를 다운로드할 수 있습니다.

  • DeclanRussell/NvidiaAIDenoiser

  • 위의 소프트웨어를 사용하려면 해당 GeForce 시리즈 그라보와 드라이버가 (아마도) 필요하므로 준비하십시오.

    OptiX 디노이저에 대해 자세히 알아보십시오.

  • NVIDIA® OptiX™ AI-Accelerated Denoiser

  • Arnold와 함께 제공되는 디노이저



    Solid Angle의 Autodesk 판매 Arnold에는 렌더링 후 디노이즈하는 Noice라는 도구가 함께 제공됩니다.

    Noice를 사용하여 노이즈를 제거하려면 컬러 이외에도 상당한 수의 레이어가 요구되므로 Unity의 라이트맵을 디노이즈하는 용도로는 사용할 수 없지만 GUI도 붙어 있고 시간축의 보완도 있다. 기억하고 손해는 없다.



  • Arnold Denoiser - Arnold for Maya User Guide - Arnold Renderer

  • Windows용 배치 스크립트



    OptiX Denoiser CLI 도구가 준비되면 Unity에서 베이킹 한 라이트 맵에 디 노이즈를 적용합니다.

    폴더의 이미지에 대해 일괄 처리를 하는 Windows용 배치 스크립트와 사용 방법은 다음과 같다.

    ※ Unity의 라이트맵에 적용하는 가정이므로, 「BeforeDenoise~」라고 하는 서브 폴더에 오리지날 파일을 옮겨, 원의 파일과 동명으로 디노이즈 끝난 화상을 보존한다.

    Normal(-n)Albedo(-a) 의 입력은 없음. ※ 컬러 화상만으로도 디노이즈는 적용할 수 있다.
  • Normal 과 Albedo 의 입력이 옵션인 것은, 면의 방향이 다르다 → 색의 변화는 노이즈가 아니다,라고 판정하기 위한 추가 정보이기 때문이라고 생각하므로, 라이트 맵 폴더에 있는 알베도·노멀 같다 이미지를 전달하면 좋을 만큼의 하즈. (필요한 경우)

  • 다운로드



    다음 텍스트를 好きなファイル名.bat라는 확장명이 있는 이름으로 저장합니다.

  • Batch Script for OptiX Denoiser CLI by @DeclanRussell
  • @echo off
    
    
    ::::::: SETTING :::::::
    
    set DENOISER_EXE=C:\Path\To\OptiX Denoiser Standalone\Denoiser_v2.4\Denoiser.exe
    
    set SRC_BACKUP_FOLDER=BeforeDenoise~
    set SRC_BACKUP_PREFIX=
    
    
    
    ::::::: INPUT :::::::
    
    if NOT EXIST "%~1" (
      echo.
      echo     No Directory Found. Drag ^& Drop Directory to Denoise.
      echo.
      timeout 10
      goto :EOF
    )
    
    
    
    set /p DENOISER_ARGS=Additional denoiser options [-h or any]: 
    
    if "-h"=="%DENOISER_ARGS%" (
      echo.
      "%DENOISER_EXE%" -h
      echo.
      pause
      goto :EOF
    )
    
    
    set /p TARGET_EXT=Enter target file extension [png or any]: 
    
    echo Target File Extension is set to: %TARGET_EXT%
    echo.
    
    
    
    
    ::::::: MAIN :::::::
    
    call :MAIN "%~dpn1"
    echo.
    pause
    goto :EOF
    
    
    
    :MAIN
    
    
      pushd "%~dpn1"
      if not 0==%ERRORLEVEL% (
        echo.
        echo     Not a Directory: %~dpnx1
        echo.
        ::timeout 10
        goto :EOF
      )
    
      mkdir "%SRC_BACKUP_FOLDER%"   2>nul
    
    
    
    
      for %%I in (*.%TARGET_EXT%) do (
        echo.
        echo Denoising...: %%~nxI
    
        if NOT EXIST "%~dpn1\%SRC_BACKUP_FOLDER%\%SRC_BACKUP_PREFIX%%%~nI.%TARGET_EXT%" (
          copy /-Y "%%~nI.%TARGET_EXT%" "%~dpn1\%SRC_BACKUP_FOLDER%\%SRC_BACKUP_PREFIX%%%~nI.%TARGET_EXT%"
        ) else (
          echo         Original File exists... copy skipped.
        )
    
        "%DENOISER_EXE%" %DENOISER_ARGS% -i "%~dpn1\%SRC_BACKUP_FOLDER%\%SRC_BACKUP_PREFIX%%%~nI.%TARGET_EXT%" -o "%%~nI.%TARGET_EXT%"
      )
    

    사용방법



    저장한 .bat 파일에 폴더를 드래그&드롭 하면 입력 대기의 윈도우가 표시되므로, 추가 플래그와 확장자(예: exr ※점은 없음)를 입력해 실행.

    ※ 옵션에 -h 를 입력하면 도움말을 볼 수 있다.


    필터 설정의 주의점



    데노이저를 사용하여 만족스러운 결과를 얻으려면 Unity 라이트 매퍼 필터를 꺼야합니다.

    Filtering을 Auto(Gaussian)로 설정하여 베이크한 다음과 같은 라이트맵은 디노이저로 처리해도 거의 변화는 기대할 수 없다.

    반드시 Unity 필터는 "None"으로 설정하여 라이트맵을 구워야 한다.

    ※ 카메라로 촬영했을 때의 핀 보케 부분은 정확히 이런 인상이므로, 데노이저도 조정하지 않는 것이라고 생각된다.


    결론



    Denoise는 Denoize라고 입력하기 쉽습니다.

    이상입니다. 수고하셨습니다.

    좋은 웹페이지 즐겨찾기