Max Creation Graph 包括用于从外部文件读取数据以及将数据保存到外部文件的多个节点。请遵循以下准则以获得最佳效果和性能。
从文件中读取数据
读取文件的第一步是使用“参数:资源”节点。这将在工具的卷展栏中提供一个按钮,以打开浏览器,让用户指定文件。
选定文件的处理方式与场景中的任何其他资源类似。例如,它将显示在“资源追踪”对话框并包含在归档中。
在图形中,
“参数:资源”节点将文件路径作为字符串返回。该字符串必须连接到其他节点才能读取和处理数据,具体取决于文件类型。具有多个选项:
- CSV(逗号分隔值)。这是从电子表格和其他应用程序导入和导出数据的常用格式。将“参数:资源”节点的输出连接到 ReadCSVData 节点,并连接字符串以指定分隔符(不一定是逗号)。输出是由字符串阵列组成的阵列 — 根据数据文件的结构,可能需要放弃某些页眉和页脚行。之后,您可以使用“阵列”和“类型”类别中的节点将阵列从字符串转换为其他值类型,如整数或单精度数。有关示例,您可以查看安装的 CFDImportData.maxtool 的图形。
- 位图。使用 LoadBitmapFromFile 以读取 BMP、GIF、JPG、PNG 或 TIFF 格式的位图。之后,将输出位图连接到“贴图/位图”类别(如 GetPixels、BitmapHeight 和 BitmapWidth)中的节点来处理数据。
- VDB。使用 OpenVDB 类别中的节点,以从文件中提取数据。例如,您可以使用 GetGridNames 获取栅格名称阵列,然后使用其中一个名称获取栅格的值或顶点。
在大多数情况下,您希望在每次评估工具时避免重读文件。实现此目的的一种方法是通过 CacheValueUntilControlChanged 缓存数据(如果适用,则在任何处理后),并使用文件名字符串作为控制输入,以便仅在文件名更改时刷新缓存。或者,也可以尝试使用 CreateStaticCache 以及“参数:信号”,以允许用户单击按钮强制缓存更新。
将数据写入文件
您可以通过基于 MCG 的工具保存位图和 OpenVDB 文件。
- 对于位图,生成由颜色值阵列组成的阵列(即,像素颜色行阵列),然后使用 ConstructBitmap 创建位图对象,最后使用 SaveBitmapToFile。
- 对于 OpenVDB 文件,使用 CreateNewOpenVDBFile、PutFloatArrayAsGrid、PutVector3ArrayAsGrid 和 WriteOpenVDBFile 以初始化、添加数据和保存。有关示例,请参见 WriteCSVDataAsOpenVDB。