DGX Spark + Hunyuan3d 2.1

I’m really loving the DGX Spark. It fits perfectly into my Mac-based workflow and finally lets me run almost everything locally without compromises. Huge thanks to the NVIDIA team.

I searched everywhere for an example of running full 3D inference with texturing, like Hunyuan 3D, and couldn’t find anything that worked out of the box on Spark. So I put together a Docker setup myself — if it helps anyone, feel free to use it. Repo: https://github.com/dr-vij/Hunyuan3D-2.1-DGX-Docker

Compared to the original, my fork mainly fixes dependency issues so it builds cleanly in the DGX environment. I removed the version pins for pymeshlab and xatlas, since there’s only one version of each available anyway. I also dropped bpy from the requirements because it’s built separately inside the Docker image.

With the Gradio demo app, generating a textured 3D model takes about 170 seconds. I’m just blown away by this hardware.

Thanks for sharing. Is there any way to enable multi‑view in the Gradio app?

Also tested the ComfyUI playbook with the “Hunyuan3d 2.0 MV” workflow and found that it only outputs meshes—not textures. In order to get it running I had to patch the file:

/home/[user]/ComfyUI/comfy/ldm/flux/math.py

The original function:

def apply_rope(xq: Tensor, xk: Tensor, freqs_cis: Tensor):
    return apply_rope1(xq, freqs_cis), apply_rope1(xk, freqs_cis)

needs to be replaced with:

def apply_rope(xq: Tensor, xk: Tensor, freqs_cis: Tensor):
    if freqs_cis is None:
        return xq, xk
    return apply_rope1(xq, freqs_cis), apply_rope1(xk, freqs_cis)

After applying this change the workflow runs without throwing errors such as:

'NoneType' object has no attribute 'dtype'

I haven’t tried it yet, and I’m not sure it’s actually possible in 2.1, but I did see that feature in 2.0. If I manage to get it working in 2.1, I’ll share it.

hy3d | INFO: [IP masquée] - “GET /static/fonts/IBMPlexSans/IBMPlexSans-Regular.woff2 HTTP/1.1” 404 Not Found
hy3d | INFO: [IP masquée] - “GET /static/fonts/ui-sans-serif/ui-sans-serif-Regular.woff2 HTTP/1.1” 404 Not Found
hy3d | INFO: [IP masquée] - “GET /gradio_api/info HTTP/1.1” 200 OK
hy3d | INFO: [IP masquée] - “GET /gradio_api/mcp/sse HTTP/1.1” 404 Not Found
hy3d | INFO: [IP masquée] - “GET /static/fonts/IBMPlexSans/IBMPlexSans-Bold.woff2 HTTP/1.1” 404 Not Found
hy3d | INFO: [IP masquée] - “GET /static/fonts/system-ui/system-ui-Regular.woff2 HTTP/1.1” 404 Not Found
hy3d | INFO: [IP masquée] - “GET /static/fonts/ui-sans-serif/ui-sans-serif-Bold.woff2 HTTP/1.1” 404 Not Found
hy3d | INFO: [IP masquée] - “GET /static/fonts/system-ui/system-ui-Bold.woff2 HTTP/1.1” 404 Not Found

also 1200 sec…to generate a 3D…make no sense..

What settings are you using? My Spark finishes in 170–200 seconds. Are you sure CUDA is available and that some tasks aren’t running on the CPU?

do you have the texture ? with the generation with your container ?

finally !!! with texture and comfuy !

Yes, I have the texture. The generation via the container works fine. I just ran it right now — everything completes as expected. The generation took a bit longer because Spark is currently building another Docker; I’m trying to get Trellis 2 running in parallel.

Your Comfy setup looks amazing! How is it in terms of speed? Does it run fast? Unfortunately, I couldn’t get it to work properly in Comfy, so I decided to take a different approach — I’ll probably build Docker images with different services and connect to them via API as needed. I want Hunyuan to run as an additional service for Houdini, where I’ll handle the model post-processing and retopology.

Could I ask you to share your Comfy config? Have you published it anywhere?

190 sec ! but running other things in //

attached the .json - faster with comfuy comparing to docker !

but trellis 2> hunyan3d in terme of rendering



