Q100384: ExrCombine을 통해 Katana 에서 채널/AOV를 병합할 때 렌더링이 실패합니다.

팔로우
증상

Katana 에서 여러 AOV를 하나의 다중 채널 EXR 파일에 채널로 병합하려고 하면 Katana 에서 EXR 이미지를 병합하는 데 사용하는 도구인 ExrCombine에 영향을 미치는 OpenEXR의 알려진 제한으로 인해 렌더링 실패 및 오류가 발생할 수 있습니다.

오류는 다음과 같을 수 있습니다.

Running command: ExrCombine
/tmp/ katana _tmpdir_7664/sphere_diffuse5_Render_primary_rgba_square_512_linear.1.exr primary
/tmp/ katana _tmpdir_7664/sphere_diffuse5_Render_direct_diffuse_direct_diffuse_square_512_linear.1.exr direct_diffuse
/tmp/ katana _tmpdir_7664/sphere_diffuse5_Render_sss_sss_square_512_linear.1.exr
sss /tmp/merge.exr
Render stopped by signal: 6
CommandLineRender Error: doRender problem
Reason = Render stopped by signal: 6
Render error. Time elapsed: 6.33 s
Node 'Render': Render failed with a rendering error: Render stopped by signal: 6

렌더링이 실패하면 스택 추적에서 다음 오류와 함께 Katana 충돌이 발생할 수도 있습니다.

[INFO python.MainBatch]: *** Error in 'ExrCombine': free(): invalid pointer: 0x0000000000e8f1e0 ***

원인

다른 데이터 창을 사용하여 이미지를 병합하려고 하면 ExrCombine 유틸리티가 실패합니다.

이는 병합할 EXR 이미지의 dataWindow 헤더 속성이 일치하지 않는 경우 , 특히 첫 번째 병합된 AOV가 이후에 병합된 AOV보다 작은 픽셀 데이터 창을 갖는 경우 오류가 발생함을 의미합니다.

이 문제를 해결하려면 다음 문제 해결 단계를 수행해 보세요.

  • "기본" 렌더 출력이 출력 유형 "raw"로 설정되어 있는지 확인하거나 병합된 출력에 "기본" 패스를 포함하지 마십시오.
  • 병합할 모든 AOV가 동일한 dataWindow 속성 값을 가지고 있는지 확인하십시오.
  • "원시" 출력 유형을 사용하거나 exrOptimize를 비활성화하여 포스트 렌더링 EXR 최적화를 우회합니다.
  • Katana 타일링된 출력을 병합할 수 없으므로 렌더링된 EXR이 타일링되지 않았는지 확인하세요.

각 제안 사항에 대한 자세한 내용을 읽어 보시기 바랍니다.

기본적으로 Katana 이미지 데이터 작업 시 4개의 채널(RGBA)만 읽고 렌더링할 수 있습니다. 그러나 사용자는 ExrCombine이라는 내부 Katana 유틸리티를 통해 여러 이미지를 병합하여 다중 채널 EXR을 생성할 수 있습니다.

ExrCombine 유틸리티는 원래 동일한 크기의 픽셀 데이터 창과 이미지를 병합하기 위해 만들어졌습니다. OpenEXR에는 여러 채널을 하나의 EXR 파일에 쓸 때 제한이 있기 때문입니다.

이미지의 픽셀 데이터 창 크기는 dataWindow EXR 헤더 속성에 저장되며 EXR 파일에는 이러한 속성이 하나만 포함될 수 있습니다. 이는 모든 채널/AOV가 동일한 dataWindow 속성 값을 공유해야 하며 병합된 EXR 내에서 자체 값을 유지할 수 없음을 의미합니다.

따라서 Katana 픽셀 데이터 창 크기가 다른 이미지 병합을 지원하지 않습니다.

선택한 dataWindow 속성 값이 병합되는 모든 AOV의 데이터 창 크기를 포함하지 않는 경우 렌더링이 실패하거나 Katana 충돌할 수 있습니다. 이는 헤더에 하나의 데이터 창만 저장할 수 있는 OpenEXR의 제한 때문입니다. 이는 모든 채널/AOV가 동일한 dataWindow 속성 값을 공유해야 하며 병합된 EXR 내에서 자체 값을 유지할 수 없음을 의미합니다. 따라서 Katana 픽셀 데이터 창 크기가 다른 이미지 병합을 지원하지 않습니다.

OpenEXR이 동일한 파일 내의 여러 dataWindow 헤더 속성에 대한 확장 지원을 제공하면 Katana 에 ExrCombine 기능을 개선하라는 기존 기능 요청이 있습니다. 이는 다음과 같이 기록됩니다: ID 75636 - ExrCombine: 다양한 픽셀 데이터 창이 있는 이미지에 대한 더 나은 지원

이에 대한 자세한 내용과 다중 채널 설정에 따라 병합 관련 문제를 해결할 수 있는 위에 제안된 해결 방법에 대한 세부 정보를 읽어보세요.


추가 정보

EXR 데이터 창

각 OpenEXR 파일은 파일 헤더에 있는 속성 목록을 통해 설명됩니다. 샘플 .exr 파일에서 'exrinfo'와 같은 명령을 실행하면 다음과 같은 속성 값이 인쇄됩니다.

> exrinfo image.exr

이미지.exr:

file format version: 2, flags 0x0
channels (type chlist):
B, 16-bit floating-point, sampling 1 1
G, 16-bit floating-point, sampling 1 1
R, 16-bit floating-point, sampling 1 1
compression (type compression): piz
dataWindow (type box2i): (0 0) - (511 511 )
displayWindow (type box2i): (135 125) - (377 409)
lineOrder (type lineOrder): increasing y
pixelAspectRatio (type float): 1
screenWindowCenter (type v2f): (0 0)
screenWindowWidth (type float): 1 

이 경우 dataWindow 속성 의 값은 (0 0) - (511 511) 입니다 . 이는 이미지 파일에 512x512 픽셀이 저장되어 있음을 의미합니다.

displayWindow는 이미지 를 볼 때 표시되는 이미지 영역을 설명합니다. 이 영역은 OpenEXR 파일에 데이터가 존재하는 영역보다 크거나 작을 수 있습니다.

Katana 에서 "병합" 출력을 위한 dataWindow 정의

"병합" 유형의 렌더 출력을 사용하여 다양한 데이터 창과 이미지를 결합할 때 RenderOutputDefine 노드의 mergeOutputs 매개변수 드롭다운에서 처음 선택한 입력의 dataWindow 속성 값이 최종 출력의 dataWindow 로 사용됩니다 .

Pasted_image_0.png

RenderOutputDefine 노드 예시의 이 스크린샷에서 mergeOutputs 매개변수의 첫 번째 선택된 입력은 '기본' 출력입니다. 이는 ExrCombine 유틸리티로 생성된 최종 병합 EXR의 경우 '기본' 패스의 dataWindow 헤더 속성이 사용된다는 의미입니다.

dataWindow 헤더 속성 이 병합하려는 나머지 렌더링 출력의 dataWindow 보다 작은 경우 ExrCombine 병합 프로세스가 실패하여 위에 언급된 렌더링 오류를 트리거할 수 있습니다.

Katana 의 Cryptomatte와 관련된 알려진 문제

Cryptomatte는 각 cryptomatte 채널에 대한 EXR 헤더의 cryptomatte/foo/bar에 저장된 메타데이터를 사용합니다. ExrCombine은 암호화 매트 메타데이터를 병합하지 않으므로 병합된 결과 EXR은 Nuke 에 암호화 매트 채널을 표시하지 않습니다. Pixar의 exrmerge는 첫 번째 EXR에 대한 암호화된 메타데이터만 복사합니다.

그러나 이제 다음 및 향후 Katana 버전인 Katana 4.5v6 , Katana 5.0v6Katana 6.0v3에서는 모든 Cryptomatte 채널을 하나의 EXR로 결합할 수 있습니다.

참고로 이 기능 요청은 ID 428053으로 기록되었습니다. - ExrCombine: Cryptomatte 채널 병합 지원

해결 방법

이 문제를 해결하는 데 도움이 될 수 있는 몇 가지 옵션이 있습니다.

"기본" 렌더 출력이 출력 유형 "raw"로 설정되어 있는지 확인하거나 병합된 출력에 "기본" 패스를 포함하지 마십시오.

참고: Katana 전용 RenderOutputDefine 노드를 통해 생성을 요청하는지 여부에 관계없이 기본적으로 항상 "기본" 패스를 생성합니다.

"기본" 패스가 mergeOutputs 목록에 첫 번째 항목으로 추가되고 추가 채널이 여기에 병합됩니다. "1차" 통과 데이터 창이 병합하는 모든 AOV의 전체 데이터 창 크기를 포함하지 않는 경우 병합 작업이 실패합니다.

문제는 "기본" 패스에 대해 RenderOutputDefine 노드를 추가하고 유형 매개변수를 "raw" 로 설정하여 해결할 수 있습니다 .

