Q100384: ExrCombine के माध्यम से Katana में चैनल / AOVs को मर्ज करते समय रेंडर विफल हो जाता है

लक्षण

Katana में एकाधिक AOV को चैनल के रूप में एक मल्टीचैनल EXR फ़ाइल में मर्ज करने का प्रयास करते समय, आपको OpenEXR की एक ज्ञात सीमा के कारण रेंडर विफलताओं और त्रुटियों का सामना करना पड़ सकता है, जो Katana द्वारा EXR छवियों को मर्ज करने के लिए उपयोग किए जाने वाले टूल, ExrCombine को प्रभावित करती है।

त्रुटियाँ निम्नलिखित जैसी दिख सकती हैं:

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 छवियों की डेटाविंडो हेडर विशेषता मेल नहीं खाती है, तो त्रुटियां उत्पन्न होंगी , और विशेष रूप से तब जब पहले विलय किए गए AOV में बाद में विलय किए गए AOV की तुलना में छोटी पिक्सेल डेटा विंडो होगी।

इसे हल करने के लिए, कृपया निम्नलिखित समस्या निवारण चरण अपनाएँ:

  • सुनिश्चित करें कि “प्राथमिक” रेंडर आउटपुट को आउटपुट प्रकार “रॉ” पर सेट किया गया है या मर्ज किए गए आउटपुट में “प्राथमिक” पास शामिल न करें
  • सुनिश्चित करें कि विलय किए जाने वाले सभी AOV का dataWindow विशेषता मान समान हो
  • "raw" आउटपुट प्रकार का उपयोग करके पोस्ट रेंडर EXR ऑप्टिमाइज़ेशन को बायपास करें और/या exrOptimize को अक्षम करें
  • सुनिश्चित करें कि रेंडर किए गए EXR टाइलयुक्त न हों, क्योंकि Katana टाइलयुक्त आउटपुट को मर्ज नहीं कर सकता

इनमें से प्रत्येक सुझाव पर अधिक विस्तृत जानकारी के लिए कृपया आगे पढ़ें।

डिफ़ॉल्ट रूप से, Katana इमेज डेटा के साथ काम करते समय केवल चार चैनल (RGBA) ही पढ़ और रेंडर कर सकता है। हालाँकि, उपयोगकर्ता ExrCombine नामक एक आंतरिक Katana उपयोगिता के माध्यम से कई इमेज को मर्ज करके एक मल्टीचैनल EXR बना सकते हैं।

ExrCombine उपयोगिता मूलतः समान आकार के पिक्सेल डेटा विंडो वाली छवियों को मर्ज करने के लिए बनाई गई थी, क्योंकि एक EXR फ़ाइल में कई चैनल लिखते समय OpenEXR की सीमाएँ होती हैं:

छवि की पिक्सेल डेटा विंडो का आकार dataWindow EXR हेडर विशेषता में संग्रहीत होता है, और एक EXR फ़ाइल में केवल एक ही ऐसी विशेषता हो सकती है। इसका अर्थ है कि प्रत्येक चैनल/AOV को समान dataWindow विशेषता मान साझा करना होगा और वह मर्ज किए गए EXR में अपना मान नहीं रख पाएगा।

इसलिए, Katana विभिन्न पिक्सेल डेटा विंडो आकारों वाली छवियों को मर्ज करने का समर्थन नहीं करता है।

यदि चुना गया dataWindow विशेषता मान, मर्ज किए जा रहे सभी AOV के डेटा विंडो आकारों को समाहित नहीं करता है, तो रेंडर विफल हो जाएगा या Katana क्रैश हो सकता है। ऐसा OpenEXR की सीमाओं के कारण होता है, जहाँ हेडर में केवल एक डेटा विंडो संग्रहीत की जा सकती है। इसका अर्थ है कि प्रत्येक चैनल/AOV को समान dataWindow विशेषता मान साझा करना होगा और मर्ज किए गए EXR के भीतर अपना मान नहीं रख पाएगा। इसलिए, Katana विभिन्न पिक्सेल डेटा विंडो आकारों वाली छवियों को मर्ज करने का समर्थन नहीं करता है।