{
“10”: {
“inputs”: {
“model”: “hunyuan3d-dit-v2-mv-fp16.safetensors”,
“attention_mode”: “sdpa”,
“cublas_ops”: false
},
“class_type”: “Hy3DModelLoader”,
“_meta”: {
“title”: “Hy3DModelLoader”
}
},
“17”: {
“inputs”: {
“filename_prefix”: “3D/Hy3D”,
“file_format”: “glb”,
“save_file”: true,
“trimesh”: [
“203”,
0
]
},
“class_type”: “Hy3DExportMesh”,
“_meta”: {
“title”: “Hy3DExportMesh”
}
},
“28”: {
“inputs”: {
“model”: “hunyuan3d-delight-v2-0”
},
“class_type”: “DownloadAndLoadHy3DDelightModel”,
“_meta”: {
“title”: “(Down)Load Hy3D DelightModel”
}
},
“35”: {
“inputs”: {
“steps”: 75,
“width”: 512,
“height”: 512,
“cfg_image”: 1,
“seed”: 0,
“delight_pipe”: [
“28”,
0
],
“image”: [
“64”,
0
],
“scheduler”: [
“148”,
0
]
},
“class_type”: “Hy3DDelightImage”,
“_meta”: {
“title”: “Hy3DDelightImage”
}
},
“45”: {
“inputs”: {
“images”: [
“35”,
0
]
},
“class_type”: “PreviewImage”,
“_meta”: {
“title”: “Preview Image”
}
},
“52”: {
“inputs”: {
“width”: 512,
“height”: 512,
“interpolation”: “lanczos”,
“method”: “pad”,
“condition”: “always”,
“multiple_of”: 2,
“image”: [
“157”,
0
]
},
“class_type”: “ImageResize+”,
“_meta”: {
“title”: “🔧 Image Resize”
}
},
“55”: {
“inputs”: {
“mode”: “base”,
“use_jit”: true
},
“class_type”: “TransparentBGSession+”,
“_meta”: {
“title”: “🔧 InSPyReNet TransparentBG”
}
},
“56”: {
“inputs”: {
“rembg_session”: [
“55”,
0
],
“image”: [
“52”,
0
]
},
“class_type”: “ImageRemoveBackground+”,
“_meta”: {
“title”: “🔧 Image Remove Background”
}
},
“61”: {
“inputs”: {
“camera_azimuths”: “0, 90, 180, 270, 0, 180”,
“camera_elevations”: “0, 0, 0, 0, 90, -90”,
“view_weights”: “1, 0.1, 0.5, 0.1, 0.05, 0.05”,
“camera_distance”: 1.45,
“ortho_scale”: 1.2
},
“class_type”: “Hy3DCameraConfig”,
“_meta”: {
“title”: “Hy3D Camera Config”
}
},
“64”: {
“inputs”: {
“x”: 0,
“y”: 0,
“resize_source”: false,
“destination”: [
“184”,
0
],
“source”: [
“166”,
1
],
“mask”: [
“166”,
2
]
},
“class_type”: “ImageCompositeMasked”,
“_meta”: {
“title”: “ImageCompositeMasked”
}
},
“79”: {
“inputs”: {
“render_size”: 2048,
“texture_size”: 2048,
“normal_space”: “world”,
“trimesh”: [
“83”,
0
],
“camera_config”: [
“61”,
0
]
},
“class_type”: “Hy3DRenderMultiView”,
“_meta”: {
“title”: “Hy3D Render MultiView”
}
},
“83”: {
“inputs”: {
“trimesh”: [
“203”,
0
]
},
“class_type”: “Hy3DMeshUVWrap”,
“_meta”: {
“title”: “Hy3D Mesh UV Wrap”
}
},
“85”: {
“inputs”: {
“model”: “hunyuan3d-paint-v2-0”
},
“class_type”: “DownloadAndLoadHy3DPaintModel”,
“_meta”: {
“title”: “(Down)Load Hy3D PaintModel”
}
},
“88”: {
“inputs”: {
“view_size”: 512,
“steps”: 25,
“seed”: 1024,
“denoise_strength”: 1,
“pipeline”: [
“85”,
0
],
“ref_image”: [
“35”,
0
],
“normal_maps”: [
“79”,
0
],
“position_maps”: [
“79”,
1
],
“camera_config”: [
“61”,
0
],
“scheduler”: [
“149”,
0
]
},
“class_type”: “Hy3DSampleMultiView”,
“_meta”: {
“title”: “Hy3D Sample MultiView”
}
},
“90”: {
“inputs”: {
“images”: [
“79”,
0
]
},
“class_type”: “PreviewImage”,
“_meta”: {
“title”: “Preview Image”
}
},
“92”: {
“inputs”: {
“images”: [
“117”,
0
],
“renderer”: [
“79”,
2
],
“camera_config”: [
“61”,
0
]
},
“class_type”: “Hy3DBakeFromMultiview”,
“_meta”: {
“title”: “Hy3D Bake From Multiview”
}
},
“98”: {
“inputs”: {
“texture”: [
“104”,
0
],
“renderer”: [
“129”,
2
]
},
“class_type”: “Hy3DApplyTexture”,
“_meta”: {
“title”: “Hy3D Apply Texture”
}
},
“99”: {
“inputs”: {
“filename_prefix”: “3D/Hy3D_textured”,
“file_format”: “glb”,
“save_file”: true,
“trimesh”: [
“98”,
0
]
},
“class_type”: “Hy3DExportMesh”,
“_meta”: {
“title”: “Hy3DExportMesh”
}
},
“104”: {
“inputs”: {
“inpaint_radius”: 3,
“inpaint_method”: “ns”,
“texture”: [
“129”,
0
],
“mask”: [
“129”,
1
]
},
“class_type”: “CV2InpaintTexture”,
“_meta”: {
“title”: “CV2 Inpaint Texture”
}
},
“111”: {
“inputs”: {
“images”: [
“88”,
0
]
},
“class_type”: “PreviewImage”,
“_meta”: {
“title”: “Preview Image: Multiview results”
}
},
“116”: {
“inputs”: {
“images”: [
“79”,
1
]
},
“class_type”: “PreviewImage”,
“_meta”: {
“title”: “Preview Image”
}
},
“117”: {
“inputs”: {
“width”: 2048,
“height”: 2048,
“interpolation”: “lanczos”,
“method”: “stretch”,
“condition”: “always”,
“multiple_of”: 0,
“image”: [
“118”,
0
]
},
“class_type”: “ImageResize+”,
“_meta”: {
“title”: “🔧 Image Resize”
}
},
“118”: {
“inputs”: {
“upscale_model”: [
“119”,
0
],
“image”: [
“88”,
0
]
},
“class_type”: “ImageUpscaleWithModel”,
“_meta”: {
“title”: “Upscale Image (using Model)”
}
},
“119”: {
“inputs”: {
“model_name”: “4x_foolhardy_Remacri.pth”
},
“class_type”: “UpscaleModelLoader”,
“_meta”: {
“title”: “Load Upscale Model”
}
},
“125”: {
“inputs”: {
“images”: [
“92”,
0
]
},
“class_type”: “PreviewImage”,
“_meta”: {
“title”: “Preview Image: Initial baked texture”
}
},
“126”: {
“inputs”: {
“images”: [
“129”,
0
]
},
“class_type”: “PreviewImage”,
“_meta”: {
“title”: “Preview Image: vertex inpainted texture”
}
},
“127”: {
“inputs”: {
“images”: [
“104”,
0
]
},
“class_type”: “PreviewImage”,
“_meta”: {
“title”: “Preview Image: fully inpainted texture”
}
},
“129”: {
“inputs”: {
“texture”: [
“92”,
0
],
“mask”: [
“92”,
1
],
“renderer”: [
“92”,
2
]
},
“class_type”: “Hy3DMeshVerticeInpaintTexture”,
“_meta”: {
“title”: “Hy3D Mesh Vertice Inpaint Texture”
}
},
“132”: {
“inputs”: {
“value”: 0.8,
“width”: 512,
“height”: 512
},
“class_type”: “SolidMask”,
“_meta”: {
“title”: “SolidMask”
}
},
“133”: {
“inputs”: {
“mask”: [
“132”,
0
]
},
“class_type”: “MaskToImage”,
“_meta”: {
“title”: “Convert Mask to Image”
}
},
“138”: {
“inputs”: {
“mask”: [
“56”,
1
]
},
“class_type”: “MaskPreview+”,
“_meta”: {
“title”: “🔧 Mask Preview”
}
},
“140”: {
“inputs”: {
“box_v”: 1.01,
“octree_resolution”: 256,
“num_chunks”: 32000,
“mc_level”: 0,
“mc_algo”: “mc”,
“enable_flash_vdm”: true,
“force_offload”: true,
“vae”: [
“10”,
1
],
“latents”: [
“166”,
0
]
},
“class_type”: “Hy3DVAEDecode”,
“_meta”: {
“title”: “Hy3D VAE Decode”
}
},
“148”: {
“inputs”: {
“scheduler”: “Euler A”,
“sigmas”: “default”,
“pipeline”: [
“28”,
0
]
},
“class_type”: “Hy3DDiffusersSchedulerConfig”,
“_meta”: {
“title”: “Hy3D Diffusers Scheduler Config”
}
},
“149”: {
“inputs”: {
“scheduler”: “Euler A”,
“sigmas”: “default”,
“pipeline”: [
“85”,
0
]
},
“class_type”: “Hy3DDiffusersSchedulerConfig”,
“_meta”: {
“title”: “Hy3D Diffusers Scheduler Config”
}
},
“154”: {
“inputs”: {
“model_file”: [
“99”,
0
],
“image”: “”
},
“class_type”: “Preview3D”,
“_meta”: {
“title”: “Preview 3D & Animation”
}
},
“157”: {
“inputs”: {
“image”: “Screenshot 2025-12-20 at 14.06.41.png”
},
“class_type”: “LoadImage”,
“_meta”: {
“title”: “Load Image: Front”
}
},
“159”: {
“inputs”: {
“image”: “Screenshot 2025-12-20 at 14.06.50.png”
},
“class_type”: “LoadImage”,
“_meta”: {
“title”: “Load Image: Back”
}
},
“160”: {
“inputs”: {
“image”: “Screenshot 2025-12-20 at 14.06.41.png”
},
“class_type”: “LoadImage”,
“_meta”: {
“title”: “Load Image: Left”
}
},
“162”: {
“inputs”: {
“model_file”: [
“17”,
0
],
“image”: “”
},
“class_type”: “Preview3D”,
“_meta”: {
“title”: “Preview 3D & Animation”
}
},
“163”: {
“inputs”: {
“render_type”: “normal”,
“render_size”: 1024,
“camera_type”: “orth”,
“camera_distance”: 1.45,
“pan_x”: 0,
“pan_y”: 0,
“ortho_scale”: 1.2,
“azimuth”: 146.666748046875,
“elevation”: 0,
“bg_color”: “128, 128, 255”,
“trimesh”: [
“203”,
0
]
},
“class_type”: “Hy3DRenderSingleView”,
“_meta”: {
“title”: “Hy3D Render SingleView”
}
},
“166”: {
“inputs”: {
“guidance_scale”: 5.5,
“steps”: 30,
“seed”: 416935455784444,
“scheduler”: “FlowMatchEulerDiscreteScheduler”,
“pipeline”: [
“10”,
0
],
“front”: [
“195”,
0
],
“left”: [
“196”,
0
],
“right”: [
“197”,
0
],
“back”: [
“198”,
0
]
},
“class_type”: “Hy3DGenerateMeshMultiView”,
“_meta”: {
“title”: “Hy3DGenerateMeshMultiView”
}
},
“167”: {
“inputs”: {
“image”: “Screenshot 2025-12-20 at 14.06.50.png”
},
“class_type”: “LoadImage”,
“_meta”: {
“title”: “Load Image: Right”
}
},
“170”: {
“inputs”: {
“rembg_session”: [
“55”,
0
],
“image”: [
“171”,
0
]
},
“class_type”: “ImageRemoveBackground+”,
“_meta”: {
“title”: “🔧 Image Remove Background”
}
},
“171”: {
“inputs”: {
“width”: 512,
“height”: 512,
“interpolation”: “lanczos”,
“method”: “pad”,
“condition”: “always”,
“multiple_of”: 2,
“image”: [
“160”,
0
]
},
“class_type”: “ImageResize+”,
“_meta”: {
“title”: “🔧 Image Resize”
}
},
“172”: {
“inputs”: {
“width”: 512,
“height”: 512,
“interpolation”: “lanczos”,
“method”: “pad”,
“condition”: “always”,
“multiple_of”: 2,
“image”: [
“167”,
0
]
},
“class_type”: “ImageResize+”,
“_meta”: {
“title”: “🔧 Image Resize”
}
},
“173”: {
“inputs”: {
“rembg_session”: [
“55”,
0
],
“image”: [
“172”,
0
]
},
“class_type”: “ImageRemoveBackground+”,
“_meta”: {
“title”: “🔧 Image Remove Background”
}
},
“174”: {
“inputs”: {
“mask”: [
“170”,
1
]
},
“class_type”: “MaskPreview+”,
“_meta”: {
“title”: “🔧 Mask Preview”
}
},
“175”: {
“inputs”: {
“mask”: [
“173”,
1
]
},
“class_type”: “MaskPreview+”,
“_meta”: {
“title”: “🔧 Mask Preview”
}
},
“176”: {
“inputs”: {
“width”: 512,
“height”: 512,
“interpolation”: “lanczos”,
“method”: “pad”,
“condition”: “always”,
“multiple_of”: 2,
“image”: [
“159”,
0
]
},
“class_type”: “ImageResize+”,
“_meta”: {
“title”: “🔧 Image Resize”
}
},
“177”: {
“inputs”: {
“rembg_session”: [
“55”,
0
],
“image”: [
“176”,
0
]
},
“class_type”: “ImageRemoveBackground+”,
“_meta”: {
“title”: “🔧 Image Remove Background”
}
},
“178”: {
“inputs”: {
“mask”: [
“177”,
1
]
},
“class_type”: “MaskPreview+”,
“_meta”: {
“title”: “🔧 Mask Preview”
}
},
“182”: {
“inputs”: {
“images”: [
“166”,
1
]
},
“class_type”: “PreviewImage”,
“_meta”: {
“title”: “Preview Image”
}
},
“183”: {
“inputs”: {
“mask”: [
“166”,
2
]
},
“class_type”: “MaskPreview+”,
“_meta”: {
“title”: “🔧 Mask Preview”
}
},
“184”: {
“inputs”: {
“amount”: [
“185”,
0
],
“image”: [
“133”,
0
]
},
“class_type”: “RepeatImageBatch”,
“_meta”: {
“title”: “RepeatImageBatch”
}
},
“185”: {
“inputs”: {
“batch”: [
“166”,
1
]
},
“class_type”: “BatchCount+”,
“_meta”: {
“title”: “🔧 Batch Count”
}
},
“195”: {
“inputs”: {
“image”: [
“52”,
0
],
“alpha”: [
“202”,
0
]
},
“class_type”: “JoinImageWithAlpha”,
“_meta”: {
“title”: “Join Image with Alpha”
}
},
“196”: {
“inputs”: {
“image”: [
“171”,
0
],
“alpha”: [
“199”,
0
]
},
“class_type”: “JoinImageWithAlpha”,
“_meta”: {
“title”: “Join Image with Alpha”
}
},
“197”: {
“inputs”: {
“image”: [
“172”,
0
],
“alpha”: [
“200”,
0
]
},
“class_type”: “JoinImageWithAlpha”,
“_meta”: {
“title”: “Join Image with Alpha”
}
},
“198”: {
“inputs”: {
“image”: [
“176”,
0
],
“alpha”: [
“201”,
0
]
},
“class_type”: “JoinImageWithAlpha”,
“_meta”: {
“title”: “Join Image with Alpha”
}
},
“199”: {
“inputs”: {
“mask”: [
“170”,
1
]
},
“class_type”: “InvertMask”,
“_meta”: {
“title”: “InvertMask”
}
},
“200”: {
“inputs”: {
“mask”: [
“173”,
1
]
},
“class_type”: “InvertMask”,
“_meta”: {
“title”: “InvertMask”
}
},
“201”: {
“inputs”: {
“mask”: [
“177”,
1
]
},
“class_type”: “InvertMask”,
“_meta”: {
“title”: “InvertMask”
}
},
“202”: {
“inputs”: {
“mask”: [
“56”,
1
]
},
“class_type”: “InvertMask”,
“_meta”: {
“title”: “InvertMask”
}
},
“203”: {
“inputs”: {
“remove_floaters”: true,
“remove_degenerate_faces”: true,
“reduce_faces”: true,
“max_facenum”: 50000,
“smooth_normals”: false,
“trimesh”: [
“140”,
0
]
},
“class_type”: “Hy3DPostprocessMesh”,
“_meta”: {
“title”: “Hy3D Postprocess Mesh”
}
},
“207”: {
“inputs”: {},
“class_type”: “JoinImageWithAlpha”,
“_meta”: {
“title”: “Join Image with Alpha”
}
}
}

