ComfyUI Pixal3D / TRELLIS.2: Baseline and Optional Detail-Budget Workflows
Prepared 18 October 2026

START WITH THE BASELINE

This is a workflow-only download. It contains three complete ComfyUI canvas/UI
workflow JSON files, setup notes and small validation summaries. It does not
contain input photographs, generated meshes, screenshots, model weights,
backend source, credentials or a portable ComfyUI installation.

01-baseline/Baseline_Pixal3D_1536.json
  Publication-safe copy of the 66-node, 100-link baseline associated with a
  previously completed output. Its source graph was also imported in a real
  ComfyUI UI without queueing and with no recorded browser errors.

02-optional-ungenerated/Optional_UNGENERATED_DetailBudget_1536.json
  Optional 79-node, 117-link candidate. Keeps the native target at 1536 while
  increasing selected mesh/texture budgets and adding a heuristic material
  mask branch. The source graph passed UI import only. No candidate output
  has been generated or quality-validated.

02-optional-ungenerated/Optional_UNGENERATED_Experimental_2048.json
  Optional 79-node, 117-link experimental candidate. Same post-processing
  settings as the other candidate, with native target 2048. The inspected
  node schema accepts this value; checkpoint-specific inference, memory use
  and output quality remain unproven. This is not the recommended starting
  point. Schema acceptance is not model support.

The publication copies preserve their source node IDs, links and generation
settings. Sanitization changed filenames, notes, output prefixes and saved
nonfunctional metadata. These new copies received static JSON, link, settings
and privacy checks, not a new live UI import or inference run. Source import
validation and publication-copy static validation are separate claims.

QUICK START

1. Back up your working workflows, exports, hand-edited maps and rigs.
2. Use a ComfyUI build that supplies the exact native node classes in
   dependencies/node-class-inventory.json. The recorded snapshot was
   ComfyUI 0.38.1, frontend 1.53.6, Python 3.12.9 and PyTorch 2.11.0+cu130.
   These are observed versions, not certified minimum requirements or a
   reproducible installation lockfile. No minimum GPU/VRAM was benchmarked.
3. Obtain the seven referenced model files from their official sources,
   subject to their licenses, and put them in the model folders listed in
   dependencies/model-file-locations.txt. Weights are not included. Inspect
   the current upstream instructions for additional runtime dependencies.
4. Open 01-baseline/Baseline_Pixal3D_1536.json with ComfyUI's normal workflow
   loader or drag it onto the canvas. These files are UI workflow format,
   not API-format prompt JSON; do not submit them directly to /prompt.
5. Choose your own authorized image in Load Image (node 122). The text
   SELECT_YOUR_INPUT.png is a neutral placeholder. There is no bundled image
   with that name. Check that the image and mask previews are appropriate.
6. Keep Boolean node 316 false for the recorded Pixal3D baseline. Confirm
   the exact loader selections, linked controls and fixed seeds below.
7. Check the output prefix before queueing. The baseline uses 3d/BASELINE;
   candidates use 3d/OPTIONAL_UNGENERATED_1536 or
   3d/OPTIONAL_UNGENERATED_2048. These are relative output prefixes, not
   absolute filesystem locations. Candidate base-color exports add
   _BaseColor_Review. Existing installation output behavior still applies.
8. Queue only when ready to use local compute. Successful import does not
   prove that a full run fits in memory. Inspect the actual exported mesh,
   textures and logs before relying on any result.
9. Establish your own baseline before trying either optional candidate.
   Keep the input, model files, seeds and comparison viewing conditions
   matched. Fill in reproducibility-checklist.csv for each actual run.

DEPENDENCIES AND MODEL SELECTION

The full baseline has 45 unique node classes. Its supplied provider inventory
maps executable nodes to ComfyUI core/native modules, plus frontend Note and
MarkdownNote nodes. An unrelated third-party TRELLIS wrapper is not a substitute
for these exact classes. Install/update from official sources appropriate to
your environment; this package does not install anything.

The candidates have 51 unique classes. Their extra classes are ColorToMask,
EmptyImage, ImageBlend, ImageCompositeMasked, MaskComposite and SaveImage.
ColorToMask comes from ComfyUI-KJNodes in the supplied inventory. The other
additional executable classes are native. KJNodes is needed for the candidates,
not for the unchanged baseline. Inspect all missing-node warnings before a run.

Every graph retains both model branches. Node 316 feeds the switch inputs of
nodes 314, 315 and 318:
  false -> Pixal3D positive/negative conditioning (node 298), and
           pixal3d_int8_convrot.safetensors (UNETLoader node 319).
  true  -> TRELLIS.2 positive/negative conditioning (node 299), and
           trellis_2_int8_convrot.safetensors (UNETLoader node 40).

