Nodes/Avatar Graph/Object Multires External Save
ComfyUI Node

Object Multires External Save

Write multires displacement to an external file

By avatechai·Created 3 years ago·Updated 2 years ago· 264
Object Multires External Save
  • BPY_OBJ
  • sort_method
  • BPY_OBJ
filepath
hide_props_regiontrue
check_existingtrue
filter_blenderfalse
filter_backupfalse
filter_imagefalse
filter_moviefalse
filter_pythonfalse
filter_fontfalse
filter_soundfalse
filter_textfalse
filter_archivefalse
filter_btxtrue
filter_colladafalse
filter_alembicfalse
filter_usdfalse
filter_objfalse
filter_volumefalse
filter_foldertrue
filter_blenlibfalse
filemode9
relative_pathtrue
display_type
modifier

Object_MultiresExternalSave writes a Multires modifier's displacement data out to external .bpyx files instead of keeping it inside the Blender file. It's the generated wrapper for bpy.ops.object.multires_external_save(), and it's the most cluttered node in the Object_* family - not because it's complicated, but because Blender's file-browser dialog shipped its entire property set along for the ride.

Why you'd bother

External multires data exists for one main reason: keep the .blend file small, or hand displacement around separately. For an avatar pipeline it's a niche choice - you'd use it if a mesh layer's detail is heavy and you want the exported file lean, or if you're moving displacement between machines. If that's not your situation, you can safely skip this node.

The inputs that matter

  • BPY_OBJ (in and out) - the object carrying the Multires modifier.
  • filepath - where the .bpyx file lands. This is the one you'll actually set.
  • modifier - the exact name of the Multires modifier, e.g. Multires.
  • The rest - filter_blender, filter_image, filter_btx, filemode, display_type, relative_path, check_existing, sort_method and friends - are the file browser's own dialog properties that got auto-exported into the node. In a headless ComfyUI context most of them do nothing visible. Leave them alone.

Output is the same BPY_OBJ. Pair this with Object_MultiresExternalPack if you want to pull the data back in later.

How it works

Standard Object_* plumbing: the node makes your BPY_OBJ the active object in the shared headless Blender scene and runs the operator with the props you set. Because the underlying operator is normally driven by a file-save dialog, you're replacing the dialog with the filepath string. Give it an absolute path you can actually write to - the headless process doesn't have a "choose folder" UI.

Installing it

It ships in Avatar Graph; you install the pack once:

  • ComfyUI Manager: search "Avatar Graph", install, restart.
  • Or:
cd ComfyUI/custom_nodes
git clone https://github.com/avatechai/avatar-graph-comfyui
cd avatar-graph-comfyui && python -m pip install -r requirements.txt

The recurring catch: the pack pins bpy==3.6.0, which needs Python 3.10. On newer Python it's "no module named bpy" and nothing loads. Windows: use the README's bundled ComfyUI_3.10.7z and run_nvidia_gpu_3.10.bat. Elsewhere: conda with python=3.10.

Gotchas

  • If filepath points somewhere unwritable, the save fails silently or errors out - check the path, not the node.
  • The shared Blender scene resets between graph runs (Avatar Main Output triggers it), so the object and its modifier only exist within a single run.
  • Remember the counterpart: Object_MultiresExternalPack restores external data into the file. If a workflow imports this node and you don't actually need external displacement, deleting it is usually the right call.
Categoryblender

Inputs (26)

NameTypeDefaultDescription
BPY_OBJoptBPY_OBJ
filepathoptSTRING
hide_props_regionoptBOOLEANtrue
check_existingoptBOOLEANtrue
filter_blenderoptBOOLEANfalse
filter_backupoptBOOLEANfalse
filter_imageoptBOOLEANfalse
filter_movieoptBOOLEANfalse
filter_pythonoptBOOLEANfalse
filter_fontoptBOOLEANfalse
filter_soundoptBOOLEANfalse
filter_textoptBOOLEANfalse
filter_archiveoptBOOLEANfalse
filter_btxoptBOOLEANtrue
filter_colladaoptBOOLEANfalse
filter_alembicoptBOOLEANfalse
filter_usdoptBOOLEANfalse
filter_objoptBOOLEANfalse
filter_volumeoptBOOLEANfalse
filter_folderoptBOOLEANtrue
filter_blenliboptBOOLEANfalse
filemodeoptINT91–9
relative_pathoptBOOLEANtrue
display_typeoptCOMBO4 options: DEFAULT, LIST_VERTICAL, LIST_HORIZONTAL, THUMBNAIL
sort_methodoptB_ENUM
modifieroptSTRING

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