@propellerheadvij I’ve followed the same setup as you suggested in the github repo, but at entryscript exec I ran into the following error. Can you help me to understand why it’s happening


Bpy IO CAN NOT BE Imported!!!

hy3d  | Traceback (most recent call last):

hy3d  |   File "/workspace/Hunyuan3D-2.1-DGX/gradio_app.py", line 798, in <module>

hy3d  |     from hy3dpaint.textureGenPipeline import Hunyuan3DPaintPipeline, Hunyuan3DPaintConfig

hy3d  |   File "/workspace/Hunyuan3D-2.1-DGX/hy3dpaint/textureGenPipeline.py", line 28, in <module>

hy3d  |     from DifferentiableRenderer.mesh_utils import convert_obj_to_glb

hy3d  |   File "/workspace/Hunyuan3D-2.1-DGX/./hy3dpaint/DifferentiableRenderer/mesh_utils.py", line 17, in <module>

hy3d  |     import bpy

hy3d  | ImportError: /usr/lib/x86_64-linux-gnu/libcurl.so.4: undefined symbol: nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation

hy3d  | Error loading texture generator: /usr/lib/x86_64-linux-gnu/libcurl.so.4: undefined symbol: nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation

hy3d  | Failed to load texture generator.

Hi! Sorry for the late reply. It looks like my local environment already had the needed dependencies built, and I probably pushed a commit with a missing LIBRARY_PATH, which caused the issue on a clean Docker setup.