All three supplied graphs are set to false. The model and both conditioning
branches switch together. The presence of TRELLIS-named shared stage nodes does
not mean the saved baseline selected the TRELLIS.2 checkpoint. The previously
completed output documents the saved Pixal3D branch, not a new test of both
branches. Both checkpoint filenames remain referenced in the complete graph.

Shared referenced models:
  vae/trellis_2_shape_vae_bf16.safetensors
  vae/trellis_2_texture_vae_bf16.safetensors
  clip_vision/dino_v3_L_naf_fp32.safetensors
  geometry_estimation/moge_2_vitl_normal_fp16.safetensors
  background_removal/birefnet.safetensors

EFFECTIVE CONTROLS: FOLLOW THE LINKS

Baseline:
  Native upsample target, node 94: 1536
  Remesh resolution, node 241: 768
  Decimation face target, node 186: 700000; placement midpoint
  Texture Resolution controller, node 288: 4096
  Effective BakeTextureFromVoxel texture_size, node 147: 4096
  Effective UnwrapMesh resolution, node 196: 4096
  Unwrap segmenter: pec; padding 1; weld_distance 0.0002
  Normal bake, node 224: 2048; cage_distance 0.05; ignore_backfaces true
  Ambient occlusion, node 233: 1024; samples 64; max_distance 0.71;
    strength 1; bias 0.01

Optional 1536 candidate:
  Native target 1536; remesh 1152; decimation target 1050000;
  linked atlas and UV resolution 6144; normal bake 3072; UV padding 2.
  Material-branch constant images are also 6144 x 6144.
  Ambient occlusion remains 1024, not 6144.

Experimental 2048 candidate:
  Same candidate post-processing budget; native target changes to 2048.

Important: the baseline's local bake and unwrap widgets still show 2048, but
links 1186 and 1185 connect them to node 288, whose value is 4096. The original
local widgets are retained to preserve the source graph faithfully. Connected
inputs take precedence. Editing an overridden local widget alone does not
change the connected value.

Likewise, the Pixal3D camera_angle_x input at node 298 is connected to the
horizontal FOV in degrees from MoGeGeometryToFOV, node 242. Its local 49.13
widget is not a fixed effective FOV. MoGe computes the value from your current
input. The input crop is 1024 x 1024 with pad_factor 1.1, grow_mask 0 and black
background. The remove-background switch, node 248, is true.

Shared sampler settings, unchanged across these three graphs:
  Node 3, sparse structure: seed 56, 12 steps, CFG 7.5, euler/normal.
  Node 18, first shape: seed 42, 20 steps, CFG 7.5, euler/normal.
  Node 23, upsampled shape: seed 42, 12 steps, CFG 7.5, euler/simple.
  Node 12, texture: seed 43, 12 steps, CFG 1, euler/normal.
  All use control_after_generate=fixed and denoise=1.

Do not treat those CFG numbers as the whole guidance pipeline. Sparse structure
also has CFGOverride [1, 0.667, 1], RescaleCFG 0.7 and ModelSamplingSD3 shift 5.
The two shape samplers use CFGOverride [1, 0.769, 1] and RescaleCFG 0.5. The
bracket values mean cfg, start_percent and end_percent respectively.

Shared remesh details are UDF, QEF false, drop_inverted_components false,
drop_enclosed_components false, band 1, project_back 0, fix_poles false,
smooth_iters 20, drop_small_components 0.01 and precluster_max_verts 20000000.
Do not describe this as enabling all cleanup options or guaranteeing a closed,
manifold mesh. Native resolution, remesh resolution, UV atlas size and final
triangle count describe different stages and are not interchangeable.

OPTIONAL MATERIAL BRANCH

The optional graphs add three ColorToMask nodes operating on the baked base
color. Their RGB targets are (222,143,113), (190,110,83) and (246,175,144), each
with threshold 27, invert=false and per_batch=1. The masks are combined with
add operations. This is a color-distance heuristic, not semantic skin selection;
it can select clothing/background colors or miss the intended surface.

Preview the combined mask. Within selected texels, metallic becomes 0 and the
screen blend gives roughness = 0.8 + 0.2 * original. Unselected texels retain the
original metallic/roughness maps. The branch does not repair base color, eyes,
eyelids, gaze, normal maps, anatomy or topology. The base-color SaveImage node
is only a starting point for separate editing. No portable eye mask or completed
eye repair is supplied. Regenerated UVs can invalidate older painted masks;
regenerated topology can invalidate rigs, skin weights or morph targets.

