数字图像和生成它的文件的版本控制

Version control of a digital image and the file that produced it

我主要靠自己使用 Blender。我创建了一个混合文件并使用它来渲染和保存图像。然后我 fiddle 再渲染另一张图片,希望能保存 Blender 文件,然后重复。我尝试为图像和混合文件保留相同的版本和文件名,但我经常不同步。我需要做的是浏览所有图像版本并可靠地找到生成它的 blend 文件。

这似乎我可以使用版本控制系统,例如 git,在每次渲染后进行提交。

是否有可以查看不同提交中的图像的图像浏览器或可以显示图像的 git 查看器?

或者有更好的方法吗?

有足够的存储空间 space Git 二进制文件没问题。但是 Git 不以原始形式存储文件;相反,它们以 "blobs" 不可读的格式打包。因此,您必须检查旧版本才能使用它们。

您可以为 "retrieve" 旧版本的文件创建一个单独的目录。比方说,您的 workspace 目录中有一个 repo。

cd path/to/my/workspace/directory
git --work-tree=/path/to/another/directory checkout <revision> <filenames separated by spaces>

或来自another/directory:

cd path/to/another/directory
git --git-dir=/path/to/my/workspace/directory checkout <revision> 

现在您的工作space 目录保持不变,而another/directory 有旧版本。您现在可以比较并随心所欲。

当然,您可以在同一目录中检出旧版本:

git checkout <revision>
# and come back then:
git checkout master 

此答案的灵感来自:
git pull while not in a git directory

虽然git保留所有版本的信息,但它不会同时保留工作树中的所有版本。

其界面旨在显示修订之间的差异。 问题是,与文本文件不同,对于两个图像之间的 "diff" 应该表示什么,没有好的和通用的定义。您可以尝试为 jpg 文件设计一个 textconv 选项。但我想知道这是否有用。

如果您希望能够并排查看不同的版本,您可能应该使用某种编号方案和脚本来帮助您。 假设您正在处理一个名为 foo.blend 的搅拌机文件。这是你的工作副本。您应该编写一个脚本来做两件事;

  • 复制foo.blend到例如foo-027.blend,如果同一目录中最后一个存在的版本是foo-026.blend除非foo.blendfoo-026.blend没有区别。
  • 渲染 foo-027.blend 例如foo-027.jpg 在批量渲染模式下使用 blender。

每当你想保存某个版本时调用这个脚本。您可能还想将以前的修订设为只读。

Python 是写这个脚本的好人选,因为 blender 支持 Python 脚本。您甚至可以从菜单或快捷方式调用它。