I rebuilt the Docker image today and moved the rasterizer build step directly into the Dockerfile. Now the only things downloaded at runtime are the HF models.

Please pull the latest commit and rebuild the image. I recommend running a git clean on both the repository and the submodule before rebuilding to avoid leftover artifacts.

P.S. I rebuilt it on my side and everything seems fine now. Also, don’t forget to set UID and GID in your .env.

Thank you for the excellent work you did on DomfyUI. So far I’ve only tested the hunyuan3d 2.0 MV models, and in addition to running without the patch that was required with Nvidia’s playbook, they are much faster at generating meshes compared with the host version offered in Nvidia’s playbook. In short, this Docker‑based version of ComfyUI justifies the time spent building the image and deserves a dedicated post in the spark forum projects.

Thanks again.

WARN[0000] The “GID” variable is not set. Defaulting to a blank string.
env file /home/paf/Hunyuan3D-2.1-DGX-Spark-Docker/.env not found: stat /home/paf/Hunyuan3D-2.1-DGX-Spark-Docker/.env: no such file or directory

Doesnt seem to work for me..

I updated the documentation, added information about how to config .env file (it is gitignored and idividual)

Thanks propellerheadvij, Nvidia should start paying you a salary by now.

Now it compiles and runs, but stops here.
I shouldnt have any permissions restricted…
not sure what can be

