Update
210
2023/scripts/modeling_tools/gs_curvetools/LICENSE.txt
Normal file
@@ -0,0 +1,210 @@
|
||||
"""
|
||||
GS CurveTools License:
|
||||
This collection of code named GS CurveTools is a property of George Sladkovsky (Yehor Sladkovskyi)
|
||||
and can not be copied or distributed without his written permission.
|
||||
|
||||
GS CurveTools v1.3.8 Personal
|
||||
Copyright 2024, George Sladkovsky (Yehor Sladkovskyi)
|
||||
All Rights Reserved
|
||||
|
||||
UI font is Roboto that is licensed under the Apache 2.0 License:
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Autodesk Maya is a property of Autodesk, Inc:
|
||||
https://www.autodesk.com/
|
||||
|
||||
Social Media and Contact Links:
|
||||
|
||||
Discord Server: https://discord.gg/f4DH6HQ
|
||||
Online Store: https://sladkovsky3d.artstation.com/store
|
||||
Online Documentation: https://gs-curvetools.readthedocs.io/
|
||||
Twitch Channel: https://www.twitch.tv/videonomad
|
||||
YouTube Channel: https://www.youtube.com/c/GeorgeSladkovsky
|
||||
ArtStation Portfolio: https://www.artstation.com/sladkovsky3d
|
||||
Contact Email: george.sladkovsky@gmail.com
|
||||
|
||||
"""
|
||||
|
||||
https://www.artstation.com/marketplace-product-eula
|
||||
|
||||
Marketplace Product & Services Agreement
|
||||
|
||||
End User Agreement
|
||||
|
||||
This Marketplace End User Agreement applies to all downloadable products and professional services (e.g. mentorships, personal training, portfolio reviews) sold via the ArtStation Marketplace, unless a custom agreement or license is provided by the seller.
|
||||
|
||||
The EUA is an agreement between the buyer and the seller providing the goods or services.
|
||||
|
||||
PLEASE READ THIS DOCUMENT CAREFULLY. IT SIGNIFICANTLY ALTERS YOUR LEGAL RIGHTS AND REMEDIES.
|
||||
|
||||
BY CLICKING “I AGREE” OR DOWNLOADING OR USING THE DIGITAL PRODUCT OR RECEIVING THE PROFESSIONAL SERVICES TO WHICH THIS AGREEMENT RELATES YOU ACCEPT ALL OF THIS AGREEMENT’S TERMS, INCLUDING THE DISCLAIMERS OF WARRANTIES AND LIMITATIONS ON DAMAGES, USE AND TRANSFERABILITY. IF YOU DO NOT ACCEPT THIS AGREEMENT’S TERMS, DO NOT DOWNLOAD, INSTALL OR USE THE DIGITAL PRODUCT OR RECEIVE OR USE THE PROFESSIONAL SERVICES.
|
||||
|
||||
This end-user agreement (“Agreement”) is a legally binding agreement between you, the licensee and customer (“you” or “your”), and the provider (“we” or “us” or “our”) of the digital products (“Products”) or instructional, training, mentorship or other professional service packages (“Professional Services”) that you purchase through the ArtStation Marketplace, regarding your rights and obligations regarding those Products and Professional Services.
|
||||
|
||||
1. Your Status
|
||||
In this Agreement, “you” means the person or entity acquiring rights in the Products or purchasing Professional Services. That may be a natural person, or a corporate or business entity or organization.
|
||||
|
||||
(a) If you are a natural person then you must be, and you confirm that you are, at least 13 years old. If you are between 13 years and the age of majority in your jurisdiction of residence, you confirm that your parent or legal guardian has reviewed and agrees to this Agreement and is happy for you to access and use the Product or receive the Professional Services.
|
||||
|
||||
(b) If you are a corporate entity then: (i) the rights granted under this Agreement are granted to that entity; (ii) you represent and warrant that the individual completing and accepting this Agreement is an authorized your representative and has the authority to legally bind that you to the Agreement; and (iii) to the extent that one or more of your employees are granted any rights in the Product or to receive Professional Services under this Agreement, you will ensure that your employees comply with this Agreement and you will be responsible and liable for any breach of this Agreement by any employee.
|
||||
|
||||
2. ArtStation
|
||||
ArtStation is a division of Epic Games, Inc., You acknowledge and agree that Epic is a third-party beneficiary of this Agreement and therefore will be entitled to directly enforce and rely upon any provision in this Agreement that confers a benefit on, or rights in favour of, Epic. In addition, you authorize Epic to act as your authorized representative to file a lawsuit or other formal action against a licensor in a court or with any other governmental authority if Epic knows or suspects that a licensor breached any representations or warranties under this Agreement. The foregoing authorization is nonexclusive, and Epic shall be under no obligation to pursue any claim. Epic will not initiate any such action on your behalf without first consulting with and obtaining your approval.
|
||||
|
||||
Products
|
||||
The following sections 3 through 9 apply to any Products you acquire from us through the ArtStation Marketplace:
|
||||
|
||||
3. Product Licence
|
||||
Subject to this Agreement’s terms and conditions, we hereby grant you a limited, non-exclusive, worldwide, non-transferable right and licence to (which will be perpetual unless the licence terminates as set out in this Agreement): (a) download the Product; and (b) copy and use the Product. We reserve all rights not expressly granted to you under this Agreement.
|
||||
|
||||
4. Licence Scope and Restrictions
|
||||
(a) Tutorials
|
||||
You are purchasing ONE licence to create ONE copy of the Product for use by you only (or, if you are a corporate entity, for use by a single authorized employee).
|
||||
|
||||
If this Product is bundled with a stock digital asset then you receive a limited personal use licence regarding that stock digital asset, and you may use that stock digital asset for your personal use only. You will not use that stock digital asset in any commercial manner unless you purchase a separate commercial licence.
|
||||
|
||||
(b) Installable Tools
|
||||
You may purchase one or more licences for the Product. A single licence allows you to install the Product on a single computer at a time for use by a single authorized user. If you are a corporate entity and the authorized employee completing the transaction on your behalf purchases multiple licences, you may choose to store the Product on a single server or shared hard drive for use by a single authorized employee at a time for each licence purchased.
|
||||
|
||||
Provided that you comply with the restrictions on users set out above, you may use the Product on an unlimited number of projects.
|
||||
|
||||
(c) Stock Assets
|
||||
Subject to the restrictions set out in this Agreement, you may copy, use, modify, adapt, translate, distribute, publicly display, transmit, broadcast, and create derivative works from the Product in works you create (“Works”), which may include things like films, videos, multi-media projects, computer games, models, images, publications, broadcasts, documents, and presentations.
|
||||
|
||||
If you are a corporate entity, you may make the Product available for use by your employees in accordance with this Agreement (for example, by storing the Product on a network server).
|
||||
|
||||
You may only share the Product with external people or entities where:
|
||||
- You are collaborating with the external parties in the creation of your Work and you need to share the Product for that purpose, provided that any external party that receives the Product may only use it in your Work and must secure and limit access to the Product for that purpose;
|
||||
- You are working as a contractor for a client in the creation of a Work and need to share the Product with your client, or any external parties working with your client, provided that your client and any such external parties may use the Product only for your client’s Work, and all parties secure and limit access to the Product for that purpose.
|
||||
|
||||
For any other use of the Product by any other party, that party must purchase a licence to the Product.
|
||||
|
||||
In addition to any other restrictions in this Agreement, you will not:
|
||||
- publish, sell, license, offer or make available for sale or licensing, or otherwise distribute the Product except as part of a Work or through a form of sharing that is authorized in this Agreement; or
|
||||
- publish, distribute or make available the Product through any online clearinghouse platform.
|
||||
|
||||
FURTHER SPECIFIC TERMS
|
||||
In addition to the restrictions set out above, the following terms and conditions apply to the following forms of commercial licences for the Product:
|
||||
|
||||
Standard Commercial Licence
|
||||
If you have purchased a Standard Commercial licence then you may exercise your rights under that licence:
|
||||
- for personal use on an unlimited number of personal projects that are not used or distributed in any commercial manner; and
|
||||
- respect to one commercial Work, with up to a maximum of, as applicable, 2,000 sales of the Work or 20,000 monthly views of the Work.
|
||||
|
||||
Extended Commercial Licence
|
||||
If you have purchased an Extended Commercial licence then you may exercise your rights under that licence:
|
||||
- for personal use on an unlimited number of personal projects that are not used or distributed in any commercial manner; and
|
||||
- with respect to any number of commercial Works, with no limit on sales or views.
|
||||
|
||||
5. Additional Restrictions
|
||||
Except as expressly permitted under this Agreement, you will not:
|
||||
|
||||
(a) make any copy of the Product except for archival or backup purposes;
|
||||
|
||||
(b) circumvent or disable any access control technology, security device, procedure, protocol, or technological protection mechanism that may be included or established in or as part of the Product;
|
||||
|
||||
(c) hack, reverse engineer, decompile, disassemble, modify or create derivative works of the Product or any part of the Product;
|
||||
|
||||
(d) publish, sell distribute or otherwise make the Product available to others to use, download or copy;
|
||||
|
||||
(e) transfer or sub-license the Product or any rights under this Agreement to any third party, whether voluntarily or by operation of law;
|
||||
|
||||
(f) use the Product for any purpose that may be defamatory, threatening, abusive, harmful or invasive of anyone’s privacy, or that may otherwise violate any law or give rise to civil or other liability;
|
||||
|
||||
(g) misrepresent yourself as the creator or owner of the Property;
|
||||
|
||||
(h) remove or modify any proprietary notice, symbol or label in or on the Product;
|
||||
|
||||
(i) directly or indirectly assist, facilitate or encourage any third party to carry on any activity prohibited by this Agreement.
|
||||
|
||||
6. Proprietary Rights
|
||||
The Product is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. You are licensing the Product and the right to access, install and use the Product in accordance with this Agreement, not buying the Product. As between you and us, we own all right, title and interest in and to the Product, and you are not acquiring any ownership of or rights in the Product except the limited rights granted under this Agreement.
|
||||
|
||||
7. No Epic Support
|
||||
You acknowledge and agree that you are licensing the Product from us (the Provider), not from Epic, and that Epic has no obligation to support the Product.
|
||||
|
||||
8. Interruptions and Errors
|
||||
Your use of the Product might be interrupted and might not be free of errors.
|
||||
|
||||
9. Updates
|
||||
We have no obligation to update the Product.
|
||||
|
||||
Professional Services
|
||||
The following sections 10 and 11 apply to any Professional Services you purchase from us through the ArtStation Marketplace:
|
||||
|
||||
10. Provision of Professional Services
|
||||
We will provide the Professional Services directly to you and, subject to this Agreement, will assume all responsibility for all aspects of the Professional Services. We represent and warrant that we have the right to offer and provide the Professional Services and that we have appropriate qualifications and experience to provide the Professional Services.
|
||||
|
||||
11. Epic is not Involved
|
||||
You acknowledge and agree that:
|
||||
|
||||
(a) Epic is only a provider of the online ArtStation Marketplace where you purchased the Professional Services, and does not provide or exercise any control or oversight over us or the Professional Services, and is not responsible for us or the Professional Services or any shortcomings in them, including any damages, losses or legal issues caused by us or the Professional Services;
|
||||
|
||||
(b) this Agreement (and any dispute under it) is an agreement between us and you only, and not with Epic, and Epic is not a party to this Agreement;
|
||||
|
||||
(c) we are not Epic’s employee, agent or subcontractor;
|
||||
|
||||
(d) Epic does not have any obligation to attempt to resolve any dispute between us and you; and
|
||||
|
||||
(e) we will provide the Professional Services directly to you, and we (and not Epic) are solely responsible for the Professional Services, and Epic has no obligation or liability to you with respect to the Professional Services.
|
||||
|
||||
Both Products and Services
|
||||
The following sections 12 through 25 apply to all Products or Services you purchase from us through the ArtStation Marketplace:
|
||||
|
||||
12. Disclaimer
|
||||
ANY PRODUCTS OR PROFESSIONAL SERVICES ARE PROVIDED ON AN “AS IS” AND “AS AVAILABLE” BASIS, WITHOUT ANY REPRESENTATIONS, WARRANTIES OR CONDITIONS OF ANY KIND.
|
||||
|
||||
TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW WE DISCLAIM, AND YOU WAIVE (WITH REGARD TO US AND ALSO TO EPIC, ITS AFFILIATES, AND ITS AND THEIR LICENSORS AND SERVICE PROVIDERS (COLLECTIVELY, THE “EPIC PARTIES”), ALL TERMS, CONDITIONS, GUARANTEES, REPRESENTATIONS AND WARRANTIES (EXPRESS, IMPLIED, STATUTORY AND OTHERWISE), IN RESPECT OF THE PRODUCTS AND PROFESSIONAL SERVICES, INCLUDING THOSE OF MERCHANTABILITY, NON-INFRINGEMENT, TITLE, QUALITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
NEITHER WE NOR ANY OF THE EPIC PARTIES REPRESENT OR WARRANT THAT: (A) ANY PRODUCT OR PROFESSIONAL SERVICE IS ACCURATE, COMPLETE, RELIABLE, CURRENT OR ERROR-FREE; (B) ANY PRODUCT OR PROFESSIONAL SERVICE WILL MEET YOUR REQUIREMENTS OR EXPECTATIONS; (C) ANY PRODUCT OR PROFESSIONAL SERVICES IS FREE OF VIRUSES OR OTHER HARMFUL COMPONENTS; OR (D) ANY DEFECTS IN ANY PRODUCT OR PROFESSIONAL SERVICE WILL BE CORRECTED.
|
||||
|
||||
13. Exclusion and Limitation of Liability
|
||||
(a) YOU DOWNLOAD, INSTALL AND OTHERWISE USE ALL PRODUCTS, AND RECEIVE AND USE ALL PROFESSIONAL SERVICES, AT YOUR OWN RISK. YOU AGREE TO, AND HEREBY DO:
|
||||
|
||||
(i) WAIVE ANY CLAIMS THAT YOU MAY HAVE AGAINST US OR THE EPIC PARTIES OR OUR RESPECTIVE DIRECTORS, OFFICERS, EMPLOYEES, AGENTS, REPRESENTATIVES, LICENSORS, SUCCESSORS AND ASSIGNS (COLLECTIVELY THE “RELEASEES”) ARISING FROM OR RELATING TO ANY PRODUCTS OR PROFESSIONAL SERVICES, AND
|
||||
|
||||
(ii) RELEASE THE RELEASEES FROM ANY LIABILITY FOR ANY LOSS, DAMAGE, EXPENSE OR INJURY ARISING FROM OR RELATING TO YOUR USE OF ANY PRODUCT OR PROFESSIONAL SERVICE, WHETHER ARISING IN TORT (INCLUDING NEGLIGENCE), CONTRACT OR OTHERWISE, EVEN IF THE RELEASEES ARE EXPRESSLY ADVISED OF THE POSSIBILITY OF SUCH LOSS, INJURY OR DAMAGE AND EVEN IF THAT LOSS, INJURY OR DAMAGE IS FORESEEABLE.
|
||||
|
||||
(b) NEITHER WE NOR THE EPIC PARTIES WILL BE LIABLE FOR ANY LOSSES, DAMAGES, CLAIMS OR EXPENSES THAT CONSTITUTE: (I) LOSS OF INTEREST, PROFIT, BUSINESS, CUSTOMERS OR REVENUE; (II) BUSINESS INTERRUPTIONS; (III) COST OF REPLACEMENT PRODUCTS OR SERVICES; OR (IV) LOSS OF OR DAMAGE TO REPUTATION OR GOODWILL.
|
||||
|
||||
(c) NEITHER WE NOR THE EPIC PARTIES WILL BE LIABLE FOR ANY LOSSES, DAMAGES, CLAIMS OR EXPENSES THAT CONSTITUTE INCIDENTAL, CONSEQUENTIAL, SPECIAL, PUNITIVE, EXEMPLARY, MULTIPLE OR INDIRECT DAMAGES, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES, DAMAGES, CLAIMS OR EXPENSES.
|
||||
|
||||
(d) MAXIMUM LIABILITY: IF, DESPITE THE LIMITATIONS SET OUT ABOVE, WE OR ANY EPIC PARTY BECOME LIABLE TO YOU IN RESPECT OF ANY PRODUCT OR PROFESSIONAL SERVICE OR OTHERWISE UNDER THIS AGREEMENT, THE ENTIRE CUMULATIVE LIABILITY OF US AND THE EPIC PARTIES, AND YOUR EXCLUSIVE AND CUMULATIVE REMEDY, FOR ANY DAMAGES (REGARDLESS OF THE CAUSE OR FORM OR ACTION), WILL BE LIMITED TO CAD$10.
|
||||
|
||||
14. Indemnity
|
||||
As a condition of your use of any Product or any Professional Services, you agree to hold harmless and indemnify the Releasees from any liability for any loss or damage to any third party resulting from your access to, installation or use of the Product or your receipt and use of the Professional Services.
|
||||
|
||||
15. Term and Termination
|
||||
This Agreement is effective until terminated. Your rights under this Agreement will terminate automatically without notice if: (a) you breach any terms of this Agreement; or (b) you do not complete payment for the Product or Professional Services, or any payment you make is refunded, reversed or cancelled for any reason. Upon this Agreement’s termination, you will cease all use of the Product and destroy all copies, full or partial, of the Product in your possession. Sections 11 through 25 will survive the termination of this Agreement.
|
||||
|
||||
16. Compliance with Laws
|
||||
You will comply with all applicable laws when using any Product or Professional Services (including intellectual property and export control laws).
|
||||
|
||||
17. Entire Agreement
|
||||
This Agreement supersedes all prior agreements of the parties regarding the Product or Professional Services, and constitutes the whole agreement with respect to the Product or Professional Services.
|
||||
|
||||
18. Disputes
|
||||
If you have any concerns about the Product or Professional Services, please contact us through our ArtStation Marketplace account and we will work with you to try to resolve the issue. You acknowledge and agree that any such dispute is between you and us, and that Epic will not be involved in the dispute and has no obligation to try to resolve the dispute.
|
||||
|
||||
19. Persons Bound
|
||||
This Agreement will enure to the benefit of and be binding upon the parties and their heirs, executors, administrators, legal representatives, lawful successors and permitted assigns.
|
||||
|
||||
20. Assignment
|
||||
We may assign this Agreement without notice to you. You may not assign this Agreement or any of your rights under it without our prior written consent, which we will not withhold unreasonably.
|
||||
|
||||
21. Waiver
|
||||
No waiver, delay, or failure to act by us regarding any particular default or omission will prejudice or impair any of our rights or remedies regarding that or any subsequent default or omission that are not expressly waived in writing.
|
||||
|
||||
22. Applicable Law and Jurisdiction
|
||||
You agree that this Agreement will be deemed to have been made and executed in the State of North Carolina, U.S.A., and any dispute will be resolved in accordance with the laws of North Carolina, excluding that body of law related to choice of laws, and of the United States of America. Any action or proceeding brought to enforce the terms of this Agreement or to adjudicate any dispute must be brought in the Superior Court of Wake County, State of North Carolina or the United States District Court for the Eastern District of North Carolina. You agree to the exclusive jurisdiction and venue of these courts. You waive any claim of inconvenient forum and any right to a jury trial. The Convention on Contracts for the International Sale of Goods will not apply. Any law or regulation which provides that the language of a contract shall be construed against the drafter will not apply to this Agreement.
|
||||
|
||||
23. Legal Effect
|
||||
This Agreement describes certain legal rights. You may have other rights under the laws of your country. This Agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so.
|
||||
|
||||
24. Interpretation
|
||||
In this Agreement, "we", "us", and "our" refer to the licensor of the Product alone and never refer to the combination of you and that licensor (that combination is referred to as "the parties"), or the combination of you or the licensor with Epic.
|
||||
|
||||
25. Artificial Intelligence
|
||||
For purposes of this Agreement, “Generative AI Programs” means artificial intelligence, machine learning, deep learning, neural networks, or similar technologies designed to automate the generation of or aid in the creation of new content, including but not limited to audio, visual, or text-based content.
|
||||
|
||||
We (the licensor of the Product) represent and warrant that where the Product was created using Generative AI Programs, we have applied the “CreatedWithAI” tag. Under this Agreement, a Product is considered to be created using Generative AI Programs where a material portion of a Product is generated with Generative AI Programs, whether characters, backgrounds, or other material elements. A Product is not considered to be created using Generative AI Programs merely for use of features that solely operate on a Product (e.g., AI-based upscaling or content-aware fill).
|
||||
35
2023/scripts/modeling_tools/gs_curvetools/README.txt
Normal file
@@ -0,0 +1,35 @@
|
||||
GS CurveTools installation
|
||||
|
||||
1. Copy gs_curvetools folder to {Path to Documents}\Documents\Maya\{Maya Version}\scripts\
|
||||
|
||||
Example of the final folder structure:
|
||||
|
||||
Documents\Maya\2022\scripts\gs_curvetools\fonts
|
||||
Documents\Maya\2022\scripts\gs_curvetools\icons
|
||||
Documents\Maya\2022\scripts\gs_curvetools\utils
|
||||
Documents\Maya\2022\scripts\gs_curvetools\__init__.py
|
||||
Documents\Maya\2022\scripts\gs_curvetools\core.py
|
||||
Documents\Maya\2022\scripts\gs_curvetools\init.py
|
||||
Documents\Maya\2022\scripts\gs_curvetools\LICENSE.txt
|
||||
Documents\Maya\2022\scripts\gs_curvetools\main.py
|
||||
Documents\Maya\2022\scripts\gs_curvetools\README.txt
|
||||
|
||||
2. Run Maya
|
||||
|
||||
3. Copy and paste this line to "Python" command box and press "Enter":
|
||||
|
||||
import gs_curvetools.init as ct_init;from imp import reload;reload(ct_init);ct_init.Init();
|
||||
|
||||
IMPORTANT: There should be no spaces or tabs before this command!
|
||||
|
||||
4. Look for GS tab on your Shelf
|
||||
|
||||
5. Click CT UI button to run the menu. Click again to hide the menu.
|
||||
|
||||
NOTES:
|
||||
>> To reset to factory defaults click CT with "refresh" arrow button.
|
||||
>> To stop all scripts and close the menu press CT DEL button.
|
||||
>> You can use middle-mouse button drag to move the buttons to any tab.
|
||||
>> All the hotkeys are available in Hotkey Editor > Custom Scripts > GS > GS_CurveTools.
|
||||
>> Always repeat initialization steps when updating the plug-in to a new version.
|
||||
>> You can always repeat initialization steps if you lost control buttons or shelf.
|
||||
951
2023/scripts/modeling_tools/gs_curvetools/core/tooltips.md
Normal file
@@ -0,0 +1,951 @@
|
||||
<!--
|
||||
Tooltips are added in format:
|
||||
# Widget
|
||||
Tooltip
|
||||
-->
|
||||
|
||||
<!-- main.py -->
|
||||
|
||||
<!-- Options Menu -->
|
||||
# importCurves
|
||||
Imports Curves that were Exported using the Export Button.
|
||||
NOTE: Only import files that were exported using Export Curves button.
|
||||
WARNING: This operation is NOT undoable!
|
||||
|
||||
# exportCurves
|
||||
Exports selected curves into a .curves (or .ma) file. Can then be Imported using Import Curves.
|
||||
|
||||
# changeScaleFactor
|
||||
Opens a window that controls the Scale Factor and Precision Scale.
|
||||
***
|
||||
Scale factor determines the initial size of the created curve and adjusts other parameters.
|
||||
Scale factor is stored in a global preset, in the scene and on each curve.
|
||||
Priority of scale factors Curve>Scene>Global.
|
||||
Setting the appropriate scale factor before starting a project can help to have a good initial Width and size of the cards.
|
||||
***
|
||||
Precision Scale controls the world scale of the curve without changing the curve appearance, CV positions and other parameters.
|
||||
Lowering the Precision scale (from 1.0 to 0.05 for example) helps to fix the geometry deformation on very small curves.
|
||||
The default value of 0.05 should be sufficient for most cases. Values lower than 0.01 can affect performance.
|
||||
***
|
||||
Normalize Selected and Normalize Selected to Default will change the Scale Factor and Precision Scale of the selected curves, without changing their appearance or CV positions.
|
||||
Normalize Selected to Default will reset the slider values to default (0.5 and 0.05) and Normalize Selected will use the current slider values.
|
||||
|
||||
# normalizeSelectedButton
|
||||
Normalize selected curves to the chosen slider values.
|
||||
Normalization will not change the CV positions or geometry appearance, but the selected objects will have new Scale Factor and Precision Scale applied.
|
||||
|
||||
# normalizeSelectedToDefaultButton
|
||||
Normalize selected curves to the default slider values (0.5, 0.05).
|
||||
Resets the slider values to the default.
|
||||
Normalization will not change the CV positions or geometry appearance, but the selected objects will have new Scale Factor and Precision Scale applied.
|
||||
|
||||
# saveScaleFactorAndPrecisionScaleButton
|
||||
Saves the selected slider values to the global storage and to the current scene.
|
||||
New scenes will automatically have these Scale Factor and Precision Scale values.
|
||||
NOTE: This will not apply the new values to already existing objects. See Normalize buttons.
|
||||
|
||||
# saveScaleFactorAndPrecisionScaleButtonAndClose
|
||||
Saves the selected slider values to the global storage and to the current scene.
|
||||
New scenes will automatically have these Scale Factor and Precision Scale values.
|
||||
Closes the window after save.
|
||||
NOTE: This will not apply the new values to already existing objects. See Normalize buttons.
|
||||
|
||||
# closePrecisionScaleWindow
|
||||
Close this window without save
|
||||
|
||||
# globalCurveThickness
|
||||
Opens a window that controls the thickness of the curves in the scene as well as the global curve thickness preset across the scenes.
|
||||
|
||||
# setAOSettings
|
||||
Manually sets the recommended AO settings for older Maya versions.
|
||||
These AO settings are needed to use the "See Through" or "Toggle Always on Top" functions.
|
||||
Are applied automatically by those functions.
|
||||
|
||||
# setTransparencySettings
|
||||
Sets recommended transparency settings for Maya viewport.
|
||||
***
|
||||
Simple Transparency is fast but very inaccurate render mode. Only suitable for simple, one layer hair.
|
||||
Object Sorting Transparency has average performance impact and quality. Can have issues on complex multi-layered grooms.
|
||||
Depth Transparency - these are the optimal settings for the highest quality of the hair cards preview. Can have performance impact on slower systems.
|
||||
|
||||
# convertToWarpCard
|
||||
Converts selection to Warp Cards.
|
||||
Compatible attributes are retained.
|
||||
|
||||
# convertToWarpTube
|
||||
Converts selection to Warp Tubes.
|
||||
Compatible attributes are retained.
|
||||
|
||||
# convertToExtrudeCard
|
||||
Converts selection to Extrude Cards.
|
||||
Compatible attributes are retained.
|
||||
|
||||
# convertToExtrudeTube
|
||||
Converts selection to Extrude Tubes.
|
||||
Compatible attributes are retained.
|
||||
|
||||
# duplicateUnparentCurves
|
||||
Duplicates selected NURBS curves and unparents them (parents them to the world).
|
||||
Original curves are not deleted.
|
||||
Can be used to easily extract and export curves from GS CurveTools objects.
|
||||
|
||||
# syncCurveColor
|
||||
Toggles the syncing of the curve color to the layer color.
|
||||
|
||||
# colorizedRegroup
|
||||
Toggles the colorization of the regrouped layers when Regroup by Layer function is used.
|
||||
|
||||
# colorOnlyDiffuse
|
||||
Colorize only the diffuse component of the card material.
|
||||
Alpha will stay the same.
|
||||
|
||||
# checkerPattern
|
||||
Toggles the use of the checker pattern when the Color mode is enabled.
|
||||
|
||||
# ignoreLastLayer
|
||||
Toggles the filtering (All, Curve, Geo) and Extraction (Extract All) of the last layer. If enabled, the last layer is ignored.
|
||||
NOTE: Last layer is typically used for templates, so it is ignored by default.
|
||||
|
||||
# ignoreTemplateCollections
|
||||
Ignores the filtering (All, Curve, Geo) and Extraction (Extract All) of all the collections that have "template" in their name. Case insensitive.
|
||||
|
||||
# groupTemplateCollections
|
||||
Collections that have "template" in their name (case insensitive) will be grouped together into "CT_Templates" group by Regroup By Layer function.
|
||||
|
||||
# syncOutlinerLayerVis
|
||||
Syncs the outliner and layer visibility. If enabled, hiding the layer will also hide the curve groups in the outliner.
|
||||
|
||||
# keepCurveAttributes
|
||||
If enabled, the attributes that are stored in the curve will be restored if the curve that was duplicated (on its own, without the geo) is used to create other cards or tubes.
|
||||
If disabled, the attributes will be ignored and reset.
|
||||
Example:
|
||||
1. Create a card and change its twist value.
|
||||
2. Ctrl+D and Shift+P the curve (not the curve group).
|
||||
3. Click Curve Card and the twist value will be restored on a newly created card.
|
||||
|
||||
# boundCurvesFollowParent
|
||||
Will ensure that moving a parent curve in a Bound Object (Bound Group) will also move all the child curves along with it to a new layer. Recommended to keep this enabled.
|
||||
|
||||
# massBindOption
|
||||
Will bind selected hair clump (or geometry) to all selected "empty" curves.
|
||||
|
||||
# bindDuplicatesCurves
|
||||
Will automatically duplicate the curves before binding them to the curve, leaving old curves behind with no edits.
|
||||
|
||||
# bindFlipUVs
|
||||
Enabling this option will flip the UVs of the original cards before binding them to the curve.
|
||||
It will also automatically flip the bound geo and rotate it 90 deg.
|
||||
This option will also flip the UVs back when using Unbind for better workflow.
|
||||
Disabling this option will result in an old Bind/Unbind behaviour.
|
||||
|
||||
# unpackDeleteOriginalObject
|
||||
Unpack (Shift + Click on Unbind) will delete the original Bind object.
|
||||
|
||||
# unpackCVMatch
|
||||
Unpack (Shift + Click on Unbind) will match the CVs of the original Bind object.
|
||||
|
||||
# addBetweenBlendAttributes
|
||||
Enables blending of the attributes when using Add Cards/Tubes or Fill functions.
|
||||
|
||||
# fillCreateCurvesOnly
|
||||
When enabled Fill function will only create curves (not the geo).
|
||||
|
||||
# convertInstances
|
||||
Will automatically convert instanced curves to normal curves before any other function is applied.
|
||||
|
||||
# replacingCurveLayerSelection
|
||||
Will disable additive selection for the layers. When holding Ctrl and clicking on a new layer, old layer will be deselected automatically.
|
||||
|
||||
# useAutoRefineOnNewCurves
|
||||
Automatically enables auto-refine on the new curves.
|
||||
|
||||
# flipUVsAfterMirror
|
||||
Enabling this option will flip the UVs horizontally after mirroring the cards to achieve exact mirroring.
|
||||
|
||||
# enableTooltips
|
||||
Will toggle the visibility of these tooltips you are reading right now.
|
||||
|
||||
# showLayerCollectionsMenu
|
||||
Shows layer collections menu widget.
|
||||
|
||||
# importIntoANewCollection
|
||||
If enabled, all the imported curves will be placed into a new "Imported Curves" layer collection.
|
||||
If disabled, all the imported curves will be placed into the "Main" layer collection
|
||||
|
||||
# layerNumbersOnly
|
||||
Layers will use only numbers if enabled.
|
||||
|
||||
# convertToNewLayerSystem
|
||||
Converts all the layers in the scene to a new layer system that is hidden from the Channel Box Display Layers window.
|
||||
Layers can still be accessed from Window->Relationship Editors->Display Layer window.
|
||||
|
||||
# updateLayers
|
||||
Utility function that will manually update all layers. Used for if layers are correct for some reason.
|
||||
|
||||
# resetToDefaults
|
||||
Resets every option and the GS CurveTools to the default "factory" state.
|
||||
|
||||
# maya2020UVFix
|
||||
This function will fix any broken UVs when trying to open old scenes in Maya 2020 or 2022 or when opening scenes in 2020 and 2022 when using Maya Binary file type. This will have no effect on older versions of Maya (<2020). This bug is native to Maya and thus can’t be fixed in GS CurveTools plug-in.
|
||||
|
||||
# mayaFixBrokenGraphs
|
||||
This function will attempt to fix all the broken graphs in the scene.
|
||||
Use if one of the graphs (Width, Twist or Profile) is in a broken state.
|
||||
|
||||
# convertBezierToNurbs
|
||||
Converts the selected Bezier curves to NURBS curves.
|
||||
Bezier curves are not supported by the GS CurveTools.
|
||||
|
||||
# maya2020TwistAttribute
|
||||
This function will fix any broken cards created in Maya 2020.4 before v1.2.2 update.
|
||||
|
||||
# maya2020UnbindFix
|
||||
This function will fix any cards that are not unbinding properly and were created before v1.2.3 update in Maya 2020.4.
|
||||
|
||||
# deleteAllAnimationKeys
|
||||
This function will delete all the animation keys on all the curves present in the scene.
|
||||
This can fix deformation issues when using duplicate or other GS CurveTools functions.
|
||||
Some functions (like duplicate) will delete the keys automatically, however the keys can still cause issues.
|
||||
|
||||
<!-- Main Buttons -->
|
||||
|
||||
# warpSwitch
|
||||
Advanced cards and tubes suitable for longer hair.
|
||||
Additional options and controls.
|
||||
Slower than Extrude (viewport performance).
|
||||
Can have issues on very small scales.
|
||||
|
||||
# extrudeSwitch
|
||||
Simple cards and tubes suitable for shorter hair and brows.
|
||||
Has limited controls.
|
||||
Much faster than Warp (viewport performance).
|
||||
Better for small scales.
|
||||
|
||||
# newCard
|
||||
Creates a new Card in the middle of the world. Used at the beginning of the project to create templates.
|
||||
|
||||
# newTube
|
||||
Creates a new Tube in the middle of the world. Used at the beginning of the project to create templates.
|
||||
|
||||
# curveCard
|
||||
Converts selected Maya curve to CurveTools Card.
|
||||
|
||||
# curveTube
|
||||
Converts selected Maya curve to CurveTools Tube.
|
||||
|
||||
# gsBind
|
||||
Binds selection to a single curve. Creates a Bind Group. Selection options:
|
||||
1. Single "empty" curve (default Maya curve) and single combined geometry.
|
||||
2. Single "empty" curve (default Maya curve) and any number of Curve Cards and Curve Tubes.
|
||||
***
|
||||
Shift + Click will duplicate the original curves/geo before binding it to the empty curve.
|
||||
Same option is available in the Options menu (Duplicate Curves Before Bind).
|
||||
|
||||
# gsUnbind
|
||||
Normal Click:
|
||||
UnBinds geometry or Cards/Tubes from selected Bound object.
|
||||
Geometry and Cards/Tubes will be placed at the origin.
|
||||
***
|
||||
Shift + Click:
|
||||
Will UNPACK the selected Bind object in-place.
|
||||
Unpack will attempt to create an in-place approximation of the cards and tubes that Bind object consists of.
|
||||
Basically it will extract the geometry and create cards (or tubes) based on that geometry.
|
||||
The original Bind object will be deleted in the process. Optionally, you can keep it (toggle in the options menu).
|
||||
This operation is not procedural, so you will not be able to return back to the Bind object after (unlike regular UnBind).
|
||||
WARNING: Unpack is not a 1 to 1 conversion. It will try its best to approximate the shape, but complex twists and bends will not be captured.
|
||||
|
||||
# addCards
|
||||
Creates Cards in-between selected Cards based on the Add slider value.
|
||||
Bound objects are NOT supported.
|
||||
NOTE: Selection order defines the direction of added Cards if more than 2 initial Cards are selected.
|
||||
|
||||
# addTubes
|
||||
Creates Tubes in-between selected Tubes based on the Add slider value.
|
||||
Bound objects are NOT supported.
|
||||
NOTE: Selection order defines the direction of added Tubes if more than 2 initial Tubes are selected.
|
||||
|
||||
# gsFill
|
||||
Creates Cards/Tubes or Bound Groups in between selected Cards/Tubes or Bound Groups based on the Add slider value.
|
||||
NOTE 1: Selection order defines the direction of added curves if more than 2 initial curves are selected.
|
||||
NOTE 2: The type of Card or Tube or Bound Group is defined by the previous curve in the selection chain.
|
||||
NOTE 3: Options -> Fill Creates Only Curves option will make the Fill function create only NURBS curves, but not the geo.
|
||||
|
||||
# gsSubdivide
|
||||
Subdivides selected curve into multiple curves based on the Add slider value
|
||||
Shift + Click subdivides selected curve but does not delete the original curve
|
||||
|
||||
# gsEdgeToCurve
|
||||
Converts selected geometry edges to curves.
|
||||
Multiple unconnected edge groups can be selected at the same time.
|
||||
***
|
||||
Key Combinations:
|
||||
Shift + Click will create a curve without the curvature (first degree curve or simply a line)
|
||||
|
||||
# gsGeoToCurve
|
||||
Opens the Geo-to-Curve UI
|
||||
Geo to Curve algorithm will attempt to generate GS CurveTools cards and tubes from selected geometry.
|
||||
Selected geometry should be either one-sided cards or regular tubes without caps (or both).
|
||||
Multi-selection compatible, but selected geometries should be separate objects and not one combined object.
|
||||
|
||||
# layerCollectionsComboBox
|
||||
Layer collections drop-down menu.
|
||||
Allows to separate the project into different layer collections, up to 80 layers in each collection.
|
||||
Has additional functionality in marking menu (Hold RMB):
|
||||
***
|
||||
Marking menu:
|
||||
1. Clear - will delete all the cards from the current layer. Undoable operation.
|
||||
2. Merge Up, Merge Down - merge all the cards from the current layer to the layer above or below it.
|
||||
3. Copy, Paste - will copy all the cards from the current layer and paste them to the layer that user selects.
|
||||
4. Move Up, Move Down - will rearrange the current layer collections by moving the currently selected collection up or down in the list.
|
||||
5. Rename - will rename the current layer collection
|
||||
|
||||
# layerCollectionsPlus
|
||||
Add additional layer collection after the current one.
|
||||
|
||||
# layerCollectionsMinus
|
||||
Remove current layer collection. All the cards from the removed collection will be merged one layer UP.
|
||||
|
||||
# gsAllFilter
|
||||
Layer filter. Controls the visibility of all objects in all layers:
|
||||
Normal click will show all curves and geometry in all layers.
|
||||
Shift + Click will hide all curves and geometry in all layers
|
||||
Ctrl + Click will show all the curves and geometry in all layers and all collections.
|
||||
Ctrl + Shift + Click will hide all curves and geometry in all layers and all collections.
|
||||
|
||||
# gsCurveFilter
|
||||
Layer filter. Hides all geometry and shows all the curves in all layers.
|
||||
Ctrl + Click will do the same thing, but for all layers and all collections.
|
||||
NOTE: Holding RMB will open a marking menu with Toggle Always on Top function as well as "Auto-Hide Inactive Curves" function.
|
||||
Toggle Always on Top function will toggle the Always on Top feature that will show the curve component always on top. The effect is different in different Maya versions
|
||||
Auto-Hide Inactive Curves will hide all the curve components on all inactive layer collections when switching between collections.
|
||||
|
||||
# gsGeoFilter
|
||||
Layer filter. Hides all curves and shows only geometry.
|
||||
Ctrl + Click will do the same thing, but for all layers and all collections.
|
||||
|
||||
# colorMode
|
||||
Color mode toggle. Enables colors for each layer and (optionally) UV checker material.
|
||||
NOTE: Checker pattern can be disabled in the Options menu
|
||||
|
||||
# curveGrp0
|
||||
Curve Layers that are used for organization of the cards and tubes in the scene.
|
||||
Selected layer (white outline) will be used to store newly created cards.
|
||||
Holding RMB will open a marking menu with all the functions of current layer.
|
||||
***
|
||||
Key Combinations:
|
||||
Shift + Click: additively select the contents of the layers.
|
||||
Ctrl + Click: exclusively select the contents of the layer.
|
||||
Alt + Click: show/hide selected layer.
|
||||
Ctrl + Shift: show/hide curve component on selected layer.
|
||||
Ctrl + Alt: show/hide geo component for the selected layer.
|
||||
Shift + Alt + Click: isolate select the layer.
|
||||
Shift + Ctrl + Alt + Click: enable Always on Top for each layer (only for Maya 2022+).
|
||||
***
|
||||
Layer MMB Dragging:
|
||||
MMB + Drag: move the contents of one layer to another layer. Combine if target layer has contents.
|
||||
MMB + Shift + Drag: copy the contents of one layer to another layer. Copy and Add if target layer has contents.
|
||||
|
||||
# gsExtractSelected
|
||||
Extracts (Duplicates) the geometry component from the selected curves:
|
||||
***
|
||||
Key Combinations:
|
||||
Normal click will extract geometry and combine it.
|
||||
Shift + Click will extract geometry as individual cards.
|
||||
Ctrl + Click will extract geometry, combine it, open export menu and delete the extracted geo after export.
|
||||
Shift + Ctrl click will extract geometry, open export menu and delete the extracted geo after export.
|
||||
|
||||
# gsExtractAll
|
||||
Extracts (Duplicates) the geometry component from all layers and collections. Original layers are HIDDEN, NOT deleted:
|
||||
Last Layer in the current Collection is ignored by default. Can be changed in the options.
|
||||
Collections with "template" in their name (case insensitive) will be ignored by default. Can be changed in the options.
|
||||
***
|
||||
Key Combinations:
|
||||
Normal click will extract geometry and combine it.
|
||||
Shift + Click will extract geometry as individual cards grouped by layers.
|
||||
Ctrl + Click will extract geometry, combine it, open export menu and delete the extracted geo after export.
|
||||
Shift + Ctrl click will extract geometry, open export menu and delete the extracted geo after export.
|
||||
|
||||
# gsSelectCurve
|
||||
Selects the curve components of the selected Curve Cards/Tubes.
|
||||
NOTE: Useful during the selection in the outliner.
|
||||
|
||||
# gsSelectGeo
|
||||
Selects the geometry component of the selected Curve Cards/Tubes.
|
||||
NOTE: Useful for quick assignment of the materials.
|
||||
|
||||
# gsSelectGroup
|
||||
Selects the group component of the selected Curve Cards/Tubes.
|
||||
NOTE: Useful when you are deleting curves from viewport selection.
|
||||
|
||||
# gsGroupCurves
|
||||
Groups the selected curves and assigns the name from Group Name input field (or default name if empty).
|
||||
|
||||
# gsRegroupByLayer
|
||||
Regroups all the curves based on their layer number, group names and collection names.
|
||||
Group names can be changed in the Layer Names & Colors menu.
|
||||
Groups can be colorized if the "Colorize Regrouped Layers" is enabled in the Options menu.
|
||||
Collections with "template" in their name will be grouped under "CT_Templates". Can be changed in the options.
|
||||
|
||||
# gsGroupNameTextField
|
||||
The name used by the Group Curves function.
|
||||
If empty, uses the default name.
|
||||
|
||||
# gsCustomLayerNamesAndColors
|
||||
Opens a menu where group names and colors can be changed and stored in a global preset.
|
||||
|
||||
# gsTransferAttributes
|
||||
Transfers attributes from the FIRST selected curve to ALL the other curves in the selection.
|
||||
NOTE: Shift + Click transfers the attributes from the LAST selected curve to ALL others.
|
||||
NOTE2: Holding RMB on this button opens a marking menu with Copy-Paste and Filter functionality
|
||||
|
||||
# gsTransferUVs
|
||||
Transfers UVs from the FIRST selected curve to ALL the other curves in the selection.
|
||||
NOTE: Shift + Click transfers the UVs from the LAST selected curve to ALL others.
|
||||
NOTE2: Holding RMB on this button opens a marking menu with Copy-Paste and Filter functionality
|
||||
|
||||
# gsResetPivot
|
||||
Resets the pivot on all selected curves to the default position (root CV).
|
||||
|
||||
# gsRebuildWithCurrentValue
|
||||
Rebuild selected curves using current rebuild slider value
|
||||
|
||||
# gsResetRebuildSliderRange
|
||||
Reset rebuild slider range (1 to 50)
|
||||
|
||||
# gsDuplicateCurve
|
||||
Duplicates all the selected curves and selects them.
|
||||
NOTE: You can select either NURBS curve component, geometry component or group to duplicate.
|
||||
|
||||
# gsRandomizeCurve
|
||||
Opens a window where different attributes of the selected curves can be randomized:
|
||||
1. Enable the sections of interest and change the parameters.
|
||||
2. Dragging the sliders in each section enables a PREVIEW of the randomization. Releasing the slider will reset the curves.
|
||||
3. Click Randomize if you wish to apply the current randomization.
|
||||
|
||||
# gsExtendCurve
|
||||
Lengthens a selected curves based on the Factor slider.
|
||||
|
||||
# gsReduceCurve
|
||||
Shortens the selected curves based on the Factor slider.
|
||||
|
||||
# gsSmooth
|
||||
Smoothes selected curves or curve CVs based on the Factor slider.
|
||||
NOTE 1: At least 3 CVs should be selected for component smoothing.
|
||||
NOTE 2: Holding RMB will open a marking menu where you can select a stronger smoothing algorithm.
|
||||
|
||||
# mirrorX
|
||||
Mirrors or Flips all the selected curves on the World X axis.
|
||||
|
||||
# mirrorY
|
||||
Mirrors or Flips all the selected curves on the World Y axis.
|
||||
|
||||
# mirrorZ
|
||||
Mirrors or Flips all the selected curves on the World Z axis.
|
||||
|
||||
# gsControlCurve
|
||||
Adds a Control Curve Deformer to the selected curves. Can be used to adjust groups of curves.
|
||||
NOTE 1: Should NOT be used to permanently control clumps of cards. Use Bind instead.
|
||||
|
||||
# gsApplyControlCurve
|
||||
Applies the Control Curve Deformer.
|
||||
Either the Control Curve or any controlled Curves can be selected for this to work.
|
||||
|
||||
# gsCurveControlWindow
|
||||
Opens a Curve Control Window. Contains all the available controls for curves.
|
||||
|
||||
# gsUVEditorMain
|
||||
Opens a UV editor that can be used to setup and adjust UVs on multiple cards.
|
||||
NOTE 1: Lambert material with PNG, JPG/JPEG or TIF/TIFF (LZW or No Compression) texture file is recommended. TGA (24bit and no RLE) is also supported.
|
||||
NOTE 2: Make sure to select the curves or the group, not the geo, to adjust the UVs.
|
||||
NOTE 3: Using default Maya UV editor will break GS CurveTools Cards, Tubes and Bound Groups.
|
||||
NOTE 4: Default UV editor can be used when custom geometry is used in a Bound Groups.
|
||||
|
||||
<!-- ui.py --->
|
||||
<!-- Curve Control Window Buttons and Frames --->
|
||||
|
||||
# gsLayerSelector
|
||||
Shows the Layer of the selected curve.
|
||||
Selecting different layer will change the layer of all the selected curves.
|
||||
|
||||
# gsColorPicker
|
||||
Layer/Card Color Picker.
|
||||
|
||||
# gsCurveColorPicker
|
||||
Curve Color Picker.
|
||||
|
||||
# selectedObjectName
|
||||
Selected object name. Editing this field will rename all the selected objects.
|
||||
|
||||
# lineWidth
|
||||
Controls the thickness of the selected curves.
|
||||
|
||||
# gsBindAxisAuto
|
||||
Automatic selection of the bind Axis (recommended).
|
||||
NOTE: Change to manual X, Y, Z axis if bind operation result is not acceptable.
|
||||
|
||||
# AxisFlip
|
||||
Flips the direction of the bound geometry.
|
||||
|
||||
# editOrigObj
|
||||
Temporarily disables curve bind and shows the original objects.
|
||||
Used to adjust the objects after the bind.
|
||||
To add or remove from the Bound group use Unbind.
|
||||
|
||||
# selectOriginalCurves
|
||||
Selects the original curves that were attached to a bind curve.
|
||||
Allows to edit their attributes without using Unbind or Edit Original Objects
|
||||
|
||||
# twistCurveFrame
|
||||
Advanced twist control graph. Allows for precise twisting of the geometry along the curve. Click to expand.
|
||||
|
||||
# Magnitude
|
||||
Twist multiplier. The larger the values, the more the twist. Default is 0.5.
|
||||
|
||||
# gsTwistGraphResetButton
|
||||
Resets the graph to the default state.
|
||||
|
||||
# gsTwistGraphPopOut
|
||||
Opens a larger graph in a separate window that is synced to the main graph.
|
||||
|
||||
# widthLockSwitch
|
||||
Links/Unlinks the X and Z width sliders.
|
||||
If linked, the sliders will move as one.
|
||||
|
||||
# LengthLock
|
||||
Locks/Unlocks the length slider.
|
||||
When Locked the geometry is stretched to the length of the curve and the slider is ignored.
|
||||
|
||||
# widthCurveFrame
|
||||
Advanced width control graph. Allows for precise scaling of the geometry along the curve. Click to expand.
|
||||
|
||||
# gsWidthGraphResetButton
|
||||
Resets the graph to the default state.
|
||||
|
||||
# gsWidthGraphPopOut
|
||||
Opens a larger graph in a separate window that is synced to the main graph.
|
||||
|
||||
# profileCurveGraph
|
||||
Advanced control over the profile of the card. Modifies the profile applied by the Profile slider. Click to expand.
|
||||
Add or remove points and change them to increase or decrease the Profile value along the curve.
|
||||
|
||||
# autoEqualizeSwitchOn
|
||||
Locks the points horizontally to equal intervals to avoid geometry deformation.
|
||||
|
||||
# autoEqualizeSwitchOff
|
||||
Unlocks the points and allows for the full control.
|
||||
|
||||
# equalizeCurveButton
|
||||
Snaps the points to the equal horizontal intervals.
|
||||
|
||||
# gsResetProfileGraphButton
|
||||
Resets the curve to the default state.
|
||||
|
||||
# gsProfileGraphPopOut
|
||||
Opens a larger graph in a separate window that is synced to the main graph.
|
||||
|
||||
# reverseNormals
|
||||
Reverses the normals on the selected cards/tubes.
|
||||
|
||||
# orientToNormalsFrame
|
||||
Orient selected cards/tubes to the normals of the selected geo.
|
||||
|
||||
# gsOrientToNormalsSelectTarget
|
||||
Set selected mesh as a target for the algorithm.
|
||||
|
||||
# orientRefreshViewport
|
||||
Toggles the viewport update during the alignment process.
|
||||
Disabling can speed up the process.
|
||||
|
||||
# gsOrientToNormals
|
||||
Starts the alignment process.
|
||||
Will align the selected cards to the normals of the selected geometry.
|
||||
|
||||
# flipUV
|
||||
Flips the UVs of the card/tube horizontally.
|
||||
|
||||
# resetControlSliders
|
||||
Resets the range of the sliders to the default state.
|
||||
|
||||
# UVFrame
|
||||
Legacy controls for the UVs. Just use the new UV Editor.
|
||||
|
||||
# solidifyFrame
|
||||
Expands controls that control the thickness of the cards/tubes.
|
||||
|
||||
# solidify
|
||||
Toggles the thickness of the geometry.
|
||||
|
||||
<!-- Curve Control Window Sliders --->
|
||||
|
||||
# lengthDivisions
|
||||
Change the length divisions of the selected cards/tubes.
|
||||
|
||||
# dynamicDivisions
|
||||
Toggles the dynamic divisions mode.
|
||||
Dynamic divisions will change the divisions of the cards/tubes based on the length of the curves.
|
||||
In dynamic divisions mode, L-Div slider will control the density of the divisions, not the fixed divisions count.
|
||||
|
||||
# widthDivisions
|
||||
Change the width divisions of the selected cards/tubes.
|
||||
|
||||
# Orientation
|
||||
Change the orientation of the card/tube around the curve.
|
||||
|
||||
# Twist
|
||||
Smoothly twist the entire geometry card/tube. Twists the tip of the card.
|
||||
|
||||
# invTwist
|
||||
Smoothly twist the entire geometry card. Twists the root of the card.
|
||||
|
||||
# Width
|
||||
Change the width of the selected card.
|
||||
|
||||
# Taper
|
||||
Linearly changes the width of the card/tube along the length of the curve.
|
||||
|
||||
# WidthX
|
||||
Change the width of the tube along the X axis.
|
||||
|
||||
# WidthZ
|
||||
Change the width of the tube along the Z axis.
|
||||
|
||||
# Length
|
||||
Change the length of the attached geometry. Works only when Length Unlock button is checked.
|
||||
|
||||
# Offset
|
||||
Offset the geometry along the curve.
|
||||
|
||||
# Profile
|
||||
Change the profile of the card along the length of the curve uniformly.
|
||||
|
||||
# profileSmoothing
|
||||
Smoothing will smooth the profile transition.
|
||||
|
||||
# otherFrame
|
||||
Other less used options
|
||||
|
||||
# curveRefine
|
||||
Controls the number of "virtual" vertices on the curve. These are the vertices that are used to calculate the geometry deformation.
|
||||
Zero (0) value will disable the refinement and the geometry will be attached directly to the curve. The fastest option.
|
||||
Larger refine values means smoother geometry that is a closer fit to the curve.
|
||||
Only increase past 20 if you need additional precision or if there are any visual glitches with the geometry.
|
||||
Large refine values can cause significant performance drop, lag and other issues on smaller curve sizes.
|
||||
Recommended values are:
|
||||
20 for curves with less than 20 CVs.
|
||||
0 (disabled) or same as the number of CVs for curves with more than 20 CVs.
|
||||
|
||||
# autoRefine
|
||||
Enables auto-refine for selected curves. Recommended to keep this on.
|
||||
Manual refinement can be helpful if the geometry deformation is wrong or not precise enough.
|
||||
|
||||
# samplingAccuracy
|
||||
Increases the sampling accuracy of the deformer that attaches the geometry to a curve.
|
||||
Larger values = more precise geometry fit to a curve and more lag.
|
||||
|
||||
# surfaceNormals
|
||||
Changes the smoothing angle of the normals of the geometry.
|
||||
|
||||
# gsIterationsSlider
|
||||
Controls the number of iterations per card.
|
||||
|
||||
# gsMinimumAngle
|
||||
Controls the target angle difference between the normal of the mesh and the card.
|
||||
|
||||
# solidifyThickness
|
||||
Controls the amount of thickness on the geometry.
|
||||
|
||||
# solidifyDivisions
|
||||
Controls the number of divisions on the solidify extrusion.
|
||||
|
||||
# solidifyScaleX
|
||||
Changes the scale on the X axis.
|
||||
|
||||
# solidifyScaleY
|
||||
Changes the scale on the Y axis.
|
||||
|
||||
# solidifyOffset
|
||||
Controls the offset of the solidify extrusion.
|
||||
|
||||
# solidifyNormals
|
||||
Controls the smoothing angle for normals of the solidify extrusion.
|
||||
|
||||
# geometryHighlight
|
||||
If enabled, selecting the curve will also highlight the geometry component that is attached to that curve.
|
||||
Works only on GS CurveTools curves and geo.
|
||||
|
||||
# curveHighlight
|
||||
If enabled, selected curves and their components will be additionally highlighted for better visibility.
|
||||
The curves and components will be in X-Ray mode by default.
|
||||
Colors and transparency values can be changes in the menu below.
|
||||
|
||||
# gsSelectedCVColor
|
||||
Selected CV highlight color
|
||||
|
||||
# gsSelectedCVAlpha
|
||||
Selected CV highlight transparency (alpha)
|
||||
|
||||
# gsDeselectedCVColor
|
||||
Deselected CV highlight color
|
||||
|
||||
# gsDeselectedCVAlpha
|
||||
Deselected CV highlight transparency (alpha)
|
||||
|
||||
# curveVisibility
|
||||
Toggle selected curves highlight
|
||||
|
||||
# gsCurveHighlightColor
|
||||
Selected curve highlight color
|
||||
|
||||
# gsCurveHighlightAlpha
|
||||
Selected curve highlight transparency (alpha)
|
||||
|
||||
# hullVisibility
|
||||
Toggle hull visibility.
|
||||
Hull is a line that connects all the CVs on the curve.
|
||||
|
||||
# gsHullHighlightColor
|
||||
Hull highlight color
|
||||
|
||||
# gsHullHighlightAlpha
|
||||
Hull highlight transparency (alpha)
|
||||
|
||||
# advancedVisibilityFrame
|
||||
Better highlights for selected curves and components.
|
||||
|
||||
# lazyUpdate
|
||||
Enables lazy update for selected curves.
|
||||
Lazy update can slightly increase the performance of the highlight,
|
||||
however it has some visual drawbacks (curve highlight can fail to update when switching curves in component selection mode)
|
||||
|
||||
# alwaysOnTop
|
||||
Toggles X-Ray (always on top) drawing for highlighted components.
|
||||
Disabling this defeats the purpose of the advanced visibility, but hey, it's your choice.
|
||||
|
||||
# curveDistanceColor
|
||||
Toggles the distance color effect on the curve highlight.
|
||||
Distance color darkens the curve color the further it is from the camera.
|
||||
|
||||
# cvDistanceColor
|
||||
Toggles the distance color effect on the CV highlight.
|
||||
Distance color darkens the CVs color the further it is from the camera.
|
||||
|
||||
# hullDistanceColor
|
||||
Toggles the distance color effect on the hull highlight.
|
||||
Distance color darkens the hull color the further it is from the camera.
|
||||
|
||||
# gsDistanceColorMinValue
|
||||
Distance color minimum.
|
||||
This value is the minimum allowed color multiplier for the Distance Color effect.
|
||||
The lower this value, the darker further parts of the curve will be.
|
||||
Black at 0.0
|
||||
Original color at 1.0
|
||||
|
||||
# gsDistanceColorMaxValue
|
||||
Distance color maximum.
|
||||
This value is the maximum allowed color multiplier for the Distance Color effect.
|
||||
The higher this value, the brighter closest parts of the curve will be.
|
||||
Black at 0.0
|
||||
Original color at 1.0
|
||||
|
||||
# CVocclusion
|
||||
Toggles the experimental CV occlusion mode (hull is affected as well)
|
||||
When the appropriate mesh name is added to Occluder Mesh input field,
|
||||
this function will automatically hide CVs and hull lines that are behind this mesh (even in X-Ray mode).
|
||||
Warning: enabling this mode can negatively impart viewport performance.
|
||||
|
||||
# gsSelectOccluderButton
|
||||
This button adds the selected mesh name to the Occluder Mesh input field.
|
||||
|
||||
# gsOccluderMeshName
|
||||
Type the full path for the occluder mesh here, or use the "Select Occluder" button on the left <-
|
||||
|
||||
|
||||
<!-- Layer Customization --->
|
||||
|
||||
# gsGenerateLayerColorGradient
|
||||
Generate a color gradient for the layer colors.
|
||||
Rows control the number of Rows to generate.
|
||||
Left color picker sets the initial color.
|
||||
Right color picker sets the final color.
|
||||
|
||||
# gsRandomizeLayerColors
|
||||
Generate random colors for the layers.
|
||||
SatMin controls the minimum allowed saturation.
|
||||
SatMax controls the maximum allowed saturation.
|
||||
|
||||
# gsResetAllLayerColors
|
||||
Resets all the color swatches to the default color.
|
||||
|
||||
# gsGetCurrentSceneLayers
|
||||
Populates the menu with the names and colors stored in the scene.
|
||||
|
||||
# gsSetAsCurrentSceneLayers
|
||||
Applies the names and colors from the menu to the scene.
|
||||
|
||||
# gsLoadGlobalLayerPreset
|
||||
Load the global names and colors preset to the menu.
|
||||
NOTE: Don't forget to Set to Scene before closing the menu.
|
||||
|
||||
# gsSaveGlobalLayerPreset
|
||||
Saves the current names and colors from the menu to the global preset.
|
||||
|
||||
<!-- UV Editor Window --->
|
||||
|
||||
# gsUVSelect
|
||||
Enables the selection of the UVs.
|
||||
Drag to draw a box selection.
|
||||
|
||||
# gsUVMove
|
||||
Enables the Move tool.
|
||||
Move the selected UVs or move individual UVs if nothing is selected.
|
||||
|
||||
# gsUVRotate
|
||||
Enables the Rotation of the selected UVs.
|
||||
Hold LMB and drag anywhere in the viewport to rotate the selected UVs.
|
||||
Rotation pivot is the center of the individual unscaled UV.
|
||||
|
||||
# gsUVScale
|
||||
Enables the Scaling of the selected UVs.
|
||||
Hold LMB and drag in the viewport to scale the card Horizontally of Vertically.
|
||||
Repeated hotkey click will toggle between Horizontal and Vertical scaling.
|
||||
|
||||
# gsUVHorizontalScale
|
||||
Horizontal scaling mode selector.
|
||||
|
||||
# gsUVVerticalScale
|
||||
Vertical scaling mode selector.
|
||||
|
||||
# gsDrawUVs
|
||||
Enables the UVs Drawing Tool:
|
||||
1. Select UVs using Selection Mode.
|
||||
2. Enable the UV Drawing Tool.
|
||||
3. Draw a UV Rectangle anywhere in the viewport to create/move the UVs there.
|
||||
|
||||
# gsHorizontalFlipUV
|
||||
Flips the selected UVs horizontally.
|
||||
Flipped UVs have the blue circle indicator inside the root rectangle.
|
||||
|
||||
# gsVerticalFlipUV
|
||||
Flips the selected UVs vertically.
|
||||
|
||||
# gsResetUVs
|
||||
Resets the selected UVs to the default 0,1 rectangle.
|
||||
|
||||
# gsSyncSelectionUVs
|
||||
Syncs selection between UV editor and Maya Viewport.
|
||||
|
||||
# gsRandomizeUVs
|
||||
Randomize selected UV positions between already existing UV positions.
|
||||
***
|
||||
Normal click will keep the overall density distribution of the UVs.
|
||||
This means that if there is one card in one position and twenty cards in the other,
|
||||
it will keep this distribution of 1 to 20.
|
||||
***
|
||||
Shift+Click will ignore the original density distribution
|
||||
and simply randomize the UVs between the original positions.
|
||||
|
||||
# gsFocusUVs
|
||||
Focuses on the selected UVs or on all the UVs if nothing is selected.
|
||||
|
||||
# gsUVIsolateSelect
|
||||
Hides all the unselected UVs and shows only the selected ones.
|
||||
|
||||
# gsUVShowAll
|
||||
Shows all the hidden UVs.
|
||||
|
||||
# UVEditorUseTransforms
|
||||
Use "Coverage" and "Translate Frame" parameters from place2dTexture node for texture.
|
||||
Offset is not supported.
|
||||
Diffuse and Alpha channel MUST have the same coverage and translate frame values.
|
||||
|
||||
# UVEditorTransparencyToggle
|
||||
Enable texture map transparency using Alpha map from Transparency plug in the material node
|
||||
|
||||
# UVEditorBGColorPicker
|
||||
Background Color
|
||||
|
||||
# UVEditorGridColorPicker
|
||||
Grid Color
|
||||
|
||||
# UVEditorFrameColorPicker
|
||||
Frame Color
|
||||
|
||||
# UVEditorUVFrameSelectedColorPicker
|
||||
Selected UV frame color
|
||||
|
||||
# UVEditorUVFrameDeselectedColorPicker
|
||||
Deselected UV frame color
|
||||
|
||||
# UVEditorUVCardFillColorPicker
|
||||
UV frame background color
|
||||
|
||||
<!-- Card to Curve Window --->
|
||||
|
||||
# gsGeoToCurve_outputTypeSwitch
|
||||
Controls the output of Geo-to-Curve algorithm
|
||||
|
||||
# gsGeoToCurve_generateAuto
|
||||
Automatically determine the final object type (card or tube) based on the selected geometry.
|
||||
|
||||
# gsGeoToCurve_generateCards
|
||||
Generate cards from selected geometry (one-sided cards or tubes)
|
||||
|
||||
# gsGeoToCurve_generateTubes
|
||||
Generate tubes from selected geometry (one-sided cards or tubes)
|
||||
|
||||
# gsGeoToCurve_generateCurves
|
||||
Generate curves from selected geometry (one-sided cards or tubes)
|
||||
|
||||
# gsGeoToCurve_cardType
|
||||
Controls the type of generated objects (Warp or Extrude)
|
||||
|
||||
# gsGeoToCurve_warp
|
||||
Generate Warp cards or tubes
|
||||
|
||||
# gsGeoToCurve_extrude
|
||||
Generate Extrude cards or tubes
|
||||
|
||||
# gsGeoToCurve_matchAttributes
|
||||
Controls which attributes on the new cards/tubes should be approximated from the original geometry.
|
||||
NOTE: This process is not perfect and final result can be inaccurate.
|
||||
|
||||
# gsGeoToCurve_orientation
|
||||
Match orientation attribute during the generation process
|
||||
|
||||
# gsGeoToCurve_width
|
||||
Match orientation attribute during the generation process
|
||||
|
||||
# gsGeoToCurve_taper
|
||||
Match taper attribute during the generation process
|
||||
|
||||
# gsGeoToCurve_twist
|
||||
Match twist attribute during the generation process
|
||||
|
||||
# gsGeoToCurve_profile
|
||||
Match profile attribute during the generation process
|
||||
|
||||
# gsGeoToCurve_material
|
||||
Copy material (shader) from the original geometry
|
||||
|
||||
# gsGeoToCurve_UVs
|
||||
Tries to approximate the UVs from the original geometry
|
||||
NOTE: Matches the bounding box of the UVs. Rotated and deformed UVs are not matched precisely.
|
||||
|
||||
# gsGeoToCurve_UVMatchOptions
|
||||
Controls UV matching behaviour
|
||||
|
||||
# gsGeoToCurve_verticalFlip
|
||||
Vertically flip matched UVs
|
||||
|
||||
# gsGeoToCurve_horizontalFlip
|
||||
Horizontally flip matched UVs
|
||||
|
||||
# gsGeoToCurve_reverseCurve
|
||||
Reverse generated curve direction
|
||||
Root CV should be generated near the scalp of the model.
|
||||
Enable or disable if resulting card direction and taper are reversed.
|
||||
|
||||
# gsGeoToCurve_convertSelected
|
||||
Convert selected geometry to cards, tubes or curves based on the selected options.
|
||||
Newly created procedural objects will be placed in the currently selected layer.
|
||||
NOTE: if the currently selected layer is hidden (grayed out), the newly created objects will be hidden as well.
|
||||
BIN
2023/scripts/modeling_tools/gs_curvetools/fonts/Roboto-Bold.ttf
Normal file
|
After Width: | Height: | Size: 234 B |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
BIN
2023/scripts/modeling_tools/gs_curvetools/icons/marking.png
Normal file
|
After Width: | Height: | Size: 118 B |
BIN
2023/scripts/modeling_tools/gs_curvetools/icons/mod.png
Normal file
|
After Width: | Height: | Size: 178 B |
BIN
2023/scripts/modeling_tools/gs_curvetools/icons/reset.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,93 @@
|
||||
"""
|
||||
CV Manipulator (highlighting) plug-in entry point for Mac
|
||||
|
||||
GS CurveTools License:
|
||||
This collection of code named GS CurveTools is a property of George Sladkovsky (Yehor Sladkovskyi)
|
||||
and can not be copied or distributed without his written permission.
|
||||
|
||||
GS CurveTools v1.3.8 Personal
|
||||
Copyright 2024, George Sladkovsky (Yehor Sladkovskyi)
|
||||
All Rights Reserved
|
||||
|
||||
UI font is Roboto that is licensed under the Apache 2.0 License:
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Autodesk Maya is a property of Autodesk, Inc:
|
||||
https://www.autodesk.com/
|
||||
|
||||
Social Media and Contact Links:
|
||||
|
||||
Discord Server: https://discord.gg/f4DH6HQ
|
||||
Online Store: https://sladkovsky3d.artstation.com/store
|
||||
Online Documentation: https://gs-curvetools.readthedocs.io/
|
||||
Twitch Channel: https://www.twitch.tv/videonomad
|
||||
YouTube Channel: https://www.youtube.com/c/GeorgeSladkovsky
|
||||
ArtStation Portfolio: https://www.artstation.com/sladkovsky3d
|
||||
Contact Email: george.sladkovsky@gmail.com
|
||||
|
||||
"""
|
||||
|
||||
# pylint: disable-all
|
||||
|
||||
import sys
|
||||
|
||||
try:
|
||||
from importlib import reload
|
||||
except ImportError:
|
||||
from imp import reload
|
||||
|
||||
import maya.api.OpenMaya as om
|
||||
import maya.api.OpenMayaRender as omr
|
||||
|
||||
from gs_curvetools.plugins import cv_manip_src # type: ignore
|
||||
|
||||
reload(cv_manip_src)
|
||||
|
||||
# API parameters
|
||||
maya_useNewAPI = True
|
||||
|
||||
|
||||
# ------------ Init & UnInit Plugin ------------
|
||||
def initializePlugin(obj):
|
||||
plugin = om.MFnPlugin(obj, "GeorgeSladkovsky", "1.3", "Any")
|
||||
try:
|
||||
plugin.registerNode(
|
||||
"GSCT_CurveTools_DrawManagerNode",
|
||||
cv_manip_src.DrawManagerNode.id,
|
||||
cv_manip_src.DrawManagerNode.creator,
|
||||
cv_manip_src.DrawManagerNode.initialize,
|
||||
om.MPxNode.kLocatorNode,
|
||||
cv_manip_src.DrawManagerNode.drawDbClassification,
|
||||
)
|
||||
except BaseException:
|
||||
sys.stderr.write("Failed to register node\n")
|
||||
raise
|
||||
|
||||
try:
|
||||
omr.MDrawRegistry.registerDrawOverrideCreator(
|
||||
cv_manip_src.DrawManagerNode.drawDbClassification,
|
||||
cv_manip_src.DrawManagerNode.drawRegistrantId,
|
||||
cv_manip_src.DrawOverride.creator,
|
||||
)
|
||||
except BaseException:
|
||||
sys.stderr.write("Failed to register override\n")
|
||||
raise
|
||||
|
||||
|
||||
def uninitializePlugin(obj):
|
||||
om.MMessage.removeCallbacks(cv_manip_src.CALLBACK_IDS)
|
||||
cv_manip_src.CALLBACK_IDS = []
|
||||
plugin = om.MFnPlugin(obj)
|
||||
try:
|
||||
plugin.deregisterNode(cv_manip_src.DrawManagerNode.id)
|
||||
except BaseException:
|
||||
sys.stderr.write("Failed to deregister node\n")
|
||||
raise
|
||||
|
||||
try:
|
||||
omr.MDrawRegistry.deregisterGeometryOverrideCreator(
|
||||
cv_manip_src.DrawManagerNode.drawDbClassification, cv_manip_src.DrawManagerNode.drawRegistrantId
|
||||
)
|
||||
except BaseException:
|
||||
sys.stderr.write("Failed to deregister override\n")
|
||||
raise
|
||||