Draw ArcFace Landmarks
Check what your face-ID pipeline is actually seeing
- lynx_face_embeds
- image
- image
- landmarked_image
This one isn't a generation node, it's a debug node, and it exists because face-identity pipelines fail silently. You feed it a face embedding and an image, it draws the detected landmark points back onto that image, and now you can actually see whether the model locked onto a face or hallucinated one from a shadow. If your identity-preserving Wan output keeps coming out with a stranger's face, this is the node that tells you whether the problem started at the embedding stage - before you've burned any GPU time on a render.
What it's for
Identity preservation in this ecosystem runs on the same basic idea whether you're doing stills or video: extract a face embedding, feed it into the model alongside your prompt, and hope the geometry holds. The KB's rundown of InstantID and IP-Adapter FaceID explains why landmarks matter specifically - an embedding alone tells the model "what this face looks like," but spatial landmark conditioning tells it "how the face is structured," and that second signal is what keeps a generated face from drifting into someone else's bone structure. DrawArcFaceLandmarks visualizes that second signal.
The lynx_face_embeds input it takes - going by the naming, this ties into a Lynx-family identity encoder elsewhere in WanVideoWrapper, the pack's take on the ByteDance-style zero-shot face-ID line that ArcFace-based tools (InstantID, PuLID, IP-Adapter FaceID) all sit in. Whatever produced that embedding upstream also detected landmark points on the source face, and this node is what lets you actually look at them instead of trusting a black box.
Inputs and outputs
It's a two-input node: lynx_face_embeds (type LYNXIP), the embedding object from your face encoder, and image, the frame you want the landmarks drawn over. It outputs a single landmarked_image - the same image with landmark points overlaid, ready for a Preview Image node.
That's genuinely all there is to configure. No thresholds, no strength sliders. You're not steering anything here, you're inspecting it.
How to install it
Through ComfyUI Manager, search WanVideoWrapper and install. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-WanVideoWrapper
then restart. This is a large, fast-moving pack from kijai - the same author behind KJNodes, the LivePortrait wrapper, and the CogVideoX wrapper - and it's the primary third-party Wan wrapper the community reaches for over native ComfyUI support when they want finer control. Model weights are never bundled with the node pack; you download the Wan checkpoints, text encoders, and VAE separately into the standard ComfyUI model folders. This particular node needs none of that itself - it just draws on an image you already have.
Common issues & troubleshooting
The landmarks are in the wrong place or missing entirely. That's not a bug in this node - it's upstream. DrawArcFaceLandmarks only visualizes whatever lynx_face_embeds handed it. If the source face is small, at a hard angle, partially occluded, or the crop that fed the encoder missed the face entirely, the landmarks will be garbage and this node will faithfully show you that garbage. Fix the source image or the crop, not this node.
Don't confuse this for a face-swap or restoration tool. It changes nothing about the image content - it only draws dots. If you were expecting an enhanced or corrected face out the other side, you want a different node in your identity pipeline; this one's job ends at visualization.
Use it before you commit to a full render, not after. Because it's cheap to run, the right habit is to wire it in early, check the landmarks look sane on your reference face, and only then send the embedding into your actual Wan generation. Catching a bad face crop here costs seconds; catching it after a 5-minute video render costs a lot more.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| lynx_face_embeds | LYNXIP | lynx resampler model | |
| image | IMAGE | Input images for the model | |
| imageopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| landmarked_image | IMAGE | — |