硬核!如何使用SSH远程渲染MMD
种呱de瓜
2021年04月11日 18:08
收录于文集
共9篇

前期准备

首先,我们要把所有纹理图片打包进.blend工程文件 (Pack All Into .blend). 如果文件使用绝对路径,也需要把它改为相对路径 (Make All Path Relative).

打包好.blend工程文件

其次,远程渲染需要提前把所有素材放在同一个文件夹下,包括abc文件和物理烘培文件。将.blend文件,abc文件,物理烘培文件压缩到zip文件,我压缩好的zip是长这样的:

打包好的zip文件

最后将zip文件传输到远程电脑,我使用onedrive上传。由于使用不同的云端传输方法不一样,这里就不多说了。如果使用onedrive,传输方式请参考:

https://askubuntu.com/questions/1205418/wget-or-curl-gives-403forbidden-while-downloading-file-from-onedrive-for-busine

远程下载软件

1. SSH到远程终端,下载blender,注意不要用snap下载,因为之后我们要替换ACES颜色管理。

代码块
Shell
自动换行
复制代码
wget https://ftp.nluug.nl/pub/graphics/blender/release/Blender2.92/blender-2.92.0-linux64.tar.xz
tar xf blender-2.92.0-linux64.tar.xz
复制成功

将blender加入到PATH环境变量

代码块
Shell
自动换行
复制代码
vim ./bashrc
export PATH=$PATH:$HOME/blender-2.92.0-linux64
复制成功

2. 下载ACES并替换掉blender自带颜色管理

代码块
Shell
自动换行
复制代码
git clone https://github.com/thezakman/ACES-blender-colour-management.git
rm -R blender-2.92.0-linux64/2.92/datafiles/colormanagement
cp -R ACES-blender-colour-management/ blender-2.92.0-linux64/2.92/datafiles/colormanagement
复制成功

3. 我在工程文件中使用了mmd_tools,在渲染的时候要加载此addon,所以也要提前下载好

代码块
Shell
自动换行
复制代码
git clone https://github.com/powroupi/blender_mmd_tools.git
cp -R blender_mmd_tools/mmd_tools blender-2.92.0-linux64/2.92/scripts/addons/
复制成功

4. 开始渲染!

代码块
Shell
自动换行
复制代码
source ./bashrc
blender -b 雪景琼楼_packed.blend -o //eevee/ -f 3000
复制成功

然而会遇到错误

代码块
Shell
自动换行
复制代码
Unable to open a display
Aborted (core dumped)
复制成功

解决没有display的错误

stackexchange上有对此问题的解决方法,这里总结一下,附上源链接:

https://blender.stackexchange.com/questions/144083/how-to-get-blender-2-80-to-render-through-an-ssh-connection-minimal-working-ex

1. 下载mesa-utils

代码块
Shell
自动换行
复制代码
$ sudo apt install mesa-utils
复制成功

输入glxinfo会遇到如下错误

代码块
Shell
自动换行
复制代码
$ glxinfo
Error: unable to open display
复制成功

2. 获取GPU PCI BusID

代码块
Shell
自动换行
复制代码
$ nvidia-xconfig --query-gpu-info
Number of GPUs: 1

GPU #0:
  Name      : TITAN X (Pascal)
  UUID      : GPU-9adbb93a-e6c6-b54c-651c-66d1414a6b82
  PCI BusID : PCI:1:0:0
复制成功

3. 新建虚拟display, --busid使用刚刚获取的PCI BusID

代码块
Shell
自动换行
复制代码
$ sudo nvidia-xconfig --busid=PCI:1:0:0 --use-display-device=none --virtual=1280x1024
[sudo] password for user:

Using X configuration file: "/etc/X11/xorg.conf".
Backed up file '/etc/X11/xorg.conf' as '/etc/X11/xorg.conf.backup'
New X configuration file written to '/etc/X11/xorg.conf'
复制成功

4. 新建Xorg服务器

代码块
Shell
自动换行
复制代码
$ sudo Xorg :1
复制成功

如果遇到错误,说明服务器正在运行,使用如下代码查看正在运行的Xorg程序

代码块
Shell
自动换行
复制代码
pc -C Xorg
复制成功

然后关闭服务器,或再多建立一个服务器

代码块
Shell
自动换行
复制代码
$ sudo Xorg :2
复制成功

保留这个终端或断开连接,Xorg服务器不受影响,可新打开一个终端进行渲染。

执行渲染命令

我们终于可以开始渲染啦! 首先要选择已建立的display,拿display1举例 (对应sudo Xorg :1)

代码块
Shell
自动换行
复制代码
export DISPLAY=:1
source ./bashrc
复制成功

先来一张做测试,-b 背景模式不打开blenderUI, -o 输出文件夹, -f 设置渲染帧。

代码块
Shell
自动换行
复制代码
blender --addons mmd_tools -b 雪景琼楼_packed.blend -o //eevee/ -f 3000
复制成功

最后渲染动画, -s 开始帧, -e 结束帧, -a 渲染动画

代码块
Shell
自动换行
复制代码
blender --addons mmd_tools -b 雪景琼楼_packed.blend -s start -e end -o //eevee/ -a
复制成功

渲染好的png会保存在eevee文件夹,下载到本地电脑就可以啦!