Skip to content

About

Native multi-view conditioning for Trellis2 + in-memory MeshWithVoxel to MESH/VOXEL color bridge for ComfyUI

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

ComfyUI-Trellis2-Multiview-Native

Native-style multi-view conditioning for Trellis2, plus an in-memory MeshWithVoxel to native MESH + VOXEL bridge that carries full PBR color (base color RGB + metallic + roughness).

No compiled dependencies beyond what ComfyUI already ships with.

Nodes

Trellis2 Multi-View Conditioning (Trellis2MultiViewConditioning)

Averages DINOv3 global tokens across 1–4 views (front / left / back / right) and emits the exact same CONDITIONING format as core Trellis2Conditioning, so all downstream core nodes (Trellis2ShapeStage / KSampler / Trellis2UpsampleStage / Trellis2TextureStage / VAE decodes) work unchanged.

Trellis2 diffusion uses global cross-attention trained single-view, so mean-pooling the global tokens is the architecturally consistent way to condition on several views without retraining. View order is irrelevant to the diffusion; the first connected view is treated as "front" only as a posing convention. Each view has a use_* switch to skip a wired view without disconnecting it. 2 views (front + back) work well and sample ~2x faster than 4; 1 view passes through as plain averaging.

Trellis2 Spatial Multi-View Patch (Trellis2SpatialMultiViewPatch)

Native port of visualbruno's multiview sampler fusion — this is what locks the mesh to the source pose. It encodes each view's DINOv3 tokens itself and patches MODEL (supported set_model_unet_function_wrapper hook), so every KSampler step runs once per view and blends with the same spatial softmax (front_axis z/x, blend_temperature, default z / 2.0). Pure torch, no compiled deps. Wire: UNETLoader -> patch -> KSamplers, same 4 views + CLIP Vision as the conditioning node, keep use_* switches in sync on both nodes. Single view = passthrough.

Sharpness note: visualbruno's rescale_t (4.0 structure/shape, 3.0 texture) is exactly Comfy's flow shift (α·t/(1+(α-1)·t)), so use core ModelSamplingSD3 nodes for it: shift 4.0 between the patch and the structure/shape KSamplers, shift 3.0 before the texture KSampler — then 12 steps / 6.5 / 3.0 match bruno's defaults. Without the shift nodes everything reads soft no matter the step count.

Trellis2 CFG Interval + Rescale (Trellis2CFGInterval)

Native port of the last bruno sampler delta: per-step CFG runs only inside [start, end] (pure conditional outside — bruno's guidance_strength=1 fallback) with his x0-std rescale (guidance_rescale, 0.2 on every stage). Use one instance at 0.1-1.0 for structure/shape and one at 0.0-0.9 for texture.

Trellis2 MeshWithVoxel to Native Bridge (MeshWithVoxelToNativeBridge)

Converts visualbruno ComfyUI-Trellis2 MESHWITHVOXEL to native ComfyUI MESH + VOXEL in memory — no GLB export, no shape-encoder re-encode, no VAE needed.

  • mesh output: feed into MeshReconstructWithQuad / WTiVo / LODTailor.
  • voxel_colors output: feed into core BakeTextureFromVoxel for real color/PBR texture bakes.
  • reorient_zup_to_yup (default on): applies the same R_x(-90) as Trellis2MeshWithVoxelToTrimesh "90 degrees", so mesh vertices and voxel indices stay aligned in Y-up space.
  • If the input has no voxel grid (generator ran with generate_texture_slat disabled), the mesh still passes through and an empty VOXEL is emitted with a warning — the watertight chain completes and Bake produces black maps instead of crashing the run.

Install

Manual: copy this folder into ComfyUI/custom_nodes/ and restart ComfyUI.

ComfyUI-Manager: install from Git URL (https://github.com/saogalaxy/ComfyUI-Trellis2-Multiview-Native), then restart.

Example workflows

  • trellis2_multiview_workflow.json — native multiview Trellis2: LoadImage views -> Multi-View Conditioning -> KSamplers -> VAE decodes -> PaintMesh -> GLB. Needs: trellis_2_int8_convrot, shape/texture VAEs, dino_v3_L_naf_fp32. Restart ComfyUI after installing.
  • trellis2_multiview_spatial_workflow.json — same chain plus the Spatial Multi-View Patch between UNETLoader and the KSamplers (pose-locked, 1024_cascade). Tip: keep Quad Reconstruct bypassed until pose holds — at 1536 + remove_inner_faces it can hollow thin cloth and read as see-through.
  • Bridged PixelArtistry chain (separate file): Trellis2 multiview generator -> Remesh -> Simplify -> FillHoles -> MeshWithVoxelToNativeBridge -> Quad Reconstruct -> MemoryCleaner -> WTiVo watertight -> LODTailor -> Unwrap -> BakeTextureFromVoxel (voxel_colors from the bridge) -> ApplyTexture -> GLB saves. IMPORTANT: the Trellis2 generator must run with generate_texture_slat enabled, otherwise there is no color grid to bridge and bakes come out black.

Acknowledgements

Inspired by:

About

Native multi-view conditioning for Trellis2 + in-memory MeshWithVoxel to MESH/VOXEL color bridge for ComfyUI

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages