{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/textsc-perm-a-parametric-representation-for","title":"Perm: A Parametric Representation for Multi-Style 3D Hair Modeling","arxiv_id":"2407.19451","date":"2024-07-28","proceeding":null,"authors":["Chengan He","Xin Sun","Zhixin Shu","Fujun Luan","Sören Pirk","Jorge Alejandro Amador Herrera","Dominik L. Michels","Tuanfeng Y. Wang","Meng Zhang","Holly Rushmeier","Yi Zhou"],"abstract":"We present Perm, a learned parametric representation of human 3D hair designed to facilitate various hair-related applications. Unlike previous work that jointly models the global hair structure and local curl patterns, we propose to disentangle them using a PCA-based strand representation in the frequency domain, thereby allowing more precise editing and output control. Specifically, we leverage our strand representation to fit and decompose hair geometry textures into low- to high-frequency hair structures, termed guide textures and residual textures, respectively. These decomposed textures are later parameterized with different generative models, emulating common stages in the hair grooming process. We conduct extensive experiments to validate the architecture design of Perm, and finally deploy the trained model as a generic prior to solve task-agnostic problems, further showcasing its flexibility and superiority in tasks such as single-view hair reconstruction, hairstyle editing, and hair-conditioned image generation. More details can be found on our project page: https://cs.yale.edu/homes/che/projects/perm/.","url_abs":"https://arxiv.org/abs/2407.19451v6","url_pdf":"https://arxiv.org/pdf/2407.19451v6.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"textsc-perm-a-parametric-representation-for","repo_url":"https://github.com/c-he/perm","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"image-generation","task_name":"Image Generation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2407.19451","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2407.19451"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/c-he/perm","reach":null}],"summary":{"ran_draft_wrong":3,"ran_honours":1,"unverified":1},"by_repo_kind":{"official":{"samples":4,"ran":3,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":1,"samples":[{"code_sha256_prefix":"73acdf58ce42ea61","entry":"blend","repo":"c-he/perm","repo_kind":"official","path":"src/models/strand_codec.py","file_url":"https://github.com/c-he/perm/blob/HEAD/src/models/strand_codec.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"73acdf58ce42ea61"}},{"code_sha256_prefix":"d01b68a634f71551","entry":"parse_comma_separated_list","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"d01b68a634f71551"}},{"code_sha256_prefix":"cf174a2982be5a1e","entry":"parse_range","repo":"c-he/perm","repo_kind":"official","path":"src/gen_samples.py","file_url":"https://github.com/c-he/perm/blob/HEAD/src/gen_samples.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cf174a2982be5a1e"}},{"code_sha256_prefix":"8000b097a46cc6b8","entry":"project","repo":"c-he/perm","repo_kind":"official","path":"src/models/strand_codec.py","file_url":"https://github.com/c-he/perm/blob/HEAD/src/models/strand_codec.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8000b097a46cc6b8"}},{"code_sha256_prefix":"43ed06aa4202f64a","entry":"StrandCodec","repo":"c-he/perm","repo_kind":"official","path":"src/models/strand_codec.py","file_url":"https://github.com/c-he/perm/blob/HEAD/src/models/strand_codec.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"43ed06aa4202f64a"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}