एक बार OpenEXR एक ही फ़ाइल में कई डेटाविंडो हेडर विशेषताओं के लिए विस्तारित समर्थन प्रदान कर दे, तो Katana के लिए ExrCombine कार्यक्षमता में सुधार हेतु एक मौजूदा सुविधा अनुरोध मौजूद है। इसे इस प्रकार लॉग किया गया है: ID 75636 - ExrCombine: विभिन्न पिक्सेल डेटा विंडो वाली छवियों के लिए बेहतर समर्थन

कृपया इस बारे में अधिक जानकारी के लिए आगे पढ़ें, साथ ही ऊपर सुझाए गए समाधानों के विवरण भी पढ़ें, जो आपके मल्टीचैनल सेटअप के आधार पर, विलय से संबंधित समस्याओं को हल करने में सहायक हो सकते हैं।


अग्रिम जानकारी

EXR डेटा विंडो
प्रत्येक OpenEXR फ़ाइल का वर्णन फ़ाइल के हेडर में मौजूद विशेषताओं की एक सूची के माध्यम से किया जाता है। किसी नमूना .exr फ़ाइल पर 'exrinfo' जैसा कमांड चलाने पर इन विशेषताओं के मान इस प्रकार प्रिंट होंगे:

> exrinfo image.exr

उदाहरण के लिए, image.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 पिक्सेल संग्रहीत हैं।

डिस्प्ले विंडो, छवि के उस क्षेत्र का वर्णन करती है जो उसे देखते समय प्रदर्शित होता है। यह क्षेत्र OpenEXR फ़ाइल में मौजूद डेटा क्षेत्र से बड़ा या छोटा हो सकता है।

Katana में “मर्ज” आउटपुट के लिए डेटाविंडो को परिभाषित करना

"मर्ज" प्रकार के रेंडर आउटपुट का उपयोग करके विभिन्न डेटा विंडो वाली छवियों को संयोजित करते समय, RenderOutputDefine नोड के mergeOutputs पैरामीटर ड्रॉपडाउन में पहले चयनित इनपुट के dataWindow विशेषता मान का उपयोग अंतिम आउटपुट के dataWindow के रूप में किया जाएगा।

चिपकाया गया_चित्र_0.png

उदाहरण के तौर पर RenderOutputDefine नोड के इस स्क्रीनशॉट में, mergeOutputs पैरामीटर का पहला चयनित इनपुट 'प्राथमिक' आउटपुट है। इसका मतलब है कि ExrCombine यूटिलिटी द्वारा बनाए गए अंतिम मर्ज किए गए EXR के लिए, 'प्राथमिक' पास की dataWindow हेडर विशेषता का उपयोग किया जाएगा।

यदि यह डेटाविंडो हेडर विशेषता आपके द्वारा मर्ज किए जाने वाले शेष रेंडर आउटपुट के डेटाविंडो से छोटी है , तो ExrCombine मर्ज प्रक्रिया विफल हो सकती है, जिससे ऊपर संदर्भित रेंडर त्रुटियां ट्रिगर हो सकती हैं।

Katana में क्रिप्टोमैट से संबंधित ज्ञात समस्याएँ

क्रिप्टोमैट प्रत्येक क्रिप्टोमैट चैनल के लिए EXR हेडर में cryptomatte/foo/bar में संग्रहीत मेटा-डेटा का उपयोग करता है। ExrCombine क्रिप्टोमैट मेटा-डेटा को मर्ज नहीं करता है, इसलिए परिणामी मर्ज किया गया EXR, Nuke में क्रिप्टोमैट चैनल प्रदर्शित नहीं करता है। Pixar का exrmerge केवल पहले EXR के लिए क्रिप्टोमैट मेटा-डेटा की प्रतिलिपि बनाता है।

