@melite/models-trellis2-native 0.1.4-alpha → 0.1.5-pre-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -0
- package/lib/actions.d.ts +1 -2
- package/lib/actions.js +30 -49
- package/lib/index.d.ts +2 -1
- package/lib/index.js +66 -73
- package/package.json +2 -3
package/README.md
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: TRELLIS.2 Native family — background-removed image to textured GLB through voxel structure, shape, and texture stages, with the mesh action on the ComfyUI engine.
|
|
3
|
+
kind: package-library
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# @melite/models-trellis2-native
|
|
7
|
+
|
|
8
|
+
`@melite/models-trellis2-native` is the model family package for TRELLIS.2 on native ComfyUI (`form_img_to_mesh`, genre 3d): background-removed conditioning flows to a voxel structure, a shape latent, and a texture atlas, saved as a `.glb`. The DECL declares the `mesh` action, a three-resolution variant rail, and the five-file lift-chain provisioning. The estate boot mounts it as a Cordis plugin through `ctx.models.registerFamily` inside `ctx.effect`; the img-to-mesh card binds the action. The lane is this package's own `actions.ts`, pinned to committed goldens.
|
|
9
|
+
|
|
10
|
+
## Declaration
|
|
11
|
+
|
|
12
|
+
Variants: `1024` (default; BF16 at ~12 GB VRAM peak or INT8 ConvRot at ~8 GB), `1536` (hero quality; 16/10 GB), and a hidden fast `512`. Family defaults fix the sampler table (euler/normal structure and shape, euler/simple then euler/normal texture), `steps` 12 / `shape_steps` 20, `cfg` 7.5, remesh at 768 faces decimated to 700k, atlas 4096, AO 1024, normal 2048, `sd3_shift` 5, and `seed` 42. The `mesh` action requires `input_image` — the 3D lift is image-conditioned and takes no text prompt — and its facts door refuses any of the five load keys missing: `unet`, `vae`, `texture_vae`, `clip_vision`, `background_removal`. Provisions pin the weights, including `birefnet.safetensors` from Comfy-Org's BiRefNet repo for background removal. The build runs structure, shape, upsample, remesh, texture, and the atlas/AO/normal bakes, then saves through `MeshToFile3D` + `Save3DAdvanced`.
|
|
13
|
+
|
|
14
|
+
## Model Experience
|
|
15
|
+
|
|
16
|
+
### Request context and condition
|
|
17
|
+
|
|
18
|
+
#### What the model sees
|
|
19
|
+
|
|
20
|
+
- **input_image** — required; the source image the lift conditions on.
|
|
21
|
+
- **resolution / bg_removal** — the closed variant table and the birefnet on/off/auto pick.
|
|
22
|
+
- **sampler rows and seed** — the per-stage sampler/scheduler/steps/cfg table and the sentinel-minted seed.
|
|
23
|
+
|
|
24
|
+
#### Token effect
|
|
25
|
+
|
|
26
|
+
Zero-direct token effect — the fields ride the composed ComfyUI graph; no harness context is spent.
|
|
27
|
+
|
|
28
|
+
#### KV Cache effect
|
|
29
|
+
|
|
30
|
+
Independent — each mesh run is its own engine request; no shared prefix.
|
|
31
|
+
|
|
32
|
+
## Known Limitations and Deferred Work
|
|
33
|
+
|
|
34
|
+
- **No text conditioning** — the lane accepts no prompt; shape intent must come from the image alone.
|
|
35
|
+
- **VRAM peaks are cell-declared** — the 8–16 GB figures are the DECL's measured rows, not runtime guarantees on every GPU.
|
|
36
|
+
- **Image quality ceiling** — background removal and texture fidelity are not verified against the running engine.
|
package/lib/actions.d.ts
CHANGED
|
@@ -7,7 +7,6 @@ export type MeshFacts = {
|
|
|
7
7
|
readonly vae: string;
|
|
8
8
|
readonly texture_vae: string;
|
|
9
9
|
readonly clip_vision: string;
|
|
10
|
-
readonly background_removal: string;
|
|
11
10
|
};
|
|
12
11
|
/** The gated params doc the mesh segment reads (the card's schema
|
|
13
12
|
* walk validated types and bounds — a same-process typed boundary;
|
|
@@ -21,6 +20,6 @@ export type MeshParams = Record<string, unknown>;
|
|
|
21
20
|
* @returns the typed facts the segment factory reads */
|
|
22
21
|
export declare function parseMeshFacts(raw: LaneInputsFacts): MeshFacts;
|
|
23
22
|
/** The mesh action: trellis_t1 — DINOv3 conditioning (the image IS
|
|
24
|
-
* the prompt; negative
|
|
23
|
+
* the prompt; the negative is the conditioning's own output 1). */
|
|
25
24
|
export declare const mesh: ComfyActionSpec<MeshParams, MeshFacts>;
|
|
26
25
|
//# sourceMappingURL=actions.d.ts.map
|
package/lib/actions.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { requireText } from "@melite/comfyui-card-kit/facts";
|
|
2
|
-
import { MESH_RESOLUTIONS,
|
|
2
|
+
import { MESH_RESOLUTIONS, MESH_ATLAS_SIZES, MESH_AO_SIZES, MESH_NORMAL_SIZES, admitMeshLiftShared, isSpell } from "@melite/comfyui-card-kit";
|
|
3
3
|
import { SAMPLER_OPTIONS, SCHEDULER_OPTIONS } from "@melite/comfyui-card-kit/vocab";
|
|
4
4
|
/** The mesh facts door: the resolved lane_inputs parsed into the
|
|
5
5
|
* closed shape — a missing load key refuses field-named here,
|
|
@@ -12,39 +12,19 @@ export function parseMeshFacts(raw) {
|
|
|
12
12
|
vae: requireText(raw, 'vae', 'trellis2-native mesh'),
|
|
13
13
|
texture_vae: requireText(raw, 'texture_vae', 'trellis2-native mesh'),
|
|
14
14
|
clip_vision: requireText(raw, 'clip_vision', 'trellis2-native mesh'),
|
|
15
|
-
background_removal: requireText(raw, 'background_removal', 'trellis2-native mesh'),
|
|
16
15
|
};
|
|
17
16
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const MESH_BG_MODES = ['auto', 'on', 'off'];
|
|
30
|
-
const MESH_BAKE_SIZES = [
|
|
31
|
-
['atlas_size', ['2048', '4096']],
|
|
32
|
-
['ao_size', ['512', '1024']],
|
|
33
|
-
['normal_size', ['1024', '2048']],
|
|
34
|
-
];
|
|
35
|
-
if (!MESH_RESOLUTIONS.includes(String(p.resolution))) {
|
|
36
|
-
throw new Error(`resolution ${JSON.stringify(p.resolution)} is not one of ${MESH_RESOLUTIONS.join('|')} — the variant table is closed`);
|
|
37
|
-
}
|
|
38
|
-
const bg = String(p.bg_removal || 'auto');
|
|
39
|
-
if (!MESH_BG_MODES.includes(bg)) {
|
|
40
|
-
throw new Error(`bg_removal ${JSON.stringify(bg)} is not one of auto|on|off — birefnet either cuts or it doesn't`);
|
|
41
|
-
}
|
|
42
|
-
for (const [k, opts] of MESH_BAKE_SIZES) {
|
|
43
|
-
if (!opts.includes(String(p[k]))) {
|
|
44
|
-
throw new Error(`${k} ${JSON.stringify(p[k])} is not one of ${opts.join('|')} — the bake-size table is closed`);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
17
|
+
/** The wired-tensor law (the lanes-image precedent, ported 1:1):
|
|
18
|
+
* a '$name' value names an upstream stage's wired output — the
|
|
19
|
+
* spell IS the tensor and rides node inputs verbatim. ROW-4
|
|
20
|
+
* refuses producer links in Load* file slots, so a spelled image
|
|
21
|
+
* NEVER builds a loader; file paths keep the disk handoff. */
|
|
22
|
+
/** The lift arms' admission slice for THIS family: the SHARED kit
|
|
23
|
+
* seat (the dry-sweep's J4 re-hoist — two families carried this
|
|
24
|
+
* verbatim; the required image and closed sets refuse in the
|
|
25
|
+
* slice, never in the schema). This family adds no private arm
|
|
26
|
+
* (the pixal-only camera_fov row is pixal's, not ours). */
|
|
27
|
+
const admitMeshLift = admitMeshLiftShared;
|
|
48
28
|
/** The dual guided unet + the two VAEs — the lift chain's shared
|
|
49
29
|
* head. Creation order lands the reference renderers' numbering: the SHAPE
|
|
50
30
|
* pair first (CFGOverride.0/RescaleCFG.0), then the STRUCT pair
|
|
@@ -74,15 +54,6 @@ function loadLiftHeads(g, li, p) {
|
|
|
74
54
|
const texVae = g.node('VAELoader', { vae_name: li.texture_vae }).out();
|
|
75
55
|
return { unet, rescaleShape, shifted, shapeVae, texVae };
|
|
76
56
|
}
|
|
77
|
-
/** The birefnet cut (bg_removal auto/on): the cutout MASK from
|
|
78
|
-
* RemoveBackground bridged to IMAGE via MaskToImage (the GPU
|
|
79
|
-
* canary verdict — RemoveBackground outputs MASK, not IMAGE). */
|
|
80
|
-
function cutBackground(g, li, img) {
|
|
81
|
-
const bgm = g.node('LoadBackgroundRemovalModel', { bg_removal_name: li.background_removal }).out();
|
|
82
|
-
const mask = g.node('RemoveBackground', { bg_removal_model: bgm, image: img }).out();
|
|
83
|
-
const src = g.node('MaskToImage', { mask }).out();
|
|
84
|
-
return { src, mask };
|
|
85
|
-
}
|
|
86
57
|
/** The shared structure→shape→upsample→texture→bake→glb chain
|
|
87
58
|
* (_shared_lift_chain verbatim — the model delta lives
|
|
88
59
|
* ENTIRELY in the conditioning pair passed in). */
|
|
@@ -203,7 +174,7 @@ function sharedLiftChain(g, p, heads, pos, neg, prefix) {
|
|
|
203
174
|
}).out();
|
|
204
175
|
}
|
|
205
176
|
/** The mesh action: trellis_t1 — DINOv3 conditioning (the image IS
|
|
206
|
-
* the prompt; negative
|
|
177
|
+
* the prompt; the negative is the conditioning's own output 1). */
|
|
207
178
|
export const mesh = {
|
|
208
179
|
id: "mesh",
|
|
209
180
|
inputs: [],
|
|
@@ -220,7 +191,6 @@ export const mesh = {
|
|
|
220
191
|
{ name: "resolution", type: "enum", options: MESH_RESOLUTIONS },
|
|
221
192
|
{ name: "steps", type: "number", bounds: [4, 60] },
|
|
222
193
|
{ name: "cfg", type: "number", bounds: [1, 15] },
|
|
223
|
-
{ name: "bg_removal", type: "enum", options: MESH_BG_MODES },
|
|
224
194
|
{ name: "shape_steps", type: "number", bounds: [4, 60] },
|
|
225
195
|
{ name: "shape_cfg", type: "number", bounds: [1, 15] },
|
|
226
196
|
{ name: "shape_sampler", type: "enum", options: SAMPLER_OPTIONS },
|
|
@@ -262,13 +232,24 @@ export const mesh = {
|
|
|
262
232
|
? p.input_image
|
|
263
233
|
: g.node('LoadImage', { image: p.input_image }).out();
|
|
264
234
|
const heads = loadLiftHeads(g, li, p);
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
235
|
+
// THE TEMPLATE HAS NO MASK BRIDGE: the crop eats the photo
|
|
236
|
+
// (LoadImage) verbatim — a MaskToImage-sourced crop feeds the
|
|
237
|
+
// silhouette, and the silhouette starves every appearance
|
|
238
|
+
|
|
239
|
+
// IMAGE for its masks leg.
|
|
240
|
+
const cropped = g.node('ImageCropToMask', {
|
|
241
|
+
images: img, masks: img,
|
|
242
|
+
pad_factor: 1.1, width: 1024, height: 1024,
|
|
243
|
+
// pin autofills leaves in place (core defaults)
|
|
244
|
+
background: '#000000', grow_mask: 0,
|
|
245
|
+
}).out();
|
|
269
246
|
const clip = g.node('CLIPVisionLoader', { clip_name: li.clip_vision }).out();
|
|
270
|
-
const
|
|
271
|
-
const
|
|
247
|
+
const cond = g.node('Trellis2Conditioning', { clip_vision_model: clip, image: cropped });
|
|
248
|
+
const pos = cond.out(0);
|
|
249
|
+
// the negative IS the conditioning's second output — never a
|
|
250
|
+
// fabricated zero (the zero drops the shared proj pack the
|
|
251
|
+
// template routes as every pass's negative)
|
|
252
|
+
const neg = cond.out(1);
|
|
272
253
|
// Family constant, never a knob (compose stamps the prefix
|
|
273
254
|
// internally; stable).
|
|
274
255
|
return sharedLiftChain(g, p, heads, pos, neg, 'trellis2_native');
|
package/lib/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Plugin } from "@deepseek-ai/cordis";
|
|
2
|
-
import type { ModelDecl } from
|
|
2
|
+
import type { ModelDecl } from '@melite/comfyui-card-kit/model-contract';
|
|
3
3
|
export declare const DECL: ModelDecl;
|
|
4
4
|
export declare const family: Plugin;
|
|
5
5
|
export { mesh } from "./actions.js";
|
|
6
|
+
export { family as default };
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.js
CHANGED
|
@@ -6,8 +6,13 @@ export const DECL = {
|
|
|
6
6
|
"description": "Image to textured 3D mesh (native ComfyUI TRELLIS.2): background-removed conditioning → voxel structure → shape latent → texture atlas, saved as a .glb.",
|
|
7
7
|
"engine": "comfyui",
|
|
8
8
|
"defaults": {
|
|
9
|
+
|
|
10
|
+
// standard / quality, defaulting to standard): the floors ARE the
|
|
11
|
+
// standard tier — 1024 + the template's 768/700k tail (the card
|
|
12
|
+
// schema carries no remesh default, so this row is the raw-compose
|
|
13
|
+
// floor; the surviving 1024 lane stamps none, and the quality
|
|
14
|
+
// recipe's 1536/2048/2M picks override these as patch-only rows).
|
|
9
15
|
"resolution": "1024",
|
|
10
|
-
"bg_removal": "auto",
|
|
11
16
|
"steps": 12,
|
|
12
17
|
"cfg": 7.5,
|
|
13
18
|
"shape_steps": 20,
|
|
@@ -35,7 +40,7 @@ export const DECL = {
|
|
|
35
40
|
"rescale_shape": 0.5,
|
|
36
41
|
"override_struct": 0.667,
|
|
37
42
|
"override_shape": 0.769,
|
|
38
|
-
"seed":
|
|
43
|
+
"seed": -1
|
|
39
44
|
},
|
|
40
45
|
"studio": {
|
|
41
46
|
"tenant": "3d/img-to-mesh",
|
|
@@ -54,9 +59,11 @@ export const DECL = {
|
|
|
54
59
|
{
|
|
55
60
|
"id": "1024",
|
|
56
61
|
"label": "1024",
|
|
57
|
-
"hint": "Standard resolution —
|
|
62
|
+
"hint": "Standard resolution — the fast tier",
|
|
58
63
|
"group": "Variant",
|
|
59
64
|
"route": "trellis2-native",
|
|
65
|
+
// no resolver_defaults — the family defaults row owns
|
|
66
|
+
// resolution (one value, one owner); this row IS the lane
|
|
60
67
|
"order": 0,
|
|
61
68
|
"cells": [
|
|
62
69
|
{
|
|
@@ -74,77 +81,41 @@ export const DECL = {
|
|
|
74
81
|
}
|
|
75
82
|
]
|
|
76
83
|
},
|
|
84
|
+
|
|
85
|
+
// standard, quality on the img to mesh node, defaulting to
|
|
86
|
+
// standard"). Resolution rides ONE seat — the family defaults
|
|
87
|
+
// row's 1024 — so fast and standard leave it unstated and only
|
|
88
|
+
// quality restates the 1536 pick (the card's closed enum owns
|
|
89
|
+
// the vocabulary: 1024 | 1536; the hidden 512 lane was
|
|
90
|
+
// off-envelope and died with its variant row). The remesh tail
|
|
91
|
+
// rides the family defaults row (the floors ARE the standard —
|
|
92
|
+
// the h3 precedent: a recipe stamps only what DIFFERS from the
|
|
93
|
+
// floor). STANDARD is the stamp-less first row: the birth stamp
|
|
94
|
+
// takes the FIRST Recipe row, so every fresh card lands here
|
|
95
|
+
// named Standard with the calibration riding as floors.
|
|
77
96
|
{
|
|
78
|
-
"id": "
|
|
79
|
-
"label": "
|
|
80
|
-
"hint": "
|
|
81
|
-
"group": "Variant",
|
|
82
|
-
"route": "trellis2-native-1536",
|
|
83
|
-
"order": 2,
|
|
84
|
-
"resolver_defaults": { "resolution": "1536" },
|
|
85
|
-
"cells": [
|
|
86
|
-
{
|
|
87
|
-
"quant": "bf16",
|
|
88
|
-
"label": "BF16",
|
|
89
|
-
"hide_from_dropdown": true,
|
|
90
|
-
"route": "trellis2-native-1536-bf16",
|
|
91
|
-
"vram_peak_gb": 16,
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
"quant": "int8",
|
|
95
|
-
"label": "INT8 ConvRot",
|
|
96
|
-
"route": "trellis2-native-1536-int8",
|
|
97
|
-
"vram_peak_gb": 10,
|
|
98
|
-
}
|
|
99
|
-
]
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
"id": "512",
|
|
103
|
-
"label": "512",
|
|
104
|
-
"hint": "Fast resolution — props, thumbnails, iteration",
|
|
105
|
-
"group": "Variant",
|
|
106
|
-
"route": "trellis2-native-512",
|
|
107
|
-
"order": 1,
|
|
108
|
-
"hide_from_dropdown": true,
|
|
109
|
-
"cells": [
|
|
110
|
-
{
|
|
111
|
-
"quant": "bf16",
|
|
112
|
-
"label": "BF16",
|
|
113
|
-
"hide_from_dropdown": true,
|
|
114
|
-
"route": "trellis2-native-512-bf16",
|
|
115
|
-
"vram_peak_gb": 8,
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
"quant": "int8",
|
|
119
|
-
"label": "INT8 ConvRot",
|
|
120
|
-
"route": "trellis2-native-512-int8",
|
|
121
|
-
"vram_peak_gb": 5,
|
|
122
|
-
}
|
|
123
|
-
]
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
"id": "fast_mesh",
|
|
127
|
-
"label": "Fast Mesh",
|
|
128
|
-
"hint": "Remesh 128 + 10k faces — the card schema's own floors (lightest preview mesh).",
|
|
97
|
+
"id": "standard",
|
|
98
|
+
"label": "Standard",
|
|
99
|
+
"hint": "The default — the official template's calibration as the floor: 1024 + remesh 768 + 700k faces; fits a 24GB card.",
|
|
129
100
|
"group": "Recipe",
|
|
130
|
-
"wire_defaults": { "remesh_resolution": 128, "decimate_faces": 10000 },
|
|
131
101
|
"cells": [],
|
|
132
102
|
},
|
|
133
103
|
{
|
|
134
|
-
"id": "
|
|
135
|
-
"label": "
|
|
136
|
-
"hint": "
|
|
104
|
+
"id": "fast",
|
|
105
|
+
"label": "Fast",
|
|
106
|
+
"hint": "Preview tier — remesh 128 + 10k faces at the same 1024 floor; the lightest mesh that still unwraps.",
|
|
137
107
|
"group": "Recipe",
|
|
138
|
-
"wire_defaults": { "remesh_resolution":
|
|
108
|
+
"wire_defaults": { "remesh_resolution": 128, "decimate_faces": 10000 },
|
|
139
109
|
"cells": [],
|
|
140
110
|
},
|
|
141
111
|
{
|
|
142
|
-
"id": "
|
|
143
|
-
"label": "
|
|
144
|
-
"hint": "
|
|
112
|
+
"id": "quality",
|
|
113
|
+
"label": "Quality",
|
|
114
|
+
"hint": "Hero assets — resolution 1536 + remesh 2048 + 2M faces; RemeshMesh wants ~3.6 GiB over a ~19 GiB resident chain (32GB+ VRAM only).",
|
|
145
115
|
"group": "Recipe",
|
|
116
|
+
"wire_defaults": { "resolution": "1536", "remesh_resolution": 2048, "decimate_faces": 2000000 },
|
|
146
117
|
"cells": [],
|
|
147
|
-
}
|
|
118
|
+
},
|
|
148
119
|
],
|
|
149
120
|
"variant_groups": [
|
|
150
121
|
{
|
|
@@ -158,8 +129,8 @@ export const DECL = {
|
|
|
158
129
|
{
|
|
159
130
|
"id": "Recipe",
|
|
160
131
|
"label": "Recipe",
|
|
161
|
-
"tooltip": "One-click
|
|
162
|
-
"default": "
|
|
132
|
+
"tooltip": "One-click mesh tiers — patch-only rows: Fast (preview tail), Standard (the calibrated default), Quality (1536 hero pass).",
|
|
133
|
+
"default": "standard"
|
|
163
134
|
}
|
|
164
135
|
],
|
|
165
136
|
"provisions": [
|
|
@@ -190,22 +161,39 @@ export const DECL = {
|
|
|
190
161
|
"folder": "clip_vision",
|
|
191
162
|
"sha256": "5cb785e458de7c460579082418af81f5c62380c181599344bdc60898c63468ee",
|
|
192
163
|
"size_bytes": 1212559776
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
"name": "birefnet.safetensors",
|
|
196
|
-
"url": "https://huggingface.co/Comfy-Org/BiRefNet/resolve/main/background_removal/birefnet.safetensors",
|
|
197
|
-
"folder": "background_removal",
|
|
198
|
-
"sha256": "9ab37426bf4de0567af6b5d21b16151357149139362e6e8992021b8ce356a154",
|
|
199
|
-
"size_bytes": 444473596
|
|
200
164
|
}
|
|
201
165
|
],
|
|
202
166
|
"lane_inputs": {
|
|
203
|
-
"background_removal": "birefnet.safetensors",
|
|
204
167
|
"clip_vision": "dino_v3_vit_l.safetensors",
|
|
205
168
|
"texture_vae": "trellis_2_texture_vae_bf16.safetensors",
|
|
206
169
|
"unet": "trellis_2_int8_convrot.safetensors",
|
|
207
170
|
"vae": "trellis_2_shape_vae_bf16.safetensors"
|
|
208
171
|
},
|
|
172
|
+
// THE DECLARED HOME (the lane-presence cure): the store folder this
|
|
173
|
+
// pack-specific lane file lives in — the run gate probes it at press
|
|
174
|
+
// instead of dying untyped at the engine.
|
|
175
|
+
"lane_homes": { "texture_vae": "vae" },
|
|
176
|
+
// THE LANE SURFACE (the z-image precedent): exactly the knobs the
|
|
177
|
+
// img-to-mesh card serves — the mesh lift, its shape/texture
|
|
178
|
+
// passes, the remesh/decimate tail, and the per-pass sampler pairs.
|
|
179
|
+
"params": [
|
|
180
|
+
"input_image", "rigged_glb", "target_glb",
|
|
181
|
+
"seed", "resolution", "steps", "cfg",
|
|
182
|
+
"camera_fov",
|
|
183
|
+
"shape_steps", "shape_cfg", "tex1_steps", "tex1_cfg",
|
|
184
|
+
"tex2_steps", "tex2_cfg",
|
|
185
|
+
"remesh_resolution", "remesh_qef", "remesh_drop_inverted",
|
|
186
|
+
"remesh_drop_enclosed", "remesh_fix_poles",
|
|
187
|
+
"decimate_faces", "smooth_angle",
|
|
188
|
+
"atlas_size", "ao_size", "normal_size",
|
|
189
|
+
"struct_sampler", "struct_scheduler",
|
|
190
|
+
"shape_sampler", "shape_scheduler",
|
|
191
|
+
"tex1_sampler", "tex1_scheduler",
|
|
192
|
+
"tex2_sampler", "tex2_scheduler",
|
|
193
|
+
"sd3_shift",
|
|
194
|
+
"rescale_struct", "rescale_shape",
|
|
195
|
+
"override_struct", "override_shape",
|
|
196
|
+
],
|
|
209
197
|
// the mesh action the img-to-mesh card binds (the trellis_t1
|
|
210
198
|
// lane tree).
|
|
211
199
|
"actions": [mesh],
|
|
@@ -218,4 +206,9 @@ export const family = {
|
|
|
218
206
|
},
|
|
219
207
|
};
|
|
220
208
|
export { mesh } from "./actions.js";
|
|
209
|
+
// The Loader-row face: DSH loads plugin rows by bare specifier and
|
|
210
|
+
// unwraps `exports.default ?? exports` (vendor/cordis_plugins/loader
|
|
211
|
+
// unwrapExports) — the default export IS the row-loadable plugin. The
|
|
212
|
+
// named `family` stays the library face (engine loadFamilies).
|
|
213
|
+
export { family as default };
|
|
221
214
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@melite/models-trellis2-native",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5-pre-alpha",
|
|
4
4
|
"license": "SSPL-1.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -11,8 +11,7 @@
|
|
|
11
11
|
"./package.json": "./package.json"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@melite/comfyui-card-kit": "0.1.
|
|
15
|
-
"@melite/comfyui-cordis": "0.1.4-alpha"
|
|
14
|
+
"@melite/comfyui-card-kit": "0.1.5-pre-alpha"
|
|
16
15
|
},
|
|
17
16
|
"devDependencies": {
|
|
18
17
|
"@types/node": "^22.20.0",
|