[+] Running 1/1
✔ hunyuan3d-21-dgx-spark-docker-hy3d Built 0.0s
Attaching to hy3d
hy3d | === Hunyuan3D-2.1-DGX Entrypoint ===
hy3d | Building custom_rasterizer…
hy3d | Obtaining file:///workspace/Hunyuan3D-2.1-DGX/hy3dpaint/custom_rasterizer
hy3d | Checking if build backend supports build_editable … done
hy3d | Preparing editable metadata (pyproject.toml) … done
hy3d | Building wheels for collected packages: custom_rasterizer
hy3d | Building editable for custom_rasterizer (pyproject.toml) … done
hy3d | Created wheel for custom_rasterizer: filename=custom_rasterizer-0.1-0.editable-cp310-cp310-linux_aarch64.whl size=1306 sha256=0c044a0ad0f65be3ab482c489133ccd2e7a0313f397706916b63130c69ea2cbe
hy3d | Stored in directory: /tmp/pip-ephem-wheel-cache-k847u8hc/wheels/83/11/a3/4b3073a6c23efe9153da5f25c341e990890e862f22b29f5bd6
hy3d | Successfully built custom_rasterizer
hy3d | Installing collected packages: custom_rasterizer
hy3d | ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: ‘/opt/py310/lib/python3.10/site-packages/_editable_.custom_rasterizer-0.1.pth’
hy3d | Check the permissions.

nevermind, deleted everything, got latest and reinstalled… now it works!
arcane error messages but theyre gone now
Thanks again!

Are you running it on Docker? I can’t for the life of me figure out why the templates can’t find the models I downloaded. It says with green check mark that it’s installed. I see the models in the folders. But ctgk_name keeps saying undefined.