नोट: Katana 4.5v6, Katana 5.0v6 और Katana 6.0v3 के बाद, अब आप सभी क्रिप्टोमैट चैनलों को एक EXR फ़ाइल में संयोजित करने में सक्षम होंगे

समाधान

इस समस्या को हल करने में मदद करने के लिए कई विकल्प मौजूद हैं।

सुनिश्चित करें कि “प्राथमिक” रेंडर आउटपुट को आउटपुट प्रकार “रॉ” पर सेट किया गया है या मर्ज किए गए आउटपुट में “प्राथमिक” पास शामिल न करें

नोट: Katana हमेशा डिफ़ॉल्ट रूप से एक "प्राथमिक" पास उत्पन्न करेगा, चाहे आप एक समर्पित RenderOutputDefine नोड के माध्यम से इसके निर्माण का अनुरोध करें या नहीं।

"प्राथमिक" पास को mergeOutputs सूची में पहली प्रविष्टि के रूप में जोड़ा जाएगा, और सभी अतिरिक्त चैनल उसमें मर्ज कर दिए जाएँगे। यदि "प्राथमिक" पास डेटा विंडो आपके द्वारा मर्ज किए जा रहे सभी AOV के समग्र डेटा विंडो आकारों को शामिल नहीं करती है, तो मर्ज ऑपरेशन विफल हो जाएगा।

इसे कभी-कभी "प्राथमिक" पास के लिए RenderOutputDefine नोड जोड़कर और प्रकार पैरामीटर को "raw" पर सेट करके हल किया जा सकता है

यदि आपको प्राथमिक पास की आवश्यकता नहीं है, तो आप इसे RenderOutputDefine नोड पर mergeOutputs सूची से स्पष्ट रूप से अक्षम कर सकते हैं । सूची में दूसरे पास का dataWindow तब मर्ज किए गए EXR के लिए उपयोग किया जाएगा। ऊपर दिए गए उदाहरण स्क्रीनशॉट में, 'प्राथमिक' का चयन रद्द करने पर प्रयुक्त dataWindow मान 'diffuse' पास से आएगा।

सुनिश्चित करें कि विलय किए जाने वाले सभी AOV का dataWindow विशेषता मान समान हो।

जब मर्ज किए जाने वाले सभी AOV की डेटा विंडो का आकार समान हो, तो मर्ज ऑपरेशन सफल होना चाहिए। वैकल्पिक रूप से, पहले मर्ज किए जाने वाले आउटपुट का dataWindow विशेषता मान इतना बड़ा होना चाहिए कि वह अन्य सभी आउटपुट को समाहित कर सके।

यदि आप मर्ज प्रक्रिया में अपने AOVs के क्रम को परिभाषित करते समय इसे ध्यान में रखते हैं, तो आप एक बड़े डेटाविंडो को एक छोटे डेटाविंडो में फिट करने के प्रयास के कारण ExrCombine रेंडर विफलताओं से बच सकते हैं।

RenderOutputDefine नोड्स पर सेटिंग्स का उपयोग करके AOV के डेटा विंडो आकार को प्रभावित करने के दो तरीके नीचे वर्णित हैं:

"raw" आउटपुट प्रकार और exrOptimize सेटिंग्स का उपयोग करके पोस्ट रेंडर EXR ऑप्टिमाइज़ेशन को बायपास करें

डिफ़ॉल्ट रूप से, Katana रेंडर किए गए रंग आउटपुट को पोस्ट-प्रोसेस करता है। यह आंतरिक 2D इमेज प्रोसेसिंग EXR हेडर विशेषताओं को संरक्षित नहीं करता, बल्कि मूल इमेज से प्रासंगिक विशेषताओं को पोस्ट-प्रोसेस्ड इमेज में कॉपी करता है।

ये विशेषताएँ RenderOutputDefine नोड के convertSettings पैरामीटर के माध्यम से परिभाषित की जाती हैं। इन सेटिंग्स के बारे में अधिक जानकारी के लिए कृपया Katana संदर्भ मार्गदर्शिका - RenderOutputDefine देखें

