{"id":21713745,"url":"https://github.com/blurstudio/twistspline","last_synced_at":"2025-04-05T12:04:42.446Z","repository":{"id":33558858,"uuid":"146671886","full_name":"blurstudio/TwistSpline","owner":"blurstudio","description":"A smoothly reparameterizing Bezier spline that also interpolates orientations","archived":false,"fork":false,"pushed_at":"2025-01-31T19:55:20.000Z","size":7376,"stargazers_count":99,"open_issues_count":3,"forks_count":43,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-03-29T11:06:26.865Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","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/blurstudio.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":"2018-08-29T23:57:04.000Z","updated_at":"2025-03-11T02:18:09.000Z","dependencies_parsed_at":"2024-08-23T00:24:44.783Z","dependency_job_id":"413c3421-2d7b-4d90-a51c-0a6bf722eea0","html_url":"https://github.com/blurstudio/TwistSpline","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blurstudio%2FTwistSpline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blurstudio%2FTwistSpline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blurstudio%2FTwistSpline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blurstudio%2FTwistSpline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blurstudio","download_url":"https://codeload.github.com/blurstudio/TwistSpline/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247332602,"owners_count":20921853,"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":[],"created_at":"2024-11-26T00:20:16.918Z","updated_at":"2025-04-05T12:04:42.419Z","avatar_url":"https://github.com/blurstudio.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TwistSpline\nA smoothly reparameterizing Bezier spline that also interpolates orientations.\n\nThe idea here is to build a header-only C++ template library for the spline, and a reference implementation (maya plugin).\n\n## Demos\n\nThis gif demonstrates the smoothly interpolating pin values for this test setup.\nAny control can be pinned with an arbitrary value at any time.\nNot shown: You can unpin *both ends* as long as at least one control has weight.\n![Stretching Demo](images/TwistSpline_StretchDemo.gif)\n\nThis gif deomonstrates the smoothly interpolating twist values (and their interaction with position pinning)\nAgain, any control can pin its twist value, and twist solves smoothly through length preservation\n![Twisting Demo](images/TwistSpline_TwistDemo.gif)\n\nNot Shown: The Rider node can constrain between multiple splines. This means that a tool could easily be written to build and switch to another spline. For an artist, this would give the ability to add or remove spline controls on the fly in-scene.\n\n## Installation\nDownload the `TwistSpline-v*.*.*.zip` file from the [latest release](https://github.com/blurstudio/TwistSpline/releases)\nCreate a `modules` folder in your maya user directory. For example, on Windows, that would mean creating `C:\\Users\\\u003cyour-username\u003e\\Documents\\maya\\modules`. Then copy the `TwistSpline.mod` file and the `TwistSpline` folder into that directory.\nThis should work for Maya 2022 and later on Windows, Linux, and Mac.\n\n## Compiling\nHopefully you shouldn't have to compile. The [releases](https://github.com/blurstudio/TwistSpline/releases) are kept up-to-date, and include plugins for Maya 2022-2025 on Windows, Linux, and Mac.\n\nIf you fork this repo, you can edit the [workflow yaml file](https://raw.githubusercontent.com/blurstudio/TwistSpline/master/.github/workflows/main.yml) to make any changes or add any options you need (PR's welcome)\n\nIf you have to compile locally for windows, there's a `mayaConfigure.bat` file that has defaults to build a Visual Studio solution and compile. You may have to edit it a bit to suit your needs, but it should be pretty straightforward. Linux and Mac users can probably use that as a template.\n\n## Usage\n\nCurrently, the easiest way to handle building a spline and all of its required connections is to use `twistSplineBuilder.py` and run the `makeTwistSpline` function inside. You will probably have to edit this file to fit in your pipeline.\n\n`makeTwistSpline(prefix, numCVs, numRiders, spread=1, maxParam=None, closed=False, singleTangentNode=True)`\n\n`prefix` is the naming prefix for all the DAG objects.\n`numCVs` is the total number of CVs\n`numRiders` is the number of evenly spaced locators riding the spline. Locators are used because joints don't show orientation.\n`spread` is the amount of space between each controller (cv and tangent). So a spread of 1 makes the CVs 3 apart.\n`maxParam` is the parameter value of the last CV. It defaults to (3 * spread * (numCVs - 1))\n`closed` is whether the spline will form a closed loop\n`singleTangentNode` is whether to use the newer/simpler single node to calculate the automatic tangents\n\n## Node Documentation\n\nSee the [Node Documentation](nodeDocs.md) file\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblurstudio%2Ftwistspline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblurstudio%2Ftwistspline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblurstudio%2Ftwistspline/lists"}