{"id":18331001,"url":"https://github.com/retorillo/live2d-utils","last_synced_at":"2025-04-13T04:31:25.200Z","repository":{"id":143799309,"uuid":"170583657","full_name":"retorillo/live2d-utils","owner":"retorillo","description":"Set of Photoshop JavaScript script for Live2D model development","archived":false,"fork":false,"pushed_at":"2020-11-05T05:14:16.000Z","size":76,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-26T21:22:33.031Z","etag":null,"topics":["cubism3","live2d","photoshop"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/retorillo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-13T21:39:58.000Z","updated_at":"2024-03-27T01:12:56.000Z","dependencies_parsed_at":"2023-05-03T14:31:40.714Z","dependency_job_id":null,"html_url":"https://github.com/retorillo/live2d-utils","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/retorillo%2Flive2d-utils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/retorillo%2Flive2d-utils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/retorillo%2Flive2d-utils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/retorillo%2Flive2d-utils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/retorillo","download_url":"https://codeload.github.com/retorillo/live2d-utils/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248663159,"owners_count":21141703,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cubism3","live2d","photoshop"],"created_at":"2024-11-05T19:27:37.979Z","updated_at":"2025-04-13T04:31:25.194Z","avatar_url":"https://github.com/retorillo.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# live2d-utils\n\n**WORKING IN PROGRESS**\n\n## preprocess.jsx\n\nThe [original preprocess script](http://sites.cybernoids.jp/cubism2/tools/jsx) is classic, and has not been updated over 5 years.\n\nThis project goal is to discover minimal and more helpful preprocess script.\n\n### Extentions\n\n#### Comment `#`\n\nFollowing text after `#` will be always removed on layer name.\n\nNote that, if its name is completely starting with #, such a layer will be removed from final output. See \"Forcely removing\".\n\n#### Bypassing merge `*`\n\nIf name of layer set starting with `*`, such a layer set never merge in any cases, so its descendants are respectively outputted if required.\n\n#### Forcely outputting `?`\n\nIf name of layer set or layer starting with `?`, it will be forcely output no matter whether it is invisible.\n\n#### Unwrapping `-`\n\nIf name of layer set starting with `-`, and it had not been merged, their children are exposed from currently assigned layer set.\n\n#### Auto splitting to LR `:`\n\nIf name of layer or layer set starting with `:`, it will be split to left and right layers. (eg. eye-l, eye-r)\n\n- Specify horizontal location in pixel by using `#splitorigin(pixel)` to split at non-center line, otherwise, this script split at canvas center.\n- Specify suffix by using `#lname(L)` and `#rname(R)`\n\n#### Suppressing layer/vector masks `!`\n\nIf name of layer or layer sets starting with `!`, its layer/vector mask will be purged before merging.\n\n#### Forcely removing `#`\n\nLayer or layer sets that name starting with `#` will be forcely removed regardless of its visiblity.\n\n#### Forcely merging `@`\n\nLayer sets that name starting with `@` will be forcely merged no matter whether it has decendant sets.\n\n#### Auto prefixing `-*`\n\nLayer set that name ending with `-*` will be applied auto prefixing procedure to its decendants.\n\n```\nfoo-*              =\u003e foo\n  |---bar          =\u003e foo-bar\n  |---baz          =\u003e foo-baz\n  |---qux          =\u003e foo-qux\n  |    `--- quux   =\u003e foo-quux\n  `---corge-*      =\u003e foo-corge\n       `--- grault =\u003e foo-corge-grault\n\n```\n\n## l2r.jsx\n\n- Sync right content with left content while keeping layer structures.\n- Does not support layer and vector masks.\n\n## mirror.jsx\n\n- Horizontal mirroring copy from current active layer to other layers that has same mirror ID.\n- For example: select `leftSholder #mirror(sholder)` layer set, then load this script, all layer sets that has ID `mirror(sholder)` will be affected.\n\n## fillall.jsx\n  \n- Same with `fill.jsx`, but this script can parse `# palette` layer set and instantiate accessable palette on memory, then, fill all its sibling layers and its children by using palette color.\n- Powerful tool to free you from boring work, but this operation requires huge computing time. Take a cofee.\n\n## fill.jsx\n  \n- Fill by current selected color by finding same `fill(id)` layers on entire document.\n- For example: select `face #fill(skin)` layer, then load this script, all layers that has id `fill(skin)` will be affected.\n\n## dup.jsx\n\n- Duplicate \"strictly\" current document. This may fix broken PSD file that cannot be load by Cubism.\n- Note: This process is included in `preprocess.jsx`\n\n## clear.jsx\n\n- Apply \"Clear\" action to all layers on current document with keeping current seleciton. (without Background layer) Good for clean up process.\n\n## union.jsx\n\n- Usable snippet for patch creation. Organize all layers and layer sets of current opened documents on into single document without merging.\n\n## visibleonly.jsx\n\n- Remove all hidden layers and layer sets from current document.\n\n## selectonly.jsx\n\n- Remove all deselected layers and layer sets from current document.\n\n## level\n\n- `level` can apply \"Levels (Ctrl + L)\" to current active layer or layer set (including children).\n- Active selected layer or layer set must be has `level(I1, I2, I3, O1, O2)` instruction. Each parameters are correspond with \"Levels\" window, for example, `#level(0, 1.00, 255, 0, 255)`.\n\n## exposure\n\n- `exposure` can apply \"Exposure (Image \u0026gt; Adjustment \u0026gt; Exposure)\" to current active layer or layer set (including children).\n- Active selected layer or layer set must be has `exposure(E, O, G)` instruction. Each value are correspond with \"Levels\" window, for example, `#exposure(0.00, 0.0000, 1.00)`.\n\n## addlayer\n\n- `addlayer` is set of scripts to create new layer on my naming rule with `#fill(FILLID)` instruction.\n  - If parent layer set has `#addlayer(base=BASEID)`, `addlayer` uses this for base of new layer fill ID.\n  - If parent layer set has `#addlayer(grouped=true|false)`, `addlayer` change grouping behavior for new layer.\n  - Use the following comma separated syntax to specify both options: `#addlayer(base=BASEID, grouped=true|false)\n\n## isolate.jsx\n\n- Same behavior with Blender isolate command. Hide all layers excepting current active layers and layer that starting with `#`.\n  - After this script, you can see `PRE_ISOLATION` and `POST_ISOLATION` in \"Layer Comps\" window. Use them to switch previous visibility states.\n\n## mkpalette.jsx\n\n- Powerful script to generate color palette. Should use by combining with `fill` and `addlayer` scripts and its naming rules.\n\n## split.jsx\n\n- Same with `:` split operation of `preprocess.jsx`.\n  - Of course, `#lname(L)` `#rname(R)` `#splitorigin(x)` are avaible.\n\n## autonr.jsx\n\n- Execute auto numbering to current active layer set children.\n  - Specify `#autonr(prefix=foobar)` to layer set, in order to put prefix before incremental number.\n  - Specify `#autonr(skip)` to each of children, in order to prevent rename it.\n\n## Reference\n\n- [Photoshop CC Javascript Scripting Reference 2019](https://www.adobe.com/content/dam/acom/en/devnet/photoshop/pdfs/photoshop-cc-javascript-ref-2019.pdf)\n\n## Licensed\n\n\nLicensed under the MIT\n\nCopyright (C) 2019 Retorillo\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fretorillo%2Flive2d-utils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fretorillo%2Flive2d-utils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fretorillo%2Flive2d-utils/lists"}