exrOptimize पैरामीटर को “नहीं” पर सेट करें

convertSettings.exrOptimize पैरामीटर का उपयोग मुख्य रूप से छवि डेटा विंडो को अनुकूलित करने और किनारों के आसपास पिक्सेल डेटा के बिना किसी भी क्षेत्र को हटाकर छवि को 'सिकुड़ने' के लिए किया जाता है

exrOptimizeCompare.png

exrOptimize चालू और बंद होने पर रेंडर की गई EXR छवियों और मेटाडेटा की तुलना ( Nuke में देखी गई)

exrOptimize फ़्लैग का उपयोग मुख्यतः इमेज डेटा विंडो को ऑप्टिमाइज़ करने और किनारों के आसपास की अनावश्यक स्पष्ट जानकारी को हटाकर इमेज को 'shrinkwrap' करने के लिए किया जाता है। exrOptimize पैरामीटर को 'नहीं' पर सेट करने से संपूर्ण इमेज डेटा विंडो रेंडर हो जाएगी, ऑप्टिमाइज़ेशन चरण छोड़ दिया जाएगा और मूल डेटा विंडो का उपयोग करने के लिए बाध्य किया जाएगा। इससे रेंडर किए गए AOV में अलग-अलग dataWindow विशेषता मानों से बचा जा सकता है, जिससे उन्हें सफलतापूर्वक मर्ज किया जा सकता है

चिपकाया गया चित्र 0__1_.png

कुछ मामलों में छवि को संसाधित करते समय प्रदर्शन थोड़ा प्रभावित हो सकता है, जो उसके आकार पर निर्भर करता है, क्योंकि exrOptimize परिचालनों का उद्देश्य उन प्रोग्रामों के लिए मेमोरी उपयोग और प्रदर्शन में सुधार करना होता है जो टाइल्स में छवियों को संसाधित करते हैं।

रेंडर आउटपुट के प्रकार को “रॉ” पर सेट करें

RenderOutputDefine नोड के प्रकार को 'raw' पर सेट करने से रेंडरर से प्राप्त छवि को उसी रूप में रेंडर किया जा सकेगा और किसी भी पोस्ट-प्रोसेसिंग चरण को बायपास किया जा सकेगा। Katana आउटपुट पर कोई रंग रूपांतरण या छवि अनुकूलन नहीं करेगा। यह सुनिश्चित करता है कि फ़ाइल रेंडरर द्वारा परिभाषित हेडर विशेषताओं का उपयोग करके लिखी जाएगी, और Katana की आंतरिक छवि प्रसंस्करण के कारण dataWindow विशेषता में होने वाले किसी भी परिवर्तन को रोकता है।

चिपकाई गई छवि 0__2_.png

सुनिश्चित करें कि रेंडर किए गए EXR टाइलयुक्त न हों, क्योंकि Katana टाइलयुक्त आउटपुट को मर्ज नहीं कर सकता

यह अर्नोल्ड जैसे कुछ रेंडरर्स के लिए डिफ़ॉल्ट सेटिंग है। कृपया रेंडरर-विशिष्ट आउटपुट डिफ़ाइन नोड की जाँच करें, उदाहरण के लिए ArnoldOutputChannelDefine, और सुनिश्चित करें कि driverParameters.tiled सेटिंग अक्षम है।

मदद प्राप्त करें

यदि इनमें से किसी भी सुझाव से समस्या का समाधान नहीं होता है, तो कृपया सहायता अनुरोध दर्ज करें और हमें अपनी समस्या तथा अब तक उठाए गए समस्या निवारण कदमों के बारे में अधिक जानकारी दें।

समर्थन अनुरोध खोलने के तरीके के बारे में अधिक जानकारी के लिए, कृपया यह लेख देखें: Q100064: समर्थन टिकट कैसे दर्ज करें

    हम चाहते हैं कि खेद व्यक्त करते हैं

    कृपया हमें बताएँ कि