A LARGER BUDGET IS NOT A QUALITY RESULT

The former 1p5 label describes numeric budget ratios. 6144/4096 is 1.5 in texture
edge length and 2.25 in texel count. The candidate face target and remesh target
also increase by 1.5. This is not a measured 1.5-times visual improvement, and it
is not a linear prediction of memory or runtime. The main candidate's native
target stays at 1536. Experimental 2048/1536 is 4/3, not 1.5.

The supplied upsample schema accepts 1024 through 2048 in steps of 128. 2304
is outside that recorded schema. The supplied source inspection found no
automatic token-limit resolution-downshift loop. Do not rely on automatic
fallback, successful 2048 checkpoint inference or a VRAM guarantee. The 2048
candidate is beyond the 1536 range described in the supplied upstream research
notes; consult the current model documentation before any experiment.

WHAT THE EXISTING BASELINE EVIDENCE DOES AND DOES NOT SHOW

The supplied measurements describe one previously completed baseline export:
  62266292 bytes; 693873 triangles; 470814 vertices.
  Two 4096 x 4096 RGB textures and one 2048 x 2048 RGB normal texture.
  No skins, skeleton joint/weight attributes, morph targets or animation clips.
  No nonfinite positions, invalid indices or degenerate triangles at the
  inspected 1e-14 area threshold.
  A six-decimal position-weld diagnostic reported 75 boundary edges and
  5456 non-manifold edges.

These are measurements of that existing artifact, not promised counts for your
image. A 700000 face target is not an exact exported triangle count. The edge
diagnostic does not establish watertightness, rule out self-intersections or
prove deformability. The reviewed artifact retained simplified hands, rough
hair/beard, texture artifacts and distorted back graphics. No animation-ready,
game-ready or fully repaired claim is made.

The original input and output are deliberately absent. You cannot reproduce the
same artifact byte-for-byte from this download alone. With your own input, the
package provides the baseline graph and recorded settings for a new run.
Matched seeds also do not guarantee identical outputs across model revisions,
software versions, hardware or nondeterministic kernels.

REPRODUCIBILITY AND REVIEW CHECKLIST

Before running:
  - Record the selected image and verify that you may use it.
  - Record workflow and model SHA256 hashes, selected branch, software commits,
    node versions, GPU/VRAM, driver and PyTorch versions.
  - Resolve every missing node/model and inspect previews without queueing.
  - Verify the connected atlas, UV and camera controls, fixed seeds and prefixes.
  - For candidates, inspect the mask and preserve a matched baseline first.

After each actual run:
  - Record runtime, peak VRAM, warnings, final triangle/vertex count, file size
    and actual embedded texture dimensions.
  - Compare front, side and back views under matched camera/light/materials.
  - Inspect eyes, hands, hair, back graphics, seams and material boundaries.
  - Check boundaries, non-manifold geometry, self-intersections and normals.
  - Test rigging/deformation separately if your intended use requires it.
  - Save the exact executed workflow and output hashes with your run record.

CONTENTS AND CHECKSUMS

README.txt: setup, controls, limitations and reproduction instructions.
SOURCES-AND-CHANGES.txt: source roles, modifications, upstream links and rights.
UPSTREAM-WORKFLOW-TEMPLATE-LICENSE.txt: existing upstream MIT notice, unchanged.
dependencies/: full node-class inventory and seven model paths.
evidence/effective-controls.json: machine-readable controls resolved from links.
evidence/validation-status.json: compact source evidence and copy-check scope.
evidence/selected-node-schemas.json: only the relevant supplied schema subset.
evidence/upsample-behavior-note.txt: bounded summary of the source inspection.
reproducibility-checklist.csv: blank fields for your own actual runs.
SHA256SUMS.txt: hashes of every other file in this archive.

Verify hashes before use. On systems with sha256sum, run sha256sum -c
SHA256SUMS.txt from the extracted package directory. On other systems, compare
SHA-256 values with a trusted local checksum utility. A checksum confirms file
integrity relative to this manifest, not safety, licensing or successful inference.

RIGHTS AND ATTRIBUTION

These graphs build on the Comfy-Org native Pixal3D/TRELLIS.2 workflow-template
structure. The upstream workflow-template MIT notice supplied in the previous
package is reproduced unchanged. It does not grant licenses to model weights,
ComfyUI/custom-node source, input media, likenesses or generated outputs.
Review the corresponding upstream terms; no additional permission is invented
or implied here. Official links are listed in SOURCES-AND-CHANGES.txt.
