[返回博客](/cn/blog) # 确定用于 PRC 导出的带纹理材质的环境色

Sergey Sorvenkov 三月 02, 2023 [\#prc](/cn/blog/tag/prc) [\#export](/cn/blog/tag/export)

<a class="a2a_button_facebook"></a><a class="a2a_button_twitter"></a><a class="a2a_button_linkedin"></a>

渲染设备可以以不同方式显示材质的颜色分量，PDF 导出过程使用环境色行为选项以获得最佳外观的导出图纸。

下图说明了使用 OpenGL ES2 和 OpenGL 设备渲染带纹理材质之间的差异。

![gles2 opengl](/files/inline-images/export_to_pdf_rendering_gles2_opengl.png)每个渲染设备对带纹理材质的环境色分量都有不同的解释。

将上述图纸导出为 3D PDF（集成 PRC 的 PDF）格式时，您可能会在输出 PDF 文档中获得不同的渲染结果。

![output PDF document](/files/inline-images/export_to_pdf_ambient_color_settings_adobe_reader.png)与渲染设备的情况一样，这种差异是由于 PDF 查看器应用程序（例如 Adobe® Reader®）中对带纹理材质的环境色分量的解释不同造成的。

PDF 导出模块在 PDFExportParams 类中提供了一个特殊选项，用于控制 PDF 导出中的环境色渲染，即 PrcExportColorComponentBehavior：

- kExportAsIs — 环境颜色分量按原样导出。[Adobe Reader](https://www.adobe.com/acrobat/pdf-reader.html) 中的模型渲染可能与 ODA Software 中的原始图形渲染不同。![kExportAsIs](/files/inline-images/export_to_pdf_ambient_color_export_as_is.png)
- kExportWhite — 环境颜色分量导出为白色。Adobe Reader 中的模型渲染最接近使用 OpenGL 设备在 ODA Software 中进行的原始图形渲染。![kExportWhite](/files/inline-images/export_to_pdf_ambient_color_export_white.png)
- kExportNotInited — 环境颜色分量导出为统一颜色。Adobe Reader 中的模型渲染最接近使用 GLES2 设备在 ODA Software 中进行的原始图形渲染。![kExportNotInited](/files/inline-images/export_to_pdf_ambient_color_export_not_inited.png)

要获取环境颜色选项的当前设置，请使用 PDFExportParams 类的 getPrcExportAmbientColorBehavior() 方法。要设置环境颜色选项，请调用 setPrcExportAmbientColorBehavior() 方法。

下面的代码片段演示了在将 .dwg 图形导出为 3D PDF 文档时如何使用环境颜色选项：

      ```

OdPdfExportModulePtr pModule = ::odrxDynamicLinker()->loadApp(OdPdfExportModuleName, false);
::odrxDynamicLinker()->loadApp(OdPrcModuleName, false);
::odrxDynamicLinker()->loadApp(OdDwg2PrcExportModuleName, false);

OdPdfExportPtr exporter = pModule->create();

params.setDatabase(db);
params.setVersion(PDFExportParams::kPDFv1_6);
params.setOutput(odSystemServices()->createFile(outPdfFile, Oda::kFileWrite, Oda::kShareDenyNo, Oda::kCreateAlways));

params.setExportFlags(PDFExportParams::kDefault);

params.setPRCMode(PDFExportParams::kAsMesh);

pContext = odCreatePrcAllInSingleViewContextForTD();
params.setPRCContext(pContext);


// Sets prc behaviour when exporting ambient color components to PRC in the texture case
params.setPrcExportAmbientColorBehavior(PDF3D_ENUMS::kExportAsIs);



// initialize the conversion parameters: Layouts  
OdDbBlockTableRecordPtr pLayoutBlock = db->getActiveLayoutBTRId().safeOpenObject();
OdDbLayoutPtr pLayout = pLayoutBlock->getLayoutId().safeOpenObject();
params.layouts().push_back(pLayout->getLayoutName());

params.pageParams().resize(1, OdGsPageParams());

OdUInt32 errCode = exporter->exportPdf(params);
      
```

## 今天就开始行动

**免费试用 ODA 软件 60 天。  
无风险，无需信用卡。**

[免费试用](https://www.opendesign.com/cn/free-trial)
