Graphics 从图像批量生成高度贴图

Graphics 从图像批量生成高度贴图,graphics,gimp,Graphics,Gimp,我有很多.png文件,我正在寻找一种方法来为每个文件生成高度贴图(或法线贴图)。我可以从gimp normalmap插件中得到我想要的结果,但我需要一种方法来自动化这个过程或使用一种替代工具。我对底层算法的了解不足以重现它们,对cg的了解也很少。是否有库或工具可以做到这一点?只要api/接口足够高级,我就不挑剔这种语言,尽管开放源代码更可取,因为我目前没有访问高级软件的权限。谢谢 您可以为GIMP本身编写jsut脚本。 我不知道您将哪个插件称为“normalmap”——或者您所说的“height

我有很多.png文件,我正在寻找一种方法来为每个文件生成高度贴图(或法线贴图)。我可以从gimp normalmap插件中得到我想要的结果,但我需要一种方法来自动化这个过程或使用一种替代工具。我对底层算法的了解不足以重现它们,对cg的了解也很少。是否有库或工具可以做到这一点?只要api/接口足够高级,我就不挑剔这种语言,尽管开放源代码更可取,因为我目前没有访问高级软件的权限。谢谢

您可以为GIMP本身编写jsut脚本。 我不知道您将哪个插件称为“normalmap”——或者您所说的“height map”(我知道的height map只是图像的灰度版本)——但即使它是第三方插件,也应该可以通过脚本接口运行它

只需转到
plug-ins->Python-FU->console
——您将看到一个Python提示符。单击“浏览”按钮-然后找到您要呼叫的插头。如果单击“应用”,浏览器将向Python提示符粘贴插件调用的模板

因此,在执行此操作之前,您可能需要测试调用:打开一个示例图像,转到Python提示符,通过键入以下内容获取对该图像的引用:
image=gimp.image\u list()[0]
,然后通过键入
drawable=image.layers[0]
获取对图像第一层的引用

这些应该是您的插件调用需要预先创建的所有数据。执行上述操作,在提示符上粘贴对所需插件的调用。请注意,上面的名称
image
drawable
只是变量名称-您可以选择自己的名称-但这些名称通常是在您从过程调用的“浏览”按钮中选择“应用”时预先填写的

在这里,您可以利用Python打开文件夹中的所有图像,应用插件,然后将它们保存回去—您可以直接在控制台上键入,或者稍后创建一个将显示在菜单中的插件

import os
for filename in os.listdir('mydir'):
    if not filename.endswith('.png'): continue
    name = 'mydir/' + filename
    image = pdb.gimp_file_load(name, name)
    pdb.plug_in_bump_map(......)  # use your plug-in here
    outputname = 'mydir/' + name.split('.')[0] + '_normal.png'
    pdb.gimp_file_save(image, image.layers[0], outputname, outputname)
    pdb.gimp_image_delete(image)  # just frees the image from memory.
只需按两次,整个文件夹就会运行该序列。 (请注意,如果要运行“凹凸贴图”插件,则必须将多个参数从变量名替换为所需的实际值)

如果这是您想要的,并且您将大量使用它,请将其保存为.py文件,并将该代码放入适当的函数中,以将其转换为插件 -在我的回答中有一个例子:


您可以使用jsut脚本GIMP本身来实现这一点。 我不知道您将哪个插件称为“normalmap”——或者您所说的“height map”(我知道的height map只是图像的灰度版本)——但即使它是第三方插件,也应该可以通过脚本接口运行它

只需转到
plug-ins->Python-FU->console
——您将看到一个Python提示符。单击“浏览”按钮-然后找到您要呼叫的插头。如果单击“应用”,浏览器将向Python提示符粘贴插件调用的模板

因此,在执行此操作之前,您可能需要测试调用:打开一个示例图像,转到Python提示符,通过键入以下内容获取对该图像的引用:
image=gimp.image\u list()[0]
,然后通过键入
drawable=image.layers[0]
获取对图像第一层的引用

这些应该是您的插件调用需要预先创建的所有数据。执行上述操作,在提示符上粘贴对所需插件的调用。请注意,上面的名称
image
drawable
只是变量名称-您可以选择自己的名称-但这些名称通常是在您从过程调用的“浏览”按钮中选择“应用”时预先填写的

在这里,您可以利用Python打开文件夹中的所有图像,应用插件,然后将它们保存回去—您可以直接在控制台上键入,或者稍后创建一个将显示在菜单中的插件

import os
for filename in os.listdir('mydir'):
    if not filename.endswith('.png'): continue
    name = 'mydir/' + filename
    image = pdb.gimp_file_load(name, name)
    pdb.plug_in_bump_map(......)  # use your plug-in here
    outputname = 'mydir/' + name.split('.')[0] + '_normal.png'
    pdb.gimp_file_save(image, image.layers[0], outputname, outputname)
    pdb.gimp_image_delete(image)  # just frees the image from memory.
只需按两次,整个文件夹就会运行该序列。 (请注意,如果要运行“凹凸贴图”插件,则必须将多个参数从变量名替换为所需的实际值)

如果这是您想要的,并且您将大量使用它,请将其保存为.py文件,并将该代码放入适当的函数中,以将其转换为插件 -在我的回答中有一个例子:


谢谢你,也感谢你实现了我真正需要的:)谢谢你,也感谢你实现了我真正需要的:)