Add lip-sync visemes (morph targets) to an existing rigged GLB character
Worldwide
Summary I have a rigged 3D character in glTF 2.0 binary (.glb) format that I use for a real-time talking-avatar web app (Three.js). The model currently has a skeleton but no facial blendshapes. I need a 3D artist to add a set of named viseme morph targets (blendshapes / shape keys) to the mouth so I can drive lip-sync from audio. The existing rig, meshes, textures, and materials must be preserved. About the model - Format: .glb (glTF 2.0 binary), exported from Sketchfab/Blender. - It's a stylized quadruped character. It has separate mouth/tongue geometry (so the mouth can be opened/deformed), a skeleton, but no shape keys and no jaw bone. - ~9 meshes; the morph targets only need to go on the head/mouth mesh. What I need (scope) Add the following 15 morph targets, named exactly as below (case-sensitive — these are the Oculus/Meta viseme names my app expects): viseme_sil, viseme_PP, viseme_FF, viseme_TH, viseme_DD, viseme_kk, viseme_CH, viseme_SS, viseme_nn, viseme_RR, viseme_aa, viseme_E, viseme_I, viseme_O, viseme_U - viseme_sil = neutral/closed mouth (can be a zero/flat shape). - The rest are the standard mouth shapes for those phoneme groups (open "aa", round "O"/"U", lips-together "PP", teeth-on-lip "FF", wide "E"/"I", etc.). - Each morph must read 0 = neutral, 1 = full shape, with the model's default/rest pose at 0 for all. Technical requirements (important — please confirm you can meet these) 1. Deliver as a single .glb (glTF 2.0 binary) that preserves the existing skeleton, skinning weights, meshes, UVs, materials, and textures unchanged. 2. Morph target names must be exported and preserved (in the glTF mesh.extras.targetNames). Many export pipelines drop these — please verify the names survive in the exported file. 3. Morph targets must combine cleanly (e.g. two at 0.5 shouldn't explode the mesh). 4. No change to mesh topology/vertex order beyond what's required to add the shapes, and no change to scale/orientation. Acceptance criteria / how I'll test - I'll open the delivered .glb in the online glTF viewer (https://gltf-viewer.donmccurdy.com) and the three.js editor. - All 15 named morph targets must appear as sliders with the exact names above. - Dragging each slider 0→1 must deform the mouth sensibly for that sound, and return to neutral at 0. - The rig/animation and textures must look identical to the original at rest. Deliverables - The updated character.glb. - The editable source file (.blend or equivalent) so I can request tweaks later. - A short screen-recording or screenshots showing each viseme slider in action. Out of scope - No new model, retexturing, or full facial rig needed — just the mouth visemes on the existing asset. Nice-to-have / acceptable alternative If you prefer the ARKit blendshape standard, that also works for me — in that case deliver at minimum: jawOpen, mouthFunnel, mouthPucker, mouthClose, mouthStretchLeft, mouthStretchRight (named exactly). But the Oculus viseme_* set above is preferred.
$60.00
Fixed-price- IntermediateExperience Level
- Remote Job
- One-time projectProject Type
Skills and Expertise
Activity on this job
- Proposals:Less than 5
- Last viewed by client:4 weeks ago
- Hires:1
- Interviewing:3
- Invites sent:19
- Unanswered invites:8
About the client
- United StatesRedwood City1:43 PM
- $834 total spent9 hires, 1 active
- 2 hours
Explore similar jobs on Upwork
How it works
Create your free profileHighlight your skills and experience, show your portfolio, and set your ideal pay rate.
Work the way you wantApply for jobs, create easy-to-by projects, or access exclusive opportunities that come to you.
Get paid securelyFrom contract to payment, we help you work safely and get paid securely.
About Upwork
- 4.9/5(Average rating of clients by professionals)
- G2 2021#1 freelance platform
- 49,000+Signed contract every week
- $2.3BFreelancers earned on Upwork in 2020
Find the best freelance jobs
Growing your career is as easy as creating a free profile and finding work like this that fits your skills.
Trusted by