기본 패스가 필요하지 않은 경우 RenderOutputDefine 노드의 mergeOutputs 목록에서 이를 명시적으로 비활성화 할 수 있습니다 . 그런 다음 목록의 두 번째 패스의 dataWindow가 병합된 EXR에 사용됩니다. 위의 예시 스크린샷에서 '기본'이 선택 해제된 경우 사용되는 dataWindow 값은 '확산' 패스에서 나옵니다.

병합할 모든 AOV가 동일한 dataWindow 속성 값을 가지고 있는지 확인하십시오.

병합할 모든 AOV가 동일한 크기의 데이터 창을 가지면 병합 작업이 성공해야 합니다. 또는 먼저 병합되는 출력에는 다른 모든 출력을 포함할 만큼 충분히 큰 dataWindow 속성 값이 있어야 합니다.

병합 프로세스에서 AOV 순서를 정의할 때 이 점을 염두에 두면 더 넓은 dataWindow를 더 작은 dataWindow에 맞추기 때문에 ExrCombine 렌더링 실패를 피할 수 있습니다.

RenderOutputDefine 노드의 설정을 사용하여 AOV의 데이터 창 크기에 영향을 미치는 두 가지 방법은 아래에 설명되어 있습니다.

"원시" 출력 유형 및 exrOptimize 설정을 사용하여 포스트 렌더링 EXR 최적화를 우회합니다.

기본적으로 Katana 렌더링된 색상 출력을 사후 처리합니다. 이러한 내부 2D 이미지 처리는 EXR 헤더 속성을 유지하지 않고 원본 이미지의 관련 속성을 후처리 이미지에 복사합니다.

이러한 속성은 RenderOutputDefine 노드의 ConvertSettings 매개변수를 통해 정의됩니다. 이러한 설정에 대한 자세한 내용은 Katana 온라인 도움말의 RenderOutputDefine 노드 참조를 참조하세요 .

exrOptimize 매개변수를 "No"로 설정합니다.

ConvertSettings.exrOptimize 매개변수는 주로 이미지 데이터 창을 최적화하고 가장자리 주변의 픽셀 데이터가 없는 영역을 제거하여 이미지를 'shrinkwrap'하는 데 사용됩니다 .

exr최적화비교.png

exrOptimize를 켜고 끄고 렌더링된 EXR 이미지와 메타데이터 비교( Nuke 에서 확인)

exrOptimize 플래그는 주로 이미지 데이터 창을 최적화하고 가장자리 주변의 중복된 명확한 정보를 제거하여 이미지를 '축소'하는 데 사용됩니다. exrOptimize 매개변수를 'No'로 설정하면 전체 이미지 데이터 창을 렌더링하여 최적화 단계를 건너뛰고 원본 데이터 창을 강제로 사용합니다. 이렇게 하면 렌더링된 AOV에서 다른 dataWindow 속성 값을 방지하여 성공적으로 병합할 수 있습니다 .

Pasted_image_0__1_.png

exrOptimize 작업은 타일에서 이미지를 처리하는 프로그램의 메모리 사용량과 성능을 향상시키는 것을 목표로 하기 때문에 이미지를 처리하는 동안 성능이 크기에 따라 약간 영향을 받을 수 있습니다.

렌더링 출력 유형을 "raw"로 설정합니다.

RenderOutputDefine 노드의 유형을 'raw'로 설정하면 렌더러로부터 수신된 이미지를 렌더링할 수 있으며 모든 후처리 단계를 우회할 수 있습니다. Katana 출력에서 색상 변환이나 이미지 최적화를 수행하지 않습니다. 이렇게 하면 렌더러에서 정의한 헤더 속성을 사용하여 파일이 기록되고 Katana 의 내부 이미지 처리로 인해 dataWindow 속성이 변경되는 것을 방지할 수 있습니다.

Pasted_image_0__2_.png

Katana 타일링된 출력을 병합할 수 없으므로 렌더링된 EXR이 타일링되지 않았는지 확인하세요.

이는 Arnold와 같은 일부 렌더러의 기본 설정입니다. 렌더러별 출력 정의 노드(예: ArnoldOutputChannelDefine)를 확인하고 DriverParameters.tiled 설정 이 비활성화되어 있는지 확인하세요.

도움을 받다

이러한 제안 사항으로 문제가 해결되지 않으면 지원 요청을 제출하고 발생한 문제와 지금까지 수행한 문제 해결 단계에 대해 자세히 알려주십시오.

지원 요청을 여는 방법에 대한 자세한 내용은 다음 문서를 참조하십시오. Q100064: 지원 티켓을 올리는 방법

    우리는 문제로 불편을 끼쳐 드려 죄송합니다

    이유를 알려주세요