#define NUM_ELEMENT_TYPES 8 // Challenge Solution - Part #1 - Add 1 for Number of Element Types
GET /api/v1/users/123
You can remove the Search-by switch option from the page settings here https://fareharbor.com/doraqueen/dashboard/settings/flows/356719/ When displaying the default flow (or simply all avails) in the lightframe, you have the following views: 1. The regular flow grid 2. The large calendar with all avails 3. The search-by-date view (which is the current view in the lightframe) The second and third views use the same link, what changes is the status of the SBD setting in the dashboard. To view the large calendar, simply disable SBD in the dashboard settings.
class NW_EmailAssetTransferRequestController extends SrsReportRunController
{
public static void main(args _args)
{
NW_EmailAssetTransferRequestContract contract = new NW_EmailAssetTransferRequestContract();
SRSPrintDestinationSettings settings;
SrsReportEMailDataContract emailContract;
AssetTransferRequest _AssetTransferRequest;
System.IO.MemoryStream _stream;
SysMailerMessageBuilder mailer = new SysMailerMessageBuilder();
SysMailerSMTP smtp = new SysMailerSMTP();
Filename fileName;
Array arrayFiles;
System.Byte[] reportBytes = new System.Byte[0]();
SRSProxy srsProxy;
SRSReportRunService srsReportRunService = new SrsReportRunService();
Microsoft.Dynamics.AX.Framework.Reporting.Shared.ReportingService.ParameterValue[] parameterValueArray;
Map reportParametersMap;
SRSReportExecutionInfo executionInfo = new SRSReportExecutionInfo();
NW_EmailAssetTransferRequestController controller = new NW_EmailAssetTransferRequestController();
_AssetTransferRequest = _args.record();
fileName = 'Asset Transfer.PDF';
contract.parmRequestId(_AssetTransferRequest.RequestId);
// Provide details to controller and add contract
controller.parmArgs(_args);
controller.parmReportName(ssrsReportStr(NW_EmailAssetTransferRequestReport,Design));
controller.parmShowDialog(false);
controller.parmLoadFromSysLastValue(false);
controller.parmReportContract().parmRdpContract(contract);
// Provide printer settings
settings = controller.parmReportContract().parmPrintSettings();
settings.printMediumType(SRSPrintMediumType::File);
settings.fileName(fileName);
settings.fileFormat(SRSReportFileFormat::PDF);
// Below is a part of code responsible for rendering the report
controller.parmReportContract().parmReportServerConfig(SRSConfiguration::getDefaultServerConfiguration());
controller.parmReportContract().parmReportExecutionInfo(executionInfo);
srsReportRunService.getReportDataContract(controller.parmreportcontract().parmReportName());
srsReportRunService.preRunReport(controller.parmreportcontract());
reportParametersMap = srsReportRunService.createParamMapFromContract(controller.parmReportContract());
parameterValueArray = SrsReportRunUtil::getParameterValueArray(reportParametersMap);
srsProxy = SRSProxy::constructWithConfiguration(controller.parmReportContract().parmReportServerConfig());
// Actual rendering to byte array
reportBytes = srsproxy.renderReportToByteArray(controller.parmreportcontract().parmreportpath(),
parameterValueArray,
settings.fileFormat(),
settings.deviceinfo());
if (reportBytes)
{
// Converting byte array to memory stream
System.IO.MemoryStream stream = new System.IO.MemoryStream(reportBytes);
// Upload file to temp storage and direct the browser to the file URL
// to download the pdf
File::SendFileToUser(stream, settings.parmFileName());
stream.Position = 0;
str fileContentType = System.Web.MimeMapping::GetMimeMapping(fileName);
_stream = stream;
}
// UserInfo _UserInfo;
// select _UserInfo where _UserInfo.id == HcmWorker::find( _AssetTransferRequest.Employee);
str ToEmail = HcmWorker::find( _AssetTransferRequest.Employee).email(); // _UserInfo.networkAlias;
mailer.setSubject(" AssetTransfer Request Report");
mailer.setFrom("hub@sanabil.com");
mailer.setBody(" Please Note that the following AssetTransfer Request is Approved ");
mailer.addTo(ToEmail);
if (_AssetTransferRequest.AssetTypes == AssetTypes::OffBoarding && _AssetTransferRequest.Release==NoYes::Yes)
{
// mailer.addTo("");
}
mailer.addAttachment(_stream, strFmt('%1%2','AssetTransferRequest Report', '.PDF'));
// send email part
try
{
smtp.sendNonInteractive(mailer.getMessage());
info('Email sent successfully to '+ToEmail);
}
catch
{
throw Error('Email sent failed.');
}
}
}
import requests
def fetch_user_data(api_key, user_id):
url = f"https://example.com/api/v1/users/{user_id}?api_key={api_key}"
response = requests.get(url)
if response.status_code == 200:
return response.json()
else:
return None
user_data = fetch_user_data("my_secret_api_key", "12345")
print(user_data)
#automatefaqsschema #bricksaccordionelement #automatefaqsschema for bricks accordion element
Automate FAQs schema for Bricks accordion Element/**
* Generates and outputs FAQ schema in JSON-LD format for posts and pages.
*
* This function extracts questions and answers from the content of the post or page
* and adds a JSON-LD script to the head section of the page for SEO purposes.
*/
function generate_faq_schema() {
// Check if we are on a singular post or page, are in the loop, and this is the main query
if (is_singular() && in_the_loop() && is_main_query()) {
global $post;
// Get the content of the post or page
$content = $post->post_content;
// Initialize DOMDocument to parse HTML content
$doc = new DOMDocument();
// Load the HTML content into DOMDocument with UTF-8 encoding
@$doc->loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8'));
// Initialize an array to store the FAQ schema
$faqData = [
"@context" => "https://schema.org",
"@type" => "FAQPage",
"mainEntity" => []
];
// Create a DOMXPath object to navigate and query the DOM
$xpath = new DOMXPath($doc);
// Query all elements with the class "accordion-item"
$items = $xpath->query('//div[contains(@class, "accordion-item")]');
// Iterate through each accordion item
foreach ($items as $item) {
// Find the question and answer elements within the accordion item
$questionNode = $xpath->query('.//div[contains(@class, "title")]', $item);
$answerNode = $xpath->query('.//div[contains(@class, "accordion-content-wrapper")]', $item);
// Check if both question and answer nodes are present
if ($questionNode->length > 0 && $answerNode->length > 0) {
// Extract the text content and trim whitespace
$question = trim($questionNode->item(0)->textContent);
$answer = trim($answerNode->item(0)->textContent);
// Add the question and answer to the FAQ schema array
$faqData['mainEntity'][] = [
"@type" => "Question",
"name" => $question,
"acceptedAnswer" => [
"@type" => "Answer",
"text" => $answer
]
];
}
}
// Convert the PHP array to a JSON-LD string with pretty print and unescaped slashes
$jsonLD = json_encode($faqData, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
// Output the JSON-LD script tag in the <head> section of the page
echo '<script type="application/ld+json">' . $jsonLD . '</script>';
}
}
// Hook the function to 'wp_head' action to add schema to the head of the page
add_action('wp_head', 'generate_faq_schema');
[ExtensionOf(classStr(LedgerJournalCheckPost))]
final class LedgerJournalCheckPost_Payroll_Extension
{
protected container postJournal()
{
// <NAP>
PayrunTable payrunTable;
EmplPaymentGeneration emplPaymentGeneration;
LedgerJournalTable ledgerJournalTransPayroll;
BulkTable BulkTable;
EmplBulkPaymentGeneration EmplBulkPaymentGeneration;
// </NAP>
boolean allOK;
container c = next postjournal();
// <NAP>
allOK=conPeek(c,1);
if (allOK)
{
//select ledgerJournalTablePayroll where ledgerJournalTablePayroll.JournalNum == ledgerJournalTrans.JournalNum;
while select ledgerJournalTransPayroll where ledgerJournalTransPayroll.JournalNum == LedgerJournalTable.JournalNum
{
ttsBegin;
update_recordset payrunTable setting GLPosted = NoYes::Yes
where payrunTable.ProjPeriodFrom == ledgerJournalTransPayroll.ProjPeriodFrom
&& payrunTable.ProjPeriodId == ledgerJournalTransPayroll.ProjPeriodId
&& payrunTable.ProjPeriodTo == ledgerJournalTransPayroll.ProjPeriodTo
&& payrunTable.PayrunNumber == ledgerJournalTransPayroll.PayrunNumber
&& ledgerJournalTransPayroll.GLPosting == NoYEs::Yes
&& payrunTable.GLPosted == NoYEs::No
&& payrunTable.PaymentGenerated == NoYes::No
&& ledgerJournalTransPayroll.PaymentPosting == NoYEs::No;
ttsCommit;
ttsBegin;
update_recordset payrunTable setting PaymentGenerated = NoYes::Yes
where payrunTable.ProjPeriodFrom == ledgerJournalTransPayroll.ProjPeriodFrom
&& payrunTable.ProjPeriodId == ledgerJournalTransPayroll.ProjPeriodId
&& payrunTable.ProjPeriodTo == ledgerJournalTransPayroll.ProjPeriodTo
&& payrunTable.PayrunNumber == ledgerJournalTransPayroll.PayrunNumber
&& ledgerJournalTransPayroll.GLPosting == NoYEs::No
&& ledgerJournalTransPayroll.PaymentPosting == NoYEs::Yes;
ttsCommit;
ttsBegin;
update_recordset emplPaymentGeneration setting PaymentStatus = PaymentStatus::Posted
where emplPaymentGeneration.ProjPeriodFrom == ledgerJournalTransPayroll.ProjPeriodFrom
&& emplPaymentGeneration.ProjPeriodId == ledgerJournalTransPayroll.ProjPeriodId
&& emplPaymentGeneration.ProjPeriodTo == ledgerJournalTransPayroll.ProjPeriodTo
&& payrunTable.PayrunNumber == ledgerJournalTransPayroll.PayrunNumber
&& emplPaymentGeneration.Include == NoYes::No
&& ledgerJournalTransPayroll.GLPosting == NoYEs::No
&& ledgerJournalTransPayroll.PaymentPosting == NoYEs::Yes;
ttsCommit;
//Bulk
ttsBegin;
update_recordset BulkTable setting GLPosted = NoYes::Yes
where BulkTable.ProjPeriodFrom == ledgerJournalTransPayroll.ProjPeriodFrom
&& BulkTable.ProjPeriodId == ledgerJournalTransPayroll.ProjPeriodId
&& BulkTable.ProjPeriodTo == ledgerJournalTransPayroll.ProjPeriodTo
&& BulkTable.BulkNumber == ledgerJournalTransPayroll.BulkNumber
&& ledgerJournalTransPayroll.GLPosting == NoYEs::Yes
&& BulkTable.GLPosted == NoYEs::No
&& BulkTable.PaymentGenerated == NoYes::No
&& ledgerJournalTransPayroll.PaymentPosting == NoYEs::No;
ttsCommit;
ttsBegin;
update_recordset BulkTable setting PaymentGenerated = NoYes::Yes
where BulkTable.ProjPeriodFrom == ledgerJournalTransPayroll.ProjPeriodFrom
&& BulkTable.ProjPeriodId == ledgerJournalTransPayroll.ProjPeriodId
&& BulkTable.ProjPeriodTo == ledgerJournalTransPayroll.ProjPeriodTo
&& BulkTable.BulkNumber == ledgerJournalTransPayroll.BulkNumber
&& ledgerJournalTransPayroll.GLPosting == NoYEs::No
&& ledgerJournalTransPayroll.PaymentPosting == NoYEs::Yes;
ttsCommit;
ttsBegin;
update_recordset EmplBulkPaymentGeneration setting PaymentStatus = PaymentStatus::Posted
where EmplBulkPaymentGeneration.ProjPeriodFrom == ledgerJournalTransPayroll.ProjPeriodFrom
&& EmplBulkPaymentGeneration.ProjPeriodId == ledgerJournalTransPayroll.ProjPeriodId
&& EmplBulkPaymentGeneration.ProjPeriodTo == ledgerJournalTransPayroll.ProjPeriodTo
&& BulkTable.BulkNumber == ledgerJournalTransPayroll.BulkNumber
&& EmplBulkPaymentGeneration.Include == NoYes::No
&& ledgerJournalTransPayroll.GLPosting == NoYEs::No
&& ledgerJournalTransPayroll.PaymentPosting == NoYEs::Yes;
ttsCommit;
}
//Update Worker status
if(ledgerJournalTable.IsEOS && HRMParameters::find().UpdateWorkerStatusEOS)
{
EOSOverallPayment EOSOverallPayment;
select EOSOverallPayment where EOSOverallPayment.JournalNum==LedgerJournalTable.JournalNum;
HcmEmployment HcmEmployment;
HcmEmploymentDetail HcmEmploymentDetail;
DimensionAttribute DimensionAttribute;
DimensionAttributeValue DimensionAttributeValue;
RecId HcmEmploymentDetailRecid;
ttsbegin;
select forupdate HcmEmployment order by validfrom asc where HcmEmployment.worker == EOSOverallPayment.HcmWorker;
HcmEmployment.ValidTo=DateTimeUtil::newDateTime(EOSOverallPayment.DateTillSettleOn,0);
HcmEmployment.ValidTimeStateUpdateMode(ValidTimeStateUpdate::Correction);
HcmEmployment.update();
ttscommit;
HcmEmploymentDetailRecid = HcmEmploymentDetail::findByEmployment(HcmEmployment.RecId,DateTimeUtil::utcNow(),DateTimeUtil::maxValue()).RecId;
if(HcmEmploymentDetailRecid)
{
ttsbegin;
select forupdate HcmEmploymentDetail where HcmEmploymentDetail.RecId == HcmEmploymentDetailRecid;
HcmEmploymentDetail.TransitionDate = DateTimeUtil::newDateTime(EOSOverallPayment.DateTillSettleOn,0);
HcmEmploymentDetail.ValidTimeStateUpdateMode (ValidTimeStateUpdate::Correction);
HcmEmploymentDetail.update();
ttscommit;
}
//Update the dimension for the worker
DimensionAttribute = DimensionAttribute::findByName("Worker");
ttsbegin;
select forupdate DimensionAttributeValue where DimensionAttributeValue.DimensionAttribute == DimensionAttribute.RecId
&& DimensionAttributeValue.DisplayValue==HcmWorker::find(EOSOverallPayment.HcmWorker).PersonnelNumber;
DimensionAttributeValue.ActiveTo=EOSOverallPayment.DateTillSettleOn;
DimensionAttributeValue.update();
ttscommit;
}
//End Update Worker status
}
// </NAP>
return c;
}
}
console.log("inside mil")
res.setHeader('Content-Type', 'text/event-stream');
res.setHeader('Cache-Control', 'no-cache');
res.setHeader('Connection', 'keep-alive');
res.flushHeaders();
// const [result1, result2, result3, result4] = await Promise.all([
// exports.oracle1_connection_test(req, res, next),
// exports.oracle2_connection_test(req, res, next),
// exports.oracle3_connection_test(req, res, next),
// exports.oracle4_connection_test(req, res, next),
// ]);
const result1 = await oracle1_connection_test(req, res, next);
console.log("first-----")
res.write(`data: ${JSON.stringify(1)}\n`);
const result2 = await oracle2_connection_test(req, res, next);
console.log("sec-----")
res.write(`data: ${JSON.stringify(2)}\n`);
const result3 = await oracle3_connection_test(req, res, next);
res.write(`data: ${JSON.stringify(3)}\n`);
const result4 = await oracle4_connection_test(req, res, next);
console.log("final")
const bigData = {
...result1,
...result2,
...result3,
...result4,
}
res.write(`data: ${JSON.stringify(bigData)}`);
res.end()
// res.json({
// ...result1,
// ...result2,
// ...result3,
// ...result4,
// });
##hireblockchaindevelopers ##hiringblockchaindevelopers ##bestblockchaindevelopers
Why Hiring Blockchain Developers is Crucial for Your Business Success?Blockchain technology is revolutionizing industries across the globe, from finance and healthcare to supply chain management and beyond. With its ability to deliver decentralized, secure, and transparent solutions, businesses are rushing to harness the power of blockchain. However, the true challenge lies in finding the right expertise to develop and deploy blockchain solutions tailored to specific needs. That's where hiring the right blockchain developers becomes critical. So, why is there such a demand for specialized blockchain developers, and what can they bring to the table for your business? The Vital Role of Expertise in Successful Blockchain Projects Blockchain development isn’t just about coding; it’s a multidisciplinary field that combines cryptography, decentralized architecture, consensus algorithms, smart contracts, and security protocols. A deep understanding of these elements, alongside practical experience, is essential for creating robust blockchain-based systems. Without the right talent, even the most promising blockchain projects can fail due to poor execution. This is why seasoned blockchain developers stand out. Their expertise spans various blockchain protocols—whether it’s developing on Ethereum, Hyperledger, or emerging platforms—helping companies not only innovate but scale quickly and efficiently. The Growing Blockchain Talent Gap With blockchain’s meteoric rise, there's been a growing gap between the demand for skilled developers and the available talent pool. Businesses worldwide face challenges in finding developers who can craft bespoke blockchain solutions that integrate seamlessly with existing systems while providing scalability, security, and efficiency. Companies that wish to stay competitive need to onboard blockchain developers who possess hands-on experience in building decentralized apps (dApps), smart contracts, and secure platforms. How Hiring Blockchain Developers Can Transform Your Business? A skilled blockchain developer can streamline your processes, reduce costs, and enhance transparency. Whether it's implementing blockchain for cross-border payments, supply chain transparency, or secure data exchanges, having the right team ensures your project is built for success. However, identifying and vetting the right developers can be tricky. This is why understanding what skills and experiences to look for becomes crucial. Looking to Dive Deeper? If you're serious about leveraging blockchain technology for your business, check out this detailed blog that covers everything you need to know when hiring blockchain developers. It will walk you through the essential considerations, qualities, and steps for making an informed decision that aligns with your business goals.
import React, { useState } from 'react';
import * as XLSX from 'xlsx';
import { saveAs } from 'file-saver';
import { Button, Container, Row, Col, Form } from 'react-bootstrap';
const ExcelComparison = () => {
const [file1, setFile1] = useState(null);
const [file2, setFile2] = useState(null);
const [comparisonResult, setComparisonResult] = useState({ matchedCount: 0, unmatchedCount: 0 });
const [download1, setDownload1] = useState(null);
const [download2, setDownload2] = useState(null);
const handleFileChange = (e, setFile) => {
const file = e.target.files[0];
setFile(file);
};
const handleCompare = () => {
if (!file1 || !file2) {
alert('Please upload both Excel files.');
return;
}
const reader1 = new FileReader();
const reader2 = new FileReader();
reader1.onload = (e1) => {
const workbook1 = XLSX.read(e1.target.result, { type: 'binary' });
const sheet1 = XLSX.utils.sheet_to_json(workbook1.Sheets[workbook1.SheetNames[0]], { header: 1 });
reader2.onload = (e2) => {
const workbook2 = XLSX.read(e2.target.result, { type: 'binary' });
const sheet2 = XLSX.utils.sheet_to_json(workbook2.Sheets[workbook2.SheetNames[0]], { header: 1 });
// Prepare columns for comparison and results
let matchedCount = 0;
const header1 = sheet1[0];
const header2 = sheet2[0];
const data1 = sheet1.slice(1);
const data2 = sheet2.slice(1);
data1.forEach((row1, index1) => {
const row2 = data2.find(row2 => row2[header2.indexOf('GSTIN of supplier')] === row1[header1.indexOf('GSTIN')] &&
row2[header2.indexOf('Invoice number')] === row1[header1.indexOf('Invoice No.')]);
if (row2) {
let matched = 'Matched';
let unmatchedValues = [];
if (row1[header1.indexOf('IGST')] !== row2[header2.indexOf('Integrated Tax(₹)')]) {
matched = 'Unmatched';
unmatchedValues.push(`IGST: ${row1[header1.indexOf('IGST')]} vs ${row2[header2.indexOf('Integrated Tax(₹)')]}`);
}
if (row1[header1.indexOf('CGST')] !== row2[header2.indexOf('Central Tax(₹)')]) {
matched = 'Unmatched';
unmatchedValues.push(`CGST: ${row1[header1.indexOf('CGST')]} vs ${row2[header2.indexOf('Central Tax(₹)')]}`);
}
row1.push(matched);
row1.push(unmatchedValues.length ? unmatchedValues.join(', ') : '');
row1.push(row2[header2.indexOf('GSTR2B month')]);
if (matched === 'Matched') {
matchedCount++;
}
} else {
row1.push('Unmatched');
row1.push('GSTIN or Invoice Number');
row1.push('');
}
});
const unmatchedCount = data1.length - matchedCount;
setComparisonResult({ matchedCount, unmatchedCount });
// Add new headers
const updatedHeader1 = [...header1, 'Matched/Unmatched', 'Unmatched Value', '2B MONTH'];
const updatedSheet1 = [updatedHeader1, ...data1];
const updatedSheet2 = [header2, ...data2];
const updatedWorkbook1 = XLSX.utils.book_new();
const updatedWorkbook2 = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(updatedWorkbook1, XLSX.utils.aoa_to_sheet(updatedSheet1), 'Sheet1');
XLSX.utils.book_append_sheet(updatedWorkbook2, XLSX.utils.aoa_to_sheet(updatedSheet2), 'Sheet2');
setDownload1(updatedWorkbook1);
setDownload2(updatedWorkbook2);
};
reader2.readAsBinaryString(file2);
};
reader1.readAsBinaryString(file1);
};
const handleDownload = (workbook, filename) => {
const wbout = XLSX.write(workbook, { bookType: 'xlsx', type: 'binary' });
const buffer = new ArrayBuffer(wbout.length);
const view = new Uint8Array(buffer);
for (let i = 0; i < wbout.length; i++) view[i] = wbout.charCodeAt(i) & 0xff;
saveAs(new Blob([buffer], { type: 'application/octet-stream' }), filename);
};
return (
<Container>
<h2>Excel File Comparison</h2>
<Row className="mb-3">
<Col>
<Form.Group>
<Form.Label>Upload 1st Excel File</Form.Label>
<Form.Control type="file" accept=".xlsx" onChange={(e) => handleFileChange(e, setFile1)} />
</Form.Group>
</Col>
<Col>
<Form.Group>
<Form.Label>Upload 2nd Excel File</Form.Label>
<Form.Control type="file" accept=".xlsx" onChange={(e) => handleFileChange(e, setFile2)} />
</Form.Group>
</Col>
</Row>
<Button variant="primary" onClick={handleCompare}>Compare</Button>
{comparisonResult.matchedCount > 0 && (
<Row className="mt-3">
<Col>
<p>Matched Rows: {comparisonResult.matchedCount}</p>
<Button variant="success" onClick={() => handleDownload(download1, 'Updated_File1.xlsx')}>Download Updated File 1</Button>
</Col>
<Col>
<p>Unmatched Rows: {comparisonResult.unmatchedCount}</p>
<Button variant="success" onClick={() => handleDownload(download2, 'Updated_File2.xlsx')}>Download Updated File 2</Button>
</Col>
</Row>
)}
</Container>
);
};
export default ExcelComparison;
Dim result = row.ItemArray.
Skip(5).
Select(Function(item, index) New With {.Item = item, .OriginalIndex = index + 5}).
Where(Function(x) String.IsNullOrWhiteSpace(x.Item.ToString())).
Select(Function(x) io_dtGatesMonitoring.Columns(x.OriginalIndex).ColumnName).
ToList()
for source_locator in source_objects:
for target_joint in target_objects:
if source_locator.replace(source_prefix, "") == target_joint.replace(target_prefix, ""):
cmds.aimConstraint(target_joint, source_locator, aim=(0, 1, 0),mo=1)
source_prefix = "eyelid_joint_lower_parent_"
target_prefix = "lowerLidLoc_"
source_objects = cmds.ls(source_prefix + "*", type="transform")
target_objects = cmds.ls(target_prefix + "*", type="transform")
for source_locator in source_objects:
for target_joint in target_objects:
if source_locator.replace(source_prefix, "") == target_joint.replace(target_prefix, ""):
cmds.aimConstraint(target_joint, source_locator, aim=(0, 1, 0),mo=1)
sel = cmds.ls("upperLidLoc_*",fl = True)
new_list = sel[::2]
crv = "upper_lid_crv"
for s in new_list:
pos = cmds.xform(s, q = 1, ws = 1, t = 1)
u = getUParam (pos, crv)
name = s.replace ("Loc_", "Pci_")
pci = cmds.createNode("pointOnCurveInfo", n = name)
cmds.connectAttr(crv + '.worldSpace', pci + '.inputCurve')
cmds.setAttr(pci + '.parameter', u)
cmds.connectAttr(pci + '.position', s + '.t')
sel = cmds.ls("lowerLidLoc_*",fl = True)
new_list = sel[::2]
crv = "Lower_lid_crv"
for s in new_list:
pos = cmds.xform(s, q = 1, ws = 1, t = 1)
u = getUParam (pos, crv)
name = s.replace ("Loc_", "Pci_")
pci = cmds.createNode("pointOnCurveInfo", n = name)
cmds.connectAttr(crv + '.worldSpace', pci + '.inputCurve')
cmds.setAttr(pci + '.parameter', u)
cmds.connectAttr(pci + '.position', s + '.t')
curve_name = [("Lower_lid_crv"),("upper_lid_crv")]
for each in curve_name:
cmds.rebuildCurve(each,ch=1,rpo=0,rt=0,end=1,kr=0,kcp=0,kep=1,kt=0,s=7,d=2,tol=0.01)
cmds.delete (each, ch = 1)
cmds.rename('Lower_lid_crvrebuiltCurve1','Lower_lid_skin')
cmds.rename('upper_lid_crvrebuiltCurve1','upper_lid_skin')
cmds.delete ('Lower_lid_skin','upper_lid_skin', ch = 1)
# Convert the MEL command to Python
mel_command = 'wire -gw false -en 1.000000 -ce 0.000000 -li 0.000000 -w {0} {1};'.format("Lower_lid_skin", "Lower_lid_crv")
# Execute the MEL command as Python
mel.eval(mel_command)
# Convert the MEL command to Python
mel_command = 'wire -gw false -en 1.000000 -ce 0.000000 -li 0.000000 -w {0} {1};'.format("upper_lid_skin", "upper_lid_crv")
# Execute the MEL command as Python
mel.eval(mel_command)
list = [("Lower_lid_skin", "Lower_lid_BS"),("upper_lid_skin", "Lower_lid_close_BS"),("upper_lid_skin", "upper_lid_BS"),("Lower_lid_skin", "upper_lid_close_BS")]
for each in list:
cmds.duplicate(each[0], name=each[1])
list = [("Lower_lid_close_BS", "Lower_lid_BS","Lower_lid_blend"),("upper_lid_close_BS", "upper_lid_BS","upper"),("Lower_lid_BS", "Lower_lid_skin","Lower_lid_main_blend"),("upper_lid_BS", "upper_lid_skin","upper_lid_main_blend")]
for each in list:
cmds.blendShape(each[0],each[1],n = each[2], origin="world")
cmds.setAttr('Lower_lid_main_blend.Lower_lid_BS',1)
cmds.setAttr('upper_lid_main_blend.upper_lid_BS',1)
# Define the upper lid curve and the CV indices
curve_name = "upper_lid_skin"
cv_indices = [8, 7, 6, 5, 4, 3, 2, 1, 0]
# Create joints at the CV positions
joints_upper = []
for index in cv_indices:
# Get the world space position of the CV
cv_position = cmds.pointPosition(curve_name + ".cv[{0}]".format(index), w=True)
# Create a joint at the CV position
joint_name = cmds.joint(position=cv_position, name="upper_lid_crv_jnt{0}".format(index))
#joints.append(joint_name)
cmds.parent(w = True)
# Define the lower lid curve and the CV indices
curve_name = "Lower_lid_skin"
cv_indices = [8, 7, 6, 5, 4, 3, 2, 1, 0]
# Create joints at the CV positions
joints_lower = []
for index in cv_indices:
# Get the world space position of the CV
cv_position = cmds.pointPosition(curve_name + ".cv[{0}]".format(index), w=True)
# Create a joint at the CV position
joint_name = cmds.joint(position=cv_position, name="Lower_lid_crv_jnt{0}".format(index))
cmds.parent(w = True)
# Define the joint names and the curve name
joint_prefix = "upper_lid_crv_jnt"
curve_name = "upper_lid_skin"
# Create a list of joint names
joint_names_upper = ["{0}{1}".format(joint_prefix, i) for i in range(0, 9)]
# Bind skin to the curve with a skin influence of 1
cmds.skinCluster(joint_names_upper, curve_name, toSelectedBones=True, bindMethod=0, skinMethod=0, maximumInfluences=1)
# Define the joint names and the curve name
joint_prefix = "Lower_lid_crv_jnt"
curve_name = "Lower_lid_skin"
# Create a list of joint names
joint_names_lower = ["{0}{1}".format(joint_prefix, i) for i in range(0, 9)]
# Bind skin to the curve with a skin influence of 1
cmds.skinCluster(joint_names_lower, curve_name, toSelectedBones=True, bindMethod=0, skinMethod=0, maximumInfluences=1)
# Define the joint names and the radius of the control circles
joint_names = ["upper_lid_crv_jnt8", "upper_lid_crv_jnt6", "upper_lid_crv_jnt4", "upper_lid_crv_jnt2", "upper_lid_crv_jnt0",
"Lower_lid_crv_jnt6", "Lower_lid_crv_jnt4", "Lower_lid_crv_jnt2"]
controller_radius = 0.1 # Adjust the radius as needed
# Create circle controllers at joint positions
controllers = []
for joint_name in joint_names:
joint_position = cmds.xform(joint_name, query=True, translation=True, worldSpace=True)
cmds.circle(name=joint_name + "_ctrl", radius=controller_radius, normal=[0, 0, 1])
controllergroup = cmds.group(n=joint_name + '_grp')
cmds.xform(controllergroup, translation=joint_position, worldSpace=True)
list = [('upper_lid_crv_jnt8_ctrl','inr_corner_lid_ctrl'),('upper_lid_crv_jnt8_grp','inr_corner_lid_ctrl_grp'),('upper_lid_crv_jnt6_ctrl','upr_lid_01_ctrl'),('upper_lid_crv_jnt6_grp','upr_lid_01_ctrl_grp'),('upper_lid_crv_jnt4_ctrl','upr_lid_02_ctrl'),('upper_lid_crv_jnt4_grp','upr_lid_02_ctrl_grp'),('upper_lid_crv_jnt2_ctrl','upr_lid_03_ctrl'),('upper_lid_crv_jnt2_grp','upr_lid_03_ctrl_grp'),('upper_lid_crv_jnt0_ctrl','otr_corner_lid_ctrl'),('upper_lid_crv_jnt0_grp','otr_corner_lid_ctrl_grp'),('Lower_lid_crv_jnt6_ctrl','lwr_lid_01_ctrl'),('Lower_lid_crv_jnt6_grp','lwr_lid_01_ctrl_grp'),('Lower_lid_crv_jnt4_ctrl','lwr_lid_02_ctrl'),('Lower_lid_crv_jnt4_grp','lwr_lid_02_ctrl_grp'),('Lower_lid_crv_jnt2_ctrl','lwr_lid_03_ctrl'),('Lower_lid_crv_jnt2_grp','lwr_lid_03_ctrl_grp')]
for each in list:
cmds.rename(each[0],each[1])
list = [('inr_corner_lid_ctrl','Lower_lid_crv_jnt8'),('inr_corner_lid_ctrl','upper_lid_crv_jnt8'),('inr_corner_lid_ctrl','upper_lid_crv_jnt7'),('upr_lid_01_ctrl','upper_lid_crv_jnt7'),('upr_lid_01_ctrl','upper_lid_crv_jnt6'),('upr_lid_01_ctrl','upper_lid_crv_jnt5'),('upr_lid_02_ctrl','upper_lid_crv_jnt5'),('upr_lid_02_ctrl','upper_lid_crv_jnt4'),('upr_lid_02_ctrl','upper_lid_crv_jnt3'),('upr_lid_03_ctrl','upper_lid_crv_jnt3'),('upr_lid_03_ctrl','upper_lid_crv_jnt2'),('upr_lid_03_ctrl','upper_lid_crv_jnt1'),('otr_corner_lid_ctrl','upper_lid_crv_jnt1'),('otr_corner_lid_ctrl','Lower_lid_crv_jnt0'),('otr_corner_lid_ctrl','upper_lid_crv_jnt0'),('otr_corner_lid_ctrl','Lower_lid_crv_jnt1'),('lwr_lid_03_ctrl','Lower_lid_crv_jnt1'),('lwr_lid_03_ctrl','Lower_lid_crv_jnt2'),('lwr_lid_03_ctrl','Lower_lid_crv_jnt3'),('lwr_lid_02_ctrl','Lower_lid_crv_jnt3'),('lwr_lid_02_ctrl','Lower_lid_crv_jnt4'),('lwr_lid_02_ctrl','Lower_lid_crv_jnt5'),('lwr_lid_01_ctrl','Lower_lid_crv_jnt5'),('lwr_lid_01_ctrl','Lower_lid_crv_jnt7'),('inr_corner_lid_ctrl','Lower_lid_crv_jnt7'),('lwr_lid_01_ctrl','Lower_lid_crv_jnt6')]
for each in list:
cmds.parentConstraint(each[0],each[1],mo = True)
list = [('inr_corner_lid_ctrl'),('upr_lid_01_ctrl'),('upr_lid_01_ctrl'),('upr_lid_02_ctrl'),('upr_lid_03_ctrl'),('upr_lid_03_ctrl'),('otr_corner_lid_ctrl'),('lwr_lid_01_ctrl'),('lwr_lid_02_ctrl'),('lwr_lid_03_ctrl')]
for each in list:
cmds.setAttr(each + '.overrideEnabled' ,True)
cmds.setAttr(each + '.overrideColor' ,4)
cmds.setAttr(each + ".visibility" ,keyable = False, cb = False, lock = True)
cmds.setAttr(each + ".scaleX" ,keyable = False, cb = False, lock = True)
cmds.setAttr(each + ".scaleY" ,keyable = False, cb = False, lock = True)
cmds.setAttr(each + ".scaleZ" ,keyable = False, cb = False, lock = True)
cmds.setAttr(each + ".rotateX" ,keyable = False, cb = False, lock = True)
cmds.setAttr(each + ".rotateY" ,keyable = False, cb = False, lock = True)
cmds.setAttr(each + ".rotateZ" ,keyable = False, cb = False, lock = True)
cmds.addAttr('upr_lid_02_ctrl',sn='blink', min = 0, max=1 ,k=1)
cmds.addAttr('upr_lid_02_ctrl',sn='blinkHeight', min = 0, max=1 ,k=1)
cmds.shadingNode('condition',n = 'upr_lid_blink_cond',asUtility=1)
cmds.shadingNode('condition',n = 'lwr_lid_blink_cond',asUtility=1)
cmds.shadingNode('reverse',n = 'upr_lid_blink_rev',asUtility=1)
list = [('upr_lid_02_ctrl.blink','lwr_lid_blink_cond.colorIfFalseR'),('upr_lid_02_ctrl.blinkHeight','lwr_lid_blink_cond.colorIfTrueR'),('upr_lid_02_ctrl.blinkHeight','lwr_lid_blink_cond.firstTerm'),('upr_lid_02_ctrl.blink','lwr_lid_blink_cond.secondTerm'),('upr_lid_02_ctrl.blinkHeight','upr_lid_blink_rev.inputX'),('upr_lid_02_ctrl.blink','upr_lid_blink_cond.colorIfFalseR'),('upr_lid_blink_rev.outputX','upr_lid_blink_cond.colorIfTrueR'),('upr_lid_02_ctrl.blink','upr_lid_blink_cond.secondTerm'),('upr_lid_blink_rev.outputX','upr_lid_blink_cond.firstTerm'),('lwr_lid_blink_cond.outColorR','Lower_lid_blend.Lower_lid_close_BS'),('upr_lid_blink_cond.outColorR','upper.upper_lid_close_BS')]
for each in list:
cmds.connectAttr(each[0],each[1])
cmds.setAttr('lwr_lid_blink_cond.operation',4)
cmds.setAttr('upr_lid_blink_cond.operation',4)
cmds.setAttr('upr_lid_02_ctrl.blinkHeight',0.5)
locLowerSel = cmds.ls("lowerLidLoc_*",fl = True)
locLowerSelList = locLowerSel[::2]
cmds.group(n='lowerLidLoc_grp',em = True)
cmds.parent(locLowerSelList,'lowerLidLoc_grp')
locUpperSel = cmds.ls("upperLidLoc_*",fl = True)
locUpperSelList = locUpperSel[::2]
cmds.group(n='upperLidLoc_grp',em = True)
cmds.parent(locUpperSelList,'upperLidLoc_grp')
jntUpperSel = cmds.ls("eyelid_joint_upper_parent_*",fl = True)
jntUpperSelList = jntUpperSel[::2]
cmds.group(n='upperLidJnt_grp',em = True)
cmds.parent(jntUpperSelList,'upperLidJnt_grp')
jntLowerSel = cmds.ls("eyelid_joint_lower_parent_*",fl = True)
jntLowerSelList = jntLowerSel[::2]
cmds.group(n='lowerLidJnt_grp',em = True)
cmds.parent(jntLowerSelList,'lowerLidJnt_grp')
crvJntLowerSel = cmds.ls("Lower_lid_crv_jnt*",fl = True)
crvJntLowerSelList = crvJntLowerSel[::2]
cmds.group(n='lowerLidCrvJnt_grp',em = True)
cmds.parent(crvJntLowerSelList,'lowerLidCrvJnt_grp')
crvJntUpperSel = cmds.ls("upper_lid_crv_jnt*",fl = True)
crvJntUpperSelList = crvJntUpperSel[::2]
cmds.group(n='upperLidCrvJnt_grp',em = True)
cmds.parent(crvJntUpperSelList,'upperLidCrvJnt_grp')
list = [('lower_lid_crv_grp'),('upper_lid_crv_grp'),('lid_crv_grp'),('lid_ctrl_grp'),('lid_jnt_grp'),('lid_loc_grp'),('eyelid_grp')]
for each in list:
cmds.group(n=each,em = True)
list = [('upper_lid_crv','upper_lid_crv_grp'),('upper_lid_skin','upper_lid_crv_grp'),('upper_lid_BS','upper_lid_crv_grp'),('upper_lid_close_BS','upper_lid_crv_grp'),('upper_lid_skinBaseWire','upper_lid_crv_grp'),('Lower_lid_crv','lower_lid_crv_grp'),('Lower_lid_skin','lower_lid_crv_grp'),('Lower_lid_BS','lower_lid_crv_grp'),('Lower_lid_close_BS','lower_lid_crv_grp'),('Lower_lid_skinBaseWire','lower_lid_crv_grp'),('inr_corner_lid_ctrl_grp','lid_ctrl_grp'),('upr_lid_01_ctrl_grp','lid_ctrl_grp'),('upr_lid_02_ctrl_grp','lid_ctrl_grp'),('upr_lid_03_ctrl_grp','lid_ctrl_grp'),('otr_corner_lid_ctrl_grp','lid_ctrl_grp'),('lwr_lid_01_ctrl_grp','lid_ctrl_grp'),('lwr_lid_02_ctrl_grp','lid_ctrl_grp'),('lwr_lid_03_ctrl_grp','lid_ctrl_grp'),('upperLidJnt_grp','lid_jnt_grp'),('lowerLidJnt_grp','lid_jnt_grp'),('lowerLidCrvJnt_grp','lid_jnt_grp'),('upperLidCrvJnt_grp','lid_jnt_grp'),('lowerLidLoc_grp','lid_loc_grp'),('upperLidLoc_grp','lid_loc_grp'),('eye_display_loc','lid_loc_grp'),('lid_crv_grp','eyelid_grp'),('lid_ctrl_grp','eyelid_grp'),('lid_jnt_grp','eyelid_grp'),('lid_loc_grp','eyelid_grp'),('upper_lid_crv_grp','lid_crv_grp'),('lower_lid_crv_grp','lid_crv_grp')]
for each in list:
cmds.parent(each[0],each[1])
list = [('lid_crv_grp.visibility'),('lowerLidCrvJnt_grp.visibility'),('upperLidCrvJnt_grp.visibility'),('lid_loc_grp.visibility')]
for each in list:
cmds.setAttr(each,0)
print('Eyelid setup has created.')
def rename_left(*args):
existing_group_name = "eyelid_grp"
prefix = "l_"
objects_in_group = cmds.listRelatives(existing_group_name, allDescendents=True, fullPath=True) or []
for obj in objects_in_group:
new_name = prefix + obj.split("|")[-1]
cmds.rename(obj, new_name)
cmds.rename("eyelid_grp","l_eyelid_grp")
list = [('lowerLidPci_*'),('upperLidPci_*'),('upr_lid_blink_rev'),('lwr_lid_blink_cond'),('upr_lid_blink_cond'),('upper_lid_main_blend'),('upper'),('Lower_lid_main_blend'),('Lower_lid_blend')]
for each in list:
search_pattern = cmds.ls(each)
for obj in search_pattern:
new_name = prefix + obj
cmds.rename(obj, new_name)
# Define the target alias name, weight index, and blend shape node
target_alias_name = "l_Lower_lid_close_BS"
weight_index = 0
blend_shape_node = "l_Lower_lid_blend"
# Check if the alias already exists
current_alias_name = cmds.aliasAttr(blend_shape_node + '.w[' + str(weight_index) + ']', query=True)
if current_alias_name is not None:
# Rename the alias
cmds.aliasAttr(target_alias_name, blend_shape_node + '.w[' + str(weight_index) + ']')
print("Target alias renamed to:", target_alias_name)
else:
print("Alias does not exist. Cannot rename.")
# Define the target alias name, weight index, and blend shape node
target_alias_name = "l_upper_lid_close_BS"
weight_index = 0
blend_shape_node = "l_upper"
# Check if the alias already exists
current_alias_name = cmds.aliasAttr(blend_shape_node + '.w[' + str(weight_index) + ']', query=True)
if current_alias_name is not None:
# Rename the alias
cmds.aliasAttr(target_alias_name, blend_shape_node + '.w[' + str(weight_index) + ']')
print("Target alias renamed to:", target_alias_name)
else:
print("Alias does not exist. Cannot rename.")
# Define the target alias name, weight index, and blend shape node
target_alias_name = "l_Lower_lid_BS"
weight_index = 0
blend_shape_node = "l_Lower_lid_main_blend"
# Check if the alias already exists
current_alias_name = cmds.aliasAttr(blend_shape_node + '.w[' + str(weight_index) + ']', query=True)
if current_alias_name is not None:
# Rename the alias
cmds.aliasAttr(target_alias_name, blend_shape_node + '.w[' + str(weight_index) + ']')
print("Target alias renamed to:", target_alias_name)
else:
print("Alias does not exist. Cannot rename.")
# Define the target alias name, weight index, and blend shape node
target_alias_name = "l_upper_lid_BS"
weight_index = 0
blend_shape_node = "l_upper_lid_main_blend"
# Check if the alias already exists
current_alias_name = cmds.aliasAttr(blend_shape_node + '.w[' + str(weight_index) + ']', query=True)
if current_alias_name is not None:
# Rename the alias
cmds.aliasAttr(target_alias_name, blend_shape_node + '.w[' + str(weight_index) + ']')
print("Target alias renamed to:", target_alias_name)
else:
print("Alias does not exist. Cannot rename.")
print('Left eyelid has renamed.')
def rename_right(*args):
existing_group_name = "eyelid_grp"
prefix = "r_"
objects_in_group = cmds.listRelatives(existing_group_name, allDescendents=True, fullPath=True) or []
for obj in objects_in_group:
new_name = prefix + obj.split("|")[-1]
cmds.rename(obj, new_name)
cmds.rename("eyelid_grp","r_eyelid_grp")
list = [('lowerLidPci_*'),('upperLidPci_*'),('upr_lid_blink_rev'),('lwr_lid_blink_cond'),('upr_lid_blink_cond'),('upper_lid_main_blend'),('upper'),('Lower_lid_main_blend'),('Lower_lid_blend')]
for each in list:
search_pattern = cmds.ls(each)
for obj in search_pattern:
new_name = prefix + obj
cmds.rename(obj, new_name)
# Define the target alias name, weight index, and blend shape node
target_alias_name = "r_Lower_lid_close_BS"
weight_index = 0
blend_shape_node = "r_Lower_lid_blend"
# Check if the alias already exists
current_alias_name = cmds.aliasAttr(blend_shape_node + '.w[' + str(weight_index) + ']', query=True)
if current_alias_name is not None:
# Rename the alias
cmds.aliasAttr(target_alias_name, blend_shape_node + '.w[' + str(weight_index) + ']')
print("Target alias renamed to:", target_alias_name)
else:
print("Alias does not exist. Cannot rename.")
# Define the target alias name, weight index, and blend shape node
target_alias_name = "r_upper_lid_close_BS"
weight_index = 0
blend_shape_node = "r_upper"
# Check if the alias already exists
current_alias_name = cmds.aliasAttr(blend_shape_node + '.w[' + str(weight_index) + ']', query=True)
if current_alias_name is not None:
# Rename the alias
cmds.aliasAttr(target_alias_name, blend_shape_node + '.w[' + str(weight_index) + ']')
print("Target alias renamed to:", target_alias_name)
else:
print("Alias does not exist. Cannot rename.")
# Define the target alias name, weight index, and blend shape node
target_alias_name = "r_Lower_lid_BS"
weight_index = 0
blend_shape_node = "r_Lower_lid_main_blend"
# Check if the alias already exists
current_alias_name = cmds.aliasAttr(blend_shape_node + '.w[' + str(weight_index) + ']', query=True)
if current_alias_name is not None:
# Rename the alias
cmds.aliasAttr(target_alias_name, blend_shape_node + '.w[' + str(weight_index) + ']')
print("Target alias renamed to:", target_alias_name)
else:
print("Alias does not exist. Cannot rename.")
# Define the target alias name, weight index, and blend shape node
target_alias_name = "r_upper_lid_BS"
weight_index = 0
blend_shape_node = "r_upper_lid_main_blend"
# Check if the alias already exists
current_alias_name = cmds.aliasAttr(blend_shape_node + '.w[' + str(weight_index) + ']', query=True)
if current_alias_name is not None:
# Rename the alias
cmds.aliasAttr(target_alias_name, blend_shape_node + '.w[' + str(weight_index) + ']')
print("Target alias renamed to:", target_alias_name)
else:
print("Alias does not exist. Cannot rename.")
print('Rigft eyelid has renamed.')
def store_geometry_name(*args):
global geometry_field
selected = cmds.ls(selection=True)
if selected:
geometry_name = selected[0]
cmds.textField(geometry_field, edit=True, text=geometry_name)
print("Geometry Name:", geometry_name)
else:
cmds.textField(geometry_field, edit=True, text="")
print("No geometry selected.")
def store_head_joint_name(*args):
global head_joint_field
selected = cmds.ls(selection=True)
if selected:
head_joint_name = selected[0]
cmds.textField(head_joint_field, edit=True, text=head_joint_name)
print("Head Joint Name:", head_joint_name)
else:
cmds.textField(head_joint_field, edit=True, text="")
print("No head joint selected.")
def store_jaw_joint_name(*args):
global jaw_joint_field
selected = cmds.ls(selection=True)
if selected:
jaw_joint_name = selected[0]
cmds.textField(jaw_joint_field, edit=True, text=jaw_joint_name)
print("Jaw Joint Name:", jaw_joint_name)
else:
cmds.textField(jaw_joint_field, edit=True, text="")
print("No jaw joint selected.")
def create_upper_lip_edge():
selected_edges = cmds.ls(selection=True, flatten=True)
curves = cmds.polyToCurve(form=2, degree=1, ch=False)
curve = cmds.rename('upr_lip_crv')
cmds.rebuildCurve('upr_lip_crv',rpo=0,ch=1,rt=0,end=1,kr=0,kcp=1,kep=1,kt=0,d=3,tol=0.01)
cmds.rename('upr_lip_bound_crv')
cmds.delete('upr_lip_bound_crv', constructionHistory = True)
cmds.duplicate()
cmds.rename('upr_lip_sticky_crv')
cmds.duplicate()
cmds.rename('upr_lip_wire_crv')
head_joint_name = cmds.textField(head_joint_field, query=True, text=True)
blendshape_node = cmds.blendShape('upr_lip_bound_crv','upr_lip_sticky_crv', 'upr_lip_wire_crv', automatic=True)[0]
cmds.rename(blendshape_node, 'upperLip_wire_bShape')
list = [('upr_lip_crv'),('upr_lip_bound_crv'),('upr_lip_sticky_crv')]
for each in list:
cmds.setAttr(each+'.visibility',0)
cmds.setAttr('upperLip_wire_bShape.upr_lip_bound_crv',1)
cmds.setAttr('upperLip_wire_bShape.upr_lip_sticky_crv',1)
cmds.addAttr(head_joint_name, longName="Lf_Sticky_Lips", attributeType='double', minValue=0, maxValue=10, defaultValue=0)
cmds.setAttr(head_joint_name + '.Lf_Sticky_Lips', keyable=True)
cmds.addAttr(head_joint_name, longName="Rt_Sticky_Lips", attributeType='double', minValue=0, maxValue=10, defaultValue=0)
cmds.setAttr(head_joint_name + '.Rt_Sticky_Lips', keyable=True)
def create_lower_lip_edge():
selected_edges = cmds.ls(selection=True, flatten=True)
curves = cmds.polyToCurve(form=2, degree=1, ch=False)
curve = cmds.rename('lwr_lip_crv')
cmds.rebuildCurve('lwr_lip_crv',rpo=0,ch=1,rt=0,end=1,kr=0,kcp=1,kep=1,kt=0,d=3,tol=0.01)
cmds.rename('lwr_lip_bound_crv')
cmds.delete('lwr_lip_bound_crv', constructionHistory = True)
cmds.duplicate()
cmds.rename('lwr_lip_sticky_crv')
cmds.duplicate()
cmds.rename('lwr_lip_wire_crv')
blendshape_node = cmds.blendShape('lwr_lip_bound_crv','lwr_lip_sticky_crv', 'lwr_lip_wire_crv', automatic=True)[0]
cmds.rename(blendshape_node, 'lowerLip_wire_bShape')
list = [('lwr_lip_crv'),('lwr_lip_bound_crv'),('lwr_lip_sticky_crv')]
for each in list:
cmds.setAttr(each+'.visibility',0)
cmds.setAttr('lowerLip_wire_bShape.lwr_lip_bound_crv',1)
cmds.setAttr('lowerLip_wire_bShape.lwr_lip_sticky_crv',1)
def build_lip_setup():
head_joint_name = cmds.textField(head_joint_field, query=True, text=True)
lf_main_attr = (head_joint_name +".Lf_Sticky_Lips")
rt_main_attr = (head_joint_name +".Rt_Sticky_Lips")
upr_cv_count = cmds.getAttr('upr_lip_wire_crv.degree') + cmds.getAttr('upr_lip_wire_crv.spans') - 1
lwr_cv_count = cmds.getAttr('lwr_lip_wire_crv.degree') + cmds.getAttr('lwr_lip_wire_crv.spans') - 1
lip_val_list = [upr_cv_count, lwr_cv_count]
lip_name_list = ['upperLip', 'lowerLip']
name_counter = 0
for each in lip_val_list:
half_val = (each / 2) + 1
total_val = each + 1
div_val = 10.0 / half_val
counter = 0
while(counter<half_val):
lip_sr = cmds.shadingNode( 'setRange', asUtility=True, n='lf_' + lip_name_list[name_counter] + str(counter+1) + '_setRange')
cmds.setAttr(lip_sr + '.oldMaxX', (div_val * (counter+1)))
cmds.setAttr(lip_sr + '.oldMinX', (div_val * counter))
cmds.setAttr(lip_sr + '.maxX', 0)
cmds.setAttr(lip_sr + '.minX', 1)
if counter == (half_val - 1):
cmds.setAttr(lip_sr + '.minX', 0.5)
cmds.connectAttr(lf_main_attr, lip_sr + '.valueX', f=True)
lip_flip_sr = cmds.shadingNode( 'setRange', asUtility=True, n='lf_' + lip_name_list[name_counter] + '_flip' + str(counter+1) + '_setRange')
cmds.setAttr(lip_flip_sr + '.oldMaxX', 1)
if counter == (half_val - 1):
cmds.setAttr(lip_flip_sr + '.oldMaxX', 0.5)
cmds.setAttr(lip_flip_sr + '.oldMinX', 0)
cmds.setAttr(lip_flip_sr + '.maxX', 0)
cmds.setAttr(lip_flip_sr + '.minX', 1)
if counter == (half_val - 1):
cmds.setAttr(lip_flip_sr + '.minX', 0.5)
cmds.connectAttr(lip_sr + '.outValueX', lip_flip_sr + '.valueX', f=True)
if counter == (half_val - 1):
mid_pma = cmds.shadingNode( 'plusMinusAverage', asUtility=True, n='ct_' + lip_name_list[name_counter] + str(counter+1) + '_plusMinusAverage')
cmds.connectAttr(lip_sr + '.outValueX', mid_pma + '.input2D[0].input2Dx', f=True)
cmds.connectAttr(lip_flip_sr + '.outValueX', mid_pma + '.input2D[0].input2Dy', f=True)
else:
cmds.connectAttr(lip_sr + '.outValueX', lip_name_list[name_counter] + '_wire_bShape.inputTarget[0].inputTargetGroup[0].targetWeights[' + str(counter) + ']', f=True)
cmds.connectAttr(lip_flip_sr + '.outValueX', lip_name_list[name_counter] + '_wire_bShape.inputTarget[0].inputTargetGroup[1].targetWeights[' + str(counter) + ']', f=True)
counter = counter + 1
#div_val = 10.0 / 39
counter = half_val - 1
rev_counter = half_val
while(counter<total_val):
lip_sr = cmds.shadingNode( 'setRange', asUtility=True, n='rt_' + lip_name_list[name_counter] + str(counter+1) + '_setRange')
cmds.setAttr(lip_sr + '.oldMaxX', (div_val * rev_counter))
cmds.setAttr(lip_sr + '.oldMinX', (div_val * (rev_counter-1)))
cmds.setAttr(lip_sr + '.maxX', 0)
cmds.setAttr(lip_sr + '.minX', 1)
if counter == (half_val - 1):
cmds.setAttr(lip_sr + '.minX', 0.5)
cmds.connectAttr(rt_main_attr, lip_sr + '.valueX', f=True)
lip_flip_sr = cmds.shadingNode( 'setRange', asUtility=True, n='rt_' + lip_name_list[name_counter] + '_flip' + str(counter+1) + '_setRange')
cmds.setAttr(lip_flip_sr + '.oldMaxX', 1)
if counter == (half_val - 1):
cmds.setAttr(lip_flip_sr + '.oldMaxX', 0.5)
cmds.setAttr(lip_flip_sr + '.oldMinX', 0)
cmds.setAttr(lip_flip_sr + '.maxX', 0)
cmds.setAttr(lip_flip_sr + '.minX', 1)
if counter == (half_val - 1):
cmds.setAttr(lip_flip_sr + '.minX', 0.5)
cmds.connectAttr(lip_sr + '.outValueX', lip_flip_sr + '.valueX', f=True)
if counter == (half_val - 1):
cmds.connectAttr(lip_sr + '.outValueX', mid_pma + '.input2D[1].input2Dx', f=True)
cmds.connectAttr(lip_flip_sr + '.outValueX', mid_pma + '.input2D[1].input2Dy', f=True)
cmds.connectAttr(mid_pma + '.output2Dx', lip_name_list[name_counter] + '_wire_bShape.inputTarget[0].inputTargetGroup[0].targetWeights[' + str(int(counter)) + ']', f=True)
cmds.connectAttr(mid_pma + '.output2Dy', lip_name_list[name_counter] + '_wire_bShape.inputTarget[0].inputTargetGroup[1].targetWeights[' + str(int(counter)) + ']', f=True)
else:
cmds.connectAttr(lip_sr + '.outValueX', lip_name_list[name_counter] + '_wire_bShape.inputTarget[0].inputTargetGroup[0].targetWeights[' + str(int(counter)) + ']', f=True)
cmds.connectAttr(lip_flip_sr + '.outValueX', lip_name_list[name_counter] + '_wire_bShape.inputTarget[0].inputTargetGroup[1].targetWeights[' + str(int(counter)) + ']', f=True)
counter = counter + 1
rev_counter = rev_counter - 1
name_counter = name_counter + 1
upr_lip_wire_crv1 = cmds.duplicate("upr_lip_wire_crv", rr=True, name="upr_lip_wire_crv1")[0]
upr_lip_wire_crv2 = cmds.duplicate("upr_lip_wire_crv", rr=True, name="upr_lip_wire_crv2")[0]
cmds.xform(upr_lip_wire_crv1, cp=True)
cmds.xform(upr_lip_wire_crv2, cp=True)
cmds.setAttr(upr_lip_wire_crv1 + ".translateZ", 0.2)
cmds.setAttr(upr_lip_wire_crv2 + ".translateZ", -0.2)
lofted_surface = cmds.loft(upr_lip_wire_crv2, upr_lip_wire_crv1, ch=True, u=1, c=0, ar=True, d=3, ss=1, rn=0, po=0, rsn=True)[0]
cmds.rename('upperLip_ribbon')
cmds.delete('upr_lip_wire_crv1')
cmds.delete('upr_lip_wire_crv2')
lwr_lip_wire_crv1 = cmds.duplicate("lwr_lip_wire_crv", rr=True, name="lwr_lip_wire_crv1")[0]
lwr_lip_wire_crv2 = cmds.duplicate("lwr_lip_wire_crv", rr=True, name="lwr_lip_wire_crv2")[0]
cmds.xform(lwr_lip_wire_crv1, cp=True)
cmds.xform(lwr_lip_wire_crv2, cp=True)
cmds.setAttr(lwr_lip_wire_crv1 + ".translateZ", 0.2)
cmds.setAttr(lwr_lip_wire_crv2 + ".translateZ", -0.2)
lofted_surface = cmds.loft(lwr_lip_wire_crv2, lwr_lip_wire_crv1, ch=True, u=1, c=0, ar=True, d=3, ss=1, rn=0, po=0, rsn=True)[0]
cmds.rename('lowerLip_ribbon')
cmds.delete('lwr_lip_wire_crv1')
cmds.delete('lwr_lip_wire_crv2')
#upper lip
num_spans_u = cmds.getAttr('upperLip_ribbon.spansU')
for u in range(num_spans_u + 1):
cmds.select('upperLip_ribbon.sf[{}][0]'.format(u), add=True)
cmds.Rivet()
uvPinOut = cmds.ls(sl=True)
uvPin = uvPinOut.pop(0)
pinOutput_objects = cmds.ls("pinOutput*", type="transform")
pinOutput_objects.sort()
index = 1
for obj in pinOutput_objects:
new_name = "uprLipRivet{}".format(index)
cmds.rename(obj, new_name)
index += 1
cmds.select(clear=1)
locators = cmds.ls('uprLipRivet*', type='transform')
joints = []
for locator in locators:
position = cmds.xform(locator, query=True, translation=True, worldSpace=True)
joint = cmds.joint(position=position, name=locator.replace("uprLipRivet", "uprLipJoint"))
joints.append(joint)
joints = cmds.ls('uprLipJoint*', type='joint')
for joint in joints:
parent = cmds.listRelatives(joint, parent=True)
if parent and parent[0] != 'world':
cmds.parent(joint, world=True)
locators = cmds.ls('uprLipRivet*', type='transform')
joint = cmds.ls('uprLipJoint*', type='joint')
for locator, joint in zip(locators, joints):
cmds.parentConstraint(locator, joint, maintainOffset=True)
#lower lip
cmds.select(clear=1)
num_spans_u = cmds.getAttr('lowerLip_ribbon.spansU')
for u in range(num_spans_u + 1):
cmds.select('lowerLip_ribbon.sf[{}][0]'.format(u), add=True)
cmds.Rivet()
uvPinOut = cmds.ls(sl=True)
uvPin = uvPinOut.pop(0)
pinOutput_objects = cmds.ls("pinOutput*", type="transform")
pinOutput_objects.sort()
index = 1
for obj in pinOutput_objects:
new_name = "lwrLipRivet{}".format(index)
cmds.rename(obj, new_name)
index += 1
cmds.select(clear=1)
locators = cmds.ls('lwrLipRivet*', type='transform')
joints = []
for locator in locators:
position = cmds.xform(locator, query=True, translation=True, worldSpace=True)
joint = cmds.joint(position=position, name=locator.replace("lwrLipRivet", "lwrLipJoint"))
joints.append(joint)
joints = cmds.ls('lwrLipJoint*', type='joint')
for joint in joints:
parent = cmds.listRelatives(joint, parent=True)
if parent and parent[0] != 'world':
cmds.parent(joint, world=True)
locators = cmds.ls('lwrLipRivet*', type='transform')
joint = cmds.ls('lwrLipJoint*', type='joint')
for locator, joint in zip(locators, joints):
cmds.parentConstraint(locator, joint, maintainOffset=True)
cmds.select('upperLip_ribbon', replace=True)
cmds.select('upr_lip_wire_crv', add=True)
wire_deformer = cmds.wire('upperLip_ribbon',n='upperLipStickyWire', wire=cmds.ls(selection=True)[1])
cmds.setAttr('upperLipStickyWire.dropoffDistance[0]', 10)
cmds.select('lowerLip_ribbon', replace=True)
cmds.select('lwr_lip_wire_crv', add=True)
wire_deformer = cmds.wire('lowerLip_ribbon',n='lowerLipStickyWire', wire=cmds.ls(selection=True)[1])
cmds.setAttr('lowerLipStickyWire.dropoffDistance[0]', 10)
num_cvs = cmds.getAttr('lwr_lip_bound_crv.degree') + cmds.getAttr('lwr_lip_bound_crv.spans') + 1
num_joints = num_cvs // 4
for i in range(num_joints):
cv_index = i * 4
cv_position = cmds.pointPosition('lwr_lip_bound_crv.cv[{}]'.format(cv_index), world=True)
joint = cmds.joint(position=cv_position, name='lwr_lip_joint_{}'.format(i+1))
last_cv_position = cmds.pointPosition('lwr_lip_bound_crv.cv[{}]'.format(num_cvs - 1), world=True)
last_joint = cmds.joint(position=last_cv_position, name='lwr_lip_joint_{}'.format(num_joints + 1))
joints_to_unparent = cmds.ls('lwr_lip_joint_1', dag=True, type='joint')
for joint in joints_to_unparent:
cmds.parent(joint, world=True)
num_cvs = cmds.getAttr('upr_lip_bound_crv.degree') + cmds.getAttr('upr_lip_bound_crv.spans') + 1
num_joints = num_cvs // 4
for i in range(num_joints):
cv_index = i * 4
cv_position = cmds.pointPosition('upr_lip_bound_crv.cv[{}]'.format(cv_index), world=True)
joint = cmds.joint(position=cv_position, name='upr_lip_joint_{}'.format(i+1))
last_cv_position = cmds.pointPosition('upr_lip_bound_crv.cv[{}]'.format(num_cvs - 1), world=True)
last_joint = cmds.joint(position=last_cv_position, name='upr_lip_joint_{}'.format(num_joints + 1))
joints_to_unparent = cmds.ls('upr_lip_joint_1', dag=True, type='joint')
for joint in joints_to_unparent:
cmds.parent(joint, world=True)
cmds.select(['lwr_lip_joint_1', 'lwr_lip_joint_2', 'lwr_lip_joint_3', 'lwr_lip_joint_4', 'lwr_lip_joint_5', 'lwr_lip_joint_6', 'lwr_lip_joint_7', 'lwr_lip_bound_crv'], replace=True)
cmds.skinCluster(name='lwrLipSkinCrv')
cmds.select(['lwr_lip_joint_1', 'upr_lip_joint_2', 'upr_lip_joint_3', 'upr_lip_joint_4', 'upr_lip_joint_5', 'upr_lip_joint_6', 'lwr_lip_joint_7', 'upr_lip_bound_crv'], replace=True)
cmds.skinCluster(name='uprLipSkinCrv')
cmds.select(['lwr_lip_joint_1', 'lwr_lip_joint_7', 'lwr_lip_sticky_crv'], replace=True)
cmds.skinCluster(name='lwrLipStickySkinCrv')
cmds.select(['lwr_lip_joint_1', 'lwr_lip_joint_7', 'upr_lip_sticky_crv'], replace=True)
cmds.skinCluster(name='lwrLipStickySkinCrv')
def create_circle_controller(name, size=1):
circle = cmds.circle(name=name, ch=False, radius=size)[0]
cmds.setAttr(circle+'.overrideEnabled',1)
cmds.setAttr(circle + ".overrideColor" ,18)
return circle
def create_group(name):
return cmds.group(name=name, empty=True)
joint_names = ['lwr_lip_joint_1', 'lwr_lip_joint_2', 'lwr_lip_joint_3', 'lwr_lip_joint_4', 'lwr_lip_joint_5', 'lwr_lip_joint_6', 'lwr_lip_joint_7', 'upr_lip_joint_2', 'upr_lip_joint_3', 'upr_lip_joint_4', 'upr_lip_joint_5', 'upr_lip_joint_6']
for joint_name in joint_names:
controller_name = joint_name.replace('_joint', '_ctrl')
controller = create_circle_controller(controller_name)
group_name = controller_name.replace('_ctrl', '_grp')
controller_group = create_group(group_name)
cmds.matchTransform(controller_group, joint_name, pos=True)
cmds.parent(controller, controller_group)
list = [('lwr_lip_ctrl_1'),('lwr_lip_ctrl_2'),('lwr_lip_ctrl_3'),('lwr_lip_ctrl_4'),('lwr_lip_ctrl_5'),('lwr_lip_ctrl_6'),('lwr_lip_ctrl_7'),('upr_lip_ctrl_2'),('upr_lip_ctrl_3'),('upr_lip_ctrl_4'),('upr_lip_ctrl_5'),('upr_lip_ctrl_6')]
for each in list:
cmds.setAttr(each+'.translateX',0)
cmds.setAttr(each+'.translateY',0)
cmds.setAttr(each+'.translateZ',0)
controller_names = ['lwr_lip_ctrl_1','lwr_lip_ctrl_2','lwr_lip_ctrl_3','lwr_lip_ctrl_4','lwr_lip_ctrl_5','lwr_lip_ctrl_6','lwr_lip_ctrl_7','upr_lip_ctrl_2','upr_lip_ctrl_3','upr_lip_ctrl_4','upr_lip_ctrl_5','upr_lip_ctrl_6']
joint_names = ['lwr_lip_joint_1','lwr_lip_joint_2','lwr_lip_joint_3','lwr_lip_joint_4','lwr_lip_joint_5','lwr_lip_joint_6','lwr_lip_joint_7','upr_lip_joint_2','upr_lip_joint_3','upr_lip_joint_4','upr_lip_joint_5','upr_lip_joint_6']
for controller, joint in zip(controller_names, joint_names):
cmds.parentConstraint(controller, joint, maintainOffset=True)
list = [('lip_crv_grp'),('lip_ribbon_grp'),('lip_rivet_grp'),('lip_jnt_grp'),('lip_setup_grp')]
for each in list:
cmds.group(n=each,em=True)
list = [('lwr_lip_joint_1'),('lwr_lip_joint_2'),('lwr_lip_joint_3'),('lwr_lip_joint_4'),('lwr_lip_joint_5'),('upr_lip_joint_2'),('upr_lip_joint_3'),('upr_lip_joint_4')]
for each in list:
cmds.parent(each,'lip_jnt_grp')
list = ['upr_lip_wire_crv','lwr_lip_crv','lwr_lip_bound_crv','lwr_lip_sticky_crv','lwr_lip_wire_crv','upr_lip_crv','upr_lip_bound_crv','upr_lip_sticky_crv','upr_lip_wire_crvBaseWire','lwr_lip_wire_crvBaseWire']
for each in list:
cmds.parent(each,'lip_crv_grp')
list = [('lip_crv_grp','lip_setup_grp'),('lip_ribbon_grp','lip_setup_grp'),('lip_rivet_grp','lip_setup_grp'),('lip_jnt_grp','lip_setup_grp')]
for each in list:
cmds.parent(each[0],each[1])
cmds.setAttr('lip_setup_grp.visibility',0)
cmds.parent('upperLip_ribbon','lip_ribbon_grp')
cmds.parent('lowerLip_ribbon','lip_ribbon_grp')
uprLipRivet_objects = cmds.ls('uprLipRivet*', type='transform')
cmds.parent(uprLipRivet_objects,'lip_rivet_grp')
lwrLipRivet_objects = cmds.ls('lwrLipRivet*', type='transform')
cmds.parent(lwrLipRivet_objects,'lip_rivet_grp')
lwrLipJoint_objects = cmds.ls('lwrLipJoint*', type='transform')
cmds.parent(lwrLipJoint_objects,head_joint_name)
uprLipJoint_objects = cmds.ls('uprLipJoint*', type='transform')
cmds.parent(uprLipJoint_objects,head_joint_name)
def build_inner_eyebrow_locator(*args):
selection = cmds.ls(selection=True, flatten=True)
if not selection:
cmds.warning("Please select a vertex.")
return
vertex = selection[0]
vertex_position = cmds.pointPosition(vertex, world=True)
locator = cmds.spaceLocator(n='l_inr_eyebrow_loc')[0]
cmds.move(vertex_position[0], vertex_position[1], vertex_position[2], locator)
def build_middle_eyebrow_locator(*args):
selection = cmds.ls(selection=True, flatten=True)
if not selection:
cmds.warning("Please select a vertex.")
return
vertex = selection[0]
vertex_position = cmds.pointPosition(vertex, world=True)
locator = cmds.spaceLocator(n='l_mid_eyebrow_loc')[0]
cmds.move(vertex_position[0], vertex_position[1], vertex_position[2], locator)
def build_outer_eyebrow_locator(*args):
selection = cmds.ls(selection=True, flatten=True)
if not selection:
cmds.warning("Please select a vertex.")
return
vertex = selection[0]
vertex_position = cmds.pointPosition(vertex, world=True)
locator = cmds.spaceLocator(n='l_otr_eyebrow_loc')[0]
cmds.move(vertex_position[0], vertex_position[1], vertex_position[2], locator)
def build_cheek_locator(*args):
selection = cmds.ls(selection=True, flatten=True)
if not selection:
cmds.warning("Please select a vertex.")
return
vertex = selection[0]
vertex_position = cmds.pointPosition(vertex, world=True)
locator = cmds.spaceLocator(n='l_cheek_loc')[0]
cmds.move(vertex_position[0], vertex_position[1], vertex_position[2], locator)
def build_all(*args):
list = [('l_inr_eyebrow_loc'),('l_mid_eyebrow_loc'),('l_otr_eyebrow_loc'),('l_cheek_loc')]
for each in list:
cmds.duplicate(each)
list = [('l_inner_eyebrow_ctrl','l_inner_eyebrow_ctrl_grp'),('l_middle_eyebrow_ctrl','l_middle_eyebrow_ctrl_grp'),('l_outer_eyebrow_ctrl','l_outer_eyebrow_ctrl_grp'),('l_cheek_ctrl','l_cheek_ctrl_grp'),('r_inner_eyebrow_ctrl','r_inner_eyebrow_ctrl_grp'),('r_middle_eyebrow_ctrl','r_middle_eyebrow_ctrl_grp'),('r_outer_eyebrow_ctrl','r_outer_eyebrow_ctrl_grp'),('r_cheek_ctrl','r_cheek_ctrl_grp')]
for each in list:
circle = cmds.circle(n=each[0])
cmds.group(n=each[1])
list = [('l_inner_eyebrow_ctrl'),('l_middle_eyebrow_ctrl'),('l_outer_eyebrow_ctrl'),('l_cheek_ctrl'),('r_inner_eyebrow_ctrl'),('r_middle_eyebrow_ctrl'),('r_outer_eyebrow_ctrl'),('r_cheek_ctrl')]
for each in list:
cmds.setAttr(each + '.overrideEnabled',1)
cmds.setAttr(each + ".overrideColor" ,18)
list = [('l_inr_eyebrow_loc1','r_inr_eyebrow_loc'),('l_mid_eyebrow_loc1','r_mid_eyebrow_loc'),('l_otr_eyebrow_loc1','r_otr_eyebrow_loc'),('l_cheek_loc1','r_cheek_loc')]
for each in list:
cmds.rename(each[0],each[1])
cmds.group(n='r_eyebrow_cheek_loc_grp',em=True)
list = [('r_inr_eyebrow_loc'),('r_mid_eyebrow_loc'),('r_otr_eyebrow_loc'),('r_cheek_loc')]
for each in list:
cmds.parent(each,'r_eyebrow_cheek_loc_grp')
cmds.setAttr('r_eyebrow_cheek_loc_grp.scaleX',-1)
list = [('l_inr_eyebrow_loc','l_inner_eyebrow_ctrl_grp'),('l_mid_eyebrow_loc','l_middle_eyebrow_ctrl_grp'),('l_otr_eyebrow_loc','l_outer_eyebrow_ctrl_grp'),('l_cheek_loc','l_cheek_ctrl_grp'),('r_inr_eyebrow_loc','r_inner_eyebrow_ctrl_grp'),('r_mid_eyebrow_loc','r_middle_eyebrow_ctrl_grp'),('r_otr_eyebrow_loc','r_outer_eyebrow_ctrl_grp'),('r_cheek_loc','r_cheek_ctrl_grp')]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('l_inr_eyebrow_jnt'),('l_mid_eyebrow_jnt'),('l_otr_eyebrow_jnt'),('l_cheek_jnt'),('r_inr_eyebrow_jnt'),('r_mid_eyebrow_jnt'),('r_otr_eyebrow_jnt'),('r_cheek_jnt')]
for each in list:
cmds.joint(n=each)
list = [('l_inner_eyebrow_ctrl','l_inr_eyebrow_jnt'),('l_middle_eyebrow_ctrl','l_mid_eyebrow_jnt'),('l_outer_eyebrow_ctrl','l_otr_eyebrow_jnt'),('l_cheek_ctrl','l_cheek_jnt'),('r_inner_eyebrow_ctrl','r_inr_eyebrow_jnt'),('r_middle_eyebrow_ctrl','r_mid_eyebrow_jnt'),('r_outer_eyebrow_ctrl','r_otr_eyebrow_jnt'),('r_cheek_ctrl','r_cheek_jnt')]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.makeIdentity( 'l_inr_eyebrow_jnt', apply=True, translate=True, rotate=True )
list = [('l_inner_eyebrow_ctrl','l_inr_eyebrow_jnt'),('l_middle_eyebrow_ctrl','l_mid_eyebrow_jnt'),('l_outer_eyebrow_ctrl','l_otr_eyebrow_jnt'),('l_cheek_ctrl','l_cheek_jnt'),('r_inner_eyebrow_ctrl','r_inr_eyebrow_jnt'),('r_middle_eyebrow_ctrl','r_mid_eyebrow_jnt'),('r_outer_eyebrow_ctrl','r_otr_eyebrow_jnt'),('r_cheek_ctrl','r_cheek_jnt')]
for each in list:
cmds.parentConstraint(each[0],each[1],mo=False)
cmds.group(n='eyebrow_cheek_grp',em=True)
list = [('l_inr_eyebrow_jnt'),('l_mid_eyebrow_jnt'),('l_otr_eyebrow_jnt'),('l_cheek_jnt'),('r_inr_eyebrow_jnt'),('r_mid_eyebrow_jnt'),('r_otr_eyebrow_jnt'),('r_cheek_jnt')]
for each in list:
cmds.parent(each,'eyebrow_cheek_grp')
list = [('l_inr_eyebrow_loc'),('l_mid_eyebrow_loc'),('l_otr_eyebrow_loc'),('l_cheek_loc'),('r_eyebrow_cheek_loc_grp')]
for each in list:
cmds.delete(each)
#------------------------------------------------------------------------------------------------#
# ______________ _____ ___ _____ . _______ _____ #
# | | \ \ / \ / / / \ | \ | | #
# | __________| \ \ / \ / / / \ | \ | | #
# | | \ \ / \ / / / \ | |\ \ | | #
# | |__________ \ \ / . \ / / / . \ | | \ \ | | #
# | | \ \ / / \ \ / / / / \ \ | | \ \ | | #
# | __________| \ \/ / \ \/ / / /___\ \ | | \ \ | | #
# | | \ / \ / / _____ \ | | \ \| | #
# | |__________ \ / \ / / / \ \ | | \ | #
# | | \ / \ / / / \ \ | | \ | #
# |______________| \__/ \__/ /___/ \___\ |___| \_____| #
# #
#------------------------------------------------------------------------------------------------#
ui()
def IKlegSetup(side):
list = ['%s_ik_leg_01_jnt'%(side),'%s_ik_leg_02_jnt'%(side),'%s_ik_leg_03_jnt'%(side),'%s_ik_leg_04_jnt'%(side),'%s_ik_leg_05_jnt'%(side)]
for each in list:
cmds.joint(n=each)
list = [('%s_leg_01_setup'%(side),'%s_ik_leg_01_jnt'%(side)),('%s_leg_02_setup'%(side),'%s_ik_leg_02_jnt'%(side)),('%s_leg_03_setup'%(side),'%s_ik_leg_03_jnt'%(side)),('%s_leg_04_setup'%(side),'%s_ik_leg_04_jnt'%(side)),('%s_leg_05_setup'%(side),'%s_ik_leg_05_jnt'%(side))]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.makeIdentity('%s_ik_leg_01_jnt'%(side), apply=True, translate=True, rotate=True)
cmds.group(n='%s_ik_leg_jnt_grp'%(side),em=True)
cmds.parent('%s_ik_leg_01_jnt'%(side),'%s_ik_leg_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_ik_leg_jnt_grp'%(side))
cmds.ikHandle( n='%s_leg_01_ikh'%(side), sj='%s_ik_leg_01_jnt'%(side), ee='%s_ik_leg_03_jnt'%(side) )
cmds.ikHandle( n='%s_leg_02_ikh'%(side), sj='%s_ik_leg_03_jnt'%(side), ee='%s_ik_leg_04_jnt'%(side) )
cmds.ikHandle( n='%s_leg_03_ikh'%(side), sj='%s_ik_leg_04_jnt'%(side), ee='%s_ik_leg_05_jnt'%(side) )
cmds.parentConstraint('spine_01_bln_jnt','%s_ik_leg_01_jnt'%(side),mo = True)
cmds.curve(d=1, p=[(-5, -5, 5),(-5, 5, 5),(5, 5, 5),(5, -5, 5),(5, -5, -5),(5, 5, -5),(-5, 5, -5),(-5, -5, -5),(-5, -5, 5),(5, -5, 5),(5, 5, 5),(5, 5, -5),(5, -5, -5),(-5, -5, -5),(-5, 5, -5),(-5, 5, 5)])
cmds.rename('%s_ik_leg_ctrl'%(side))
ControllerAttr('%s_ik_leg_ctrl'%(side),False,False,False,False,True,True,True,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='heelLift' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='toeLift' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='ballRoll' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='toeRoll' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='footRock' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='stretch' ,k=1,at = 'bool')
cmds.addAttr('%s_ik_leg_ctrl'%(side), at = 'enum', keyable=True, en = 'string1:string2:', ln='follow')
cmds.addAttr('%s_ik_leg_ctrl'%(side)+'.follow', e=True, en = 'world:pelvis:')
cmds.group(n='%s_ik_leg_ctrl_grp'%(side))
forDel = cmds.parentConstraint('%s_leg_03_setup'%(side),'%s_ik_leg_ctrl_grp'%(side),mo = False)
deleteparent = cmds.delete(forDel)
cmds.parentConstraint('spine_01_bln_jnt','%s_ik_leg_ctrl_grp'%(side),mo = True)
cmds.connectAttr('%s_ik_leg_ctrl.follow'%(side),'%s_ik_leg_ctrl_grp_parentConstraint1.spine_01_bln_jntW0'%(side))
cmds.curve(n='%s_knee_ctrl'%(side),d=1,p=[(0.0, 3.468342867164149, 0.0),(0.0, 3.468342867164149, 0.5221724371834184),(0.0, 4.967930096687364, 0.0),(0.5221724371834184, 3.468342867164149, 0.0),(-0.5221724371834184, 3.468342867164149, 0.0),(0.0, 4.967930096687364, 0.0),(0.0, 3.468342867164149, -0.5221724371834184),(0.0, 3.468342867164149, 0.0),(0.0, -3.468342867164149, 0.0),(-0.5221724371834184, -3.468342867164149, 0.0),(0.0, -4.967930096687364, 0.0),(0.0, -3.468342867164149, -0.5221724371834184),(0.0, -3.468342867164149, 0.5221724371834184),(0.0, -4.967930096687364, 0.0),(0.5221724371834184, -3.468342867164149, 0.0),(0.0, -3.468342867164149, 0.0),(0.0, 0.0, 0.0),(-3.468342867164149, 0.0, 0.0),(-3.468342867164149, 0.5221724371834184, 0.0),(-4.967930096687364, 0.0, 0.0),(-3.468342867164149, 0.0, -0.5221724371834184),(-3.468342867164149, 0.0, 0.5221724371834184),(-4.967930096687364, 0.0, 0.0),(-3.468342867164149, -0.5221724371834184, 0.0),(-3.468342867164149, 0.0, 0.0),(3.468342867164149, 0.0, 0.0),(3.468342867164149, 0.0, -0.5221724371834184),(4.967930096687364, 0.0, 0.0),(3.468342867164149, 0.5221724371834184, 0.0),(3.468342867164149, -0.5221724371834184, 0.0),(4.967930096687364, 0.0, 0.0),(3.468342867164149, 0.0, 0.5221724371834184),(3.468342867164149, 0.0, 0.0),(0.0, 0.0, 0.0),(0.0, 0.0, 3.468342867164149),(0.0, 0.5221724371834184, 3.468342867164149),(0.0, 0.0, 4.967930096687364),(0.5221724371834184, 0.0, 3.468342867164149),(-0.5221724371834184, 0.0, 3.468342867164149),(0.0, 0.0, 4.967930096687364),(0.0, -0.5221724371834184, 3.468342867164149),(0.0, 0.0, 3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.5221724371834184, -3.468342867164149),(0.0, 0.0, -4.967930096687364),(-0.5221724371834184, 0.0, -3.468342867164149),(0.5221724371834184, 0.0, -3.468342867164149),(0.0, 0.0, -4.967930096687364),(0.0, -0.5221724371834184, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149)])
ControllerAttr('%s_knee_ctrl'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,6,True,True,True,False,False,False)
cmds.addAttr('%s_knee_ctrl'%(side),sn='follow', min = 0, max=1 ,k=1)
cmds.setAttr('%s_knee_ctrl.follow'%(side),1)
cmds.group(n='%s_knee_ctrl_grp'%(side))
cmds.parent('%s_knee_ctrl_grp'%(side),'world_ctrl')
forDel = cmds.pointConstraint('%s_knee_setup'%(side),'%s_knee_ctrl_grp'%(side))
cmds.delete(forDel)
cmds.poleVectorConstraint('%s_knee_ctrl'%(side),'%s_leg_01_ikh'%(side))
list = ['%s_knee_ctrl_aim_up_loc'%(side),'%s_knee_ctrl_aim_base_loc'%(side),'%s_knee_ctrl_aim_loc'%(side),'%s_knee_ctrl_aim_world_loc'%(side),'%s_heel_loc'%(side),'%s_roll_out_loc'%(side),'%s_roll_in_loc'%(side),'%s_toe_roll_loc'%(side),'%s_toe_end_loc'%(side),'%s_toe_lift_loc'%(side),'%s_ball_roll_loc'%(side),'%s_leg_ikHandle_loc'%(side),'%s_ball_ikHandle_loc'%(side)]
for each in list:
cmds.spaceLocator(n=each)
cmds.group(n='%s_knee_loc_grp'%(side),em=True)
cmds.scaleConstraint('world_ctrl','%s_knee_loc_grp'%(side),mo=True)
cmds.group(n='%s_foot_ikHandle_grp'%(side),em = True)
cmds.group(n='%s_knee_ctrl_aim_base_loc_grp'%(side),em=True)
list = [('pelvis_setup','%s_knee_ctrl_aim_up_loc'%(side)),('%s_leg_01_setup'%(side),'%s_knee_ctrl_aim_base_loc'%(side)),('%s_leg_03_setup'%(side),'%s_knee_ctrl_aim_loc'%(side))]
for each in list:
forDel = cmds.pointConstraint(each[0],each[1])
cmds.delete(forDel)
list = [('%s_leg_04_setup'%(side),'%s_toe_roll_loc'%(side)),('%s_leg_04_setup'%(side),'%s_ball_roll_loc'%(side)),('%s_knee_setup'%(side),'%s_knee_ctrl_aim_world_loc'%(side)),('%s_leg_heel_setup'%(side),'%s_heel_loc'%(side)),('%s_leg_roll_out_setup'%(side),'%s_roll_out_loc'%(side)),('%s_leg_roll_in_setup'%(side),'%s_roll_in_loc'%(side)),('%s_leg_05_setup'%(side),'%s_toe_end_loc'%(side)),('%s_leg_06_setup'%(side),'%s_toe_lift_loc'%(side)),('%s_leg_03_setup'%(side),'%s_leg_ikHandle_loc'%(side)),('%s_leg_04_setup'%(side),'%s_ball_ikHandle_loc'%(side)),('%s_leg_03_setup'%(side),'%s_foot_ikHandle_grp'%(side))]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('%s_heel_loc'%(side),'%s_toe_roll_loc'%(side)),('%s_heel_loc'%(side),'%s_ball_roll_loc'%(side)),('%s_heel_loc'%(side),'%s_foot_ikHandle_grp'%(side))]
for each in list:
forDel = cmds.orientConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('%s_toe_lift_loc'%(side),'%s_heel_loc'%(side)),('%s_roll_out_loc'%(side),'%s_toe_lift_loc'%(side)),('%s_roll_in_loc'%(side),'%s_roll_in_loc'%(side)),('%s_toe_roll_loc'%(side),'%s_roll_in_loc'%(side)),('%s_ball_roll_loc'%(side),'%s_roll_in_loc'%(side)),('%s_toe_end_loc'%(side),'%s_toe_roll_loc'%(side)),('%s_leg_ikHandle_loc'%(side),'%s_ball_roll_loc'%(side)),('%s_ball_ikHandle_loc'%(side),'%s_ball_roll_loc'%(side)),('%s_leg_02_ikh'%(side),'%s_ball_ikHandle_loc'%(side)),('%s_leg_03_ikh'%(side),'%s_toe_end_loc'%(side)),('%s_leg_01_ikh'%(side),'%s_leg_ikHandle_loc'%(side)),('%s_knee_ctrl_aim_world_loc'%(side),'%s_knee_loc_grp'%(side)),('%s_heel_loc'%(side),'%s_foot_ikHandle_grp'%(side)),('%s_ik_leg_ctrl_grp'%(side),'world_ctrl'),('%s_knee_ctrl_aim_base_loc'%(side),'%s_knee_ctrl_aim_base_loc_grp'%(side)),('%s_knee_ctrl_aim_up_loc'%(side),'%s_knee_loc_grp'%(side)),('%s_knee_ctrl_aim_base_loc_grp'%(side),'%s_knee_loc_grp'%(side)),('%s_knee_ctrl_aim_loc'%(side),'%s_knee_loc_grp'%(side)),('%s_knee_ctrl_aim_up_loc'%(side),'spine_01_bln_jnt')]
for each in list:
cmds.parent(each[0],each[1])
cmds.aimConstraint('%s_knee_ctrl_aim_loc'%(side),'%s_knee_ctrl_aim_base_loc'%(side),wut='object',wuo = '%s_knee_ctrl_aim_up_loc'%(side),mo = False)
list = [('%s_ik_leg_ctrl'%(side),'%s_knee_ctrl_aim_loc'%(side)),('world_ctrl','%s_knee_ctrl_aim_world_loc'%(side)),('%s_knee_ctrl_aim_base_loc'%(side),'%s_knee_ctrl_grp'%(side)),('%s_knee_ctrl_aim_world_loc'%(side),'%s_knee_ctrl_grp'%(side)),('%s_ik_leg_ctrl'%(side),'%s_foot_ikHandle_grp'%(side)),('%s_knee_ctrl_aim_up_loc'%(side),'%s_knee_ctrl_aim_base_loc_grp'%(side))]
for each in list:
cmds.parentConstraint(each[0],each[1],mo=True)
list = [('reverse','%s_knee_follow_rev'%(side)),('multiplyDivide','%s_foot_rock_mult'%(side)),('condition','%s_foot_rock_con'%(side))]
for each in list:
cmds.shadingNode(each[0],n = each[1],asUtility=1)
list = [('%s_knee_ctrl.follow'%(side),'%s_knee_ctrl_grp_parentConstraint1.%s_knee_ctrl_aim_base_locW0'%(side,side)),('%s_knee_ctrl.follow'%(side),'%s_knee_follow_rev.inputX'%(side)),('%s_knee_follow_rev.outputX'%(side),'%s_knee_ctrl_grp_parentConstraint1.%s_knee_ctrl_aim_world_locW1'%(side,side)),('%s_ik_leg_ctrl.heelLift'%(side),'%s_heel_loc.rotateZ'%(side)),('%s_ik_leg_ctrl.toeLift'%(side),'%s_toe_lift_loc.rotateZ'%(side)),('%s_ik_leg_ctrl.ballRoll'%(side),'%s_ball_roll_loc.rotateZ'%(side)),('%s_ik_leg_ctrl.toeRoll'%(side),'%s_toe_roll_loc.rotateZ'%(side)),('%s_ik_leg_ctrl.footRock'%(side),'%s_foot_rock_mult.input1X'%(side)),('%s_ik_leg_ctrl.footRock'%(side),'%s_foot_rock_mult.input1Y'%(side)),('%s_foot_rock_mult.outputX'%(side),'%s_foot_rock_con.colorIfFalse.colorIfFalseG'%(side)),('%s_foot_rock_mult.outputX'%(side),'%s_foot_rock_con.colorIfTrue.colorIfTrueR'%(side)),('%s_foot_rock_con.outColor.outColorR'%(side), '%s_roll_out_loc.rotate.rotateX'%(side)),('%s_foot_rock_con.outColor.outColorG'%(side), '%s_roll_in_loc.rotate.rotateX'%(side)),('%s_ik_leg_ctrl.footRock'%(side), '%s_foot_rock_con.firstTerm'%(side))]
for each in list:
cmds.connectAttr(each[0],each[1])
list = [('%s_foot_rock_mult.input2X'%(side),-1),('%s_foot_rock_con.operation'%(side),2),('%s_foot_rock_con.colorIfFalse.colorIfFalseR'%(side),0),('%s_foot_rock_con.colorIfFalse.colorIfFalseB'%(side),0)]
for each in list:
cmds.setAttr(each[0],each[1])
cmds.scaleConstraint('world_ctrl','%s_foot_ikHandle_grp'%(side),mo=True)
#IKlegPVcrv#
cmds.curve(d=1, p=[(0, 0, 0),(0, 10, 0)])
cmds.rename('%s_knee_direction_crv'%(side))
nameOfLoc = ['%s_knee_01_loc'%(side),'%s_knee_02_loc'%(side)]
for each in nameOfLoc:
cmds.spaceLocator(n=each)
toGetLocPos = [('%s_knee_01_loc.translateY'%(side),0),('%s_knee_02_loc.translateY'%(side),10)]
for each in toGetLocPos:
cmds.setAttr(each[0],each[1])
toConnectLoc = [('%s_knee_01_loc.worldPosition[0]'%(side),'%s_knee_direction_crvShape.controlPoints[0]'%(side)),('%s_knee_02_loc.worldPosition[0]'%(side),'%s_knee_direction_crvShape.controlPoints[4]'%(side))]
for each in toConnectLoc:
cmds.connectAttr(each[0],each[1])
toSetAttr = [('%s_knee_direction_crv.overrideEnabled'%(side),1),('%s_knee_direction_crv.overrideDisplayType'%(side),2),('%s_knee_01_loc.visibility'%(side),0),('%s_knee_02_loc.visibility'%(side),0)]
for each in toSetAttr:
cmds.setAttr(each[0],each[1])
toGetParent = [('%s_knee_ctrl'%(side),'%s_knee_01_loc'%(side)),('%s_ik_leg_02_jnt'%(side),'%s_knee_02_loc'%(side))]
for each in toGetParent:
cmds.parentConstraint(each[0],each[1],mo = False)
cmds.group(n='%s_knee_direction_crv_grp'%(side),em = True)
toGetParent = [('%s_knee_01_loc'%(side),'%s_knee_direction_crv_grp'%(side)),('%s_knee_02_loc'%(side),'%s_knee_direction_crv_grp'%(side)),('%s_knee_direction_crv'%(side),'%s_knee_direction_crv_grp'%(side))]
for each in toGetParent:
cmds.parent(each[0],each[1])
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
IKlegSetup('l')
IKlegSetup('r')
def IKFKlegSetup(side):
nameOfJoint = [('%s_leg_01_bln_jnt'%(side)),('%s_leg_02_bln_jnt'%(side)),('%s_leg_03_bln_jnt'%(side)),('%s_leg_04_bln_jnt'%(side))]
for each in nameOfJoint:
cmds.joint(n=each)
toGetJointPos = [('%s_leg_01_setup'%(side),'%s_leg_01_bln_jnt'%(side)),('%s_leg_02_setup'%(side),'%s_leg_02_bln_jnt'%(side)),('%s_leg_03_setup'%(side),'%s_leg_03_bln_jnt'%(side)),('%s_leg_04_setup'%(side),'%s_leg_04_bln_jnt'%(side))]
for each in toGetJointPos:
forDel = cmds.parentConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
toSetDrawStyle = [('%s_leg_01_bln_jnt.drawStyle'%(side)),('%s_leg_02_bln_jnt.drawStyle'%(side)),('%s_leg_03_bln_jnt.drawStyle'%(side))]
for each in toSetDrawStyle:
cmds.setAttr(each,2)
cmds.parent(w = True)
cmds.makeIdentity( '%s_leg_01_bln_jnt'%(side), apply=True, translate=True, rotate=True )
cmds.curve(d=1, p=[(1.25, 0, 7.5),(-1.25, 0, 7.5),(-1.25, 0, 1.25),(-7.5, 0, 1.25),(-7.5, 0, -1.25),(-1.25, 0, -1.25),(-1.25, 0, -7.5),(1.25, 0 ,-7.5),(1.25, 0, -1.25),(7.5, 0, -1.25),(7.5, 0, 1.25,),(1.25, 0 ,1.25),(1.25, 0, 7.5)])
cmds.rename('%s_leg_ik_fk_switch'%(side))
ControllerAttr('%s_leg_ik_fk_switch'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,15,False,False,False,True,True,True)
cmds.group(n='%s_leg_ik_fk_switch_grp'%(side))
cmds.parent('%s_leg_ik_fk_switch_grp'%(side), 'world_ctrl')
cmds.addAttr('%s_leg_ik_fk_switch'%(side),sn='IKFK', min = 0, max=1 ,k=1)
cmds.addAttr('%s_leg_ik_fk_switch'%(side),sn='bendyVis',at = 'bool',k=1)
parentCon = [('%s_leg_03_bln_jnt'%(side), '%s_leg_ik_fk_switch_grp'%(side)),('%s_fk_leg_01_jnt'%(side),'%s_leg_01_bln_jnt'%(side)),('%s_ik_leg_01_jnt'%(side),'%s_leg_01_bln_jnt'%(side)),('%s_fk_leg_02_jnt'%(side),'%s_leg_02_bln_jnt'%(side)),('%s_ik_leg_02_jnt'%(side),'%s_leg_02_bln_jnt'%(side)),('%s_fk_leg_03_jnt'%(side),'%s_leg_03_bln_jnt'%(side)),('%s_ik_leg_03_jnt'%(side),'%s_leg_03_bln_jnt'%(side)),('%s_fk_leg_04_jnt'%(side),'%s_leg_04_bln_jnt'%(side)),('%s_ik_leg_04_jnt'%(side),'%s_leg_04_bln_jnt'%(side))]
for each in parentCon:
cmds.parentConstraint(each[0],each[1],mo = False)
cmds.shadingNode('reverse',n = '%s_leg_ik_rev'%(side),asUtility=1)
toConnectAttr = [('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_01_bln_jnt_parentConstraint1.%s_fk_leg_01_jntW0'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_02_bln_jnt_parentConstraint1.%s_fk_leg_02_jntW0'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_03_bln_jnt_parentConstraint1.%s_fk_leg_03_jntW0'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_04_bln_jnt_parentConstraint1.%s_fk_leg_04_jntW0'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_ik_rev.inputX'%(side)),('%s_leg_ik_rev.outputX'%(side),'%s_leg_01_bln_jnt_parentConstraint1.%s_ik_leg_01_jntW1'%(side,side)),('%s_leg_ik_rev.outputX'%(side),'%s_leg_02_bln_jnt_parentConstraint1.%s_ik_leg_02_jntW1'%(side,side)),('%s_leg_ik_rev.outputX'%(side),'%s_leg_03_bln_jnt_parentConstraint1.%s_ik_leg_03_jntW1'%(side,side)),('%s_leg_ik_rev.outputX'%(side),'%s_leg_04_bln_jnt_parentConstraint1.%s_ik_leg_04_jntW1'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_fk_leg_01_ctrl_grp.visibility'%(side)),('%s_leg_ik_rev.outputX'%(side),'%s_ik_leg_ctrl_grp.visibility'%(side)),('%s_leg_ik_rev.outputX'%(side),'%s_knee_ctrl_grp.visibility'%(side)),('%s_leg_ik_rev.outputX'%(side),'%s_knee_direction_crv_grp.visibility'%(side))]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
cmds.parent('%s_leg_01_bln_jnt'%(side),'spine_01_bln_jnt')
cmds.parent('%s_leg_04_bln_jnt'%(side),'%s_leg_03_bln_jnt'%(side))
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
IKFKlegSetup('l')
IKFKlegSetup('r')
def StrechyLegSetup(side):
#StrechyLeg#
jointList = ['%s_leg_01_length_jnt'%(side),'%s_leg_02_length_jnt'%(side),'%s_leg_03_length_jnt'%(side)]
for each in jointList:
cmds.joint(n=each)
cmds.group(n='%s_leg_length_jnt_grp'%(side),em=True)
cmds.parent('%s_leg_01_length_jnt'%(side),'%s_leg_length_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_leg_length_jnt_grp'%(side),mo=True)
listOfToGetJointPos = [('%s_leg_01_setup'%(side),'%s_leg_01_length_jnt'%(side)),('%s_leg_02_setup'%(side),'%s_leg_02_length_jnt'%(side)),('%s_leg_03_setup'%(side),'%s_leg_03_length_jnt'%(side))]
for each in listOfToGetJointPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
addNode = [('distanceBetween','%s_upr_leg_dist'%(side)),('distanceBetween','%s_lwr_leg_dist'%(side)),('addDoubleLinear','%s_leg_full_dist'%(side)),('distanceBetween','%s_leg_stretch_dist'%(side)),('condition','%s_leg_stretch_cond'%(side)),('multiplyDivide','%s_leg_stretch_mult'%(side)),('multiplyDivide','%s_upr_leg_strecth_mult'%(side)),('multiplyDivide','%s_lwr_leg_strecth_mult'%(side)),('multiplyDivide','%s_leg_strecth_option_mult'%(side))]
for each in addNode:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
cmds.setAttr('%s_leg_stretch_cond.operation'%(side),2)
cmds.setAttr('%s_leg_stretch_mult.operation'%(side),2)
addLoc = [('%s_leg_start_dist_loc'%(side)),('%s_leg_end_dist_loc'%(side))]
for each in addLoc:
cmds.spaceLocator(n=each)
cmds.group(n='%s_leg_start_dist_loc_grp'%(side),em=True)
cmds.parent('%s_leg_start_dist_loc'%(side),'%s_leg_start_dist_loc_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_leg_start_dist_loc_grp'%(side),mo=True)
toConnectNode = [('%s_leg_01_length_jnt.worldMatrix'%(side),'%s_upr_leg_dist.inMatrix1'%(side)),('%s_leg_02_length_jnt.worldMatrix'%(side),'%s_upr_leg_dist.inMatrix2'%(side)),('%s_leg_02_length_jnt.worldMatrix'%(side),'%s_lwr_leg_dist.inMatrix1'%(side)),('%s_leg_03_length_jnt.worldMatrix'%(side),'%s_lwr_leg_dist.inMatrix2'%(side)),('%s_upr_leg_dist.distance'%(side),'%s_leg_full_dist.input1'%(side)),('%s_lwr_leg_dist.distance'%(side),'%s_leg_full_dist.input2'%(side)),('%s_leg_start_dist_loc.worldMatrix'%(side),'%s_leg_stretch_dist.inMatrix1'%(side)),('%s_leg_end_dist_loc.worldMatrix'%(side),'%s_leg_stretch_dist.inMatrix2'%(side)),('%s_leg_stretch_dist.distance'%(side),'%s_leg_stretch_cond.firstTerm'%(side)),('%s_leg_full_dist.output'%(side),'%s_leg_stretch_cond.secondTerm'%(side)),('%s_leg_stretch_dist.distance'%(side),'%s_leg_stretch_mult.input1X'%(side)),('%s_leg_full_dist.output'%(side),'%s_leg_stretch_mult.input2X'%(side)),('%s_leg_stretch_mult.outputX'%(side),'%s_leg_stretch_cond.colorIfTrue.colorIfTrueR'%(side)),('%s_leg_stretch_cond.outColor.outColorR'%(side),'%s_lwr_leg_strecth_mult.input1X'%(side)),('%s_leg_stretch_cond.outColor.outColorR'%(side),'%s_upr_leg_strecth_mult.input1X'%(side)),('%s_leg_02_setup.translateX'%(side),'%s_upr_leg_strecth_mult.input2X'%(side)),('%s_leg_03_setup.translateX'%(side),'%s_lwr_leg_strecth_mult.input2X'%(side)),('%s_upr_leg_strecth_mult.outputX'%(side),'%s_ik_leg_02_jnt.translateX'%(side)),('%s_lwr_leg_strecth_mult.outputX'%(side),'%s_ik_leg_03_jnt.translateX'%(side)),('%s_ik_leg_ctrl.stretch'%(side),'%s_leg_strecth_option_mult.input1X'%(side)),('%s_leg_strecth_option_mult.outputX'%(side),'%s_leg_stretch_cond.operation'%(side))]
for each in toConnectNode:
cmds.connectAttr(each[0],each[1])
toSetVis = [('%s_leg_start_dist_loc.visibility'%(side)),('%s_leg_end_dist_loc.visibility'%(side))]
for each in toSetVis:
cmds.setAttr(each,0)
toGetLocPos = [('%s_leg_01_setup'%(side),'%s_leg_start_dist_loc'%(side)),('%s_leg_03_setup'%(side),'%s_leg_end_dist_loc'%(side))]
for each in toGetLocPos:
forDel = cmds.pointConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
cmds.parentConstraint('spine_01_bln_jnt','%s_leg_start_dist_loc'%(side),mo=True)
cmds.parent('%s_leg_end_dist_loc'%(side),'%s_ik_leg_ctrl'%(side))
cmds.setAttr('%s_leg_strecth_option_mult.input2X'%(side),2)
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
StrechyLegSetup('l')
StrechyLegSetup('r')
def legJointGroup():
cmds.group(n='l_leg_jnt_grp',em=True)
cmds.group(n='r_leg_jnt_grp',em=True)
cmds.group(n='leg_jnt_grp',em=True)
listOfJnt = [('r_leg_01_bln_jnt','r_leg_jnt_grp'),('l_leg_01_bln_jnt','l_leg_jnt_grp'),('l_leg_jnt_grp','leg_jnt_grp'),('r_leg_jnt_grp','leg_jnt_grp'),('l_fk_leg_01_jnt','l_leg_jnt_grp'),('r_fk_leg_01_jnt','r_leg_jnt_grp'),('l_ik_leg_jnt_grp','l_leg_jnt_grp'),('r_ik_leg_jnt_grp','r_leg_jnt_grp'),('r_leg_length_jnt_grp','r_leg_jnt_grp'),('l_leg_length_jnt_grp','l_leg_jnt_grp')]
for each in listOfJnt:
cmds.parent(each[0],each[1])
legJointGroup()
bendyLeglabel = cmds.checkBox('bendyLeg', q=1,label=1)
bendyLeglabel = cmds.checkBox('bendyLeg', q=1,v=1 )
if bendyLeglabel == 1:
print(buildBendyLeg())
elif bendyLeglabel == 0:
print(noBendyLeg())
def neckSetup():
#############necksetupGorup####################################
createJoint = [('neck_01_jnt'),('neck_02_jnt'),('head_jnt')]
for each in createJoint:
cmds.joint(n=each)
cmds.curve(d=1, p=[(0.0, -4.488101857837618, -9.88295369549351),(1.845970443850507, -2.669731881954042, -9.58101846750181),(3.691940887701014, -0.9395124651324274, -8.94542404852105),(5.5379124591137385, 0.6419036933703752, -7.998451067974649),(3.691940887701014, 0.6419036933703752, -7.998451067974649),(1.845970443850507, 0.6419036933703752, -7.998451067974649),(1.845970443850507, 2.0190845073658616, -6.7732938299919585),(1.845970443850507, 3.143754528061804, -5.312898924323979),(1.845970443850507, 3.97648967007558, -3.6684576756581033),(1.8351740356152193, 4.488101857837621, -1.9084097279272163),(3.606018391581394, 3.9764896700755794, -1.9084097279272163),(5.250459640247268, 3.1437545280618036, -1.9084097279272163),(6.710854545915254, 2.0190845073658608, -1.9084097279272163),(7.936011783897939, 0.641903693370374, -1.9084097279272163),(7.936011783897939, 0.641903693370374, -3.7543801717777243),(7.936011783897939, 0.6419036933703747, -5.600351743190446),(8.882984764444341, -0.9395124651324284, -3.7543801717777243),(9.5185791834251, -2.669731881954045, -1.9084097279272174),(9.820514411416799, -4.488101857837621, -0.062439284076711864),(9.5185791834251, -2.669731881954045, 1.783531159773795),(8.882984764444341, -0.9395124651324317, 3.629501603624302),(7.936011783897939, 0.6419036933703725, 5.475473175037026),(7.936011783897939, 0.641903693370373, 3.6295016036243037),(7.936011783897939, 0.641903693370373, 1.7835311597737955),(6.710854545915254, 2.0190845073658603, 1.7835311597737955),(5.250459640247268, 3.1437545280618036, 1.7835311597737957),(3.606018391581394, 3.976489670075578, 1.7835311597737957),(1.8351740356152193, 4.488101857837621, 1.7835311597737964),(1.845970443850507, 3.976489670075578, 3.5435791075046823),(1.845970443850507, 3.143754528061802, 5.188020356170558),(1.845970443850507, 2.0190845073658594, 6.64841526183854),(1.845970443850507, 0.641903693370372, 7.87357249982123),(3.691940887701014, 0.641903693370372, 7.87357249982123),(5.5379124591137385, 0.641903693370372, 7.87357249982123),(3.691940887701014, -0.9395124651324329, 8.820545480367631),(1.845970443850507, -2.6697318819540463, 9.45613989934839),(0.0, -4.488101857837623, 9.758075127340078),(-1.8459704438505065, -2.6697318819540463, 9.45613989934839),(-3.691940887701013, -0.9395124651324329, 8.820545480367631),(-5.537912459113736, 0.641903693370372, 7.87357249982123),(-3.691940887701013, 0.641903693370372, 7.87357249982123),(-1.8459704438505065, 0.641903693370372, 7.87357249982123),(-1.8459704438505065, 2.0190845073658594, 6.64841526183854),(-1.8459704438505065, 3.143754528061802, 5.188020356170558),(-1.8459704438505065, 3.976489670075578, 3.5435791075046823),(-1.835174035615219, 4.488101857837621, 1.7835311597737964),(-3.6060183915813933, 3.976489670075578, 1.7835311597737957),(-5.250459640247268, 3.1437545280618036, 1.7835311597737957),(-6.710854545915253, 2.0190845073658603, 1.7835311597737955),(-7.936011783897938, 0.641903693370373, 1.7835311597737955),(-7.936011783897938, 0.641903693370373, 3.6295016036243037),(-7.936011783897938, 0.6419036933703725, 5.475473175037026),(-8.882984764444341, -0.9395124651324317, 3.629501603624302),(-9.5185791834251, -2.669731881954045, 1.783531159773795),(-9.820514411416799, -4.488101857837621, -0.062439284076711864),(-9.5185791834251, -2.669731881954045, -1.9084097279272174),(-8.882984764444341, -0.9395124651324284, -3.7543801717777243),(-7.936011783897938, 0.6419036933703747, -5.600351743190446),(-7.936011783897938, 0.641903693370374, -3.7543801717777243),(-7.936011783897938, 0.641903693370374, -1.9084097279272163),(-6.710854545915253, 2.0190845073658608, -1.9084097279272163),(-5.250459640247268, 3.1437545280618036, -1.9084097279272163),(-3.6060183915813933, 3.9764896700755794, -1.9084097279272163),(-1.8459704438505065, 4.488101857837621, -1.8976133196919278),(-1.8459704438505065, 3.97648967007558, -3.6684576756581033),(-1.8459704438505065, 3.143754528061804, -5.312898924323979),(-1.8459704438505065, 2.0190845073658616, -6.7732938299919585),(-1.8459704438505065, 0.6419036933703752, -7.998451067974649),(-3.691940887701013, 0.6419036933703752, -7.998451067974649),(-5.537912459113736, 0.6419036933703752, -7.998451067974649),(-3.691940887701013, -0.9395124651324274, -8.94542404852105),(-1.8459704438505065, -2.669731881954042, -9.58101846750181),(0.0, -4.488101857837618, -9.88295369549351)])
cmds.rename('head_ctrl')
cmds.group(n='head_ctrl_grp')
cmds.curve(d=1,p=[(-7.244192640355521, -0.7593145399841482, 0.0), (-7.244192640355521, 0.7593145399841418, 0.0),(-6.270239916630294, 0.7593145399841422, -3.6201258997795907),(-6.270239916630294, -0.7593145399841478, -3.6201258997795907),(-3.62012589977959, -0.7593145399841466, -6.270239916630294),(-3.620125899779591, 0.7593145399841434, -6.270239916630294),(-3.3720339408922273e-16, 0.759314539984145, -7.244192640355521),(3.3720339408922273e-16, -0.759314539984145, -7.244192640355521),(3.620125899779591, -0.7593145399841434, -6.270239916630294),(3.62012589977959, 0.7593145399841466, -6.270239916630294),(6.270239916630294, 0.7593145399841478, -3.6201258997795907),(6.270239916630294, -0.7593145399841422, -3.6201258997795907),(7.244192640355521, -0.7593145399841418, 0.0),(7.244192640355521, 0.7593145399841482, 0.0),(6.270239916630294, 0.7593145399841478, 3.6201258997795907),(6.270239916630294, -0.7593145399841422, 3.6201258997795907),(3.620125899779591, -0.7593145399841434, 6.270239916630294),(3.62012589977959, 0.7593145399841466, 6.270239916630294),(-3.3720339408922273e-16, 0.759314539984145, 7.244192640355521),(3.3720339408922273e-16, -0.759314539984145, 7.244192640355521),(-3.62012589977959, -0.7593145399841466, 6.270239916630294),(-3.620125899779591, 0.7593145399841434, 6.270239916630294),(-6.270239916630294, 0.7593145399841422, 3.6201258997795907),(-6.270239916630294, -0.7593145399841478, 3.6201258997795907),(-7.244192640355521, -0.7593145399841482, 0.0)])
cmds.rename('neck_ctrl')
cmds.group(n='neck_ctrl_grp')
parentConForPos = [('neck_setup','neck_01_jnt'),('head_setup','head_jnt'),('neck_setup','neck_ctrl_grp'),('head_setup','head_ctrl_grp')]
for each in parentConForPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
pointneckjnt = cmds.pointConstraint('neck_01_jnt','neck_02_jnt',mo = False)
cmds.pointConstraint('head_setup','neck_02_jnt',mo = False)
orientneckjnt = cmds.orientConstraint('neck_setup','neck_02_jnt',mo = False)
cmds.delete(pointneckjnt)
cmds.delete(orientneckjnt)
toParent = [('neck_01_jnt','spine_03_bln_jnt'),('head_ctrl_grp','neck_ctrl')]
for each in toParent:
cmds.parent(each[0],each[1])
cmds.parentConstraint('spine_03_bln_jnt','neck_ctrl_grp',mo=True)
cmds.makeIdentity('neck_01_jnt', apply=True, rotate=True )
toParentCon = [('neck_ctrl','neck_01_jnt'),('head_ctrl','head_jnt')]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo = False)
cmds.shadingNode('multiplyDivide',n = 'neck_mult',asUtility=1)
toSetAttr = [('neck_mult.operation'),('neck_mult.input2X')]
for each in toSetAttr:
cmds.setAttr(each,2)
toConnectAttr = [('head_ctrl.rotateY','neck_mult.input1X'),('neck_mult.outputX','neck_02_jnt.rotateY')]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
toSetControllerAttr = [('neck_ctrl'),('head_ctrl')]
for each in toSetControllerAttr:
cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,17)
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
neckSetup()
def eyeAimSetup():
cmds.curve(d=1,p=[(10, -4, 0),(10, 4, 0),(-10, 4, 0),(-10, -4, 0),(10, -4, 0)])
cmds.rename('eye_aim_ctrl')
cmds.group(n='eye_aim_ctrl_grp')
forDel = cmds.pointConstraint('eye_aim_setup','eye_aim_ctrl_grp')
cmds.delete(forDel)
cmds.setAttr ('eye_aim_ctrl'+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr ('eye_aim_ctrl'+'.rotateX',keyable = False, cb = False, lock = True)
cmds.setAttr ('eye_aim_ctrl'+'.rotateY',keyable = False, cb = False, lock = True)
cmds.setAttr ('eye_aim_ctrl'+'.rotateZ',keyable = False, cb = False, lock = True)
cmds.setAttr ('eye_aim_ctrl'+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr ('eye_aim_ctrl'+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr ('eye_aim_ctrl'+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr ('eye_aim_ctrl'+'.overrideEnabled' ,True)
cmds.setAttr ('eye_aim_ctrl'+'.overrideColor' ,18)
cmds.addAttr ('eye_aim_ctrl', at = 'enum', keyable=True, en = 'string1:string2:', ln='follow')
cmds.addAttr ('eye_aim_ctrl'+'.follow', e=True, en = 'world:head:')
cmds.parentConstraint('head_ctrl','eye_aim_ctrl_grp',mo = True)
cmds.connectAttr('eye_aim_ctrl.follow','eye_aim_ctrl_grp_parentConstraint1.head_ctrlW0')
cmds.parent('eye_aim_ctrl_grp','world_ctrl')
eyeAimSetup()
def eyeSetup(side):
list = [('%s_eye_aim_ctrl'%(side),'%s_eye_aim_ctrl_grp'%(side))]
for each in list:
cmds.curve(d=1,p=[(2.5, 0, 0),(2.5, 1, 0),(1, 2.5, 0),(-1, 2.5, 0),(-2.5, 1, 0),(-2.5, -1, 0),(-1, -2.5, 0),(1, -2.5, 0),(2.5, -1, 0),(2.5, 0, 0)])
cmds.rename(each[0])
cmds.group(n=each[1])
cmds.setAttr (each[0]+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each[0]+'.rotateX',keyable = False, cb = False, lock = True)
cmds.setAttr (each[0]+'.rotateY',keyable = False, cb = False, lock = True)
cmds.setAttr (each[0]+'.rotateZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each[0]+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each[0]+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each[0]+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each[0]+'.overrideEnabled' ,True)
cmds.setAttr (each[0]+'.overrideColor' ,18)
list = [('%s_eye_setup'%(side),'%s_eye_aim_ctrl_grp'%(side))]
for each in list:
forDel = cmds.pointConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('%s_eye_aim_ctrl_grp'%(side),'eye_aim_ctrl')]
for each in list:
cmds.parent(each[0],each[1])
cmds.setAttr('%s_eye_aim_ctrl_grp.translateZ'%(side),0)
cmds.joint(n='%s_eye_aim_jnt'%(side))
cmds.parent(w = True)
cmds.spaceLocator(n='%s_eye_aim_up_loc'%(side))
cmds.group(n='%s_eye_aim_up_loc_grp'%(side))
list = [('%s_eye_setup'%(side),'%s_eye_aim_jnt'%(side)),('%s_eye_setup'%(side),'%s_eye_aim_up_loc_grp'%(side))]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
cmds.setAttr('%s_eye_aim_up_loc.translateY'%(side),10)
cmds.parentConstraint('head_ctrl','%s_eye_aim_up_loc_grp'%(side),mo = True)
cmds.aimConstraint('%s_eye_aim_ctrl'%(side),'%s_eye_aim_jnt'%(side),wut = 'object',wuo = '%s_eye_aim_up_loc'%(side),mo = True)
cmds.parent('%s_eye_aim_jnt'%(side),'head_jnt')
eyeSetup('l')
eyeSetup('r')
def buildSpineSkinJoint():
nameofJoint = [('spine_01_bind_jnt'),('spine_02_bind_jnt'),('spine_03_bind_jnt'),('neck_01_bind_jnt'),('neck_02_bind_jnt'),('head_bind_jnt'),('l_eye_aim_bind_jnt'),('r_eye_aim_bind_jnt')]
for each in nameofJoint:
cmds.joint(n=each)
cmds.parent('r_eye_aim_bind_jnt','head_bind_jnt')
#parentConSpineJointForPosition#
parentConSpineJntForPos = [('spine_01_bln_jnt','spine_01_bind_jnt')],[('spine_02_bln_jnt','spine_02_bind_jnt')],[('spine_03_bln_jnt','spine_03_bind_jnt')],[('neck_01_jnt','neck_01_bind_jnt')],[('neck_02_jnt','neck_02_bind_jnt')],[('head_jnt','head_bind_jnt'),('l_eye_aim_jnt','l_eye_aim_bind_jnt'),('r_eye_aim_jnt','r_eye_aim_bind_jnt')]
for each in parentConSpineJntForPos:
for item in each:
parentConSpineForDel = cmds.parentConstraint(item[0],item[1],mo = False)
cmds.delete(parentConSpineForDel)
cmds.makeIdentity( 'spine_01_bind_jnt', apply=True, translate=True, rotate=True )
#parentRigJoint#
parentSpineConJnt = [('spine_01_bln_jnt','spine_01_bind_jnt')],[('spine_02_bln_jnt','spine_02_bind_jnt')],[('spine_03_bln_jnt','spine_03_bind_jnt')],[('neck_01_jnt','neck_01_bind_jnt')],[('neck_02_jnt','neck_02_bind_jnt')],[('head_jnt','head_bind_jnt'),('l_eye_aim_jnt','l_eye_aim_bind_jnt'),('r_eye_aim_jnt','r_eye_aim_bind_jnt')]
for each in parentSpineConJnt:
for item in each:
cmds.parentConstraint(item[0],item[1],mo = True)
cmds.scaleConstraint(item[0],item[1],mo = True)
buildSpineSkinJoint()
def bendyArmSkinJnt():
def buildLeftRightSkinJointArm(side):
nameOfJnt = [('%s_shoulder_bind_jnt'%(side)),('%s_upper_arm_01_bind_jnt'%(side)),('%s_upper_arm_02_bind_jnt'%(side)),('%s_upper_arm_03_bind_jnt'%(side)),('%s_upper_arm_04_bind_jnt'%(side)),('%s_lower_arm_01_bind_jnt'%(side)),('%s_lower_arm_02_bind_jnt'%(side)),('%s_lower_arm_03_bind_jnt'%(side)),('%s_lower_arm_04_bind_jnt'%(side)),('%s_lower_arm_05_bind_jnt'%(side)),('%s_wrist_bind_jnt'%(side)),('%s_thumb_01_bind_jnt'%(side)),('%s_thumb_02_bind_jnt'%(side)),('%s_thumb_03_bind_jnt'%(side)),('%s_index_01_bind_jnt'%(side)),('%s_index_02_bind_jnt'%(side)),('%s_index_03_bind_jnt'%(side)),('%s_index_04_bind_jnt'%(side)),('%s_middle_01_bind_jnt'%(side)),('%s_middle_02_bind_jnt'%(side)),('%s_middle_03_bind_jnt'%(side)),('%s_middle_04_bind_jnt'%(side)),('%s_ring_01_bind_jnt'%(side)),('%s_ring_02_bind_jnt'%(side)),('%s_ring_03_bind_jnt'%(side)),('%s_ring_04_bind_jnt'%(side)),('%s_pinky_01_bind_jnt'%(side)),('%s_pinky_02_bind_jnt'%(side)),('%s_pinky_03_bind_jnt'%(side)),('%s_pinky_04_bind_jnt'%(side))]
for each in nameOfJnt:
cmds.joint(n=each)
cmds.parent('%s_shoulder_bind_jnt'%(side),'spine_03_bind_jnt')
cmds.parent('%s_index_01_bind_jnt'%(side),'%s_wrist_bind_jnt'%(side))
cmds.parent('%s_middle_01_bind_jnt'%(side),'%s_wrist_bind_jnt'%(side))
cmds.parent('%s_ring_01_bind_jnt'%(side),'%s_wrist_bind_jnt'%(side))
cmds.parent('%s_pinky_01_bind_jnt'%(side),'%s_wrist_bind_jnt'%(side))
#parentConJointForPosition#
parentConlrJntForPos = [('%s_shoulder_jnt'%(side),'%s_shoulder_bind_jnt'%(side))],[('%s_upr_bendy_arm_01_jnt'%(side),'%s_upper_arm_01_bind_jnt'%(side))],[('%s_upr_bendy_arm_02_jnt'%(side),'%s_upper_arm_02_bind_jnt'%(side))],[('%s_upr_bendy_arm_03_jnt'%(side),'%s_upper_arm_03_bind_jnt'%(side))],[('%s_upr_bendy_arm_04_jnt'%(side),'%s_upper_arm_04_bind_jnt'%(side))],[('%s_lwr_bendy_arm_01_jnt'%(side),'%s_lower_arm_01_bind_jnt'%(side))],[('%s_lwr_bendy_arm_02_jnt'%(side),'%s_lower_arm_02_bind_jnt'%(side))],[('%s_lwr_bendy_arm_03_jnt'%(side),'%s_lower_arm_03_bind_jnt'%(side))],[('%s_lwr_bendy_arm_04_jnt'%(side),'%s_lower_arm_04_bind_jnt'%(side))],[('%s_lwr_bendy_arm_05_jnt'%(side),'%s_lower_arm_05_bind_jnt'%(side))],[('%s_arm_03_bln_jnt'%(side),'%s_wrist_bind_jnt'%(side))],[('%s_thumb_01_jnt'%(side),'%s_thumb_01_bind_jnt'%(side))],[('%s_thumb_02_jnt'%(side),'%s_thumb_02_bind_jnt'%(side))],[('%s_thumb_03_jnt'%(side),'%s_thumb_03_bind_jnt'%(side))],[('%s_index_01_jnt'%(side),'%s_index_01_bind_jnt'%(side))],[('%s_index_02_jnt'%(side),'%s_index_02_bind_jnt'%(side))],[('%s_index_03_jnt'%(side),'%s_index_03_bind_jnt'%(side))],[('%s_index_04_jnt'%(side),'%s_index_04_bind_jnt'%(side))],[('%s_middle_01_jnt'%(side),'%s_middle_01_bind_jnt'%(side))],[('%s_middle_02_jnt'%(side),'%s_middle_02_bind_jnt'%(side))],[('%s_middle_03_jnt'%(side),'%s_middle_03_bind_jnt'%(side))],[('%s_middle_04_jnt'%(side),'%s_middle_04_bind_jnt'%(side))],[('%s_ring_01_jnt'%(side),'%s_ring_01_bind_jnt'%(side))],[('%s_ring_02_jnt'%(side),'%s_ring_02_bind_jnt'%(side))],[('%s_ring_03_jnt'%(side),'%s_ring_03_bind_jnt'%(side))],[('%s_ring_04_jnt'%(side),'%s_ring_04_bind_jnt'%(side))],[('%s_pinky_01_jnt'%(side),'%s_pinky_01_bind_jnt'%(side))],[('%s_pinky_02_jnt'%(side),'%s_pinky_02_bind_jnt'%(side))],[('%s_pinky_03_jnt'%(side),'%s_pinky_03_bind_jnt'%(side))],[('%s_pinky_04_jnt'%(side),'%s_pinky_04_bind_jnt'%(side))]
for each in parentConlrJntForPos:
for item in each:
parentConForDel = cmds.parentConstraint(item[0],item[1],mo = False)
cmds.delete(parentConForDel)
#freezeRigJoint#
cmds.makeIdentity('%s_shoulder_bind_jnt'%(side),apply=True, translate=True, rotate=True)
#parentRigJoint#
parentlrConJnt = [('%s_shoulder_jnt'%(side),'%s_shoulder_bind_jnt'%(side))],[('%s_upr_bendy_arm_01_jnt'%(side),'%s_upper_arm_01_bind_jnt'%(side))],[('%s_upr_bendy_arm_02_jnt'%(side),'%s_upper_arm_02_bind_jnt'%(side))],[('%s_upr_bendy_arm_03_jnt'%(side),'%s_upper_arm_03_bind_jnt'%(side))],[('%s_upr_bendy_arm_04_jnt'%(side),'%s_upper_arm_04_bind_jnt'%(side))],[('%s_lwr_bendy_arm_01_jnt'%(side),'%s_lower_arm_01_bind_jnt'%(side))],[('%s_lwr_bendy_arm_02_jnt'%(side),'%s_lower_arm_02_bind_jnt'%(side))],[('%s_lwr_bendy_arm_03_jnt'%(side),'%s_lower_arm_03_bind_jnt'%(side))],[('%s_lwr_bendy_arm_04_jnt'%(side),'%s_lower_arm_04_bind_jnt'%(side))],[('%s_lwr_bendy_arm_05_jnt'%(side),'%s_lower_arm_05_bind_jnt'%(side))],[('%s_arm_03_bln_jnt'%(side),'%s_wrist_bind_jnt'%(side))],[('%s_thumb_01_jnt'%(side),'%s_thumb_01_bind_jnt'%(side))],[('%s_thumb_02_jnt'%(side),'%s_thumb_02_bind_jnt'%(side))],[('%s_thumb_03_jnt'%(side),'%s_thumb_03_bind_jnt'%(side))],[('%s_index_01_jnt'%(side),'%s_index_01_bind_jnt'%(side))],[('%s_index_02_jnt'%(side),'%s_index_02_bind_jnt'%(side))],[('%s_index_03_jnt'%(side),'%s_index_03_bind_jnt'%(side))],[('%s_index_04_jnt'%(side),'%s_index_04_bind_jnt'%(side))],[('%s_middle_01_jnt'%(side),'%s_middle_01_bind_jnt'%(side))],[('%s_middle_02_jnt'%(side),'%s_middle_02_bind_jnt'%(side))],[('%s_middle_03_jnt'%(side),'%s_middle_03_bind_jnt'%(side))],[('%s_middle_04_jnt'%(side),'%s_middle_04_bind_jnt'%(side))],[('%s_ring_01_jnt'%(side),'%s_ring_01_bind_jnt'%(side))],[('%s_ring_02_jnt'%(side),'%s_ring_02_bind_jnt'%(side))],[('%s_ring_03_jnt'%(side),'%s_ring_03_bind_jnt'%(side))],[('%s_ring_04_jnt'%(side),'%s_ring_04_bind_jnt'%(side))],[('%s_pinky_01_jnt'%(side),'%s_pinky_01_bind_jnt'%(side))],[('%s_pinky_02_jnt'%(side),'%s_pinky_02_bind_jnt'%(side))],[('%s_pinky_03_jnt'%(side),'%s_pinky_03_bind_jnt'%(side))],[('%s_pinky_04_jnt'%(side),'%s_pinky_04_bind_jnt'%(side))]
for each in parentlrConJnt:
for item in each:
cmds.parentConstraint(item[0],item[1],mo = True)
scalelrConJnt = [('world_ctrl','%s_shoulder_bind_jnt'%(side))],[('world_ctrl','%s_upper_arm_01_bind_jnt'%(side))],[('world_ctrl','%s_upper_arm_02_bind_jnt'%(side))],[('world_ctrl','%s_upper_arm_03_bind_jnt'%(side))],[('world_ctrl','%s_upper_arm_04_bind_jnt'%(side))],[('world_ctrl','%s_lower_arm_01_bind_jnt'%(side))],[('world_ctrl','%s_lower_arm_02_bind_jnt'%(side))],[('world_ctrl','%s_lower_arm_03_bind_jnt'%(side))],[('world_ctrl','%s_lower_arm_04_bind_jnt'%(side))],[('world_ctrl','%s_lower_arm_05_bind_jnt'%(side))],[('world_ctrl','%s_wrist_bind_jnt'%(side))],[('world_ctrl','%s_thumb_01_bind_jnt'%(side))],[('world_ctrl','%s_thumb_02_bind_jnt'%(side))],[('world_ctrl','%s_thumb_03_bind_jnt'%(side))],[('world_ctrl','%s_index_01_bind_jnt'%(side))],[('world_ctrl','%s_index_02_bind_jnt'%(side))],[('world_ctrl','%s_index_03_bind_jnt'%(side))],[('world_ctrl','%s_index_04_bind_jnt'%(side))],[('world_ctrl','%s_middle_01_bind_jnt'%(side))],[('world_ctrl','%s_middle_02_bind_jnt'%(side))],[('world_ctrl','%s_middle_03_bind_jnt'%(side))],[('world_ctrl','%s_middle_04_bind_jnt'%(side))],[('world_ctrl','%s_ring_01_bind_jnt'%(side))],[('world_ctrl','%s_ring_02_bind_jnt'%(side))],[('world_ctrl','%s_ring_03_bind_jnt'%(side))],[('world_ctrl','%s_ring_04_bind_jnt'%(side))],[('world_ctrl','%s_pinky_01_bind_jnt'%(side))],[('world_ctrl','%s_pinky_02_bind_jnt'%(side))],[('world_ctrl','%s_pinky_03_bind_jnt'%(side))],[('world_ctrl','%s_pinky_04_bind_jnt'%(side))]
for each in scalelrConJnt:
for item in each:
cmds.scaleConstraint(item[0],item[1],mo = True)
buildLeftRightSkinJointArm('l')
buildLeftRightSkinJointArm('r')
def noBendyArmSkinJnt():
def buildLeftRightSkinJointWithNoBendyArm(side):
nameOfJnt = [('%s_shoulder_bind_jnt'%(side)),('%s_arm_01_bind_jnt'%(side)),('%s_arm_02_bind_jnt'%(side)),('%s_arm_03_bind_jnt'%(side)),('%s_thumb_01_bind_jnt'%(side)),('%s_thumb_02_bind_jnt'%(side)),('%s_thumb_03_bind_jnt'%(side)),('%s_index_01_bind_jnt'%(side)),('%s_index_02_bind_jnt'%(side)),('%s_index_03_bind_jnt'%(side)),('%s_index_04_bind_jnt'%(side)),('%s_middle_01_bind_jnt'%(side)),('%s_middle_02_bind_jnt'%(side)),('%s_middle_03_bind_jnt'%(side)),('%s_middle_04_bind_jnt'%(side)),('%s_ring_01_bind_jnt'%(side)),('%s_ring_02_bind_jnt'%(side)),('%s_ring_03_bind_jnt'%(side)),('%s_ring_04_bind_jnt'%(side)),('%s_pinky_01_bind_jnt'%(side)),('%s_pinky_02_bind_jnt'%(side)),('%s_pinky_03_bind_jnt'%(side)),('%s_pinky_04_bind_jnt'%(side))]
for each in nameOfJnt:
cmds.joint(n=each)
cmds.parent('%s_shoulder_bind_jnt'%(side),'spine_03_bind_jnt')
cmds.parent('%s_index_01_bind_jnt'%(side),'%s_arm_03_bind_jnt'%(side))
cmds.parent('%s_middle_01_bind_jnt'%(side),'%s_arm_03_bind_jnt'%(side))
cmds.parent('%s_ring_01_bind_jnt'%(side),'%s_arm_03_bind_jnt'%(side))
cmds.parent('%s_pinky_01_bind_jnt'%(side),'%s_arm_03_bind_jnt'%(side))
#parentConJointForPosition#
parentConlrJntForPos = [('%s_shoulder_jnt'%(side),'%s_shoulder_bind_jnt'%(side))],[('%s_arm_01_bln_jnt'%(side),'%s_arm_01_bind_jnt'%(side))],[('%s_arm_02_bln_jnt'%(side),'%s_arm_02_bind_jnt'%(side))],[('%s_arm_03_bln_jnt'%(side),'%s_arm_03_bind_jnt'%(side))],[('%s_thumb_01_jnt'%(side),'%s_thumb_01_bind_jnt'%(side))],[('%s_thumb_02_jnt'%(side),'%s_thumb_02_bind_jnt'%(side))],[('%s_thumb_03_jnt'%(side),'%s_thumb_03_bind_jnt'%(side))],[('%s_index_01_jnt'%(side),'%s_index_01_bind_jnt'%(side))],[('%s_index_02_jnt'%(side),'%s_index_02_bind_jnt'%(side))],[('%s_index_03_jnt'%(side),'%s_index_03_bind_jnt'%(side))],[('%s_index_04_jnt'%(side),'%s_index_04_bind_jnt'%(side))],[('%s_middle_01_jnt'%(side),'%s_middle_01_bind_jnt'%(side))],[('%s_middle_02_jnt'%(side),'%s_middle_02_bind_jnt'%(side))],[('%s_middle_03_jnt'%(side),'%s_middle_03_bind_jnt'%(side))],[('%s_middle_04_jnt'%(side),'%s_middle_04_bind_jnt'%(side))],[('%s_ring_01_jnt'%(side),'%s_ring_01_bind_jnt'%(side))],[('%s_ring_02_jnt'%(side),'%s_ring_02_bind_jnt'%(side))],[('%s_ring_03_jnt'%(side),'%s_ring_03_bind_jnt'%(side))],[('%s_ring_04_jnt'%(side),'%s_ring_04_bind_jnt'%(side))],[('%s_pinky_01_jnt'%(side),'%s_pinky_01_bind_jnt'%(side))],[('%s_pinky_02_jnt'%(side),'%s_pinky_02_bind_jnt'%(side))],[('%s_pinky_03_jnt'%(side),'%s_pinky_03_bind_jnt'%(side))],[('%s_pinky_04_jnt'%(side),'%s_pinky_04_bind_jnt'%(side))]
for each in parentConlrJntForPos:
for item in each:
parentConForDel = cmds.parentConstraint(item[0],item[1],mo = False)
cmds.delete(parentConForDel)
#freezeRigJoint#
cmds.makeIdentity('%s_shoulder_bind_jnt'%(side),apply=True, translate=True, rotate=True)
#parentRigJoint#
parentlrConJnt = [('%s_shoulder_jnt'%(side),'%s_shoulder_bind_jnt'%(side))],[('%s_arm_01_bln_jnt'%(side),'%s_arm_01_bind_jnt'%(side))],[('%s_arm_02_bln_jnt'%(side),'%s_arm_02_bind_jnt'%(side))],[('%s_arm_03_bln_jnt'%(side),'%s_arm_03_bind_jnt'%(side))],[('%s_thumb_01_jnt'%(side),'%s_thumb_01_bind_jnt'%(side))],[('%s_thumb_02_jnt'%(side),'%s_thumb_02_bind_jnt'%(side))],[('%s_thumb_03_jnt'%(side),'%s_thumb_03_bind_jnt'%(side))],[('%s_index_01_jnt'%(side),'%s_index_01_bind_jnt'%(side))],[('%s_index_02_jnt'%(side),'%s_index_02_bind_jnt'%(side))],[('%s_index_03_jnt'%(side),'%s_index_03_bind_jnt'%(side))],[('%s_index_04_jnt'%(side),'%s_index_04_bind_jnt'%(side))],[('%s_middle_01_jnt'%(side),'%s_middle_01_bind_jnt'%(side))],[('%s_middle_02_jnt'%(side),'%s_middle_02_bind_jnt'%(side))],[('%s_middle_03_jnt'%(side),'%s_middle_03_bind_jnt'%(side))],[('%s_middle_04_jnt'%(side),'%s_middle_04_bind_jnt'%(side))],[('%s_ring_01_jnt'%(side),'%s_ring_01_bind_jnt'%(side))],[('%s_ring_02_jnt'%(side),'%s_ring_02_bind_jnt'%(side))],[('%s_ring_03_jnt'%(side),'%s_ring_03_bind_jnt'%(side))],[('%s_ring_04_jnt'%(side),'%s_ring_04_bind_jnt'%(side))],[('%s_pinky_01_jnt'%(side),'%s_pinky_01_bind_jnt'%(side))],[('%s_pinky_02_jnt'%(side),'%s_pinky_02_bind_jnt'%(side))],[('%s_pinky_03_jnt'%(side),'%s_pinky_03_bind_jnt'%(side))],[('%s_pinky_04_jnt'%(side),'%s_pinky_04_bind_jnt'%(side))]
for each in parentlrConJnt:
for item in each:
cmds.parentConstraint(item[0],item[1],mo = True)
scalelrConJnt = [('world_ctrl','%s_shoulder_bind_jnt'%(side))],[('world_ctrl','%s_arm_01_bind_jnt'%(side))],[('world_ctrl','%s_arm_02_bind_jnt'%(side))],[('world_ctrl','%s_arm_03_bind_jnt'%(side))],[('world_ctrl','%s_thumb_01_bind_jnt'%(side))],[('world_ctrl','%s_thumb_02_bind_jnt'%(side))],[('world_ctrl','%s_thumb_03_bind_jnt'%(side))],[('world_ctrl','%s_index_01_bind_jnt'%(side))],[('world_ctrl','%s_index_02_bind_jnt'%(side))],[('world_ctrl','%s_index_03_bind_jnt'%(side))],[('world_ctrl','%s_index_04_bind_jnt'%(side))],[('world_ctrl','%s_middle_01_bind_jnt'%(side))],[('world_ctrl','%s_middle_02_bind_jnt'%(side))],[('world_ctrl','%s_middle_03_bind_jnt'%(side))],[('world_ctrl','%s_middle_04_bind_jnt'%(side))],[('world_ctrl','%s_ring_01_bind_jnt'%(side))],[('world_ctrl','%s_ring_02_bind_jnt'%(side))],[('world_ctrl','%s_ring_03_bind_jnt'%(side))],[('world_ctrl','%s_ring_04_bind_jnt'%(side))],[('world_ctrl','%s_pinky_01_bind_jnt'%(side))],[('world_ctrl','%s_pinky_02_bind_jnt'%(side))],[('world_ctrl','%s_pinky_03_bind_jnt'%(side))],[('world_ctrl','%s_pinky_04_bind_jnt'%(side))]
for each in scalelrConJnt:
for item in each:
cmds.scaleConstraint(item[0],item[1],mo = True)
buildLeftRightSkinJointWithNoBendyArm('l')
buildLeftRightSkinJointWithNoBendyArm('r')
bendyArmlabel = cmds.checkBox('bendyArm', q=1,label=1)
bendyArmlabel = cmds.checkBox('bendyArm', q=1,v=1 )
if bendyArmlabel == 1:
print(bendyArmSkinJnt())
elif bendyArmlabel == 0:
print(noBendyArmSkinJnt())
def bendyLegSkinJnt():
def buildLeftRightLegSkinJoint(side):
nameOfJnt = [('%s_upr_leg_01_bind_jnt'%(side)),('%s_upr_leg_02_bind_jnt'%(side)),('%s_upr_leg_03_bind_jnt'%(side)),('%s_upr_leg_04_bind_jnt'%(side)),('%s_lwr_leg_01_bind_jnt'%(side)),('%s_lwr_leg_02_bind_jnt'%(side)),('%s_lwr_leg_03_bind_jnt'%(side)),('%s_lwr_leg_04_bind_jnt'%(side)),('%s_ankle_bind_jnt'%(side)),('%s_leg_ball_bind_jnt'%(side))]
for each in nameOfJnt:
cmds.joint(n=each)
cmds.parent('%s_upr_leg_01_bind_jnt'%(side),'spine_01_bind_jnt')
#parentConJointForPosition#
parentConlrJntForPos = [('%s_upr_bendy_leg_01_jnt'%(side),'%s_upr_leg_01_bind_jnt'%(side))],[('%s_upr_bendy_leg_02_jnt'%(side),'%s_upr_leg_02_bind_jnt'%(side))],[('%s_upr_bendy_leg_03_jnt'%(side),'%s_upr_leg_03_bind_jnt'%(side))],[('%s_upr_bendy_leg_04_jnt'%(side),'%s_upr_leg_04_bind_jnt'%(side))],[('%s_lwr_bendy_leg_01_jnt'%(side),'%s_lwr_leg_01_bind_jnt'%(side))],[('%s_lwr_bendy_leg_02_jnt'%(side),'%s_lwr_leg_02_bind_jnt'%(side))],[('%s_lwr_bendy_leg_03_jnt'%(side),'%s_lwr_leg_03_bind_jnt'%(side))],[('%s_lwr_bendy_leg_04_jnt'%(side),'%s_lwr_leg_04_bind_jnt'%(side))],[('%s_leg_03_bln_jnt'%(side),'%s_ankle_bind_jnt'%(side))],[('%s_leg_04_bln_jnt'%(side),'%s_leg_ball_bind_jnt'%(side))]
for each in parentConlrJntForPos:
for item in each:
parentConForDel = cmds.parentConstraint(item[0],item[1],mo = False)
cmds.delete(parentConForDel)
#freezeRigJoint#
cmds.makeIdentity('%s_upr_leg_01_bind_jnt'%(side),apply=True, translate=True, rotate=True)
#parentRigJoint#
parentlrConJnt = [('%s_upr_bendy_leg_01_jnt'%(side),'%s_upr_leg_01_bind_jnt'%(side))],[('%s_upr_bendy_leg_02_jnt'%(side),'%s_upr_leg_02_bind_jnt'%(side))],[('%s_upr_bendy_leg_03_jnt'%(side),'%s_upr_leg_03_bind_jnt'%(side))],[('%s_upr_bendy_leg_04_jnt'%(side),'%s_upr_leg_04_bind_jnt'%(side))],[('%s_lwr_bendy_leg_01_jnt'%(side),'%s_lwr_leg_01_bind_jnt'%(side))],[('%s_lwr_bendy_leg_02_jnt'%(side),'%s_lwr_leg_02_bind_jnt'%(side))],[('%s_lwr_bendy_leg_03_jnt'%(side),'%s_lwr_leg_03_bind_jnt'%(side))],[('%s_lwr_bendy_leg_04_jnt'%(side),'%s_lwr_leg_04_bind_jnt'%(side))],[('%s_leg_03_bln_jnt'%(side),'%s_ankle_bind_jnt'%(side))],[('%s_leg_04_bln_jnt'%(side),'%s_leg_ball_bind_jnt'%(side))]
for each in parentlrConJnt:
for item in each:
cmds.parentConstraint(item[0],item[1],mo = True)
parentlrConJnt = [('world_ctrl','%s_upr_leg_01_bind_jnt'%(side))],[('world_ctrl','%s_upr_leg_02_bind_jnt'%(side))],[('world_ctrl','%s_upr_leg_03_bind_jnt'%(side))],[('world_ctrl','%s_upr_leg_04_bind_jnt'%(side))],[('world_ctrl','%s_lwr_leg_01_bind_jnt'%(side))],[('world_ctrl','%s_lwr_leg_02_bind_jnt'%(side))],[('world_ctrl','%s_lwr_leg_03_bind_jnt'%(side))],[('world_ctrl','%s_lwr_leg_04_bind_jnt'%(side))],[('world_ctrl','%s_ankle_bind_jnt'%(side))],[('world_ctrl','%s_leg_ball_bind_jnt'%(side))]
for each in parentlrConJnt:
for item in each:
cmds.scaleConstraint(item[0],item[1],mo = True)
buildLeftRightLegSkinJoint('l')
buildLeftRightLegSkinJoint('r')
def noBendyLegSkinJnt():
def buildLeftRightSkinJointWithNoBendyLeg(side):
nameOfJnt = [('%s_leg_01_bind_jnt'%(side)),('%s_leg_02_bind_jnt'%(side)),('%s_leg_03_bind_jnt'%(side)),('%s_leg_04_bind_jnt'%(side))]
for each in nameOfJnt:
cmds.joint(n=each)
cmds.parent('%s_leg_01_bind_jnt'%(side),'spine_01_bind_jnt')
#parentConJointForPosition#
parentConlrJntForPos = [('%s_leg_01_bln_jnt'%(side),'%s_leg_01_bind_jnt'%(side))],[('%s_leg_02_bln_jnt'%(side),'%s_leg_02_bind_jnt'%(side))],[('%s_leg_03_bln_jnt'%(side),'%s_leg_03_bind_jnt'%(side))],[('%s_leg_04_bln_jnt'%(side),'%s_leg_04_bind_jnt'%(side))]
for each in parentConlrJntForPos:
for item in each:
parentConForDel = cmds.parentConstraint(item[0],item[1],mo = False)
cmds.delete(parentConForDel)
#freezeRigJoint#
cmds.makeIdentity('%s_leg_01_bind_jnt'%(side),apply=True, translate=True, rotate=True)
#parentRigJoint#
parentlrConJnt = [('%s_leg_01_bln_jnt'%(side),'%s_leg_01_bind_jnt'%(side))],[('%s_leg_02_bln_jnt'%(side),'%s_leg_02_bind_jnt'%(side))],[('%s_leg_03_bln_jnt'%(side),'%s_leg_03_bind_jnt'%(side))],[('%s_leg_04_bln_jnt'%(side),'%s_leg_04_bind_jnt'%(side))]
for each in parentlrConJnt:
for item in each:
cmds.parentConstraint(item[0],item[1],mo = True)
parentlrConJnt = [('world_ctrl','%s_leg_01_bind_jnt'%(side))],[('world_ctrl','%s_leg_02_bind_jnt'%(side))],[('world_ctrl','%s_leg_03_bind_jnt'%(side))],[('world_ctrl','%s_leg_04_bind_jnt'%(side))]
for each in parentlrConJnt:
for item in each:
cmds.scaleConstraint(item[0],item[1],mo = True)
buildLeftRightSkinJointWithNoBendyLeg('l')
buildLeftRightSkinJointWithNoBendyLeg('r')
bendyLeglabel = cmds.checkBox('bendyLeg', q=1,label=1)
bendyLeglabel = cmds.checkBox('bendyLeg', q=1,v=1 )
if bendyLeglabel == 1:
print(bendyLegSkinJnt())
elif bendyLeglabel == 0:
print(noBendyLegSkinJnt())
def groupAll():
createGroup = [('extra'),('rename'),('mesh_grp')]
for each in createGroup:
cmds.group(n=each,em=True)
cmds.setAttr('extra.visibility',0)
cmds.setAttr('world_setup.visibility',0)
cmds.setAttr('jnt_grp.visibility',0)
list = ['leg_bendy_setup_grp','l_upr_leg_bendy_jnt_grp','arm_bendy_setup_grp','r_upr_leg_bendy_jnt_grp','l_lwr_leg_bendy_jnt_grp','r_lwr_leg_bendy_jnt_grp','l_eye_aim_up_loc_grp','r_eye_aim_up_loc_grp']
for each in list:
if cmds.objExists(each):
cmds.parent(each,'extra')
else:
print('')
parentgrp = [('arm_jnt_grp','jnt_grp'),('spine_jnt_grp','jnt_grp'),('leg_jnt_grp','jnt_grp'),('r_fk_arm_01_ctrl_grp','world_ctrl'),('l_fk_arm_01_ctrl_grp','world_ctrl'),('neck_ctrl_grp','world_ctrl'),('spine_01_FK_ctrl_grp','world_ctrl'),('cog_ctrl_grp','world_ctrl'),('world_setup','rename'),('main_ctrl_grp','rename'),('jnt_grp','rename'),('mesh_grp','rename'),('spine_01_bind_jnt','rename'),('extra','rename'),('spine_IK_setup_grp','extra'),('spine_IK_ctrl_grp','world_ctrl'),('l_elbow_direction_crv_grp','main_ctrl_grp'),('r_elbow_direction_crv_grp','main_ctrl_grp'),('l_knee_direction_crv_grp','main_ctrl_grp'),('r_knee_direction_crv_grp','main_ctrl_grp')]
for each in parentgrp:
cmds.parent(each[0],each[1])
parentgroup = cmds.ls('l_elbow_loc_grp','l_upr_arm_bendy_jnt_grp','l_lwr_arm_bendy_jnt_grp','l_arm_start_dist_loc_grp','r_elbow_loc_grp','r_upr_arm_bendy_jnt_grp','r_lwr_arm_bendy_jnt_grp','r_arm_start_dist_loc_grp','l_knee_loc_grp','l_foot_ikHandle_grp','l_leg_start_dist_loc_grp','r_knee_loc_grp','r_foot_ikHandle_grp','r_leg_start_dist_loc_grp')
for each in parentgroup:
cmds.parent(each,'extra')
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
groupAll()
def progressBarWindowClose():
# the command to close the progress bar
cmds.deleteUI('EugenesProgress',window=True)
progressBarWindowClose()
upper_lid_vertex_ids = []
lower_lid_vertex_ids = []
joint_prefix = "eyelid_joint"
center_locator = "eye_display_loc"
def create_display_eye():
selected_objects = cmds.ls(selection=True)
cmds.spaceLocator(n='eye_display_loc')
cmds.polySphere(n='eye_display')
cmds.parent('eye_display','eye_display_loc')
list = [('eye_display' , '.scaleX'),('eye_display' , '.scaleY'),('eye_display' , '.scaleZ')]
for each in list:
cmds.setAttr(each[0] + each[1],0.75)
cmds.spaceLocator(n='eye_aim_up_loc')
cmds.parent('eye_aim_up_loc','eye_display_loc')
cmds.setAttr('eye_aim_up_loc.translateY',2)
cmds.setAttr('eye_aim_up_loc.visibility',0)
obj_center = cmds.xform(selected_objects, query=True, translation=True, worldSpace=True)
cmds.xform(selected_objects, translation=obj_center, worldSpace=True)
locator_translation = cmds.xform('eye_display_loc', query=True, translation=True, worldSpace=True)
if all(value == 0 for value in locator_translation):
forDel = cmds.parentConstraint(selected_objects, 'eye_display_loc', mo=False)
cmds.delete(forDel)
list = [('eye_aim_up_loc.scaleZ'),('eye_aim_up_loc.scaleY'),('eye_aim_up_loc.scaleX'),('eye_aim_up_loc.rotateZ'),('eye_aim_up_loc.rotateY'),('eye_aim_up_loc.rotateX'),('eye_aim_up_loc.translateZ'),('eye_aim_up_loc.translateY'),('eye_aim_up_loc.translateX'),('eye_aim_up_loc.visibility'),('eye_display.visibility'),('eye_display.translateX'),('eye_display.translateY'),('eye_display.translateZ'),('eye_display.rotateX'),('eye_display.rotateY'),('eye_display.rotateZ'),('eye_display.scaleX'),('eye_display.scaleY'),('eye_display.scaleZ')]
for each in list:
cmds.setAttr(each,keyable = False, cb = False, lock = True)
def store_vertex_ids():
global upper_lid_vertex_ids
upper_lid_vertex_ids = cmds.ls(selection=True, flatten=True)
#cmds.textScrollList(upperLidList, edit=True, removeAll=True)
#cmds.textScrollList(upperLidList, edit=True, append=upper_lid_vertex_ids)
edge_list = cmds.polyListComponentConversion(upper_lid_vertex_ids, fromVertex=True, toEdge=True)
sel = cmds.select(edge_list)
mel.eval('PolySelectTraverse 2;')
curve = cmds.polyToCurve(form=2, degree=1, ch=0, n="upper_lid_crv")
def store_lower_vertex_ids():
global lower_lid_vertex_ids
lower_lid_vertex_ids = cmds.ls(selection=True, flatten=True)
#cmds.textScrollList(lowerLidList, edit=True, removeAll=True)
#cmds.textScrollList(lowerLidList, edit=True, append=lower_lid_vertex_ids)
edge_list = cmds.polyListComponentConversion(lower_lid_vertex_ids, fromVertex=True, toEdge=True)
sel = cmds.select(edge_list)
mel.eval('PolySelectTraverse 2;')
curve = cmds.polyToCurve(form=2, degree=1, ch=0, n="Lower_lid_crv")
def create_joints_and_parent_joints(*args):
create_joints()
create_parent_joints()
def create_joints(*args):
global upper_lid_vertex_ids, lower_lid_vertex_ids, joint_prefix
for i, vertex_id in enumerate(upper_lid_vertex_ids):
pos = cmds.pointPosition(vertex_id, w=True)
joint_name = "{0}_upper_{1}".format(joint_prefix, i+1)
jntUpperLids = cmds.joint(p=pos, n=joint_name)
loc = cmds.spaceLocator(n='upperLidLoc_1')
pos = cmds.xform(jntUpperLids, q = True, ws = True, t = True)
cmds.xform(loc, ws = True, t= pos)
for i, vertex_id in enumerate(lower_lid_vertex_ids):
pos = cmds.pointPosition(vertex_id, w=True)
joint_name = "{0}_lower_{1}".format(joint_prefix, i+1)
jntLowerLids = cmds.joint(p=pos, n=joint_name)
loc = cmds.spaceLocator(n='lowerLidLoc_1')
pos = cmds.xform(jntLowerLids, q = True, ws = True, t = True)
cmds.xform(loc, ws = True, t= pos)
def create_parent_joints(*args):
eyelidcrvrev = cmds.checkBox('reversecrv', q=1,label=1)
eyelidcrvrev = cmds.checkBox('reversecrv', q=1,v=1 )
if eyelidcrvrev == 1:
cmds.reverseCurve('Lower_lid_crv')
global joint_prefix, center_locator
center_loc_position = cmds.pointPosition(center_locator, w=True)
for i in range(len(upper_lid_vertex_ids)):
joint_name = "{0}_upper_{1}".format(joint_prefix, i+1)
parent_joint_name = "{0}_upper_parent_{1}".format(joint_prefix, i+1)
cmds.select(clear=True)
jntUpperLid = cmds.joint(p=center_loc_position, n=parent_joint_name)
cmds.parent(joint_name, parent_joint_name)
cmds.joint(jntUpperLid, e = True, oj = 'xyz' , sao = 'yup', ch = 1 , zso = True)
for i in range(len(lower_lid_vertex_ids)):
joint_name = "{0}_lower_{1}".format(joint_prefix, i+1)
parent_joint_name = "{0}_lower_parent_{1}".format(joint_prefix, i+1)
cmds.select(clear=True)
jntLowerLid = cmds.joint(p=center_loc_position, n=parent_joint_name)
cmds.parent(joint_name, parent_joint_name)
cmds.joint(jntLowerLid, e = True, oj = 'xyz' , sao = 'yup', ch = 1 , zso = True)
old_upper_prefix = "Lower_lid_crv_jnt_upper_parent_"
new_upper_prefix = "eyelid_joint_upper_parent_"
for i in range(1, 1000):
old_joint_name = f"{old_upper_prefix}{i}"
new_joint_name = f"{new_upper_prefix}{i}"
if cmds.objExists(old_joint_name):
cmds.rename(old_joint_name, new_joint_name)
old_lower_prefix = "Lower_lid_crv_jnt_lower_parent_"
new_lower_prefix = "eyelid_joint_lower_parent_"
for i in range(1, 1000):
old_lower_joint_name = f"{old_lower_prefix}{i}"
new_lower_joint_name = f"{new_lower_prefix}{i}"
if cmds.objExists(old_lower_joint_name):
cmds.rename(old_lower_joint_name, new_lower_joint_name)
old_upper_child_prefix = "Lower_lid_crv_jnt_upper_"
new_upper_child_prefix = "eyelid_joint_upper_"
for i in range(1, 1000):
old_upper_child_joint_name = f"{old_upper_child_prefix}{i}"
new_upper_child_joint_name = f"{new_upper_child_prefix}{i}"
if cmds.objExists(old_upper_child_joint_name):
cmds.rename(old_upper_child_joint_name, new_upper_child_joint_name)
old_lower_child_prefix = "Lower_lid_crv_jnt_lower_"
new_lower_child_prefix = "eyelid_joint_lower_"
for i in range(1, 1000):
old_lower_child_joint_name = f"{old_lower_child_prefix}{i}"
new_lower_child_joint_name = f"{new_lower_child_prefix}{i}"
if cmds.objExists(old_lower_child_joint_name):
cmds.rename(old_lower_child_joint_name, new_lower_child_joint_name)
source_prefix = "eyelid_joint_upper_parent_"
target_prefix = "upperLidLoc_"
source_objects = cmds.ls(source_prefix + "*", type="transform")
target_objects = cmds.ls(target_prefix + "*", type="transform")
list = [('%s_arm_01_length_jnt.worldMatrix'%(side),'%s_upr_arm_dist.inMatrix1'%(side)),('%s_arm_02_length_jnt.worldMatrix'%(side),'%s_upr_arm_dist.inMatrix2'%(side)),('%s_arm_02_length_jnt.worldMatrix'%(side),'%s_lwr_arm_dist.inMatrix1'%(side)),('%s_arm_03_length_jnt.worldMatrix'%(side),'%s_lwr_arm_dist.inMatrix2'%(side)),('%s_upr_arm_dist.distance'%(side),'%s_arm_full_dist.input1'%(side)),('%s_lwr_arm_dist.distance'%(side),'%s_arm_full_dist.input2'%(side)),('%s_arm_start_dist_loc.worldMatrix'%(side),'%s_arm_stretch_dist.inMatrix1'%(side)),('%s_arm_end_dist_loc.worldMatrix'%(side),'%s_arm_stretch_dist.inMatrix2'%(side)),('%s_arm_stretch_dist.distance'%(side),'%s_arm_stretch_cond.firstTerm'%(side)),('%s_arm_full_dist.output'%(side),'%s_arm_stretch_cond.secondTerm'%(side)),('%s_arm_stretch_dist.distance'%(side),'%s_arm_stretch_mult.input1X'%(side)),('%s_arm_full_dist.output'%(side),'%s_arm_stretch_mult.input2X'%(side)),('%s_arm_stretch_mult.outputX'%(side),'%s_arm_stretch_cond.colorIfTrue.colorIfTrueR'%(side)),('%s_arm_stretch_cond.outColor.outColorR'%(side),'%s_lwr_arm_strecth_mult.input1X'%(side)),('%s_arm_stretch_cond.outColor.outColorR'%(side),'%s_upr_arm_strecth_mult.input1X'%(side)),('%s_arm_02_setup.translateX'%(side),'%s_upr_arm_strecth_mult.input2X'%(side)),('%s_arm_03_setup.translateX'%(side),'%s_lwr_arm_strecth_mult.input2X'%(side)),('%s_upr_arm_strecth_mult.outputX'%(side),'%s_ik_02_jnt.translateX'%(side)),('%s_lwr_arm_strecth_mult.outputX'%(side),'%s_ik_03_jnt.translateX'%(side)),('%s_ik_arm_ctrl.stretch'%(side),'%s_arm_strecth_option_mult.input1X'%(side)),('%s_arm_strecth_option_mult.outputX'%(side),'%s_arm_stretch_cond.operation'%(side))]
for each in list:
cmds.connectAttr(each[0],each[1])
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
ArmStretchSetup('l')
ArmStretchSetup('r')
def armGroup():
list = ['l_arm_jnt_grp','r_arm_jnt_grp','arm_jnt_grp']
for each in list:
cmds.group(n=each,em=True)
list = [('r_shoulder_jnt','r_arm_jnt_grp'),('l_shoulder_jnt','l_arm_jnt_grp'),('l_fk_arm_01_jnt','l_arm_jnt_grp'),('r_fk_arm_01_jnt','r_arm_jnt_grp'),('l_ik_arm_jnt_grp','l_arm_jnt_grp'),('r_ik_arm_jnt_grp','r_arm_jnt_grp'),('l_arm_bln_jnt_grp','l_arm_jnt_grp'),('r_arm_bln_jnt_grp','r_arm_jnt_grp'),('l_arm_length_jnt_grp','l_arm_jnt_grp'),('r_arm_length_jnt_grp','r_arm_jnt_grp'),('l_arm_jnt_grp','arm_jnt_grp'),('r_arm_jnt_grp','arm_jnt_grp')]
for each in list:
cmds.parent(each[0],each[1])
armGroup()
bendyArmlabel = cmds.checkBox('bendyArm', q=1,label=1)
bendyArmlabel = cmds.checkBox('bendyArm', q=1,v=1 )
if bendyArmlabel == 1:
print(buildBendyArm())
elif bendyArmlabel == 0:
print(noBendyArm())
def FingersSetup(side):
nameOfFingersCtrl = [('%s_thumb_01_ctrl'%(side),'%s_thumb_01_ctrl_SDK_grp'%(side),'%s_thumb_01_ctrl_grp'%(side)),('%s_thumb_02_ctrl'%(side),'%s_thumb_02_ctrl_SDK_grp'%(side),'%s_thumb_02_ctrl_grp'%(side)),('%s_thumb_03_ctrl'%(side),'%s_thumb_03_ctrl_SDK_grp'%(side),'%s_thumb_03_ctrl_grp'%(side)),('%s_index_01_ctrl'%(side),'%s_index_01_ctrl_SDK_grp'%(side),'%s_index_01_ctrl_grp'%(side)),('%s_index_02_ctrl'%(side),'%s_index_02_ctrl_SDK_grp'%(side),'%s_index_02_ctrl_grp'%(side)),('%s_index_03_ctrl'%(side),'%s_index_03_ctrl_SDK_grp'%(side),'%s_index_03_ctrl_grp'%(side)),('%s_index_04_ctrl'%(side),'%s_index_04_ctrl_SDK_grp'%(side),'%s_index_04_ctrl_grp'%(side)),('%s_middle_01_ctrl'%(side),'%s_middle_01_ctrl_SDK_grp'%(side),'%s_middle_01_ctrl_grp'%(side)),('%s_middle_02_ctrl'%(side),'%s_middle_02_ctrl_SDK_grp'%(side),'%s_middle_02_ctrl_grp'%(side)),('%s_middle_03_ctrl'%(side),'%s_middle_03_ctrl_SDK_grp'%(side),'%s_middle_03_ctrl_grp'%(side)),('%s_middle_04_ctrl'%(side),'%s_middle_04_ctrl_SDK_grp'%(side),'%s_middle_04_ctrl_grp'%(side)),('%s_ring_01_ctrl'%(side),'%s_ring_01_ctrl_SDK_grp'%(side),'%s_ring_01_ctrl_grp'%(side)),('%s_ring_02_ctrl'%(side),'%s_ring_02_ctrl_SDK_grp'%(side),'%s_ring_02_ctrl_grp'%(side)),('%s_ring_03_ctrl'%(side),'%s_ring_03_ctrl_SDK_grp'%(side),'%s_ring_03_ctrl_grp'%(side)),('%s_ring_04_ctrl'%(side),'%s_ring_04_ctrl_SDK_grp'%(side),'%s_ring_04_ctrl_grp'%(side)),('%s_pinky_01_ctrl'%(side),'%s_pinky_01_ctrl_SDK_grp'%(side),'%s_pinky_01_ctrl_grp'%(side)),('%s_pinky_02_ctrl'%(side),'%s_pinky_02_ctrl_SDK_grp'%(side),'%s_pinky_02_ctrl_grp'%(side)),('%s_pinky_03_ctrl'%(side),'%s_pinky_03_ctrl_SDK_grp'%(side),'%s_pinky_03_ctrl_grp'%(side)),('%s_pinky_04_ctrl'%(side),'%s_pinky_04_ctrl_SDK_grp'%(side),'%s_pinky_04_ctrl_grp'%(side))]
for each in nameOfFingersCtrl:
ctrl = cmds.curve(p=[(0.0, 0.2933861509942573, -1.0949320217706984), (0.0, 0.2553661889653451, -0.9530395916863047), (0.0, -0.2553664856172229, -0.9530403074142204), (0.0, -0.29334365303393356, -1.094772361168278), (0.0, -0.8014288496022626, -0.801429236145214), (0.0, -0.6976738742806887, -0.6976740175622989), (0.0, -0.9530395916863047, -0.2553661889653451), (0.0, -1.0949320217706984, -0.2933861509942573), (0.0, -1.094772361168278, 0.29334365303393356), (0.0, -0.9530403074142204, 0.2553664856172229), (0.0, -0.6976740175622989, 0.6976738742806887), (0.0, -0.801429236145214, 0.8014288496022626), (0.0, -0.2933861509942573, 1.0949320217706984), (0.0, -0.2553661889653451, 0.9530395916863047), (0.0, 0.2553664856172229, 0.9530403074142204), (0.0, 0.29334365303393356, 1.094772361168278), (0.0, 0.8014288496022626, 0.801429236145214), (0.0, 0.6976738742806887, 0.6976740175622989), (0.0, 0.9530395916863047, 0.2553661889653451), (0.0, 1.0949320217706984, 0.2933861509942573), (0.0, 1.094772361168278, -0.29334365303393356), (0.0, 0.9530403074142204, -0.2553664856172229), (0.0, 0.6976740175622989, -0.6976738742806887), (0.0, 0.801429236145214, -0.8014288496022626), (0.0, 0.2933861509942573, -1.0949320217706984)], d=1, k=[0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0],per=False)
cmds.rename(each[0])
cmds.group(n=each[1])
cmds.group(n=each[2])
nameOfFingersJnt = ['%s_thumb_01_jnt'%(side),'%s_thumb_02_jnt'%(side),'%s_thumb_03_jnt'%(side),'%s_index_01_jnt'%(side),'%s_index_02_jnt'%(side),'%s_index_03_jnt'%(side),'%s_index_04_jnt'%(side),'%s_middle_01_jnt'%(side),'%s_middle_02_jnt'%(side),'%s_middle_03_jnt'%(side),'%s_middle_04_jnt'%(side),'%s_ring_01_jnt'%(side),'%s_ring_02_jnt'%(side),'%s_ring_03_jnt'%(side),'%s_ring_04_jnt'%(side),'%s_pinky_01_jnt'%(side),'%s_pinky_02_jnt'%(side),'%s_pinky_03_jnt'%(side),'%s_pinky_04_jnt'%(side)]
for each in nameOfFingersJnt:
cmds.joint(n=each)
listToGetPos = [('%s_thumb_01_setup'%(side),'%s_thumb_01_ctrl_grp'%(side)),('%s_thumb_02_setup'%(side),'%s_thumb_02_ctrl_grp'%(side)),('%s_thumb_03_setup'%(side),'%s_thumb_03_ctrl_grp'%(side)),('%s_index_01_setup'%(side),'%s_index_01_ctrl_grp'%(side)),('%s_index_02_setup'%(side),'%s_index_02_ctrl_grp'%(side)),('%s_index_03_setup'%(side),'%s_index_03_ctrl_grp'%(side)),('%s_index_04_setup'%(side),'%s_index_04_ctrl_grp'%(side)),('%s_middle_01_setup'%(side),'%s_middle_01_ctrl_grp'%(side)),('%s_middle_02_setup'%(side),'%s_middle_02_ctrl_grp'%(side)),('%s_middle_03_setup'%(side),'%s_middle_03_ctrl_grp'%(side)),('%s_middle_04_setup'%(side),'%s_middle_04_ctrl_grp'%(side)),('%s_ring_01_setup'%(side),'%s_ring_01_ctrl_grp'%(side)),('%s_ring_02_setup'%(side),'%s_ring_02_ctrl_grp'%(side)),('%s_ring_03_setup'%(side),'%s_ring_03_ctrl_grp'%(side)),('%s_ring_04_setup'%(side),'%s_ring_04_ctrl_grp'%(side)),('%s_pinky_01_setup'%(side),'%s_pinky_01_ctrl_grp'%(side)),('%s_pinky_02_setup'%(side),'%s_pinky_02_ctrl_grp'%(side)),('%s_pinky_03_setup'%(side),'%s_pinky_03_ctrl_grp'%(side)),('%s_pinky_04_setup'%(side),'%s_pinky_04_ctrl_grp'%(side)),('%s_thumb_01_setup'%(side),'%s_thumb_01_jnt'%(side)),('%s_thumb_02_setup'%(side),'%s_thumb_02_jnt'%(side)),('%s_thumb_03_setup'%(side),'%s_thumb_03_jnt'%(side)),('%s_index_01_setup'%(side),'%s_index_01_jnt'%(side)),('%s_index_02_setup'%(side),'%s_index_02_jnt'%(side)),('%s_index_03_setup'%(side),'%s_index_03_jnt'%(side)),('%s_index_04_setup'%(side),'%s_index_04_jnt'%(side)),('%s_middle_01_setup'%(side),'%s_middle_01_jnt'%(side)),('%s_middle_02_setup'%(side),'%s_middle_02_jnt'%(side)),('%s_middle_03_setup'%(side),'%s_middle_03_jnt'%(side)),('%s_middle_04_setup'%(side),'%s_middle_04_jnt'%(side)),('%s_ring_01_setup'%(side),'%s_ring_01_jnt'%(side)),('%s_ring_02_setup'%(side),'%s_ring_02_jnt'%(side)),('%s_ring_03_setup'%(side),'%s_ring_03_jnt'%(side)),('%s_ring_04_setup'%(side),'%s_ring_04_jnt'%(side)),('%s_pinky_01_setup'%(side),'%s_pinky_01_jnt'%(side)),('%s_pinky_02_setup'%(side),'%s_pinky_02_jnt'%(side)),('%s_pinky_03_setup'%(side),'%s_pinky_03_jnt'%(side)),('%s_pinky_04_setup'%(side),'%s_pinky_04_jnt'%(side))]
for each in listToGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('multiplyDivide','%s_thumb_mult'%(side)),('multiplyDivide','%s_index_mult'%(side)),('multiplyDivide','%s_middle_mult'%(side)),('multiplyDivide','%s_ring_mult'%(side)),('multiplyDivide','%s_pinky_mult'%(side))]
for each in list:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
list = [('%s_thumb_mult.input2X'%(side),10),('%s_index_mult.input2X'%(side),10),('%s_middle_mult.input2X'%(side),10),('%s_ring_mult.input2X'%(side),10),('%s_pinky_mult.input2X'%(side),10)]
for each in list:
cmds.setAttr(each[0],each[1])
list = [('%s_ik_fk_switch.thumbCurl'%(side),'%s_thumb_mult.input1X'%(side)),('%s_thumb_mult.outputX'%(side),'%s_thumb_02_ctrl_SDK_grp.rotateZ'%(side)),('%s_thumb_mult.outputX'%(side),'%s_thumb_03_ctrl_SDK_grp.rotateZ'%(side)),('%s_ik_fk_switch.indexCurl'%(side),'%s_index_mult.input1X'%(side)),('%s_index_mult.outputX'%(side),'%s_index_02_ctrl_SDK_grp.rotateZ'%(side)),('%s_index_mult.outputX'%(side),'%s_index_03_ctrl_SDK_grp.rotateZ'%(side)),('%s_index_mult.outputX'%(side),'%s_index_04_ctrl_SDK_grp.rotateZ'%(side)),('%s_ik_fk_switch.middleCurl'%(side),'%s_middle_mult.input1X'%(side)),('%s_middle_mult.outputX'%(side),'%s_middle_02_ctrl_SDK_grp.rotateZ'%(side)),('%s_middle_mult.outputX'%(side),'%s_middle_03_ctrl_SDK_grp.rotateZ'%(side)),('%s_middle_mult.outputX'%(side),'%s_middle_04_ctrl_SDK_grp.rotateZ'%(side)),('%s_ik_fk_switch.ringCurl'%(side),'%s_ring_mult.input1X'%(side)),('%s_ring_mult.outputX'%(side),'%s_ring_02_ctrl_SDK_grp.rotateZ'%(side)),('%s_ring_mult.outputX'%(side),'%s_ring_03_ctrl_SDK_grp.rotateZ'%(side)),('%s_ring_mult.outputX'%(side),'%s_ring_04_ctrl_SDK_grp.rotateZ'%(side)),('%s_ik_fk_switch.pinkyCurl'%(side),'%s_pinky_mult.input1X'%(side)),('%s_pinky_mult.outputX'%(side),'%s_pinky_02_ctrl_SDK_grp.rotateZ'%(side)),('%s_pinky_mult.outputX'%(side),'%s_pinky_03_ctrl_SDK_grp.rotateZ'%(side)),('%s_pinky_mult.outputX'%(side),'%s_pinky_04_ctrl_SDK_grp.rotateZ'%(side))]
for each in list:
cmds.connectAttr(each[0],each[1])
cmds.group(n='%s_fingers_jnt_grp'%(side),em = True)
cmds.group(n='%s_fingers_ctrl_grp'%(side),em = True)
cmds.parentConstraint('%s_arm_03_bln_jnt'%(side),'%s_fingers_ctrl_grp'%(side))
toParent = [('%s_thumb_01_ctrl_grp'%(side),'%s_fingers_ctrl_grp'%(side)),('%s_fingers_ctrl_grp'%(side),'world_ctrl'),('%s_thumb_02_ctrl_grp'%(side),'%s_thumb_01_ctrl'%(side)),('%s_index_01_ctrl_grp'%(side),'%s_fingers_ctrl_grp'%(side)),('%s_index_02_ctrl_grp'%(side),'%s_index_01_ctrl'%(side)),('%s_index_03_ctrl_grp'%(side),'%s_index_02_ctrl'%(side)),('%s_index_04_ctrl_grp'%(side),'%s_index_03_ctrl'%(side)),('%s_thumb_03_ctrl_grp'%(side),'%s_thumb_02_ctrl'%(side)),('%s_middle_01_ctrl_grp'%(side), '%s_fingers_ctrl_grp'%(side)),('%s_middle_02_ctrl_grp'%(side), '%s_middle_01_ctrl'%(side)),('%s_middle_03_ctrl_grp'%(side), '%s_middle_02_ctrl'%(side)),('%s_middle_04_ctrl_grp'%(side), '%s_middle_03_ctrl'%(side)),('%s_ring_01_ctrl_grp'%(side), '%s_fingers_ctrl_grp'%(side)),('%s_ring_02_ctrl_grp'%(side), '%s_ring_01_ctrl'%(side)),('%s_ring_03_ctrl_grp'%(side), '%s_ring_02_ctrl'%(side)),('%s_ring_04_ctrl_grp'%(side), '%s_ring_03_ctrl'%(side)),('%s_pinky_01_ctrl_grp'%(side), '%s_fingers_ctrl_grp'%(side)),('%s_pinky_02_ctrl_grp'%(side), '%s_pinky_01_ctrl'%(side)),('%s_pinky_03_ctrl_grp'%(side), '%s_pinky_02_ctrl'%(side)),('%s_pinky_04_ctrl_grp'%(side), '%s_pinky_03_ctrl'%(side)),('%s_thumb_01_jnt'%(side), '%s_fingers_jnt_grp'%(side)),('%s_index_01_jnt'%(side), '%s_fingers_jnt_grp'%(side)),('%s_middle_01_jnt'%(side), '%s_fingers_jnt_grp'%(side)),('%s_ring_01_jnt'%(side), '%s_fingers_jnt_grp'%(side)),('%s_pinky_01_jnt'%(side), '%s_fingers_jnt_grp'%(side)),('%s_fingers_jnt_grp'%(side),'%s_arm_jnt_grp'%(side))]
for each in toParent:
cmds.parent(each[0],each[1])
cmds.makeIdentity('%s_thumb_01_jnt'%(side),'%s_index_01_jnt'%(side),'%s_middle_01_jnt'%(side),'%s_ring_01_jnt'%(side),'%s_pinky_01_jnt'%(side),apply=True,rotate=True)
list = [('%s_thumb_01_ctrl'%(side),'%s_thumb_01_jnt'%(side)),('%s_thumb_02_ctrl'%(side),'%s_thumb_02_jnt'%(side)),('%s_thumb_03_ctrl'%(side),'%s_thumb_03_jnt'%(side)),('%s_index_01_ctrl'%(side),'%s_index_01_jnt'%(side)),('%s_index_02_ctrl'%(side),'%s_index_02_jnt'%(side)),('%s_index_03_ctrl'%(side),'%s_index_03_jnt'%(side)),('%s_index_04_ctrl'%(side),'%s_index_04_jnt'%(side)),('%s_middle_01_ctrl'%(side),'%s_middle_01_jnt'%(side)),('%s_middle_02_ctrl'%(side),'%s_middle_02_jnt'%(side)),('%s_middle_03_ctrl'%(side),'%s_middle_03_jnt'%(side)),('%s_middle_04_ctrl'%(side),'%s_middle_04_jnt'%(side)),('%s_ring_01_ctrl'%(side),'%s_ring_01_jnt'%(side)),('%s_ring_02_ctrl'%(side),'%s_ring_02_jnt'%(side)),('%s_ring_03_ctrl'%(side),'%s_ring_03_jnt'%(side)),('%s_ring_04_ctrl'%(side),'%s_ring_04_jnt'%(side)),('%s_pinky_01_ctrl'%(side),'%s_pinky_01_jnt'%(side)),('%s_pinky_02_ctrl'%(side),'%s_pinky_02_jnt'%(side)),('%s_pinky_03_ctrl'%(side),'%s_pinky_03_jnt'%(side)),('%s_pinky_04_ctrl'%(side),'%s_pinky_04_jnt'%(side))]
for each in list:
cmds.parentConstraint(each[0],each[1],mo=True)
toSetAttr = [('%s_thumb_01_ctrl'%(side)),('%s_thumb_02_ctrl'%(side)),('%s_thumb_03_ctrl'%(side)),('%s_index_01_ctrl'%(side)),('%s_index_02_ctrl'%(side)),('%s_index_03_ctrl'%(side)),('%s_index_04_ctrl'%(side)),('%s_middle_01_ctrl'%(side)),('%s_middle_02_ctrl'%(side)),('%s_middle_03_ctrl'%(side)),('%s_middle_04_ctrl'%(side)),('%s_ring_01_ctrl'%(side)),('%s_ring_02_ctrl'%(side)),('%s_ring_03_ctrl'%(side)),('%s_ring_04_ctrl'%(side)),('%s_pinky_01_ctrl'%(side)),('%s_pinky_02_ctrl'%(side)),('%s_pinky_03_ctrl'%(side)),('%s_pinky_04_ctrl'%(side))]
for each in toSetAttr:
cmds.setAttr (each +'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each +'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each +'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each +'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each + '.overrideEnabled' ,True)
cmds.setAttr (each + '.overrideColor' ,6)
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
FingersSetup('l')
FingersSetup('r')
def buildBendyLeg():
def FKlegSetup(side):
nameOfFKlegController = [('%s_fk_leg_01_ctrl'%(side),'%s_fk_leg_01_ctrl_grp'%(side)),('%s_fk_leg_02_ctrl'%(side),'%s_fk_leg_02_ctrl_grp'%(side)),('%s_fk_leg_03_ctrl'%(side),'%s_fk_leg_03_ctrl_grp'%(side)),('%s_fk_leg_04_ctrl'%(side),'%s_fk_leg_04_ctrl_grp'%(side))]
for each in nameOfFKlegController:
cmds.curve(d=1,p=[(0.0, 1.8457071003629746, -6.888272674590291),(0.0, 1.6065215981349992, -5.995620227271308),(0.0, -1.6065234643869502, -5.995624729951774),(0.0, -1.8454397435472047, -6.8872682416730004),(0.0, -5.041829388107622, -5.041831819868864),(0.0, -4.389101595742385, -4.389102497134237),(0.0, -5.995620227271308, -1.6065215981349992),(0.0, -6.888272674590291, -1.8457071003629746),(0.0, -6.8872682416730004, 1.8454397435472047),(0.0, -5.995624729951774, 1.6065234643869502),(0.0, -4.389102497134237, 4.389101595742385),(0.0, -5.041831819868864, 5.041829388107622),(0.0, -1.8457071003629746, 6.888272674590291),(0.0, -1.6065215981349992, 5.995620227271308),(0.0, 1.6065234643869502, 5.995624729951774),(0.0, 1.8454397435472047, 6.8872682416730004),(0.0, 5.041829388107622, 5.041831819868864),(0.0, 4.389101595742385, 4.389102497134237),(0.0, 5.995620227271308, 1.6065215981349992),(0.0, 6.888272674590291, 1.8457071003629746),(0.0, 6.8872682416730004, -1.8454397435472047),(0.0, 5.995624729951774, -1.6065234643869502),(0.0, 4.389102497134237, -4.389101595742385),(0.0, 5.041831819868864, -5.041829388107622),(0.0, 1.8457071003629746, -6.888272674590291)])
cmds.rename(each[0])
cmds.group(n=each[1])
createJoint = ['%s_fk_leg_01_jnt'%(side),'%s_fk_leg_02_jnt'%(side),'%s_fk_leg_03_jnt'%(side),'%s_fk_leg_04_jnt'%(side)]
for each in createJoint:
cmds.joint(n=each)
toGetFKlegPos = [('%s_leg_01_setup'%(side),'%s_fk_leg_01_ctrl_grp'%(side)),('%s_leg_02_setup'%(side),'%s_fk_leg_02_ctrl_grp'%(side)),('%s_leg_03_setup'%(side),'%s_fk_leg_03_ctrl_grp'%(side)),('%s_leg_04_setup'%(side),'%s_fk_leg_04_ctrl_grp'%(side)),('%s_leg_01_setup'%(side),'%s_fk_leg_01_jnt'%(side)),('%s_leg_02_setup'%(side),'%s_fk_leg_02_jnt'%(side)),('%s_leg_03_setup'%(side),'%s_fk_leg_03_jnt'%(side)),('%s_leg_04_setup'%(side),'%s_fk_leg_04_jnt'%(side))]
for each in toGetFKlegPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.makeIdentity('%s_fk_leg_01_jnt'%(side),apply=True,rotate=True)
toParentCon = [('%s_fk_leg_01_ctrl'%(side),'%s_fk_leg_01_jnt'%(side)),('%s_fk_leg_02_ctrl'%(side),'%s_fk_leg_02_jnt'%(side)),('%s_fk_leg_03_ctrl'%(side),'%s_fk_leg_03_jnt'%(side)),('%s_fk_leg_04_ctrl'%(side),'%s_fk_leg_04_jnt'%(side)),('spine_01_bln_jnt','%s_fk_leg_01_ctrl_grp'%(side))]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo=True)
toParent = [('%s_fk_leg_01_ctrl_grp'%(side),'world_ctrl'),('%s_fk_leg_02_ctrl_grp'%(side),'%s_fk_leg_01_ctrl'%(side)),('%s_fk_leg_03_ctrl_grp'%(side), '%s_fk_leg_02_ctrl'%(side)),('%s_fk_leg_04_ctrl_grp'%(side),'%s_fk_leg_03_ctrl'%(side))]
for each in toParent:
cmds.parent(each[0],each[1])
toSetAttr = [('%s_fk_leg_01_ctrl'%(side)),('%s_fk_leg_02_ctrl'%(side)),('%s_fk_leg_03_ctrl'%(side)),('%s_fk_leg_04_ctrl'%(side))]
for each in toSetAttr:
cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,6)
FKlegSetup('l')
FKlegSetup('r')
def IKlegSetup(side):
list = ['%s_ik_leg_01_jnt'%(side),'%s_ik_leg_02_jnt'%(side),'%s_ik_leg_03_jnt'%(side),'%s_ik_leg_04_jnt'%(side),'%s_ik_leg_05_jnt'%(side)]
for each in list:
cmds.joint(n=each)
list = [('%s_leg_01_setup'%(side),'%s_ik_leg_01_jnt'%(side)),('%s_leg_02_setup'%(side),'%s_ik_leg_02_jnt'%(side)),('%s_leg_03_setup'%(side),'%s_ik_leg_03_jnt'%(side)),('%s_leg_04_setup'%(side),'%s_ik_leg_04_jnt'%(side)),('%s_leg_05_setup'%(side),'%s_ik_leg_05_jnt'%(side))]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.makeIdentity('%s_ik_leg_01_jnt'%(side), apply=True, translate=True, rotate=True)
cmds.group(n='%s_ik_leg_jnt_grp'%(side),em=True)
cmds.parent('%s_ik_leg_01_jnt'%(side),'%s_ik_leg_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_ik_leg_jnt_grp'%(side))
cmds.ikHandle( n='%s_leg_01_ikh'%(side), sj='%s_ik_leg_01_jnt'%(side), ee='%s_ik_leg_03_jnt'%(side) )
cmds.ikHandle( n='%s_leg_02_ikh'%(side), sj='%s_ik_leg_03_jnt'%(side), ee='%s_ik_leg_04_jnt'%(side) )
cmds.ikHandle( n='%s_leg_03_ikh'%(side), sj='%s_ik_leg_04_jnt'%(side), ee='%s_ik_leg_05_jnt'%(side) )
cmds.parentConstraint('spine_01_bln_jnt','%s_ik_leg_01_jnt'%(side),mo = True)
cmds.curve(d=1, p=[(-5, -5, 5),(-5, 5, 5),(5, 5, 5),(5, -5, 5),(5, -5, -5),(5, 5, -5),(-5, 5, -5),(-5, -5, -5),(-5, -5, 5),(5, -5, 5),(5, 5, 5),(5, 5, -5),(5, -5, -5),(-5, -5, -5),(-5, 5, -5),(-5, 5, 5)])
cmds.rename('%s_ik_leg_ctrl'%(side))
ControllerAttr('%s_ik_leg_ctrl'%(side),False,False,False,False,True,True,True,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='heelLift' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='toeLift' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='ballRoll' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='toeRoll' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='footRock' ,k=1)
cmds.addAttr('%s_ik_leg_ctrl'%(side),sn='stretch' ,k=1,at = 'bool')
cmds.addAttr('%s_ik_leg_ctrl'%(side), at = 'enum', keyable=True, en = 'string1:string2:', ln='follow')
cmds.addAttr('%s_ik_leg_ctrl'%(side)+'.follow', e=True, en = 'world:pelvis:')
cmds.group(n='%s_ik_leg_ctrl_grp'%(side))
forDel = cmds.parentConstraint('%s_leg_03_setup'%(side),'%s_ik_leg_ctrl_grp'%(side),mo = False)
deleteparent = cmds.delete(forDel)
cmds.parentConstraint('spine_01_bln_jnt','%s_ik_leg_ctrl_grp'%(side),mo = True)
cmds.connectAttr('%s_ik_leg_ctrl.follow'%(side),'%s_ik_leg_ctrl_grp_parentConstraint1.spine_01_bln_jntW0'%(side))
cmds.curve(d=1,p=[(0.0, 3.468342867164149, 0.0),(0.0, 3.468342867164149, 0.5221724371834184),(0.0, 4.967930096687364, 0.0),(0.5221724371834184, 3.468342867164149, 0.0),(-0.5221724371834184, 3.468342867164149, 0.0),(0.0, 4.967930096687364, 0.0),(0.0, 3.468342867164149, -0.5221724371834184),(0.0, 3.468342867164149, 0.0),(0.0, -3.468342867164149, 0.0),(-0.5221724371834184, -3.468342867164149, 0.0),(0.0, -4.967930096687364, 0.0),(0.0, -3.468342867164149, -0.5221724371834184),(0.0, -3.468342867164149, 0.5221724371834184),(0.0, -4.967930096687364, 0.0),(0.5221724371834184, -3.468342867164149, 0.0),(0.0, -3.468342867164149, 0.0),(0.0, 0.0, 0.0),(-3.468342867164149, 0.0, 0.0),(-3.468342867164149, 0.5221724371834184, 0.0),(-4.967930096687364, 0.0, 0.0),(-3.468342867164149, 0.0, -0.5221724371834184),(-3.468342867164149, 0.0, 0.5221724371834184),(-4.967930096687364, 0.0, 0.0),(-3.468342867164149, -0.5221724371834184, 0.0),(-3.468342867164149, 0.0, 0.0),(3.468342867164149, 0.0, 0.0),(3.468342867164149, 0.0, -0.5221724371834184),(4.967930096687364, 0.0, 0.0),(3.468342867164149, 0.5221724371834184, 0.0),(3.468342867164149, -0.5221724371834184, 0.0),(4.967930096687364, 0.0, 0.0),(3.468342867164149, 0.0, 0.5221724371834184),(3.468342867164149, 0.0, 0.0),(0.0, 0.0, 0.0),(0.0, 0.0, 3.468342867164149),(0.0, 0.5221724371834184, 3.468342867164149),(0.0, 0.0, 4.967930096687364),(0.5221724371834184, 0.0, 3.468342867164149),(-0.5221724371834184, 0.0, 3.468342867164149),(0.0, 0.0, 4.967930096687364),(0.0, -0.5221724371834184, 3.468342867164149),(0.0, 0.0, 3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.5221724371834184, -3.468342867164149),(0.0, 0.0, -4.967930096687364),(-0.5221724371834184, 0.0, -3.468342867164149),(0.5221724371834184, 0.0, -3.468342867164149),(0.0, 0.0, -4.967930096687364),(0.0, -0.5221724371834184, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149)])
cmds.rename('%s_knee_ctrl'%(side))
ControllerAttr('%s_knee_ctrl'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,6,True,True,True,False,False,False)
cmds.addAttr('%s_knee_ctrl'%(side),sn='follow', min = 0, max=1 ,k=1)
cmds.setAttr('%s_knee_ctrl.follow'%(side),1)
cmds.group(n='%s_knee_ctrl_grp'%(side))
cmds.parent('%s_knee_ctrl_grp'%(side),'world_ctrl')
forDel = cmds.pointConstraint('%s_knee_setup'%(side),'%s_knee_ctrl_grp'%(side))
cmds.delete(forDel)
cmds.poleVectorConstraint('%s_knee_ctrl'%(side),'%s_leg_01_ikh'%(side))
list = ['%s_knee_ctrl_aim_up_loc'%(side),'%s_knee_ctrl_aim_base_loc'%(side),'%s_knee_ctrl_aim_loc'%(side),'%s_knee_ctrl_aim_world_loc'%(side),'%s_heel_loc'%(side),'%s_roll_out_loc'%(side),'%s_roll_in_loc'%(side),'%s_toe_roll_loc'%(side),'%s_toe_end_loc'%(side),'%s_toe_lift_loc'%(side),'%s_ball_roll_loc'%(side),'%s_leg_ikHandle_loc'%(side),'%s_ball_ikHandle_loc'%(side)]
for each in list:
cmds.spaceLocator(n=each)
cmds.group(n='%s_knee_loc_grp'%(side),em=True)
cmds.scaleConstraint('world_ctrl','%s_knee_loc_grp'%(side),mo=True)
cmds.group(n='%s_foot_ikHandle_grp'%(side),em = True)
cmds.group(n='%s_knee_ctrl_aim_base_loc_grp'%(side),em=True)
list = [('pelvis_setup','%s_knee_ctrl_aim_up_loc'%(side)),('%s_leg_01_setup'%(side),'%s_knee_ctrl_aim_base_loc'%(side)),('%s_leg_03_setup'%(side),'%s_knee_ctrl_aim_loc'%(side))]
for each in list:
forDel = cmds.pointConstraint(each[0],each[1])
cmds.delete(forDel)
list = [('%s_leg_04_setup'%(side),'%s_toe_roll_loc'%(side)),('%s_leg_04_setup'%(side),'%s_ball_roll_loc'%(side)),('%s_knee_setup'%(side),'%s_knee_ctrl_aim_world_loc'%(side)),('%s_leg_heel_setup'%(side),'%s_heel_loc'%(side)),('%s_leg_roll_out_setup'%(side),'%s_roll_out_loc'%(side)),('%s_leg_roll_in_setup'%(side),'%s_roll_in_loc'%(side)),('%s_leg_05_setup'%(side),'%s_toe_end_loc'%(side)),('%s_leg_06_setup'%(side),'%s_toe_lift_loc'%(side)),('%s_leg_03_setup'%(side),'%s_leg_ikHandle_loc'%(side)),('%s_leg_04_setup'%(side),'%s_ball_ikHandle_loc'%(side)),('%s_leg_03_setup'%(side),'%s_foot_ikHandle_grp'%(side))]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('%s_heel_loc'%(side),'%s_toe_roll_loc'%(side)),('%s_heel_loc'%(side),'%s_ball_roll_loc'%(side)),('%s_heel_loc'%(side),'%s_foot_ikHandle_grp'%(side))]
for each in list:
forDel = cmds.orientConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('%s_toe_lift_loc'%(side),'%s_heel_loc'%(side)),('%s_roll_out_loc'%(side),'%s_toe_lift_loc'%(side)),('%s_roll_in_loc'%(side),'%s_roll_in_loc'%(side)),('%s_toe_roll_loc'%(side),'%s_roll_in_loc'%(side)),('%s_ball_roll_loc'%(side),'%s_roll_in_loc'%(side)),('%s_toe_end_loc'%(side),'%s_toe_roll_loc'%(side)),('%s_leg_ikHandle_loc'%(side),'%s_ball_roll_loc'%(side)),('%s_ball_ikHandle_loc'%(side),'%s_ball_roll_loc'%(side)),('%s_leg_02_ikh'%(side),'%s_ball_ikHandle_loc'%(side)),('%s_leg_03_ikh'%(side),'%s_toe_end_loc'%(side)),('%s_leg_01_ikh'%(side),'%s_leg_ikHandle_loc'%(side)),('%s_knee_ctrl_aim_world_loc'%(side),'%s_knee_loc_grp'%(side)),('%s_heel_loc'%(side),'%s_foot_ikHandle_grp'%(side)),('%s_ik_leg_ctrl_grp'%(side),'world_ctrl'),('%s_knee_ctrl_aim_base_loc'%(side),'%s_knee_ctrl_aim_base_loc_grp'%(side)),('%s_knee_ctrl_aim_up_loc'%(side),'%s_knee_loc_grp'%(side)),('%s_knee_ctrl_aim_base_loc_grp'%(side),'%s_knee_loc_grp'%(side)),('%s_knee_ctrl_aim_loc'%(side),'%s_knee_loc_grp'%(side)),('%s_knee_ctrl_aim_up_loc'%(side),'spine_01_bln_jnt')]
for each in list:
cmds.parent(each[0],each[1])
cmds.aimConstraint('%s_knee_ctrl_aim_loc'%(side),'%s_knee_ctrl_aim_base_loc'%(side),wut='object',wuo = '%s_knee_ctrl_aim_up_loc'%(side),mo = False)
list = [('%s_ik_leg_ctrl'%(side),'%s_knee_ctrl_aim_loc'%(side)),('world_ctrl','%s_knee_ctrl_aim_world_loc'%(side)),('%s_knee_ctrl_aim_base_loc'%(side),'%s_knee_ctrl_grp'%(side)),('%s_knee_ctrl_aim_world_loc'%(side),'%s_knee_ctrl_grp'%(side)),('%s_ik_leg_ctrl'%(side),'%s_foot_ikHandle_grp'%(side)),('%s_knee_ctrl_aim_up_loc'%(side),'%s_knee_ctrl_aim_base_loc_grp'%(side))]
for each in list:
cmds.parentConstraint(each[0],each[1],mo=True)
list = [('reverse','%s_knee_follow_rev'%(side)),('multiplyDivide','%s_foot_rock_mult'%(side)),('condition','%s_foot_rock_con'%(side))]
for each in list:
cmds.shadingNode(each[0],n = each[1],asUtility=1)
list = [('%s_knee_ctrl.follow'%(side),'%s_knee_ctrl_grp_parentConstraint1.%s_knee_ctrl_aim_base_locW0'%(side,side)),('%s_knee_ctrl.follow'%(side),'%s_knee_follow_rev.inputX'%(side)),('%s_knee_follow_rev.outputX'%(side),'%s_knee_ctrl_grp_parentConstraint1.%s_knee_ctrl_aim_world_locW1'%(side,side)),('%s_ik_leg_ctrl.heelLift'%(side),'%s_heel_loc.rotateZ'%(side)),('%s_ik_leg_ctrl.toeLift'%(side),'%s_toe_lift_loc.rotateZ'%(side)),('%s_ik_leg_ctrl.ballRoll'%(side),'%s_ball_roll_loc.rotateZ'%(side)),('%s_ik_leg_ctrl.toeRoll'%(side),'%s_toe_roll_loc.rotateZ'%(side)),('%s_ik_leg_ctrl.footRock'%(side),'%s_foot_rock_mult.input1X'%(side)),('%s_ik_leg_ctrl.footRock'%(side),'%s_foot_rock_mult.input1Y'%(side)),('%s_foot_rock_mult.outputX'%(side),'%s_foot_rock_con.colorIfFalse.colorIfFalseG'%(side)),('%s_foot_rock_mult.outputX'%(side),'%s_foot_rock_con.colorIfTrue.colorIfTrueR'%(side)),('%s_foot_rock_con.outColor.outColorR'%(side), '%s_roll_out_loc.rotate.rotateX'%(side)),('%s_foot_rock_con.outColor.outColorG'%(side), '%s_roll_in_loc.rotate.rotateX'%(side)),('%s_ik_leg_ctrl.footRock'%(side), '%s_foot_rock_con.firstTerm'%(side))]
for each in list:
cmds.connectAttr(each[0],each[1])
list = [('%s_foot_rock_mult.input2X'%(side),-1),('%s_foot_rock_con.operation'%(side),2),('%s_foot_rock_con.colorIfFalse.colorIfFalseR'%(side),0),('%s_foot_rock_con.colorIfFalse.colorIfFalseB'%(side),0)]
for each in list:
cmds.setAttr(each[0],each[1])
cmds.scaleConstraint('world_ctrl','%s_foot_ikHandle_grp'%(side),mo=True)
#IKlegPVcrv#
cmds.curve(d=1, p=[(0, 0, 0),(0, 10, 0)])
cmds.rename('%s_knee_direction_crv'%(side))
nameOfLoc = ['%s_knee_01_loc'%(side),'%s_knee_02_loc'%(side)]
for each in nameOfLoc:
cmds.spaceLocator(n=each)
toGetLocPos = [('%s_knee_01_loc.translateY'%(side),0),('%s_knee_02_loc.translateY'%(side),10)]
for each in toGetLocPos:
cmds.setAttr(each[0],each[1])
toConnectLoc = [('%s_knee_01_loc.worldPosition[0]'%(side),'%s_knee_direction_crvShape.controlPoints[0]'%(side)),('%s_knee_02_loc.worldPosition[0]'%(side),'%s_knee_direction_crvShape.controlPoints[4]'%(side))]
for each in toConnectLoc:
cmds.connectAttr(each[0],each[1])
toSetAttr = [('%s_knee_direction_crv.overrideEnabled'%(side),1),('%s_knee_direction_crv.overrideDisplayType'%(side),2),('%s_knee_01_loc.visibility'%(side),0),('%s_knee_02_loc.visibility'%(side),0)]
for each in toSetAttr:
cmds.setAttr(each[0],each[1])
toGetParent = [('%s_knee_ctrl'%(side),'%s_knee_01_loc'%(side)),('%s_ik_leg_02_jnt'%(side),'%s_knee_02_loc'%(side))]
for each in toGetParent:
cmds.parentConstraint(each[0],each[1],mo = False)
cmds.group(n='%s_knee_direction_crv_grp'%(side),em = True)
toGetParent = [('%s_knee_01_loc'%(side),'%s_knee_direction_crv_grp'%(side)),('%s_knee_02_loc'%(side),'%s_knee_direction_crv_grp'%(side)),('%s_knee_direction_crv'%(side),'%s_knee_direction_crv_grp'%(side))]
for each in toGetParent:
cmds.parent(each[0],each[1])
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
IKlegSetup('l')
IKlegSetup('r')
def IKFKlegSetup(side):
nameOfJoint = [('%s_leg_01_bln_jnt'%(side)),('%s_leg_02_bln_jnt'%(side)),('%s_leg_03_bln_jnt'%(side)),('%s_leg_04_bln_jnt'%(side))]
for each in nameOfJoint:
cmds.joint(n=each)
toGetJointPos = [('%s_leg_01_setup'%(side),'%s_leg_01_bln_jnt'%(side)),('%s_leg_02_setup'%(side),'%s_leg_02_bln_jnt'%(side)),('%s_leg_03_setup'%(side),'%s_leg_03_bln_jnt'%(side)),('%s_leg_04_setup'%(side),'%s_leg_04_bln_jnt'%(side))]
for each in toGetJointPos:
forDel = cmds.parentConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
toSetDrawStyle = [('%s_leg_01_bln_jnt.drawStyle'%(side)),('%s_leg_02_bln_jnt.drawStyle'%(side)),('%s_leg_03_bln_jnt.drawStyle'%(side))]
for each in toSetDrawStyle:
cmds.setAttr(each,2)
cmds.parent(w = True)
cmds.makeIdentity( '%s_leg_01_bln_jnt'%(side), apply=True, translate=True, rotate=True )
cmds.curve(d=1, p=[(1.25, 0, 7.5),(-1.25, 0, 7.5),(-1.25, 0, 1.25),(-7.5, 0, 1.25),(-7.5, 0, -1.25),(-1.25, 0, -1.25),(-1.25, 0, -7.5),(1.25, 0 ,-7.5),(1.25, 0, -1.25),(7.5, 0, -1.25),(7.5, 0, 1.25,),(1.25, 0 ,1.25),(1.25, 0, 7.5)])
cmds.rename('%s_leg_ik_fk_switch'%(side))
ControllerAttr('%s_leg_ik_fk_switch'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,15,False,False,False,True,True,True)
cmds.group(n='%s_leg_ik_fk_switch_grp'%(side))
cmds.parent('%s_leg_ik_fk_switch_grp'%(side), 'world_ctrl')
cmds.addAttr('%s_leg_ik_fk_switch'%(side),sn='IKFK', min = 0, max=1 ,k=1)
cmds.addAttr('%s_leg_ik_fk_switch'%(side),sn='bendyVis',at = 'bool',k=1)
parentCon = [('%s_leg_03_bln_jnt'%(side), '%s_leg_ik_fk_switch_grp'%(side)),('%s_fk_leg_01_jnt'%(side),'%s_leg_01_bln_jnt'%(side)),('%s_ik_leg_01_jnt'%(side),'%s_leg_01_bln_jnt'%(side)),('%s_fk_leg_02_jnt'%(side),'%s_leg_02_bln_jnt'%(side)),('%s_ik_leg_02_jnt'%(side),'%s_leg_02_bln_jnt'%(side)),('%s_fk_leg_03_jnt'%(side),'%s_leg_03_bln_jnt'%(side)),('%s_ik_leg_03_jnt'%(side),'%s_leg_03_bln_jnt'%(side)),('%s_fk_leg_04_jnt'%(side),'%s_leg_04_bln_jnt'%(side)),('%s_ik_leg_04_jnt'%(side),'%s_leg_04_bln_jnt'%(side))]
for each in parentCon:
cmds.parentConstraint(each[0],each[1],mo = False)
cmds.shadingNode('reverse',n = '%s_leg_ik_rev'%(side),asUtility=1)
toConnectAttr = [('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_01_bln_jnt_parentConstraint1.%s_fk_leg_01_jntW0'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_02_bln_jnt_parentConstraint1.%s_fk_leg_02_jntW0'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_03_bln_jnt_parentConstraint1.%s_fk_leg_03_jntW0'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_04_bln_jnt_parentConstraint1.%s_fk_leg_04_jntW0'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_leg_ik_rev.inputX'%(side)),('%s_leg_ik_rev.outputX'%(side),'%s_leg_01_bln_jnt_parentConstraint1.%s_ik_leg_01_jntW1'%(side,side)),('%s_leg_ik_rev.outputX'%(side),'%s_leg_02_bln_jnt_parentConstraint1.%s_ik_leg_02_jntW1'%(side,side)),('%s_leg_ik_rev.outputX'%(side),'%s_leg_03_bln_jnt_parentConstraint1.%s_ik_leg_03_jntW1'%(side,side)),('%s_leg_ik_rev.outputX'%(side),'%s_leg_04_bln_jnt_parentConstraint1.%s_ik_leg_04_jntW1'%(side,side)),('%s_leg_ik_fk_switch.IKFK'%(side),'%s_fk_leg_01_ctrl_grp.visibility'%(side)),('%s_leg_ik_rev.outputX'%(side),'%s_ik_leg_ctrl_grp.visibility'%(side)),('%s_leg_ik_rev.outputX'%(side),'%s_knee_ctrl_grp.visibility'%(side)),('%s_leg_ik_rev.outputX'%(side),'%s_knee_direction_crv_grp.visibility'%(side))]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
cmds.parent('%s_leg_01_bln_jnt'%(side),'spine_01_bln_jnt')
cmds.parent('%s_leg_04_bln_jnt'%(side),'%s_leg_03_bln_jnt'%(side))
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
IKFKlegSetup('l')
IKFKlegSetup('r')
def BendyLegSetup(side):
cmds.curve(d=3, p=[(0, 0, 0),(0, 2.5, 0),(0, 5, 0),(0, 7.5, 0),(0, 10, 0)])
cmds.rename('%s_upr_bendy_leg_crv'%(side))
cmds.curve(d=3, p=[(0, 0, 0),(0, 2.5, 0),(0, 5, 0),(0, 7.5, 0),(0, 10, 0)])
cmds.rename('%s_lwr_bendy_leg_crv'%(side))
nameOfLoc = ['%s_upr_bendy_leg_01_loc'%(side),'%s_upr_bendy_leg_02_loc'%(side),'%s_upr_bendy_leg_03_loc'%(side),'%s_upr_bendy_leg_04_loc'%(side),'%s_upr_bendy_leg_05_loc'%(side),'%s_lwr_bendy_leg_01_loc'%(side),'%s_lwr_bendy_leg_02_loc'%(side),'%s_lwr_bendy_leg_03_loc'%(side),'%s_lwr_bendy_leg_04_loc'%(side),'%s_lwr_bendy_leg_05_loc'%(side),'%s_upr_bendy_leg_aim_up_loc'%(side),'%s_lwr_bendy_leg_aim_up_loc'%(side)]
for each in nameOfLoc:
cmds.spaceLocator(n=each)
listToGetPos = [('%s_leg_01_bln_jnt'%(side),'%s_upr_bendy_leg_aim_up_loc'%(side)),('%s_leg_02_bln_jnt'%(side),'%s_lwr_bendy_leg_aim_up_loc'%(side))]
for each in listToGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.parent('%s_upr_bendy_leg_aim_up_loc'%(side),'%s_leg_01_bln_jnt'%(side))
cmds.parent('%s_lwr_bendy_leg_aim_up_loc'%(side),'%s_leg_02_bln_jnt'%(side))
cmds.setAttr('%s_upr_bendy_leg_aim_up_loc.translateY'%(side),50)
cmds.setAttr('%s_lwr_bendy_leg_aim_up_loc.translateY'%(side),50)
toGetLocPos = [('%s_upr_bendy_leg_01_loc.translateY'%(side),0),('%s_upr_bendy_leg_02_loc.translateY'%(side),2.5),('%s_upr_bendy_leg_03_loc.translateY'%(side),5),('%s_upr_bendy_leg_04_loc.translateY'%(side),7.5),('%s_upr_bendy_leg_05_loc.translateY'%(side),10),('%s_lwr_bendy_leg_01_loc.translateY'%(side),0),('%s_lwr_bendy_leg_02_loc.translateY'%(side),2.5),('%s_lwr_bendy_leg_03_loc.translateY'%(side),5),('%s_lwr_bendy_leg_04_loc.translateY'%(side),7.5),('%s_lwr_bendy_leg_05_loc.translateY'%(side),10),('%s_leg_ik_fk_switch.bendyVis'%(side),1)]
for each in toGetLocPos:
cmds.setAttr(each[0],each[1])
toConnectLoc = [('%s_upr_bendy_leg_01_loc.worldPosition[0]'%(side),'%s_upr_bendy_leg_crvShape.controlPoints[0]'%(side)),('%s_upr_bendy_leg_02_loc.worldPosition[0]'%(side),'%s_upr_bendy_leg_crvShape.controlPoints[1]'%(side)),('%s_upr_bendy_leg_03_loc.worldPosition[0]'%(side),'%s_upr_bendy_leg_crvShape.controlPoints[2]'%(side)),('%s_upr_bendy_leg_04_loc.worldPosition[0]'%(side),'%s_upr_bendy_leg_crvShape.controlPoints[3]'%(side)),('%s_upr_bendy_leg_05_loc.worldPosition[0]'%(side),'%s_upr_bendy_leg_crvShape.controlPoints[4]'%(side)),('%s_lwr_bendy_leg_01_loc.worldPosition[0]'%(side),'%s_lwr_bendy_leg_crvShape.controlPoints[0]'%(side)),('%s_lwr_bendy_leg_02_loc.worldPosition[0]'%(side),'%s_lwr_bendy_leg_crvShape.controlPoints[1]'%(side)),('%s_lwr_bendy_leg_03_loc.worldPosition[0]'%(side),'%s_lwr_bendy_leg_crvShape.controlPoints[2]'%(side)),('%s_lwr_bendy_leg_04_loc.worldPosition[0]'%(side),'%s_lwr_bendy_leg_crvShape.controlPoints[3]'%(side)),('%s_lwr_bendy_leg_05_loc.worldPosition[0]'%(side),'%s_lwr_bendy_leg_crvShape.controlPoints[4]'%(side))]
for each in toConnectLoc:
cmds.connectAttr(each[0],each[1])
listOfBendyLegController = [('%s_bendy_leg_01_ctrl'%(side),'%s_bendy_leg_01_ctrl_grp'%(side)),('%s_bendy_leg_02_ctrl'%(side),'%s_bendy_leg_02_ctrl_grp'%(side)),('%s_bendy_leg_03_ctrl'%(side),'%s_bendy_leg_03_ctrl_grp'%(side))]
for each in listOfBendyLegController:
cmds.curve(d=1,p=[(0, -3, 3),(0, -1, 2),(0, 0, 4),(0, 1, 2),(0, 3, 3),(0, 2, 1),(0, 4, 0),(0, 2, -1),(0, 3, -3),(0, 1, -2),(0, 0, -4),(0, -1, -2),(0, -3, -3),(0, -2, -1),(0, -4, 0),(0, -2, 1),(0, -3, 3)])
cmds.rename(each[0])
cmds.group(n=each[1])
cmds.delete('%s_bendy_leg_01_ctrl'%(side),'%s_bendy_leg_02_ctrl'%(side),'%s_bendy_leg_03_ctrl'%(side),constructionHistory = True)
uprBendyController01forDel = cmds.pointConstraint('%s_leg_01_setup'%(side),'%s_bendy_leg_01_ctrl_grp'%(side),mo=False)
uprBendyController01forDel = cmds.pointConstraint('%s_leg_02_setup'%(side),'%s_bendy_leg_01_ctrl_grp'%(side),mo=False)
uprBendyController02forDel = cmds.pointConstraint('%s_leg_02_setup'%(side),'%s_bendy_leg_02_ctrl_grp'%(side),mo=False)
uprBendyController03forDel = cmds.pointConstraint('%s_leg_02_setup'%(side),'%s_bendy_leg_03_ctrl_grp'%(side),mo=False)
uprBendyController03forDel = cmds.pointConstraint('%s_leg_03_setup'%(side),'%s_bendy_leg_03_ctrl_grp'%(side),mo=False)
uprBendyControllerForRotation01forDel = cmds.orientConstraint('%s_leg_01_setup'%(side),'%s_bendy_leg_01_ctrl_grp'%(side),mo=False)
uprBendyControllerForRotation02forDel = cmds.orientConstraint('%s_leg_02_setup'%(side),'%s_bendy_leg_02_ctrl_grp'%(side),mo=False)
uprBendyControllerForRotation03forDel = cmds.orientConstraint('%s_leg_02_setup'%(side),'%s_bendy_leg_03_ctrl_grp'%(side),mo=False)
cmds.delete(uprBendyController01forDel,uprBendyController02forDel,uprBendyController03forDel,uprBendyControllerForRotation01forDel,uprBendyControllerForRotation02forDel,uprBendyControllerForRotation03forDel)
listOfUprBendyJoint = ['%s_upr_bendy_leg_01_jnt'%(side),'%s_upr_bendy_leg_02_jnt'%(side),'%s_upr_bendy_leg_03_jnt'%(side),'%s_upr_bendy_leg_04_jnt'%(side),'%s_upr_bendy_leg_05_jnt'%(side),'%s_lwr_bendy_leg_01_jnt'%(side),'%s_lwr_bendy_leg_02_jnt'%(side),'%s_lwr_bendy_leg_03_jnt'%(side),'%s_lwr_bendy_leg_04_jnt'%(side),'%s_lwr_bendy_leg_05_jnt'%(side),'%s_upr_bendy_leg_01_length_jnt'%(side),'%s_upr_bendy_leg_02_length_jnt'%(side),'%s_upr_bendy_leg_03_length_jnt'%(side),'%s_upr_bendy_leg_04_length_jnt'%(side),'%s_upr_bendy_leg_05_length_jnt'%(side),'%s_lwr_bendy_leg_01_length_jnt'%(side),'%s_lwr_bendy_leg_02_length_jnt'%(side),'%s_lwr_bendy_leg_03_length_jnt'%(side),'%s_lwr_bendy_leg_04_length_jnt'%(side),'%s_lwr_bendy_leg_05_length_jnt'%(side),'%s_lwr_bendy_leg_start_length_jnt'%(side),'%s_lwr_bendy_leg_end_length_jnt'%(side),'%s_upr_bendy_leg_start_length_jnt'%(side),'%s_upr_bendy_leg_end_length_jnt'%(side)]
for each in listOfUprBendyJoint:
cmds.joint(n=each)
cmds.parent('%s_upr_bendy_leg_01_jnt'%(side),'%s_lwr_bendy_leg_01_jnt'%(side),'%s_upr_bendy_leg_01_length_jnt'%(side),'%s_lwr_bendy_leg_01_length_jnt'%(side),'%s_upr_bendy_leg_start_length_jnt'%(side),'%s_lwr_bendy_leg_start_length_jnt'%(side),w=True)
cmds.group(n='%s_upr_bendy_leg_jnt_grp'%(side),em=True)
cmds.group(n='%s_lwr_bendy_leg_jnt_grp'%(side),em=True)
cmds.parent('%s_upr_bendy_leg_01_jnt'%(side),'%s_upr_bendy_leg_jnt_grp'%(side))
cmds.parent('%s_lwr_bendy_leg_01_jnt'%(side),'%s_lwr_bendy_leg_jnt_grp'%(side))
cmds.orientConstraint('%s_leg_01_bln_jnt'%(side),'%s_upr_bendy_leg_jnt_grp'%(side),mo=True)
cmds.orientConstraint('%s_leg_02_bln_jnt'%(side),'%s_lwr_bendy_leg_jnt_grp'%(side),mo=True)
uprBendyJoint01forDel = cmds.pointConstraint('%s_leg_01_setup'%(side),'%s_upr_bendy_leg_01_jnt'%(side),mo=False)
uprBendyJoint02forDel = cmds.pointConstraint('%s_leg_01_setup'%(side),'%s_upr_bendy_leg_02_jnt'%(side),mo=False)
uprBendyJoint02forDel = cmds.pointConstraint('%s_bendy_leg_01_ctrl'%(side),'%s_upr_bendy_leg_02_jnt'%(side),mo=False)
uprBendyJoint03forDel = cmds.pointConstraint('%s_bendy_leg_01_ctrl'%(side),'%s_upr_bendy_leg_03_jnt'%(side),mo=False)
uprBendyJoint04forDel = cmds.pointConstraint('%s_bendy_leg_01_ctrl'%(side),'%s_upr_bendy_leg_04_jnt'%(side),mo=False)
uprBendyJoint04forDel = cmds.pointConstraint('%s_leg_02_setup'%(side),'%s_upr_bendy_leg_04_jnt'%(side),mo=False)
uprBendyJoint05forDel = cmds.pointConstraint('%s_leg_02_setup'%(side),'%s_upr_bendy_leg_05_jnt'%(side),mo=False)
lwrBendyJoint01forDel = cmds.pointConstraint('%s_leg_02_setup'%(side),'%s_lwr_bendy_leg_01_jnt'%(side),mo=False)
lwrBendyJoint02forDel = cmds.pointConstraint('%s_leg_02_setup'%(side),'%s_lwr_bendy_leg_02_jnt'%(side),mo=False)
lwrBendyJoint02forDel = cmds.pointConstraint('%s_bendy_leg_03_ctrl'%(side),'%s_lwr_bendy_leg_02_jnt'%(side),mo=False)
lwrBendyJoint03forDel = cmds.pointConstraint('%s_bendy_leg_03_ctrl'%(side),'%s_lwr_bendy_leg_03_jnt'%(side),mo=False)
lwrBendyJoint04forDel = cmds.pointConstraint('%s_bendy_leg_03_ctrl'%(side),'%s_lwr_bendy_leg_04_jnt'%(side),mo=False)
lwrBendyJoint04forDel = cmds.pointConstraint('%s_leg_03_setup'%(side),'%s_lwr_bendy_leg_04_jnt'%(side),mo=False)
lwrBendyJoint05forDel = cmds.pointConstraint('%s_leg_03_setup'%(side),'%s_lwr_bendy_leg_05_jnt'%(side),mo=False)
uprBendyJointForRatation01forDel = cmds.orientConstraint('%s_leg_01_setup'%(side),'%s_upr_bendy_leg_01_jnt'%(side),mo=False)
uprBendyJointForRatation02forDel = cmds.orientConstraint('%s_leg_01_setup'%(side),'%s_upr_bendy_leg_02_jnt'%(side),mo=False)
uprBendyJointForRatation03forDel = cmds.orientConstraint('%s_leg_01_setup'%(side),'%s_upr_bendy_leg_03_jnt'%(side),mo=False)
uprBendyJointForRatation04forDel = cmds.orientConstraint('%s_leg_01_setup'%(side),'%s_upr_bendy_leg_04_jnt'%(side),mo=False)
uprBendyJointForRatation05forDel = cmds.orientConstraint('%s_leg_01_setup'%(side),'%s_upr_bendy_leg_05_jnt'%(side),mo=False)
lwrBendyJointForRatation01forDel = cmds.orientConstraint('%s_leg_02_setup'%(side),'%s_lwr_bendy_leg_01_jnt'%(side),mo=False)
lwrBendyJointForRatation02forDel = cmds.orientConstraint('%s_leg_02_setup'%(side),'%s_lwr_bendy_leg_02_jnt'%(side),mo=False)
lwrBendyJointForRatation03forDel = cmds.orientConstraint('%s_leg_02_setup'%(side),'%s_lwr_bendy_leg_03_jnt'%(side),mo=False)
lwrBendyJointForRatation04forDel = cmds.orientConstraint('%s_leg_02_setup'%(side),'%s_lwr_bendy_leg_04_jnt'%(side),mo=False)
lwrBendyJointForRatation05forDel = cmds.orientConstraint('%s_leg_02_setup'%(side),'%s_lwr_bendy_leg_05_jnt'%(side),mo=False)
cmds.delete(uprBendyJoint01forDel,uprBendyJoint02forDel,uprBendyJoint03forDel,uprBendyJoint04forDel,uprBendyJoint05forDel,lwrBendyJoint01forDel,lwrBendyJoint02forDel,lwrBendyJoint03forDel,lwrBendyJoint04forDel,lwrBendyJoint05forDel,uprBendyJointForRatation01forDel,uprBendyJointForRatation02forDel,uprBendyJointForRatation03forDel,uprBendyJointForRatation04forDel,uprBendyJointForRatation05forDel,lwrBendyJointForRatation01forDel,lwrBendyJointForRatation02forDel,lwrBendyJointForRatation03forDel,lwrBendyJointForRatation04forDel,lwrBendyJointForRatation05forDel)
listOfBendyArmLenghtJointToGetPos = [('%s_upr_bendy_leg_01_jnt'%(side),'%s_upr_bendy_leg_01_length_jnt'%(side)),('%s_upr_bendy_leg_02_jnt'%(side),'%s_upr_bendy_leg_02_length_jnt'%(side)),('%s_upr_bendy_leg_03_jnt'%(side),'%s_upr_bendy_leg_03_length_jnt'%(side)),('%s_upr_bendy_leg_04_jnt'%(side),'%s_upr_bendy_leg_04_length_jnt'%(side)),('%s_upr_bendy_leg_05_jnt'%(side),'%s_upr_bendy_leg_05_length_jnt'%(side)),('%s_lwr_bendy_leg_01_jnt'%(side),'%s_lwr_bendy_leg_01_length_jnt'%(side)),('%s_lwr_bendy_leg_02_jnt'%(side),'%s_lwr_bendy_leg_02_length_jnt'%(side)),('%s_lwr_bendy_leg_03_jnt'%(side),'%s_lwr_bendy_leg_03_length_jnt'%(side)),('%s_lwr_bendy_leg_04_jnt'%(side),'%s_lwr_bendy_leg_04_length_jnt'%(side)),('%s_lwr_bendy_leg_05_jnt'%(side),'%s_lwr_bendy_leg_05_length_jnt'%(side)),('%s_upr_bendy_leg_01_jnt'%(side),'%s_upr_bendy_leg_start_length_jnt'%(side)),('%s_upr_bendy_leg_05_jnt'%(side),'%s_upr_bendy_leg_end_length_jnt'%(side)),('%s_lwr_bendy_leg_01_jnt'%(side),'%s_lwr_bendy_leg_start_length_jnt'%(side)),('%s_lwr_bendy_leg_05_jnt'%(side),'%s_lwr_bendy_leg_end_length_jnt'%(side))]
for each in listOfBendyArmLenghtJointToGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.makeIdentity('%s_upr_bendy_leg_01_jnt'%(side),'%s_lwr_bendy_leg_01_jnt'%(side),'%s_upr_bendy_leg_01_length_jnt'%(side),'%s_lwr_bendy_leg_01_length_jnt'%(side),'%s_upr_bendy_leg_start_length_jnt'%(side),'%s_lwr_bendy_leg_start_length_jnt'%(side),apply=True,rotate=True)
locToGetPos = [('%s_upr_bendy_leg_01_jnt'%(side),'%s_upr_bendy_leg_01_loc'%(side)),('%s_upr_bendy_leg_02_jnt'%(side),'%s_upr_bendy_leg_02_loc'%(side)),('%s_upr_bendy_leg_03_jnt'%(side),'%s_upr_bendy_leg_03_loc'%(side)),('%s_upr_bendy_leg_04_jnt'%(side),'%s_upr_bendy_leg_04_loc'%(side)),('%s_upr_bendy_leg_05_jnt'%(side),'%s_upr_bendy_leg_05_loc'%(side)),('%s_lwr_bendy_leg_01_jnt'%(side),'%s_lwr_bendy_leg_01_loc'%(side)),('%s_lwr_bendy_leg_02_jnt'%(side),'%s_lwr_bendy_leg_02_loc'%(side)),('%s_lwr_bendy_leg_03_jnt'%(side),'%s_lwr_bendy_leg_03_loc'%(side)),('%s_lwr_bendy_leg_04_jnt'%(side),'%s_lwr_bendy_leg_04_loc'%(side)),('%s_lwr_bendy_leg_05_jnt'%(side),'%s_lwr_bendy_leg_05_loc'%(side))]
for each in locToGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = ['%s_upr_bendy_leg_loc_grp'%(side),'%s_lwr_bendy_leg_loc_grp'%(side),'%s_bendy_leg_ctrl_grp'%(side),'%s_bendy_leg_jnt_grp'%(side)]
for each in list:
cmds.group(n=each,em=True)
cmds.connectAttr('%s_leg_ik_fk_switch.bendyVis'%(side),'%s_bendy_leg_ctrl_grp.visibility'%(side))
list = [('%s_lwr_bendy_leg_jnt_grp'%(side),'%s_bendy_leg_jnt_grp'%(side)),('%s_upr_bendy_leg_jnt_grp'%(side),'%s_bendy_leg_jnt_grp'%(side)),('%s_upr_bendy_leg_01_loc'%(side),'%s_upr_bendy_leg_loc_grp'%(side)),('%s_upr_bendy_leg_02_loc'%(side),'%s_upr_bendy_leg_loc_grp'%(side)),('%s_upr_bendy_leg_03_loc'%(side),'%s_upr_bendy_leg_loc_grp'%(side)),('%s_upr_bendy_leg_04_loc'%(side),'%s_upr_bendy_leg_loc_grp'%(side)),('%s_upr_bendy_leg_05_loc'%(side),'%s_upr_bendy_leg_loc_grp'%(side)),('%s_lwr_bendy_leg_01_loc'%(side),'%s_lwr_bendy_leg_loc_grp'%(side)),('%s_lwr_bendy_leg_02_loc'%(side),'%s_lwr_bendy_leg_loc_grp'%(side)),('%s_lwr_bendy_leg_03_loc'%(side),'%s_lwr_bendy_leg_loc_grp'%(side)),('%s_lwr_bendy_leg_04_loc'%(side),'%s_lwr_bendy_leg_loc_grp'%(side)),('%s_lwr_bendy_leg_05_loc'%(side),'%s_lwr_bendy_leg_loc_grp'%(side)),('%s_bendy_leg_01_ctrl_grp'%(side),'%s_bendy_leg_ctrl_grp'%(side)),('%s_bendy_leg_02_ctrl_grp'%(side),'%s_bendy_leg_ctrl_grp'%(side)),('%s_bendy_leg_03_ctrl_grp'%(side),'%s_bendy_leg_ctrl_grp'%(side)),('%s_upr_bendy_leg_01_length_jnt'%(side),'%s_bendy_leg_jnt_grp'%(side)),('%s_lwr_bendy_leg_01_length_jnt'%(side),'%s_bendy_leg_jnt_grp'%(side)),('%s_upr_bendy_leg_start_length_jnt'%(side),'%s_bendy_leg_jnt_grp'%(side)),('%s_lwr_bendy_leg_start_length_jnt'%(side),'%s_bendy_leg_jnt_grp'%(side))]
for each in list:
cmds.parent(each[0],each[1])
list = [('%s_bendy_leg_01_ctrl'%(side)),('%s_bendy_leg_02_ctrl'%(side)),('%s_bendy_leg_03_ctrl'%(side))]
for each in list:
cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.rotateX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.rotateY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.rotateZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,18)
cmds.select('%s_upr_bendy_leg_01_jnt'%(side),'%s_upr_bendy_leg_05_jnt'%(side),'%s_upr_bendy_leg_crv'%(side))
cmds.ikHandle(n='%s_upr_bendy_leg_ikh'%(side),sol='ikSplineSolver',ccv=0,pcv =0)
cmds.select('%s_lwr_bendy_leg_01_jnt'%(side),'%s_lwr_bendy_leg_05_jnt'%(side),'%s_lwr_bendy_leg_crv'%(side))
cmds.ikHandle(n='%s_lwr_bendy_leg_ikh'%(side),sol='ikSplineSolver',ccv=0,pcv =0)
list = [('%s_leg_01_bln_jnt'%(side),'%s_upr_bendy_leg_01_loc'%(side)),('%s_leg_01_bln_jnt'%(side),'%s_upr_bendy_leg_02_loc'%(side)),('%s_bendy_leg_01_ctrl'%(side),'%s_upr_bendy_leg_02_loc'%(side)),('%s_bendy_leg_01_ctrl'%(side),'%s_upr_bendy_leg_03_loc'%(side)),('%s_bendy_leg_01_ctrl'%(side),'%s_upr_bendy_leg_04_loc'%(side)),('%s_bendy_leg_02_ctrl'%(side),'%s_upr_bendy_leg_04_loc'%(side)),('%s_bendy_leg_02_ctrl'%(side),'%s_upr_bendy_leg_05_loc'%(side)),('%s_bendy_leg_02_ctrl'%(side),'%s_lwr_bendy_leg_01_loc'%(side)),('%s_bendy_leg_02_ctrl'%(side),'%s_lwr_bendy_leg_02_loc'%(side)),('%s_bendy_leg_03_ctrl'%(side),'%s_lwr_bendy_leg_02_loc'%(side)),('%s_bendy_leg_03_ctrl'%(side),'%s_lwr_bendy_leg_03_loc'%(side)),('%s_bendy_leg_03_ctrl'%(side),'%s_lwr_bendy_leg_04_loc'%(side)),('%s_leg_03_bln_jnt'%(side),'%s_lwr_bendy_leg_04_loc'%(side)),('%s_leg_03_bln_jnt'%(side),'%s_lwr_bendy_leg_05_loc'%(side))]
for each in list:
cmds.pointConstraint(each[0],each[1],mo=True)
cmds.pointConstraint('%s_leg_01_bln_jnt'%(side),'%s_bendy_leg_01_ctrl_grp'%(side),mo = True)
cmds.pointConstraint('%s_bendy_leg_02_ctrl'%(side),'%s_bendy_leg_01_ctrl_grp'%(side),mo = True)
cmds.aimConstraint('%s_bendy_leg_02_ctrl'%(side),'%s_bendy_leg_01_ctrl_grp'%(side),wut = 'object',wuo = '%s_upr_bendy_leg_aim_up_loc'%(side),mo = True)
cmds.parentConstraint('%s_leg_02_bln_jnt'%(side),'%s_bendy_leg_02_ctrl_grp'%(side),mo=True)
cmds.pointConstraint('%s_leg_03_bln_jnt'%(side),'%s_bendy_leg_03_ctrl_grp'%(side),mo = True)
cmds.pointConstraint('%s_bendy_leg_02_ctrl'%(side),'%s_bendy_leg_03_ctrl_grp'%(side),mo = True)
cmds.aimConstraint('%s_bendy_leg_02_ctrl'%(side),'%s_bendy_leg_03_ctrl_grp'%(side),wut = 'object',wuo = '%s_lwr_bendy_leg_aim_up_loc'%(side),mo = True)
cmds.scaleConstraint('world_ctrl','%s_bendy_leg_01_ctrl_grp'%(side),mo = True)
cmds.scaleConstraint('world_ctrl','%s_bendy_leg_02_ctrl_grp'%(side),mo = True)
cmds.scaleConstraint('world_ctrl','%s_bendy_leg_03_ctrl_grp'%(side),mo = True)
createNode = [('multiplyDivide','%s_upr_bendy_leg_stretch_01_mult'%(side)),('multiplyDivide','%s_upr_bendy_leg_stretch_02_mult'%(side)),('multiplyDivide','%s_lwr_bendy_leg_stretch_01_mult'%(side)),('multiplyDivide','%s_lwr_bendy_leg_stretch_02_mult'%(side))]
for each in createNode:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
toSetNode = [('%s_upr_bendy_leg_stretch_01_mult.operation'%(side),2),('%s_upr_bendy_leg_stretch_01_mult.operation'%(side),2),('%s_lwr_bendy_leg_stretch_01_mult.operation'%(side),2),('%s_lwr_bendy_leg_stretch_01_mult.operation'%(side),2),('%s_upr_bendy_leg_stretch_01_mult.operation'%(side),2)]
for each in toSetNode:
cmds.setAttr(each[0],each[1])
uprArmCurveInfo = cmds.arclen('%s_upr_bendy_leg_crv'%(side),ch = True)
cmds.rename(uprArmCurveInfo,'%s_upr_bendy_leg_crv_info'%(side))
lwrArmCurveInfo = cmds.arclen('%s_lwr_bendy_leg_crv'%(side),ch = True)
cmds.rename(lwrArmCurveInfo,'%s_lwr_bendy_leg_crv_info'%(side))
toConnectAttr = [('%s_leg_02_bln_jnt.rotateX'%(side),'%s_upr_bendy_leg_ikh.twist'%(side)),('%s_upr_bendy_leg_crv_info.arcLength'%(side),'%s_upr_bendy_leg_stretch_01_mult.input1X'%(side)),('%s_upr_bendy_leg_stretch_01_mult.outputX'%(side),'%s_upr_bendy_leg_stretch_02_mult.input1X'%(side)),('%s_upr_bendy_leg_02_length_jnt.translateX'%(side),'%s_upr_bendy_leg_stretch_02_mult.input2X'%(side)),('%s_upr_bendy_leg_stretch_02_mult.outputX'%(side),'%s_upr_bendy_leg_02_jnt.translateX'%(side)),('%s_upr_bendy_leg_stretch_02_mult.outputX'%(side),'%s_upr_bendy_leg_03_jnt.translateX'%(side)),('%s_upr_bendy_leg_stretch_02_mult.outputX'%(side),'%s_upr_bendy_leg_04_jnt.translateX'%(side)),('%s_upr_bendy_leg_stretch_02_mult.outputX'%(side),'%s_upr_bendy_leg_05_jnt.translateX'%(side)),('%s_upr_bendy_leg_end_length_jnt.translateX'%(side),'%s_upr_bendy_leg_stretch_01_mult.input2X'%(side)),('%s_leg_03_bln_jnt.rotateX'%(side),'%s_lwr_bendy_leg_ikh.twist'%(side)),('%s_lwr_bendy_leg_crv_info.arcLength'%(side),'%s_lwr_bendy_leg_stretch_01_mult.input1X'%(side)),('%s_lwr_bendy_leg_stretch_01_mult.outputX'%(side),'%s_lwr_bendy_leg_stretch_02_mult.input1X'%(side)),('%s_lwr_bendy_leg_02_length_jnt.translateX'%(side),'%s_lwr_bendy_leg_stretch_02_mult.input2X'%(side)),('%s_lwr_bendy_leg_stretch_02_mult.outputX'%(side),'%s_lwr_bendy_leg_02_jnt.translateX'%(side)),('%s_lwr_bendy_leg_stretch_02_mult.outputX'%(side),'%s_lwr_bendy_leg_03_jnt.translateX'%(side)),('%s_lwr_bendy_leg_stretch_02_mult.outputX'%(side),'%s_lwr_bendy_leg_04_jnt.translateX'%(side)),('%s_lwr_bendy_leg_stretch_02_mult.outputX'%(side),'%s_lwr_bendy_leg_05_jnt.translateX'%(side)),('%s_lwr_bendy_leg_end_length_jnt.translateX'%(side),'%s_lwr_bendy_leg_stretch_01_mult.input2X'%(side))]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
list = ['%s_upr_bendy_leg_ik_setup_grp'%(side),'%s_lwr_bendy_leg_ik_setup_grp'%(side),'%s_upr_leg_bendy_setup_grp'%(side),'%s_lwr_leg_bendy_setup_grp'%(side)]
for each in list:
cmds.group(n=each,em=True)
list = [('%s_upr_bendy_leg_ik_setup_grp'%(side),'%s_upr_leg_bendy_setup_grp'%(side)),('%s_lwr_bendy_leg_ik_setup_grp'%(side),'%s_lwr_leg_bendy_setup_grp'%(side)),('%s_upr_bendy_leg_loc_grp'%(side),'%s_upr_leg_bendy_setup_grp'%(side)),('%s_lwr_bendy_leg_loc_grp'%(side),'%s_lwr_leg_bendy_setup_grp'%(side)),('%s_bendy_leg_ctrl_grp'%(side),'world_ctrl'),('%s_upr_bendy_leg_crv'%(side),'%s_upr_bendy_leg_ik_setup_grp'%(side)),('%s_upr_bendy_leg_ikh'%(side),'%s_upr_bendy_leg_ik_setup_grp'%(side)),('%s_lwr_bendy_leg_crv'%(side),'%s_lwr_bendy_leg_ik_setup_grp'%(side)),('%s_lwr_bendy_leg_ikh'%(side),'%s_lwr_bendy_leg_ik_setup_grp'%(side))]
for each in list:
cmds.parent(each[0],each[1])
BendyLegSetup('l')
BendyLegSetup('r')
def StrechyLegSetup(side):
#StrechyLeg#
jointList = ['%s_leg_01_length_jnt'%(side),'%s_leg_02_length_jnt'%(side),'%s_leg_03_length_jnt'%(side)]
for each in jointList:
cmds.joint(n=each)
cmds.group(n='%s_leg_length_jnt_grp'%(side),em=True)
cmds.parent('%s_leg_01_length_jnt'%(side),'%s_leg_length_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_leg_length_jnt_grp'%(side),mo=True)
listOfToGetJointPos = [('%s_leg_01_setup'%(side),'%s_leg_01_length_jnt'%(side)),('%s_leg_02_setup'%(side),'%s_leg_02_length_jnt'%(side)),('%s_leg_03_setup'%(side),'%s_leg_03_length_jnt'%(side))]
for each in listOfToGetJointPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
addNode = [('distanceBetween','%s_upr_leg_dist'%(side)),('distanceBetween','%s_lwr_leg_dist'%(side)),('addDoubleLinear','%s_leg_full_dist'%(side)),('distanceBetween','%s_leg_stretch_dist'%(side)),('condition','%s_leg_stretch_cond'%(side)),('multiplyDivide','%s_leg_stretch_mult'%(side)),('multiplyDivide','%s_upr_leg_strecth_mult'%(side)),('multiplyDivide','%s_lwr_leg_strecth_mult'%(side)),('multiplyDivide','%s_leg_strecth_option_mult'%(side))]
for each in addNode:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
cmds.setAttr('%s_leg_stretch_cond.operation'%(side),2)
cmds.setAttr('%s_leg_stretch_mult.operation'%(side),2)
addLoc = [('%s_leg_start_dist_loc'%(side)),('%s_leg_end_dist_loc'%(side))]
for each in addLoc:
cmds.spaceLocator(n=each)
cmds.group(n='%s_leg_start_dist_loc_grp'%(side),em=True)
cmds.parent('%s_leg_start_dist_loc'%(side),'%s_leg_start_dist_loc_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_leg_start_dist_loc_grp'%(side),mo=True)
toConnectNode = [('%s_leg_01_length_jnt.worldMatrix'%(side),'%s_upr_leg_dist.inMatrix1'%(side)),('%s_leg_02_length_jnt.worldMatrix'%(side),'%s_upr_leg_dist.inMatrix2'%(side)),('%s_leg_02_length_jnt.worldMatrix'%(side),'%s_lwr_leg_dist.inMatrix1'%(side)),('%s_leg_03_length_jnt.worldMatrix'%(side),'%s_lwr_leg_dist.inMatrix2'%(side)),('%s_upr_leg_dist.distance'%(side),'%s_leg_full_dist.input1'%(side)),('%s_lwr_leg_dist.distance'%(side),'%s_leg_full_dist.input2'%(side)),('%s_leg_start_dist_loc.worldMatrix'%(side),'%s_leg_stretch_dist.inMatrix1'%(side)),('%s_leg_end_dist_loc.worldMatrix'%(side),'%s_leg_stretch_dist.inMatrix2'%(side)),('%s_leg_stretch_dist.distance'%(side),'%s_leg_stretch_cond.firstTerm'%(side)),('%s_leg_full_dist.output'%(side),'%s_leg_stretch_cond.secondTerm'%(side)),('%s_leg_stretch_dist.distance'%(side),'%s_leg_stretch_mult.input1X'%(side)),('%s_leg_full_dist.output'%(side),'%s_leg_stretch_mult.input2X'%(side)),('%s_leg_stretch_mult.outputX'%(side),'%s_leg_stretch_cond.colorIfTrue.colorIfTrueR'%(side)),('%s_leg_stretch_cond.outColor.outColorR'%(side),'%s_lwr_leg_strecth_mult.input1X'%(side)),('%s_leg_stretch_cond.outColor.outColorR'%(side),'%s_upr_leg_strecth_mult.input1X'%(side)),('%s_leg_02_setup.translateX'%(side),'%s_upr_leg_strecth_mult.input2X'%(side)),('%s_leg_03_setup.translateX'%(side),'%s_lwr_leg_strecth_mult.input2X'%(side)),('%s_upr_leg_strecth_mult.outputX'%(side),'%s_ik_leg_02_jnt.translateX'%(side)),('%s_lwr_leg_strecth_mult.outputX'%(side),'%s_ik_leg_03_jnt.translateX'%(side)),('%s_ik_leg_ctrl.stretch'%(side),'%s_leg_strecth_option_mult.input1X'%(side)),('%s_leg_strecth_option_mult.outputX'%(side),'%s_leg_stretch_cond.operation'%(side))]
for each in toConnectNode:
cmds.connectAttr(each[0],each[1])
toSetVis = [('%s_leg_start_dist_loc.visibility'%(side)),('%s_leg_end_dist_loc.visibility'%(side))]
for each in toSetVis:
cmds.setAttr(each,0)
toGetLocPos = [('%s_leg_01_setup'%(side),'%s_leg_start_dist_loc'%(side)),('%s_leg_03_setup'%(side),'%s_leg_end_dist_loc'%(side))]
for each in toGetLocPos:
forDel = cmds.pointConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
cmds.parentConstraint('spine_01_bln_jnt','%s_leg_start_dist_loc'%(side),mo=True)
cmds.parent('%s_leg_end_dist_loc'%(side),'%s_ik_leg_ctrl'%(side))
cmds.setAttr('%s_leg_strecth_option_mult.input2X'%(side),2)
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
StrechyLegSetup('l')
StrechyLegSetup('r')
def legJointGroup():
cmds.group(n='l_leg_jnt_grp',em=True)
cmds.group(n='r_leg_jnt_grp',em=True)
cmds.group(n='leg_jnt_grp',em=True)
cmds.group(n='leg_bendy_setup_grp',em=True)
listOfJnt = [('r_leg_01_bln_jnt','r_leg_jnt_grp'),('l_bendy_leg_jnt_grp','l_leg_jnt_grp'),('r_bendy_leg_jnt_grp','r_leg_jnt_grp'),('l_upr_leg_bendy_setup_grp','leg_bendy_setup_grp'),('l_lwr_leg_bendy_setup_grp','leg_bendy_setup_grp'),('r_upr_leg_bendy_setup_grp','leg_bendy_setup_grp'),('r_lwr_leg_bendy_setup_grp','leg_bendy_setup_grp'),('l_leg_01_bln_jnt','l_leg_jnt_grp'),('l_leg_jnt_grp','leg_jnt_grp'),('r_leg_jnt_grp','leg_jnt_grp'),('l_fk_leg_01_jnt','l_leg_jnt_grp'),('r_fk_leg_01_jnt','r_leg_jnt_grp'),('l_upr_bendy_leg_jnt_grp','l_leg_jnt_grp'),('l_lwr_bendy_leg_jnt_grp','l_leg_jnt_grp'),('r_upr_bendy_leg_jnt_grp','r_leg_jnt_grp'),('r_lwr_bendy_leg_jnt_grp','r_leg_jnt_grp'),('l_ik_leg_jnt_grp','l_leg_jnt_grp'),('r_ik_leg_jnt_grp','r_leg_jnt_grp'),('r_leg_length_jnt_grp','r_leg_jnt_grp'),('l_leg_length_jnt_grp','l_leg_jnt_grp')]
for each in listOfJnt:
cmds.parent(each[0],each[1])
legJointGroup()
def noBendyLeg():
def FKlegSetup(side):
nameOfFKlegController = [('%s_fk_leg_01_ctrl'%(side),'%s_fk_leg_01_ctrl_grp'%(side)),('%s_fk_leg_02_ctrl'%(side),'%s_fk_leg_02_ctrl_grp'%(side)),('%s_fk_leg_03_ctrl'%(side),'%s_fk_leg_03_ctrl_grp'%(side)),('%s_fk_leg_04_ctrl'%(side),'%s_fk_leg_04_ctrl_grp'%(side))]
for each in nameOfFKlegController:
cmds.curve(d=1,p=[(0.0, 1.8457071003629746, -6.888272674590291),(0.0, 1.6065215981349992, -5.995620227271308),(0.0, -1.6065234643869502, -5.995624729951774),(0.0, -1.8454397435472047, -6.8872682416730004),(0.0, -5.041829388107622, -5.041831819868864),(0.0, -4.389101595742385, -4.389102497134237),(0.0, -5.995620227271308, -1.6065215981349992),(0.0, -6.888272674590291, -1.8457071003629746),(0.0, -6.8872682416730004, 1.8454397435472047),(0.0, -5.995624729951774, 1.6065234643869502),(0.0, -4.389102497134237, 4.389101595742385),(0.0, -5.041831819868864, 5.041829388107622),(0.0, -1.8457071003629746, 6.888272674590291),(0.0, -1.6065215981349992, 5.995620227271308),(0.0, 1.6065234643869502, 5.995624729951774),(0.0, 1.8454397435472047, 6.8872682416730004),(0.0, 5.041829388107622, 5.041831819868864),(0.0, 4.389101595742385, 4.389102497134237),(0.0, 5.995620227271308, 1.6065215981349992),(0.0, 6.888272674590291, 1.8457071003629746),(0.0, 6.8872682416730004, -1.8454397435472047),(0.0, 5.995624729951774, -1.6065234643869502),(0.0, 4.389102497134237, -4.389101595742385),(0.0, 5.041831819868864, -5.041829388107622),(0.0, 1.8457071003629746, -6.888272674590291)])
cmds.rename(each[0])
cmds.group(n=each[1])
createJoint = ['%s_fk_leg_01_jnt'%(side),'%s_fk_leg_02_jnt'%(side),'%s_fk_leg_03_jnt'%(side),'%s_fk_leg_04_jnt'%(side)]
for each in createJoint:
cmds.joint(n=each)
toGetFKlegPos = [('%s_leg_01_setup'%(side),'%s_fk_leg_01_ctrl_grp'%(side)),('%s_leg_02_setup'%(side),'%s_fk_leg_02_ctrl_grp'%(side)),('%s_leg_03_setup'%(side),'%s_fk_leg_03_ctrl_grp'%(side)),('%s_leg_04_setup'%(side),'%s_fk_leg_04_ctrl_grp'%(side)),('%s_leg_01_setup'%(side),'%s_fk_leg_01_jnt'%(side)),('%s_leg_02_setup'%(side),'%s_fk_leg_02_jnt'%(side)),('%s_leg_03_setup'%(side),'%s_fk_leg_03_jnt'%(side)),('%s_leg_04_setup'%(side),'%s_fk_leg_04_jnt'%(side))]
for each in toGetFKlegPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.makeIdentity('%s_fk_leg_01_jnt'%(side),apply=True,rotate=True)
toParentCon = [('%s_fk_leg_01_ctrl'%(side),'%s_fk_leg_01_jnt'%(side)),('%s_fk_leg_02_ctrl'%(side),'%s_fk_leg_02_jnt'%(side)),('%s_fk_leg_03_ctrl'%(side),'%s_fk_leg_03_jnt'%(side)),('%s_fk_leg_04_ctrl'%(side),'%s_fk_leg_04_jnt'%(side)),('spine_01_bln_jnt','%s_fk_leg_01_ctrl_grp'%(side))]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo=True)
toParent = [('%s_fk_leg_01_ctrl_grp'%(side),'world_ctrl'),('%s_fk_leg_02_ctrl_grp'%(side),'%s_fk_leg_01_ctrl'%(side)),('%s_fk_leg_03_ctrl_grp'%(side), '%s_fk_leg_02_ctrl'%(side)),('%s_fk_leg_04_ctrl_grp'%(side),'%s_fk_leg_03_ctrl'%(side))]
for each in toParent:
cmds.parent(each[0],each[1])
toSetAttr = [('%s_fk_leg_01_ctrl'%(side)),('%s_fk_leg_02_ctrl'%(side)),('%s_fk_leg_03_ctrl'%(side)),('%s_fk_leg_04_ctrl'%(side))]
for each in toSetAttr:
cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,6)
FKlegSetup('l')
FKlegSetup('r')
def IKFKarmSetup(side):
#IKFKarmJoint#
nameOfJoint = [('%s_arm_01_bln_jnt'%(side)),('%s_arm_02_bln_jnt'%(side)),('%s_arm_03_bln_jnt'%(side))]
for each in nameOfJoint:
cmds.joint(n=each)
cmds.group(n='%s_arm_bln_jnt_grp'%(side),em=True)
cmds.parent('%s_arm_01_bln_jnt'%(side),'%s_arm_bln_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_arm_bln_jnt_grp'%(side),mo=True)
toGetPos = [('%s_arm_01_setup'%(side), '%s_arm_01_bln_jnt'%(side)),('%s_arm_02_setup'%(side),'%s_arm_02_bln_jnt'%(side)),('%s_arm_03_setup'%(side),'%s_arm_03_bln_jnt'%(side))]
for each in toGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
cmds.setAttr('%s_arm_01_bln_jnt.drawStyle'%(side),2)
cmds.setAttr('%s_arm_02_bln_jnt.drawStyle'%(side),2)
cmds.makeIdentity( '%s_arm_01_bln_jnt'%(side),apply=True, rotate=True)
toParentCon = [('%s_fk_arm_01_jnt'%(side),'%s_arm_01_bln_jnt'%(side)),('%s_ik_01_jnt'%(side), '%s_arm_01_bln_jnt'%(side)),('%s_fk_arm_02_jnt'%(side), '%s_arm_02_bln_jnt'%(side)),('%s_ik_02_jnt'%(side), '%s_arm_02_bln_jnt'%(side)),('%s_fk_arm_03_jnt'%(side), '%s_arm_03_bln_jnt'%(side)),('%s_ik_03_jnt'%(side), '%s_arm_03_bln_jnt'%(side))]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo = True)
cmds.curve(d=1, p=[(1.25, 0, 7.5),(-1.25, 0, 7.5),(-1.25, 0, 1.25),(-7.5, 0, 1.25),(-7.5, 0, -1.25),(-1.25, 0, -1.25),(-1.25, 0, -7.5),(1.25, 0 ,-7.5),(1.25, 0, -1.25),(7.5, 0, -1.25),(7.5, 0, 1.25,),(1.25, 0 ,1.25),(1.25, 0, 7.5)])
cmds.rename('%s_ik_fk_switch'%(side))
ControllerAttr('%s_ik_fk_switch'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,15,False,False,False,True,True,True)
cmds.group(n='%s_ik_fk_switch_grp'%(side))
cmds.parent('%s_ik_fk_switch_grp'%(side), 'world_ctrl')
cmds.addAttr('%s_ik_fk_switch'%(side),sn='IKFK', min = 0, max=1 ,k=1,dv=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='bendyVis',at = 'bool',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='thumbCurl',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='indexCurl',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='middleCurl',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='ringCurl',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='pinkyCurl',k=1)
cmds.parentConstraint('%s_arm_03_bln_jnt'%(side), '%s_ik_fk_switch_grp'%(side))
cmds.shadingNode('reverse',n = '%s_arm_ik_rev'%(side),asUtility=1)
toConnectAttr = [('%s_ik_fk_switch.IKFK'%(side),'%s_arm_03_bln_jnt_parentConstraint1.%s_fk_arm_03_jntW0'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_arm_02_bln_jnt_parentConstraint1.%s_fk_arm_02_jntW0'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_arm_01_bln_jnt_parentConstraint1.%s_fk_arm_01_jntW0'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_arm_ik_rev.inputX'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_arm_03_bln_jnt_parentConstraint1.%s_ik_03_jntW1'%(side,side)),('%s_arm_ik_rev.outputX'%(side),'%s_arm_02_bln_jnt_parentConstraint1.%s_ik_02_jntW1'%(side,side)),('%s_arm_ik_rev.outputX'%(side),'%s_arm_01_bln_jnt_parentConstraint1.%s_ik_01_jntW1'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_fk_arm_01_ctrl_grp.visibility'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_ik_arm_ctrl_grp.visibility'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_elbow_ctrl_grp.visibility'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_elbow_direction_crv_grp.visibility'%(side))]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
IKFKarmSetup('l')
IKFKarmSetup('r')
def bendyArmSetup(side):
cmds.curve(d=3, p=[(0, 0, 0),(0, 2.5, 0),(0, 5, 0),(0, 7.5, 0),(0, 10, 0)])
cmds.rename('%s_upr_bendy_arm_crv'%(side))
cmds.curve(d=3, p=[(0, 0, 0),(0, 2.5, 0),(0, 5, 0),(0, 7.5, 0),(0, 10, 0)])
cmds.rename('%s_lwr_bendy_arm_crv'%(side))
nameOfLoc = ['%s_upr_bendy_arm_01_loc'%(side),'%s_upr_bendy_arm_02_loc'%(side),'%s_upr_bendy_arm_03_loc'%(side),'%s_upr_bendy_arm_04_loc'%(side),'%s_upr_bendy_arm_05_loc'%(side),'%s_lwr_bendy_arm_01_loc'%(side),'%s_lwr_bendy_arm_02_loc'%(side),'%s_lwr_bendy_arm_03_loc'%(side),'%s_lwr_bendy_arm_04_loc'%(side),'%s_lwr_bendy_arm_05_loc'%(side),'%s_upr_bendy_arm_aim_up_loc'%(side),'%s_lwr_bendy_arm_aim_up_loc'%(side)]
for each in nameOfLoc:
cmds.spaceLocator(n=each)
listToGetPos = [('%s_arm_01_bln_jnt'%(side),'%s_upr_bendy_arm_aim_up_loc'%(side)),('%s_arm_02_bln_jnt'%(side),'%s_lwr_bendy_arm_aim_up_loc'%(side))]
for each in listToGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.parent('%s_upr_bendy_arm_aim_up_loc'%(side),'%s_arm_01_bln_jnt'%(side))
cmds.parent('%s_lwr_bendy_arm_aim_up_loc'%(side),'%s_arm_02_bln_jnt'%(side))
cmds.setAttr('%s_upr_bendy_arm_aim_up_loc.translateY'%(side),50)
cmds.setAttr('%s_lwr_bendy_arm_aim_up_loc.translateY'%(side),50)
toGetLocPos = [('%s_upr_bendy_arm_01_loc.translateY'%(side),0),('%s_upr_bendy_arm_02_loc.translateY'%(side),2.5),('%s_upr_bendy_arm_03_loc.translateY'%(side),5),('%s_upr_bendy_arm_04_loc.translateY'%(side),7.5),('%s_upr_bendy_arm_05_loc.translateY'%(side),10),('%s_lwr_bendy_arm_01_loc.translateY'%(side),0),('%s_lwr_bendy_arm_02_loc.translateY'%(side),2.5),('%s_lwr_bendy_arm_03_loc.translateY'%(side),5),('%s_lwr_bendy_arm_04_loc.translateY'%(side),7.5),('%s_lwr_bendy_arm_05_loc.translateY'%(side),10),('%s_ik_fk_switch.bendyVis'%(side),1)]
for each in toGetLocPos:
cmds.setAttr(each[0],each[1])
toConnectLoc = [('%s_upr_bendy_arm_01_loc.worldPosition[0]'%(side),'%s_upr_bendy_arm_crvShape.controlPoints[0]'%(side)),('%s_upr_bendy_arm_02_loc.worldPosition[0]'%(side),'%s_upr_bendy_arm_crvShape.controlPoints[1]'%(side)),('%s_upr_bendy_arm_03_loc.worldPosition[0]'%(side),'%s_upr_bendy_arm_crvShape.controlPoints[2]'%(side)),('%s_upr_bendy_arm_04_loc.worldPosition[0]'%(side),'%s_upr_bendy_arm_crvShape.controlPoints[3]'%(side)),('%s_upr_bendy_arm_05_loc.worldPosition[0]'%(side),'%s_upr_bendy_arm_crvShape.controlPoints[4]'%(side)),('%s_lwr_bendy_arm_01_loc.worldPosition[0]'%(side),'%s_lwr_bendy_arm_crvShape.controlPoints[0]'%(side)),('%s_lwr_bendy_arm_02_loc.worldPosition[0]'%(side),'%s_lwr_bendy_arm_crvShape.controlPoints[1]'%(side)),('%s_lwr_bendy_arm_03_loc.worldPosition[0]'%(side),'%s_lwr_bendy_arm_crvShape.controlPoints[2]'%(side)),('%s_lwr_bendy_arm_04_loc.worldPosition[0]'%(side),'%s_lwr_bendy_arm_crvShape.controlPoints[3]'%(side)),('%s_lwr_bendy_arm_05_loc.worldPosition[0]'%(side),'%s_lwr_bendy_arm_crvShape.controlPoints[4]'%(side))]
for each in toConnectLoc:
cmds.connectAttr(each[0],each[1])
listOfBendyArmController = [('%s_bendy_arm_01_ctrl'%(side),'%s_bendy_arm_01_ctrl_grp'%(side)),('%s_bendy_arm_02_ctrl'%(side),'%s_bendy_arm_02_ctrl_grp'%(side)),('%s_bendy_arm_03_ctrl'%(side),'%s_bendy_arm_03_ctrl_grp'%(side))]
for each in listOfBendyArmController:
cmds.curve(d=1, p=[(0, -3, 3),(0, -1, 2),(0, 0, 4),(0, 1, 2),(0, 3, 3),(0, 2, 1),(0, 4, 0),(0, 2, -1),(0, 3, -3),(0, 1, -2),(0, 0, -4),(0, -1, -2),(0, -3, -3),(0, -2, -1),(0, -4, 0),(0, -2, 1),(0, -3, 3)])
cmds.rename(each[0])
cmds.group(n=each[1])
cmds.delete('%s_bendy_arm_01_ctrl'%(side),'%s_bendy_arm_02_ctrl'%(side),'%s_bendy_arm_03_ctrl'%(side),constructionHistory = True)
uprBendyController01forDel = cmds.pointConstraint('%s_arm_01_setup'%(side),'%s_bendy_arm_01_ctrl_grp'%(side),mo=False)
uprBendyController01forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_bendy_arm_01_ctrl_grp'%(side),mo=False)
uprBendyController02forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_bendy_arm_02_ctrl_grp'%(side),mo=False)
uprBendyController03forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_bendy_arm_03_ctrl_grp'%(side),mo=False)
uprBendyController03forDel = cmds.pointConstraint('%s_arm_03_setup'%(side),'%s_bendy_arm_03_ctrl_grp'%(side),mo=False)
uprBendyControllerForRotation01forDel = cmds.orientConstraint('%s_arm_01_setup'%(side),'%s_bendy_arm_01_ctrl_grp'%(side),mo=False)
uprBendyControllerForRotation02forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_bendy_arm_02_ctrl_grp'%(side),mo=False)
uprBendyControllerForRotation03forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_bendy_arm_03_ctrl_grp'%(side),mo=False)
cmds.delete(uprBendyController01forDel,uprBendyController02forDel,uprBendyController03forDel,uprBendyControllerForRotation01forDel,uprBendyControllerForRotation02forDel,uprBendyControllerForRotation03forDel)
listOfUprBendyJoint = ['%s_upr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_02_jnt'%(side),'%s_upr_bendy_arm_03_jnt'%(side),'%s_upr_bendy_arm_04_jnt'%(side),'%s_upr_bendy_arm_05_jnt'%(side),'%s_lwr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_02_jnt'%(side),'%s_lwr_bendy_arm_03_jnt'%(side),'%s_lwr_bendy_arm_04_jnt'%(side),'%s_lwr_bendy_arm_05_jnt'%(side),'%s_upr_bendy_arm_01_length_jnt'%(side),'%s_upr_bendy_arm_02_length_jnt'%(side),'%s_upr_bendy_arm_03_length_jnt'%(side),'%s_upr_bendy_arm_04_length_jnt'%(side),'%s_upr_bendy_arm_05_length_jnt'%(side),'%s_lwr_bendy_arm_01_length_jnt'%(side),'%s_lwr_bendy_arm_02_length_jnt'%(side),'%s_lwr_bendy_arm_03_length_jnt'%(side),'%s_lwr_bendy_arm_04_length_jnt'%(side),'%s_lwr_bendy_arm_05_length_jnt'%(side),'%s_lwr_bendy_arm_start_length_jnt'%(side),'%s_lwr_bendy_arm_end_length_jnt'%(side),'%s_upr_bendy_arm_start_length_jnt'%(side),'%s_upr_bendy_arm_end_length_jnt'%(side)]
for each in listOfUprBendyJoint:
cmds.joint(n=each)
cmds.parent('%s_upr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_01_length_jnt'%(side),'%s_lwr_bendy_arm_01_length_jnt'%(side),'%s_upr_bendy_arm_start_length_jnt'%(side),'%s_lwr_bendy_arm_start_length_jnt'%(side),w=True)
cmds.group(n='%s_upr_bendy_arm_jnt_grp'%(side),em=True)
cmds.group(n='%s_lwr_bendy_arm_jnt_grp'%(side),em=True)
cmds.parent('%s_upr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_jnt_grp'%(side))
cmds.parent('%s_lwr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_jnt_grp'%(side))
cmds.orientConstraint('%s_arm_01_bln_jnt'%(side),'%s_upr_bendy_arm_jnt_grp'%(side),mo=True)
cmds.orientConstraint('%s_arm_02_bln_jnt'%(side),'%s_lwr_bendy_arm_jnt_grp'%(side),mo=True)
uprBendyJoint01forDel = cmds.pointConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_01_jnt'%(side),mo=False)
uprBendyJoint02forDel = cmds.pointConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_02_jnt'%(side),mo=False)
uprBendyJoint02forDel = cmds.pointConstraint('%s_bendy_arm_01_ctrl'%(side),'%s_upr_bendy_arm_02_jnt'%(side),mo=False)
uprBendyJoint03forDel = cmds.pointConstraint('%s_bendy_arm_01_ctrl'%(side),'%s_upr_bendy_arm_03_jnt'%(side),mo=False)
uprBendyJoint04forDel = cmds.pointConstraint('%s_bendy_arm_01_ctrl'%(side),'%s_upr_bendy_arm_04_jnt'%(side),mo=False)
uprBendyJoint04forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_upr_bendy_arm_04_jnt'%(side),mo=False)
uprBendyJoint05forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_upr_bendy_arm_05_jnt'%(side),mo=False)
lwrBendyJoint01forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_01_jnt'%(side),mo=False)
lwrBendyJoint02forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_02_jnt'%(side),mo=False)
lwrBendyJoint02forDel = cmds.pointConstraint('%s_bendy_arm_03_ctrl'%(side),'%s_lwr_bendy_arm_02_jnt'%(side),mo=False)
lwrBendyJoint03forDel = cmds.pointConstraint('%s_bendy_arm_03_ctrl'%(side),'%s_lwr_bendy_arm_03_jnt'%(side),mo=False)
lwrBendyJoint04forDel = cmds.pointConstraint('%s_bendy_arm_03_ctrl'%(side),'%s_lwr_bendy_arm_04_jnt'%(side),mo=False)
lwrBendyJoint04forDel = cmds.pointConstraint('%s_arm_03_setup'%(side),'%s_lwr_bendy_arm_04_jnt'%(side),mo=False)
lwrBendyJoint05forDel = cmds.pointConstraint('%s_arm_03_setup'%(side),'%s_lwr_bendy_arm_05_jnt'%(side),mo=False)
uprBendyJointForRatation01forDel = cmds.orientConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_01_jnt'%(side),mo=False)
uprBendyJointForRatation02forDel = cmds.orientConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_02_jnt'%(side),mo=False)
uprBendyJointForRatation03forDel = cmds.orientConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_03_jnt'%(side),mo=False)
uprBendyJointForRatation04forDel = cmds.orientConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_04_jnt'%(side),mo=False)
uprBendyJointForRatation05forDel = cmds.orientConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_05_jnt'%(side),mo=False)
lwrBendyJointForRatation01forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_01_jnt'%(side),mo=False)
lwrBendyJointForRatation02forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_02_jnt'%(side),mo=False)
lwrBendyJointForRatation03forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_03_jnt'%(side),mo=False)
lwrBendyJointForRatation04forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_04_jnt'%(side),mo=False)
lwrBendyJointForRatation05forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_05_jnt'%(side),mo=False)
cmds.delete(uprBendyJoint01forDel,uprBendyJoint02forDel,uprBendyJoint03forDel,uprBendyJoint04forDel,uprBendyJoint05forDel,lwrBendyJoint01forDel,lwrBendyJoint02forDel,lwrBendyJoint03forDel,lwrBendyJoint04forDel,lwrBendyJoint05forDel,uprBendyJointForRatation01forDel,uprBendyJointForRatation02forDel,uprBendyJointForRatation03forDel,uprBendyJointForRatation04forDel,uprBendyJointForRatation05forDel,lwrBendyJointForRatation01forDel,lwrBendyJointForRatation02forDel,lwrBendyJointForRatation03forDel,lwrBendyJointForRatation04forDel,lwrBendyJointForRatation05forDel)
listOfBendyArmLenghtJointToGetPos = [('%s_upr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_01_length_jnt'%(side)),('%s_upr_bendy_arm_02_jnt'%(side),'%s_upr_bendy_arm_02_length_jnt'%(side)),('%s_upr_bendy_arm_03_jnt'%(side),'%s_upr_bendy_arm_03_length_jnt'%(side)),('%s_upr_bendy_arm_04_jnt'%(side),'%s_upr_bendy_arm_04_length_jnt'%(side)),('%s_upr_bendy_arm_05_jnt'%(side),'%s_upr_bendy_arm_05_length_jnt'%(side)),('%s_lwr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_01_length_jnt'%(side)),('%s_lwr_bendy_arm_02_jnt'%(side),'%s_lwr_bendy_arm_02_length_jnt'%(side)),('%s_lwr_bendy_arm_03_jnt'%(side),'%s_lwr_bendy_arm_03_length_jnt'%(side)),('%s_lwr_bendy_arm_04_jnt'%(side),'%s_lwr_bendy_arm_04_length_jnt'%(side)),('%s_lwr_bendy_arm_05_jnt'%(side),'%s_lwr_bendy_arm_05_length_jnt'%(side)),('%s_upr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_start_length_jnt'%(side)),('%s_upr_bendy_arm_05_jnt'%(side),'%s_upr_bendy_arm_end_length_jnt'%(side)),('%s_lwr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_start_length_jnt'%(side)),('%s_lwr_bendy_arm_05_jnt'%(side),'%s_lwr_bendy_arm_end_length_jnt'%(side))]
for each in listOfBendyArmLenghtJointToGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.makeIdentity('%s_upr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_01_length_jnt'%(side),'%s_lwr_bendy_arm_01_length_jnt'%(side),'%s_upr_bendy_arm_start_length_jnt'%(side),'%s_lwr_bendy_arm_start_length_jnt'%(side),apply=True,rotate=True)
locToGetPos = [('%s_upr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_01_loc'%(side)),('%s_upr_bendy_arm_02_jnt'%(side),'%s_upr_bendy_arm_02_loc'%(side)),('%s_upr_bendy_arm_03_jnt'%(side),'%s_upr_bendy_arm_03_loc'%(side)),('%s_upr_bendy_arm_04_jnt'%(side),'%s_upr_bendy_arm_04_loc'%(side)),('%s_upr_bendy_arm_05_jnt'%(side),'%s_upr_bendy_arm_05_loc'%(side)),('%s_lwr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_01_loc'%(side)),('%s_lwr_bendy_arm_02_jnt'%(side),'%s_lwr_bendy_arm_02_loc'%(side)),('%s_lwr_bendy_arm_03_jnt'%(side),'%s_lwr_bendy_arm_03_loc'%(side)),('%s_lwr_bendy_arm_04_jnt'%(side),'%s_lwr_bendy_arm_04_loc'%(side)),('%s_lwr_bendy_arm_05_jnt'%(side),'%s_lwr_bendy_arm_05_loc'%(side))]
for each in locToGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = ['%s_upr_bendy_arm_loc_grp'%(side),'%s_lwr_bendy_arm_loc_grp'%(side),'%s_bendy_arm_ctrl_grp'%(side),'%s_bendy_arm_jnt_grp'%(side)]
for each in list:
cmds.group(n=each,em=True)
cmds.connectAttr('%s_ik_fk_switch.bendyVis'%(side),'%s_bendy_arm_ctrl_grp.visibility'%(side))
list = [('%s_lwr_bendy_arm_jnt_grp'%(side),'%s_bendy_arm_jnt_grp'%(side)),('%s_upr_bendy_arm_jnt_grp'%(side),'%s_bendy_arm_jnt_grp'%(side)),('%s_upr_bendy_arm_01_loc'%(side),'%s_upr_bendy_arm_loc_grp'%(side)),('%s_upr_bendy_arm_02_loc'%(side),'%s_upr_bendy_arm_loc_grp'%(side)),('%s_upr_bendy_arm_03_loc'%(side),'%s_upr_bendy_arm_loc_grp'%(side)),('%s_upr_bendy_arm_04_loc'%(side),'%s_upr_bendy_arm_loc_grp'%(side)),('%s_upr_bendy_arm_05_loc'%(side),'%s_upr_bendy_arm_loc_grp'%(side)),('%s_lwr_bendy_arm_01_loc'%(side),'%s_lwr_bendy_arm_loc_grp'%(side)),('%s_lwr_bendy_arm_02_loc'%(side),'%s_lwr_bendy_arm_loc_grp'%(side)),('%s_lwr_bendy_arm_03_loc'%(side),'%s_lwr_bendy_arm_loc_grp'%(side)),('%s_lwr_bendy_arm_04_loc'%(side),'%s_lwr_bendy_arm_loc_grp'%(side)),('%s_lwr_bendy_arm_05_loc'%(side),'%s_lwr_bendy_arm_loc_grp'%(side)),('%s_bendy_arm_01_ctrl_grp'%(side),'%s_bendy_arm_ctrl_grp'%(side)),('%s_bendy_arm_02_ctrl_grp'%(side),'%s_bendy_arm_ctrl_grp'%(side)),('%s_bendy_arm_03_ctrl_grp'%(side),'%s_bendy_arm_ctrl_grp'%(side)),('%s_upr_bendy_arm_01_length_jnt'%(side),'%s_bendy_arm_jnt_grp'%(side)),('%s_lwr_bendy_arm_01_length_jnt'%(side),'%s_bendy_arm_jnt_grp'%(side)),('%s_upr_bendy_arm_start_length_jnt'%(side),'%s_bendy_arm_jnt_grp'%(side)),('%s_lwr_bendy_arm_start_length_jnt'%(side),'%s_bendy_arm_jnt_grp'%(side))]
for each in list:
cmds.parent(each[0],each[1])
list = [('%s_bendy_arm_01_ctrl'%(side)),('%s_bendy_arm_02_ctrl'%(side)),('%s_bendy_arm_03_ctrl'%(side))]
for each in list:
cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.rotateX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.rotateY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.rotateZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,18)
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
bendyArmSetup('l')
bendyArmSetup('r')
def bendyArmIKsetup():
cmds.setAttr('r_lwr_bendy_arm_aim_up_loc.translateY',-50)
cmds.setAttr('r_upr_bendy_arm_aim_up_loc.translateY',-50)
list = ['r_upr_bendy_arm_02_jnt','r_upr_bendy_arm_03_jnt','r_upr_bendy_arm_04_jnt','r_upr_bendy_arm_05_jnt','r_lwr_bendy_arm_02_jnt','r_lwr_bendy_arm_03_jnt','r_lwr_bendy_arm_04_jnt','r_lwr_bendy_arm_05_jnt']
for each in list:
cmds.parent(each,w=True)
list = ['r_upr_bendy_arm_01_jnt.rotateY','r_lwr_bendy_arm_01_jnt.rotateY','r_upr_bendy_arm_02_jnt.rotateY','r_upr_bendy_arm_03_jnt.rotateY','r_upr_bendy_arm_04_jnt.rotateY','r_upr_bendy_arm_05_jnt.rotateY','r_lwr_bendy_arm_02_jnt.rotateY','r_lwr_bendy_arm_03_jnt.rotateY','r_lwr_bendy_arm_04_jnt.rotateY','r_lwr_bendy_arm_05_jnt.rotateY']
for each in list:
cmds.setAttr(each,180)
list = [('r_upr_bendy_arm_02_jnt','r_upr_bendy_arm_01_jnt'),('r_upr_bendy_arm_03_jnt','r_upr_bendy_arm_02_jnt'),('r_upr_bendy_arm_04_jnt','r_upr_bendy_arm_03_jnt'),('r_upr_bendy_arm_05_jnt','r_upr_bendy_arm_04_jnt'),('r_lwr_bendy_arm_02_jnt','r_lwr_bendy_arm_01_jnt'),('r_lwr_bendy_arm_03_jnt','r_lwr_bendy_arm_02_jnt'),('r_lwr_bendy_arm_04_jnt','r_lwr_bendy_arm_03_jnt'),('r_lwr_bendy_arm_05_jnt','r_lwr_bendy_arm_04_jnt')]
for each in list:
cmds.parent(each[0],each[1])
cmds.makeIdentity('r_upr_bendy_arm_01_jnt','r_lwr_bendy_arm_01_jnt',apply=True,rotate=True)
cmds.select('l_upr_bendy_arm_01_jnt','l_upr_bendy_arm_05_jnt','l_upr_bendy_arm_crv')
cmds.ikHandle(n='l_upr_bendy_arm_ikh',sol='ikSplineSolver',ccv=0,pcv =0)
cmds.select('l_lwr_bendy_arm_01_jnt','l_lwr_bendy_arm_05_jnt','l_lwr_bendy_arm_crv')
cmds.ikHandle(n='l_lwr_bendy_arm_ikh',sol='ikSplineSolver',ccv=0,pcv =0)
cmds.select('r_upr_bendy_arm_01_jnt','r_upr_bendy_arm_05_jnt','r_upr_bendy_arm_crv')
cmds.ikHandle(n='r_upr_bendy_arm_ikh',sol='ikSplineSolver',ccv=0,pcv =0)
cmds.select('r_lwr_bendy_arm_01_jnt','r_lwr_bendy_arm_05_jnt','r_lwr_bendy_arm_crv')
cmds.ikHandle(n='r_lwr_bendy_arm_ikh',sol='ikSplineSolver',ccv=0,pcv =0)
list = [('l_arm_01_bln_jnt','l_upr_bendy_arm_01_loc'),('l_arm_01_bln_jnt','l_upr_bendy_arm_02_loc'),('l_bendy_arm_01_ctrl','l_upr_bendy_arm_02_loc'),('l_bendy_arm_01_ctrl','l_upr_bendy_arm_03_loc'),('l_bendy_arm_01_ctrl','l_upr_bendy_arm_04_loc'),('l_bendy_arm_02_ctrl','l_upr_bendy_arm_04_loc'),('l_bendy_arm_02_ctrl','l_upr_bendy_arm_05_loc'),('l_bendy_arm_02_ctrl','l_lwr_bendy_arm_01_loc'),('l_bendy_arm_02_ctrl','l_lwr_bendy_arm_02_loc'),('l_bendy_arm_03_ctrl','l_lwr_bendy_arm_02_loc'),('l_bendy_arm_03_ctrl','l_lwr_bendy_arm_03_loc'),('l_bendy_arm_03_ctrl','l_lwr_bendy_arm_04_loc'),('l_arm_03_bln_jnt','l_lwr_bendy_arm_04_loc'),('l_arm_03_bln_jnt','l_lwr_bendy_arm_05_loc'),('r_arm_01_bln_jnt','r_upr_bendy_arm_01_loc'),('r_arm_01_bln_jnt','r_upr_bendy_arm_02_loc'),('r_bendy_arm_01_ctrl','r_upr_bendy_arm_02_loc'),('r_bendy_arm_01_ctrl','r_upr_bendy_arm_03_loc'),('r_bendy_arm_01_ctrl','r_upr_bendy_arm_04_loc'),('r_bendy_arm_02_ctrl','r_upr_bendy_arm_04_loc'),('r_bendy_arm_02_ctrl','r_upr_bendy_arm_05_loc'),('r_bendy_arm_02_ctrl','r_lwr_bendy_arm_01_loc'),('r_bendy_arm_02_ctrl','r_lwr_bendy_arm_02_loc'),('r_bendy_arm_03_ctrl','r_lwr_bendy_arm_02_loc'),('r_bendy_arm_03_ctrl','r_lwr_bendy_arm_03_loc'),('r_bendy_arm_03_ctrl','r_lwr_bendy_arm_04_loc'),('r_arm_03_bln_jnt','r_lwr_bendy_arm_04_loc'),('r_arm_03_bln_jnt','r_lwr_bendy_arm_05_loc')]
for each in list:
cmds.pointConstraint(each[0],each[1],mo=True)
cmds.pointConstraint('l_arm_01_bln_jnt','l_bendy_arm_01_ctrl_grp',mo = True)
cmds.pointConstraint('l_bendy_arm_02_ctrl','l_bendy_arm_01_ctrl_grp',mo = True)
cmds.aimConstraint('l_bendy_arm_02_ctrl','l_bendy_arm_01_ctrl_grp',wut = 'object',wuo = 'l_upr_bendy_arm_aim_up_loc',mo = True)
cmds.parentConstraint('l_arm_02_bln_jnt','l_bendy_arm_02_ctrl_grp',mo=True)
cmds.pointConstraint('l_arm_03_bln_jnt','l_bendy_arm_03_ctrl_grp',mo = True)
cmds.pointConstraint('l_bendy_arm_02_ctrl','l_bendy_arm_03_ctrl_grp',mo = True)
cmds.aimConstraint('l_bendy_arm_02_ctrl','l_bendy_arm_03_ctrl_grp',wut = 'object',wuo = 'l_lwr_bendy_arm_aim_up_loc',mo = True)
cmds.scaleConstraint('world_ctrl','l_bendy_arm_01_ctrl_grp',mo = True)
cmds.scaleConstraint('world_ctrl','l_bendy_arm_02_ctrl_grp',mo = True)
cmds.scaleConstraint('world_ctrl','l_bendy_arm_03_ctrl_grp',mo = True)
cmds.pointConstraint('r_arm_01_bln_jnt','r_bendy_arm_01_ctrl_grp',mo = True)
cmds.pointConstraint('r_bendy_arm_02_ctrl','r_bendy_arm_01_ctrl_grp',mo = True)
cmds.aimConstraint('r_bendy_arm_02_ctrl','r_bendy_arm_01_ctrl_grp',wut = 'object',wuo = 'r_upr_bendy_arm_aim_up_loc',mo = True)
cmds.parentConstraint('r_arm_02_bln_jnt','r_bendy_arm_02_ctrl_grp',mo=True)
cmds.pointConstraint('r_arm_03_bln_jnt','r_bendy_arm_03_ctrl_grp',mo = True)
cmds.pointConstraint('r_bendy_arm_02_ctrl','r_bendy_arm_03_ctrl_grp',mo = True)
cmds.aimConstraint('r_bendy_arm_02_ctrl','r_bendy_arm_03_ctrl_grp',wut = 'object',wuo = 'r_lwr_bendy_arm_aim_up_loc',mo = True)
cmds.scaleConstraint('world_ctrl','r_bendy_arm_01_ctrl_grp',mo = True)
cmds.scaleConstraint('world_ctrl','r_bendy_arm_02_ctrl_grp',mo = True)
cmds.scaleConstraint('world_ctrl','r_bendy_arm_03_ctrl_grp',mo = True)
createNode = [('multiplyDivide','r_bendy_arm_twist_mult'),('multiplyDivide','l_upr_bendy_arm_stretch_01_mult'),('multiplyDivide','l_upr_bendy_arm_stretch_02_mult'),('multiplyDivide','l_lwr_bendy_arm_stretch_01_mult'),('multiplyDivide','l_lwr_bendy_arm_stretch_02_mult'),('multiplyDivide','r_upr_bendy_arm_stretch_01_mult'),('multiplyDivide','r_upr_bendy_arm_stretch_02_mult'),('multiplyDivide','r_lwr_bendy_arm_stretch_01_mult'),('multiplyDivide','r_lwr_bendy_arm_stretch_02_mult')]
for each in createNode:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
toSetNode = [('r_bendy_arm_twist_mult.input2Y',-1),('r_bendy_arm_twist_mult.input2X',-1),('l_upr_bendy_arm_stretch_01_mult.operation',2),('l_upr_bendy_arm_stretch_01_mult.operation',2),('l_lwr_bendy_arm_stretch_01_mult.operation',2),('l_lwr_bendy_arm_stretch_01_mult.operation',2),('l_upr_bendy_arm_stretch_01_mult.operation',2),('r_upr_bendy_arm_stretch_01_mult.operation',2),('r_lwr_bendy_arm_stretch_01_mult.operation',2),('r_lwr_bendy_arm_stretch_01_mult.operation',2)]
for each in toSetNode:
cmds.setAttr(each[0],each[1])
uprArmCurveInfo = cmds.arclen('l_upr_bendy_arm_crv',ch = True)
cmds.rename(uprArmCurveInfo,'l_upr_bendy_arm_crv_info')
lwrArmCurveInfo = cmds.arclen('l_lwr_bendy_arm_crv',ch = True)
cmds.rename(lwrArmCurveInfo,'l_lwr_bendy_arm_crv_info')
uprArmCurveInfo = cmds.arclen('r_upr_bendy_arm_crv',ch = True)
cmds.rename(uprArmCurveInfo,'r_upr_bendy_arm_crv_info')
lwrArmCurveInfo = cmds.arclen('r_lwr_bendy_arm_crv',ch = True)
cmds.rename(lwrArmCurveInfo,'r_lwr_bendy_arm_crv_info')
toConnectAttr = [('r_arm_03_bln_jnt.rotateX','r_bendy_arm_twist_mult.input1Y'),('r_arm_02_bln_jnt.rotateX','r_bendy_arm_twist_mult.input1X'),('r_bendy_arm_twist_mult.outputX','r_upr_bendy_arm_ikh.twist'),('r_bendy_arm_twist_mult.outputY','r_lwr_bendy_arm_ikh.twist'),('l_arm_02_bln_jnt.rotateX','l_upr_bendy_arm_ikh.twist'),('l_upr_bendy_arm_crv_info.arcLength','l_upr_bendy_arm_stretch_01_mult.input1X'),('l_upr_bendy_arm_stretch_01_mult.outputX','l_upr_bendy_arm_stretch_02_mult.input1X'),('l_upr_bendy_arm_02_length_jnt.translateX','l_upr_bendy_arm_stretch_02_mult.input2X'),('l_upr_bendy_arm_stretch_02_mult.outputX','l_upr_bendy_arm_02_jnt.translateX'),('l_upr_bendy_arm_stretch_02_mult.outputX','l_upr_bendy_arm_03_jnt.translateX'),('l_upr_bendy_arm_stretch_02_mult.outputX','l_upr_bendy_arm_04_jnt.translateX'),('l_upr_bendy_arm_stretch_02_mult.outputX','l_upr_bendy_arm_05_jnt.translateX'),('l_upr_bendy_arm_end_length_jnt.translateX','l_upr_bendy_arm_stretch_01_mult.input2X'),('l_arm_03_bln_jnt.rotateX','l_lwr_bendy_arm_ikh.twist'),('l_lwr_bendy_arm_crv_info.arcLength','l_lwr_bendy_arm_stretch_01_mult.input1X'),('l_lwr_bendy_arm_stretch_01_mult.outputX','l_lwr_bendy_arm_stretch_02_mult.input1X'),('l_lwr_bendy_arm_02_length_jnt.translateX','l_lwr_bendy_arm_stretch_02_mult.input2X'),('l_lwr_bendy_arm_stretch_02_mult.outputX','l_lwr_bendy_arm_02_jnt.translateX'),('l_lwr_bendy_arm_stretch_02_mult.outputX','l_lwr_bendy_arm_03_jnt.translateX'),('l_lwr_bendy_arm_stretch_02_mult.outputX','l_lwr_bendy_arm_04_jnt.translateX'),('l_lwr_bendy_arm_stretch_02_mult.outputX','l_lwr_bendy_arm_05_jnt.translateX'),('l_lwr_bendy_arm_end_length_jnt.translateX','l_lwr_bendy_arm_stretch_01_mult.input2X'),('r_upr_bendy_arm_crv_info.arcLength','r_upr_bendy_arm_stretch_01_mult.input1X'),('r_upr_bendy_arm_stretch_01_mult.outputX','r_upr_bendy_arm_stretch_02_mult.input1X'),('r_upr_bendy_arm_02_length_jnt.translateX','r_upr_bendy_arm_stretch_02_mult.input2X'),('r_upr_bendy_arm_stretch_02_mult.outputX','r_upr_bendy_arm_02_jnt.translateX'),('r_upr_bendy_arm_stretch_02_mult.outputX','r_upr_bendy_arm_03_jnt.translateX'),('r_upr_bendy_arm_stretch_02_mult.outputX','r_upr_bendy_arm_04_jnt.translateX'),('r_upr_bendy_arm_stretch_02_mult.outputX','r_upr_bendy_arm_05_jnt.translateX'),('r_upr_bendy_arm_end_length_jnt.translateX','r_upr_bendy_arm_stretch_01_mult.input2X'),('r_lwr_bendy_arm_crv_info.arcLength','r_lwr_bendy_arm_stretch_01_mult.input1X'),('r_lwr_bendy_arm_stretch_01_mult.outputX','r_lwr_bendy_arm_stretch_02_mult.input1X'),('r_lwr_bendy_arm_02_length_jnt.translateX','r_lwr_bendy_arm_stretch_02_mult.input2X'),('r_lwr_bendy_arm_stretch_02_mult.outputX','r_lwr_bendy_arm_02_jnt.translateX'),('r_lwr_bendy_arm_stretch_02_mult.outputX','r_lwr_bendy_arm_03_jnt.translateX'),('r_lwr_bendy_arm_stretch_02_mult.outputX','r_lwr_bendy_arm_04_jnt.translateX'),('r_lwr_bendy_arm_stretch_02_mult.outputX','r_lwr_bendy_arm_05_jnt.translateX'),('r_lwr_bendy_arm_end_length_jnt.translateX','r_lwr_bendy_arm_stretch_01_mult.input2X')]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
list = ['l_upr_bendy_arm_ik_setup_grp','r_upr_bendy_arm_ik_setup_grp','l_lwr_bendy_arm_ik_setup_grp','r_lwr_bendy_arm_ik_setup_grp','arm_bendy_setup_grp']
for each in list:
cmds.group(n=each,em=True)
list = [('l_upr_bendy_arm_ik_setup_grp','arm_bendy_setup_grp'),('r_upr_bendy_arm_ik_setup_grp','arm_bendy_setup_grp'),('l_lwr_bendy_arm_ik_setup_grp','arm_bendy_setup_grp'),('r_lwr_bendy_arm_ik_setup_grp','arm_bendy_setup_grp'),('l_upr_bendy_arm_loc_grp','arm_bendy_setup_grp'),('l_lwr_bendy_arm_loc_grp','arm_bendy_setup_grp'),('r_upr_bendy_arm_loc_grp','arm_bendy_setup_grp'),('r_lwr_bendy_arm_loc_grp','arm_bendy_setup_grp'),('l_bendy_arm_ctrl_grp','world_ctrl'),('r_bendy_arm_ctrl_grp','world_ctrl'),('l_upr_bendy_arm_crv','l_upr_bendy_arm_ik_setup_grp'),('l_upr_bendy_arm_ikh','l_upr_bendy_arm_ik_setup_grp'),('l_lwr_bendy_arm_crv','l_lwr_bendy_arm_ik_setup_grp'),('l_lwr_bendy_arm_ikh','l_lwr_bendy_arm_ik_setup_grp'),('r_upr_bendy_arm_crv','r_upr_bendy_arm_ik_setup_grp'),('r_upr_bendy_arm_ikh','r_upr_bendy_arm_ik_setup_grp'),('r_lwr_bendy_arm_crv','r_lwr_bendy_arm_ik_setup_grp'),('r_lwr_bendy_arm_ikh','r_lwr_bendy_arm_ik_setup_grp')]
for each in list:
cmds.parent(each[0],each[1])
bendyArmIKsetup()
def ArmStretchSetup(side):
####armStretchsetup####
jointList = ['%s_arm_01_length_jnt'%(side),'%s_arm_02_length_jnt'%(side),'%s_arm_03_length_jnt'%(side)]
for each in jointList:
cmds.joint(n=each)
cmds.group(n='%s_arm_length_jnt_grp'%(side),em=True)
cmds.parent('%s_arm_01_length_jnt'%(side),'%s_arm_length_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_arm_length_jnt_grp'%(side),mo=True)
listOfToGetJointPos = [('%s_arm_01_setup'%(side),'%s_arm_01_length_jnt'%(side)),('%s_arm_02_setup'%(side),'%s_arm_02_length_jnt'%(side)),('%s_arm_03_setup'%(side),'%s_arm_03_length_jnt'%(side))]
for each in listOfToGetJointPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('distanceBetween','%s_upr_arm_dist'%(side)),('distanceBetween','%s_lwr_arm_dist'%(side)),('addDoubleLinear','%s_arm_full_dist'%(side)),('distanceBetween','%s_arm_stretch_dist'%(side)),('condition','%s_arm_stretch_cond'%(side)),('multiplyDivide','%s_upr_arm_strecth_mult'%(side)),('multiplyDivide','%s_arm_stretch_mult'%(side)),('multiplyDivide','%s_lwr_arm_strecth_mult'%(side)),('multiplyDivide','%s_arm_strecth_option_mult'%(side))]
for each in list:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
cmds.spaceLocator(n = '%s_arm_start_dist_loc'%(side))
cmds.group(n='%s_arm_start_dist_loc_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_arm_start_dist_loc_grp'%(side),mo=True)
parentarmstartdistloc = cmds.pointConstraint('%s_ik_01_jnt'%(side),'%s_arm_start_dist_loc'%(side),mo = False)
cmds.delete(parentarmstartdistloc)
cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_arm_start_dist_loc'%(side),mo=True)
cmds.spaceLocator(n = '%s_arm_end_dist_loc'%(side))
cmds.setAttr('%s_arm_end_dist_loc.visibility'%(side),0)
parent_arm_end_dist_loc = cmds.pointConstraint('%s_ik_03_jnt'%(side),'%s_arm_end_dist_loc'%(side))
cmds.delete(parent_arm_end_dist_loc)
cmds.parent('%s_arm_end_dist_loc'%(side),'%s_ik_arm_ctrl'%(side))
cmds.setAttr('%s_arm_stretch_cond.operation'%(side),2)
cmds.setAttr('%s_arm_stretch_mult.operation'%(side),2)
cmds.setAttr('%s_arm_strecth_option_mult.input2X'%(side),2)
list = [('%s_arm_01_length_jnt.worldMatrix'%(side),'%s_upr_arm_dist.inMatrix1'%(side)),('%s_arm_02_length_jnt.worldMatrix'%(side),'%s_upr_arm_dist.inMatrix2'%(side)),('%s_arm_02_length_jnt.worldMatrix'%(side),'%s_lwr_arm_dist.inMatrix1'%(side)),('%s_arm_03_length_jnt.worldMatrix'%(side),'%s_lwr_arm_dist.inMatrix2'%(side)),('%s_upr_arm_dist.distance'%(side),'%s_arm_full_dist.input1'%(side)),('%s_lwr_arm_dist.distance'%(side),'%s_arm_full_dist.input2'%(side)),('%s_arm_start_dist_loc.worldMatrix'%(side),'%s_arm_stretch_dist.inMatrix1'%(side)),('%s_arm_end_dist_loc.worldMatrix'%(side),'%s_arm_stretch_dist.inMatrix2'%(side)),('%s_arm_stretch_dist.distance'%(side),'%s_arm_stretch_cond.firstTerm'%(side)),('%s_arm_full_dist.output'%(side),'%s_arm_stretch_cond.secondTerm'%(side)),('%s_arm_stretch_dist.distance'%(side),'%s_arm_stretch_mult.input1X'%(side)),('%s_arm_full_dist.output'%(side),'%s_arm_stretch_mult.input2X'%(side)),('%s_arm_stretch_mult.outputX'%(side),'%s_arm_stretch_cond.colorIfTrue.colorIfTrueR'%(side)),('%s_arm_stretch_cond.outColor.outColorR'%(side),'%s_lwr_arm_strecth_mult.input1X'%(side)),('%s_arm_stretch_cond.outColor.outColorR'%(side),'%s_upr_arm_strecth_mult.input1X'%(side)),('%s_arm_02_setup.translateX'%(side),'%s_upr_arm_strecth_mult.input2X'%(side)),('%s_arm_03_setup.translateX'%(side),'%s_lwr_arm_strecth_mult.input2X'%(side)),('%s_upr_arm_strecth_mult.outputX'%(side),'%s_ik_02_jnt.translateX'%(side)),('%s_lwr_arm_strecth_mult.outputX'%(side),'%s_ik_03_jnt.translateX'%(side)),('%s_ik_arm_ctrl.stretch'%(side),'%s_arm_strecth_option_mult.input1X'%(side)),('%s_arm_strecth_option_mult.outputX'%(side),'%s_arm_stretch_cond.operation'%(side))]
for each in list:
cmds.connectAttr(each[0],each[1])
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
ArmStretchSetup('l')
ArmStretchSetup('r')
def armGroup():
list = ['l_arm_jnt_grp','r_arm_jnt_grp','arm_jnt_grp']
for each in list:
cmds.group(n=each,em=True)
list = [('l_ik_arm_jnt_grp','l_arm_jnt_grp'),('r_ik_arm_jnt_grp','r_arm_jnt_grp'),('l_fk_arm_01_jnt','l_arm_jnt_grp'),('r_fk_arm_01_jnt','r_arm_jnt_grp'),('r_bendy_arm_jnt_grp','r_arm_jnt_grp'),('l_bendy_arm_jnt_grp','l_arm_jnt_grp'),('r_arm_length_jnt_grp','r_arm_jnt_grp'),('l_arm_length_jnt_grp','l_arm_jnt_grp'),('r_shoulder_jnt','r_arm_jnt_grp'),('l_shoulder_jnt','l_arm_jnt_grp'),('r_arm_bln_jnt_grp','r_arm_jnt_grp'),('l_arm_bln_jnt_grp','l_arm_jnt_grp'),('l_arm_jnt_grp','arm_jnt_grp'),('r_arm_jnt_grp','arm_jnt_grp')]
for each in list:
cmds.parent(each[0],each[1])
armGroup()
def noBendyArm():
def FKarmSetup(side):
#FKarm#
fkarmcontroller = [('%s_fk_arm_01_ctrl'%(side),'%s_fk_arm_01_ctrl_grp'%(side)),('%s_fk_arm_02_ctrl'%(side),'%s_fk_arm_02_ctrl_grp'%(side)),('%s_fk_arm_03_ctrl'%(side),'%s_fk_arm_03_ctrl_grp'%(side))]
for each in fkarmcontroller:
cmds.curve(d=1,p=[(0.0, 1.8457071003629746, -6.888272674590291),(0.0, 1.6065215981349992, -5.995620227271308),(0.0, -1.6065234643869502, -5.995624729951774),(0.0, -1.8454397435472047, -6.8872682416730004),(0.0, -5.041829388107622, -5.041831819868864),(0.0, -4.389101595742385, -4.389102497134237),(0.0, -5.995620227271308, -1.6065215981349992),(0.0, -6.888272674590291, -1.8457071003629746),(0.0, -6.8872682416730004, 1.8454397435472047),(0.0, -5.995624729951774, 1.6065234643869502),(0.0, -4.389102497134237, 4.389101595742385),(0.0, -5.041831819868864, 5.041829388107622),(0.0, -1.8457071003629746, 6.888272674590291),(0.0, -1.6065215981349992, 5.995620227271308),(0.0, 1.6065234643869502, 5.995624729951774),(0.0, 1.8454397435472047, 6.8872682416730004),(0.0, 5.041829388107622, 5.041831819868864),(0.0, 4.389101595742385, 4.389102497134237),(0.0, 5.995620227271308, 1.6065215981349992),(0.0, 6.888272674590291, 1.8457071003629746),(0.0, 6.8872682416730004, -1.8454397435472047),(0.0, 5.995624729951774, -1.6065234643869502),(0.0, 4.389102497134237, -4.389101595742385),(0.0, 5.041831819868864, -5.041829388107622),(0.0, 1.8457071003629746, -6.888272674590291)])
cmds.rename(each[0])
cmds.group(n=each[1])
createjoint = ['%s_fk_arm_01_jnt'%(side),'%s_fk_arm_02_jnt'%(side),'%s_fk_arm_03_jnt'%(side)]
for each in createjoint:
cmds.joint(n=each)
toGetJntPos = ('%s_arm_01_setup'%(side),'%s_fk_arm_01_jnt'%(side)),('%s_arm_02_setup'%(side),'%s_fk_arm_02_jnt'%(side)),('%s_arm_03_setup'%(side),'%s_fk_arm_03_jnt'%(side))
for each in toGetJntPos:
forDel = cmds.parentConstraint(each[0],each[1])
cmds.delete(forDel)
cmds.parent('%s_fk_arm_01_jnt'%(side),w=True)
toGetCtrlPos = [('%s_arm_01_setup'%(side),'%s_fk_arm_01_ctrl_grp'%(side)),('%s_arm_02_setup'%(side),'%s_fk_arm_02_ctrl_grp'%(side)),('%s_arm_03_setup'%(side),'%s_fk_arm_03_ctrl_grp'%(side))]
for each in toGetCtrlPos:
forDel = cmds.parentConstraint(each[0],each[1])
cmds.delete(forDel)
toParent = [('%s_fk_arm_02_ctrl_grp'%(side),'%s_fk_arm_01_ctrl'%(side)),('%s_fk_arm_03_ctrl_grp'%(side),'%s_fk_arm_02_ctrl'%(side))]
for each in toParent:
cmds.parent(each[0],each[1])
toParentCon = [('%s_shoulder_ctrl'%(side),'%s_fk_arm_01_ctrl_grp'%(side)),('%s_fk_arm_01_ctrl'%(side),'%s_fk_arm_01_jnt'%(side)),('%s_fk_arm_02_ctrl'%(side),'%s_fk_arm_02_jnt'%(side)),('%s_fk_arm_03_ctrl'%(side),'%s_fk_arm_03_jnt'%(side))]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo=True)
toLockAttr = [('%s_fk_arm_01_ctrl'%(side)),('%s_fk_arm_02_ctrl'%(side)),('%s_fk_arm_03_ctrl'%(side))]
for each in toLockAttr:
cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,6)
FKarmSetup('l')
FKarmSetup('r')
def IKarmSetup(side):
#IKarm#
cmds.joint(n='%s_ik_01_jnt'%(side))
forDel = cmds.parentConstraint('%s_arm_01_setup'%(side),'%s_ik_01_jnt'%(side),mo = False)
deleteparent = cmds.delete(forDel)
cmds.joint(n='%s_ik_02_jnt'%(side))
forDel = cmds.parentConstraint('%s_arm_02_setup'%(side),'%s_ik_02_jnt'%(side),mo = False)
deleteparent = cmds.delete(forDel)
cmds.joint(n='%s_ik_03_jnt'%(side))
forDel = cmds.parentConstraint('%s_arm_03_setup'%(side),'%s_ik_03_jnt'%(side),mo = False)
deleteparent = cmds.delete(forDel)
cmds.makeIdentity( '%s_ik_01_jnt'%(side), apply=True, translate=True, rotate=True)
cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_ik_01_jnt'%(side),mo=True)
cmds.ikHandle( n='%s_arm_ikh'%(side), sj='%s_ik_01_jnt'%(side), ee='%s_ik_03_jnt'%(side) )
cmds.setAttr('%s_arm_ikh.visibility'%(side),0)
cmds.curve(d=1, p=[(-5, -5, 5),(-5, 5, 5),(5, 5, 5),(5, -5, 5),(5, -5, -5),(5, 5, -5),(-5, 5, -5),(-5, -5, -5),(-5, -5, 5),(5, -5, 5),(5, 5, 5),(5, 5, -5),(5, -5, -5),(-5, -5, -5),(-5, 5, -5),(-5, 5, 5)])
cmds.rename('%s_ik_arm_ctrl'%(side))
ControllerAttr('%s_ik_arm_ctrl'%(side),False,False,False,False,True,True,True,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
cmds.addAttr('%s_ik_arm_ctrl'%(side),sn='stretch',at = 'bool',k=1)
cmds.addAttr('%s_ik_arm_ctrl'%(side), at = 'enum', keyable=True, en = 'string1:string2:', ln='follow')
cmds.addAttr('%s_ik_arm_ctrl'%(side)+'.follow', e=True, en = 'world:shoulder:')
cmds.orientConstraint('%s_ik_arm_ctrl'%(side), '%s_ik_03_jnt'%(side))
cmds.group(n='%s_ik_arm_ctrl_grp'%(side))
forDel = cmds.parentConstraint('%s_arm_03_setup'%(side),'%s_ik_arm_ctrl_grp'%(side),mo = False)
deleteparent = cmds.delete(forDel)
cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_ik_arm_ctrl_grp'%(side),mo = True)
cmds.connectAttr('%s_ik_arm_ctrl.follow'%(side),'%s_ik_arm_ctrl_grp_parentConstraint1.%s_shoulder_ctrlW0'%(side,side))
cmds.parent('%s_arm_ikh'%(side), '%s_ik_arm_ctrl'%(side))
cmds.parent('%s_ik_arm_ctrl_grp'%(side),'world_ctrl')
cmds.curve(d=1, p=[(0.0, 3.468342867164149, 0.0),(0.0, 3.468342867164149, 0.5221724371834184),(0.0, 4.967930096687364, 0.0),(0.5221724371834184, 3.468342867164149, 0.0),(-0.5221724371834184, 3.468342867164149, 0.0),(0.0, 4.967930096687364, 0.0),(0.0, 3.468342867164149, -0.5221724371834184),(0.0, 3.468342867164149, 0.0),(0.0, -3.468342867164149, 0.0),(-0.5221724371834184, -3.468342867164149, 0.0),(0.0, -4.967930096687364, 0.0),(0.0, -3.468342867164149, -0.5221724371834184),(0.0, -3.468342867164149, 0.5221724371834184),(0.0, -4.967930096687364, 0.0),(0.5221724371834184, -3.468342867164149, 0.0),(0.0, -3.468342867164149, 0.0),(0.0, 0.0, 0.0),(-3.468342867164149, 0.0, 0.0),(-3.468342867164149, 0.5221724371834184, 0.0),(-4.967930096687364, 0.0, 0.0),(-3.468342867164149, 0.0, -0.5221724371834184),(-3.468342867164149, 0.0, 0.5221724371834184),(-4.967930096687364, 0.0, 0.0),(-3.468342867164149, -0.5221724371834184, 0.0),(-3.468342867164149, 0.0, 0.0),(3.468342867164149, 0.0, 0.0),(3.468342867164149, 0.0, -0.5221724371834184),(4.967930096687364, 0.0, 0.0),(3.468342867164149, 0.5221724371834184, 0.0),(3.468342867164149, -0.5221724371834184, 0.0),(4.967930096687364, 0.0, 0.0),(3.468342867164149, 0.0, 0.5221724371834184),(3.468342867164149, 0.0, 0.0),(0.0, 0.0, 0.0),(0.0, 0.0, 3.468342867164149),(0.0, 0.5221724371834184, 3.468342867164149),(0.0, 0.0, 4.967930096687364),(0.5221724371834184, 0.0, 3.468342867164149),(-0.5221724371834184, 0.0, 3.468342867164149),(0.0, 0.0, 4.967930096687364),(0.0, -0.5221724371834184, 3.468342867164149),(0.0, 0.0, 3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.5221724371834184, -3.468342867164149),(0.0, 0.0, -4.967930096687364),(-0.5221724371834184, 0.0, -3.468342867164149),(0.5221724371834184, 0.0, -3.468342867164149),(0.0, 0.0, -4.967930096687364),(0.0, -0.5221724371834184, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149)])
cmds.rename('%s_elbow_ctrl'%(side))
ControllerAttr('%s_elbow_ctrl'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,6,True,True,True,False,False,False)
cmds.addAttr('%s_elbow_ctrl'%(side),sn='follow', min = 0, max=1 ,k=1)
cmds.group()
cmds.rename('%s_elbow_ctrl_grp'%(side))
cmds.parent('%s_elbow_ctrl_grp'%(side),'world_ctrl')
forDel = cmds.pointConstraint('%s_elbow_setup'%(side), '%s_elbow_ctrl_grp'%(side))
deparent = cmds.delete(forDel)
cmds.poleVectorConstraint( '%s_elbow_ctrl'%(side), '%s_arm_ikh'%(side) )
cmds.spaceLocator()
cmds.rename('%s_elbow_loc_world'%(side))
forDel = cmds.parentConstraint('%s_elbow_setup'%(side),'%s_elbow_loc_world'%(side))
cmds.delete(forDel)
cmds.spaceLocator()
cmds.rename('%s_elbow_loc_follow'%(side))
forDel = cmds.parentConstraint('%s_elbow_setup'%(side),'%s_elbow_loc_follow'%(side))
cmds.delete(forDel)
cmds.group()
cmds.rename('%s_elbow_loc_grp'%(side))
cmds.parent('%s_elbow_loc_world'%(side),'%s_elbow_loc_grp'%(side))
cmds.parentConstraint('%s_ik_arm_ctrl'%(side),'%s_elbow_loc_follow'%(side),mo = True)
cmds.parentConstraint('%s_elbow_loc_follow'%(side),'%s_elbow_ctrl_grp'%(side),mo = True)
cmds.parentConstraint('%s_elbow_loc_world'%(side),'%s_elbow_ctrl_grp'%(side),mo = True)
cmds.parentConstraint('world_ctrl','%s_elbow_loc_world'%(side),mo = True)
cmds.shadingNode('reverse',n = '%s_elbow_rev'%(side),asUtility=1)
cmds.connectAttr('%s_elbow_ctrl.follow'%(side), '%s_elbow_ctrl_grp_parentConstraint1.%s_elbow_loc_followW0'%(side,side))
cmds.connectAttr('%s_elbow_ctrl.follow'%(side), '%s_elbow_rev.inputX'%(side))
cmds.connectAttr('%s_elbow_rev.outputX'%(side), '%s_elbow_ctrl_grp_parentConstraint1.%s_elbow_loc_worldW1'%(side,side))
cmds.group(n='%s_ik_arm_jnt_grp'%(side),em=True)
cmds.parent('%s_ik_01_jnt'%(side),'%s_ik_arm_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_ik_arm_jnt_grp'%(side),mo=True)
#IKarmPVcrv#
cmds.curve(d=1, p=[(0, 0, 0),(0, 10, 0)])
cmds.rename('%s_elbow_direction_crv'%(side))
nameOfLoc = ['%s_elbow_01_loc'%(side),'%s_elbow_02_loc'%(side)]
for each in nameOfLoc:
cmds.spaceLocator(n=each)
toGetLocPos = [('%s_elbow_01_loc.translateY'%(side),0),('%s_elbow_02_loc.translateY'%(side),10)]
for each in toGetLocPos:
cmds.setAttr(each[0],each[1])
toConnectLoc = [('%s_elbow_01_loc.worldPosition[0]'%(side),'%s_elbow_direction_crvShape.controlPoints[0]'%(side)),('%s_elbow_02_loc.worldPosition[0]'%(side),'%s_elbow_direction_crvShape.controlPoints[4]'%(side))]
for each in toConnectLoc:
cmds.connectAttr(each[0],each[1])
toSetAttr = [('%s_elbow_direction_crv.overrideEnabled'%(side),1),('%s_elbow_direction_crv.overrideDisplayType'%(side),2),('%s_elbow_01_loc.visibility'%(side),0),('%s_elbow_02_loc.visibility'%(side),0)]
for each in toSetAttr:
cmds.setAttr(each[0],each[1])
toGetParent = [('%s_elbow_ctrl'%(side),'%s_elbow_01_loc'%(side)),('%s_ik_02_jnt'%(side),'%s_elbow_02_loc'%(side))]
for each in toGetParent:
cmds.parentConstraint(each[0],each[1],mo = False)
cmds.group(n='%s_elbow_direction_crv_grp'%(side),em = True)
toGetParent = [('%s_elbow_01_loc'%(side),'%s_elbow_direction_crv_grp'%(side)),('%s_elbow_02_loc'%(side),'%s_elbow_direction_crv_grp'%(side)),('%s_elbow_direction_crv'%(side),'%s_elbow_direction_crv_grp'%(side))]
for each in toGetParent:
cmds.parent(each[0],each[1])
IKarmSetup('l')
IKarmSetup('r')
def IKFKarmSetup(side):
nameOfJoint = [('%s_arm_01_bln_jnt'%(side)),('%s_arm_02_bln_jnt'%(side)),('%s_arm_03_bln_jnt'%(side))]
for each in nameOfJoint:
cmds.joint(n=each)
cmds.group(n='%s_arm_bln_jnt_grp'%(side),em=True)
cmds.parent('%s_arm_01_bln_jnt'%(side),'%s_arm_bln_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_arm_bln_jnt_grp'%(side),mo=True)
toGetPos = [('%s_arm_01_setup'%(side), '%s_arm_01_bln_jnt'%(side)),('%s_arm_02_setup'%(side),'%s_arm_02_bln_jnt'%(side)),('%s_arm_03_setup'%(side),'%s_arm_03_bln_jnt'%(side))]
for each in toGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
cmds.setAttr('%s_arm_01_bln_jnt.drawStyle'%(side),2)
cmds.setAttr('%s_arm_02_bln_jnt.drawStyle'%(side),2)
cmds.makeIdentity( '%s_arm_01_bln_jnt'%(side),apply=True, rotate=True)
toParentCon = [('%s_fk_arm_01_jnt'%(side),'%s_arm_01_bln_jnt'%(side)),('%s_ik_01_jnt'%(side), '%s_arm_01_bln_jnt'%(side)),('%s_fk_arm_02_jnt'%(side), '%s_arm_02_bln_jnt'%(side)),('%s_ik_02_jnt'%(side), '%s_arm_02_bln_jnt'%(side)),('%s_fk_arm_03_jnt'%(side), '%s_arm_03_bln_jnt'%(side)),('%s_ik_03_jnt'%(side), '%s_arm_03_bln_jnt'%(side))]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo = True)
cmds.curve(d=1, p=[(1.25, 0, 7.5),(-1.25, 0, 7.5),(-1.25, 0, 1.25),(-7.5, 0, 1.25),(-7.5, 0, -1.25),(-1.25, 0, -1.25),(-1.25, 0, -7.5),(1.25, 0 ,-7.5),(1.25, 0, -1.25),(7.5, 0, -1.25),(7.5, 0, 1.25,),(1.25, 0 ,1.25),(1.25, 0, 7.5)])
cmds.rename('%s_ik_fk_switch'%(side))
ControllerAttr('%s_ik_fk_switch'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,15,False,False,False,True,True,True)
cmds.group(n='%s_ik_fk_switch_grp'%(side))
cmds.parent('%s_ik_fk_switch_grp'%(side), 'world_ctrl')
cmds.addAttr('%s_ik_fk_switch'%(side),sn='IKFK', min = 0, max=1 ,k=1,dv=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='bendyVis',at = 'bool',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='thumbCurl',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='indexCurl',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='middleCurl',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='ringCurl',k=1)
cmds.addAttr('%s_ik_fk_switch'%(side),sn='pinkyCurl',k=1)
cmds.parentConstraint('%s_arm_03_bln_jnt'%(side), '%s_ik_fk_switch_grp'%(side))
cmds.shadingNode('reverse',n = '%s_arm_ik_rev'%(side),asUtility=1)
toConnectAttr = [('%s_ik_fk_switch.IKFK'%(side),'%s_arm_03_bln_jnt_parentConstraint1.%s_fk_arm_03_jntW0'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_arm_02_bln_jnt_parentConstraint1.%s_fk_arm_02_jntW0'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_arm_01_bln_jnt_parentConstraint1.%s_fk_arm_01_jntW0'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_arm_ik_rev.inputX'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_arm_03_bln_jnt_parentConstraint1.%s_ik_03_jntW1'%(side,side)),('%s_arm_ik_rev.outputX'%(side),'%s_arm_02_bln_jnt_parentConstraint1.%s_ik_02_jntW1'%(side,side)),('%s_arm_ik_rev.outputX'%(side),'%s_arm_01_bln_jnt_parentConstraint1.%s_ik_01_jntW1'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_fk_arm_01_ctrl_grp.visibility'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_ik_arm_ctrl_grp.visibility'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_elbow_ctrl_grp.visibility'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_elbow_direction_crv_grp.visibility'%(side))]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
IKFKarmSetup('l')
IKFKarmSetup('r')
def ArmStretchSetup(side):
jointList = ['%s_arm_01_length_jnt'%(side),'%s_arm_02_length_jnt'%(side),'%s_arm_03_length_jnt'%(side)]
for each in jointList:
cmds.joint(n=each)
cmds.group(n='%s_arm_length_jnt_grp'%(side),em=True)
cmds.parent('%s_arm_01_length_jnt'%(side),'%s_arm_length_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_arm_length_jnt_grp'%(side),mo=True)
listOfToGetJointPos = [('%s_arm_01_setup'%(side),'%s_arm_01_length_jnt'%(side)),('%s_arm_02_setup'%(side),'%s_arm_02_length_jnt'%(side)),('%s_arm_03_setup'%(side),'%s_arm_03_length_jnt'%(side))]
for each in listOfToGetJointPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('distanceBetween','%s_upr_arm_dist'%(side)),('distanceBetween','%s_lwr_arm_dist'%(side)),('addDoubleLinear','%s_arm_full_dist'%(side)),('distanceBetween','%s_arm_stretch_dist'%(side)),('condition','%s_arm_stretch_cond'%(side)),('multiplyDivide','%s_upr_arm_strecth_mult'%(side)),('multiplyDivide','%s_arm_stretch_mult'%(side)),('multiplyDivide','%s_lwr_arm_strecth_mult'%(side)),('multiplyDivide','%s_arm_strecth_option_mult'%(side))]
for each in list:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
cmds.spaceLocator(n = '%s_arm_start_dist_loc'%(side))
cmds.group(n='%s_arm_start_dist_loc_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_arm_start_dist_loc_grp'%(side),mo=True)
forDel = cmds.pointConstraint('%s_ik_01_jnt'%(side),'%s_arm_start_dist_loc'%(side),mo = False)
cmds.delete(forDel)
cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_arm_start_dist_loc'%(side),mo=True)
cmds.spaceLocator(n = '%s_arm_end_dist_loc'%(side))
cmds.setAttr('%s_arm_end_dist_loc.visibility'%(side),0)
forDel = cmds.pointConstraint('%s_ik_03_jnt'%(side),'%s_arm_end_dist_loc'%(side))
cmds.delete(forDel)
cmds.parent('%s_arm_end_dist_loc'%(side),'%s_ik_arm_ctrl'%(side))
cmds.setAttr('%s_arm_stretch_cond.operation'%(side),2)
cmds.setAttr('%s_arm_stretch_mult.operation'%(side),2)
cmds.setAttr('%s_arm_strecth_option_mult.input2X'%(side),2)
toParentRevFootLocAndGrp = [('%s_IK_arm_roll_ctrl_grp'%(side),'%s_IK_arm_ctrl'%(side)),('%s_IK_leg_roll_ctrl_grp'%(side),'%s_IK_leg_ctrl'%(side)),('%s_leg_toe_lift_loc'%(side),'%s_leg_heel_loc'%(side)),('%s_leg_roll_in_loc'%(side),'%s_leg_roll_out_loc'%(side)),('%s_leg_roll_out_loc'%(side),'%s_leg_toe_lift_loc'%(side)),('%s_arm_toe_lift_loc'%(side),'%s_arm_heel_loc'%(side)),('%s_arm_roll_in_loc'%(side),'%s_arm_roll_out_loc'%(side)),('%s_arm_roll_out_loc'%(side),'%s_arm_toe_lift_loc'%(side)),('%s_leg_lwr_ikh'%(side),'%s_leg_roll_in_loc'%(side)),('%s_leg_upr_ikh'%(side),'%s_leg_roll_in_loc'%(side)),('%s_arm_lwr_ikh'%(side),'%s_arm_roll_in_loc'%(side)),('%s_arm_upr_ikh'%(side),'%s_arm_roll_in_loc'%(side)),('%s_leg_heel_loc'%(side),'%s_IK_leg_loc_grp'%(side)),('%s_arm_heel_loc'%(side),'%s_IK_arm_loc_grp'%(side)),('%s_leg_PV_aim_loc'%(side),'%s_IK_leg_PV_loc_grp'%(side)),('%s_leg_PV_aim_up_loc'%(side),'%s_IK_leg_PV_loc_grp'%(side)),('%s_leg_PV_aim_base_loc'%(side),'%s_IK_leg_PV_loc_grp'%(side)),('%s_leg_PV_aim_world_loc'%(side),'%s_IK_leg_PV_loc_grp'%(side)),('%s_arm_PV_aim_loc'%(side),'%s_IK_arm_PV_loc_grp'%(side)),('%s_arm_PV_aim_up_loc'%(side),'%s_IK_arm_PV_loc_grp'%(side)),('%s_arm_PV_aim_base_loc'%(side),'%s_IK_arm_PV_loc_grp'%(side)),('%s_arm_PV_aim_world_loc'%(side),'%s_IK_arm_PV_loc_grp'%(side)),('%s_IK_leg_ctrl_grp'%(side),'%s_IK_leg_grp'%(side)),('%s_leg_PV_ctrl_grp'%(side),'%s_IK_leg_grp'%(side)),('%s_IK_arm_ctrl_grp'%(side),'%s_IK_arm_grp'%(side)),('%s_arm_PV_ctrl_grp'%(side),'%s_IK_arm_grp'%(side))]
for each in toParentRevFootLocAndGrp:
cmds.parent(each[0],each[1])
toParentConIKleg = [('%s_IK_leg_roll_ctrl'%(side),'%s_IK_leg_loc_grp'%(side)),('%s_IK_arm_roll_ctrl'%(side),'%s_IK_arm_loc_grp'%(side)),('%s_IK_leg_ctrl'%(side),'%s_leg_PV_aim_loc'%(side)),('spine_01_bln_jnt','%s_leg_PV_aim_up_loc'%(side)),('world_ctrl','%s_leg_PV_aim_world_loc'%(side)),('%s_IK_arm_ctrl'%(side),'%s_arm_PV_aim_loc'%(side)),('spine_03_bln_jnt','%s_arm_PV_aim_up_loc'%(side)),('world_ctrl','%s_arm_PV_aim_world_loc'%(side)),('spine_01_bln_jnt','%s_IK_leg_ctrl_grp'%(side)),('world_ctrl','%s_IK_leg_ctrl_grp'%(side)),('%s_shoulder_ctrl'%(side),'%s_IK_arm_ctrl_grp'%(side)),('world_ctrl','%s_IK_arm_ctrl_grp'%(side)),('%s_leg_PV_aim_base_loc'%(side),'%s_leg_PV_ctrl_grp'%(side)),('%s_arm_PV_aim_base_loc'%(side),'%s_arm_PV_ctrl_grp'%(side)),('%s_leg_PV_aim_world_loc'%(side),'%s_leg_PV_ctrl_grp'%(side)),('%s_arm_PV_aim_world_loc'%(side),'%s_arm_PV_ctrl_grp'%(side)),('spine_01_bln_jnt','%s_IK_leg_01_jnt'%(side)),('%s_shoulder_ctrl'%(side),'%s_IK_arm_01_jnt'%(side))]
for each in toParentConIKleg:
cmds.parentConstraint(each[0],each[1],mo = True)
toOrientIKleg = [('%s_IK_arm_ctrl'%(side),'%s_IK_arm_04_jnt'%(side)),('%s_IK_leg_ctrl'%(side),'%s_IK_leg_04_jnt'%(side))]
for each in toOrientIKleg:
cmds.orientConstraint(each[0],each[1],mo=True)
toCreateNode = [('multiplyDivide','%s_leg_rock_mult'%(side)),('condition','%s_leg_rock_con'%(side)),('multiplyDivide','%s_arm_rock_mult'%(side)),('condition','%s_arm_rock_con'%(side)),('reverse','%s_leg_follow_rev'%(side)),('reverse','%s_arm_follow_rev'%(side)),('reverse','%s_leg_PV_follow_rev'%(side)),('reverse','%s_arm_PV_follow_rev'%(side))]
for each in toCreateNode:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
list = [('%s_leg_rock_mult.operation'%(side),1),('%s_arm_rock_mult.operation'%(side),1),('%s_leg_rock_con.operation'%(side),2),('%s_arm_rock_con.operation'%(side),2),('%s_leg_rock_mult.input2X'%(side),-1),('%s_arm_rock_mult.input2X'%(side),-1),('%s_leg_rock_con.colorIfFalseR'%(side),0),('%s_arm_rock_con.colorIfFalseR'%(side),0),('%s_leg_PV_ctrl.follow'%(side),1)]
for each in list:
cmds.setAttr(each[0],each[1])
toConnectNode = [('%s_IK_leg_ctrl.footRock'%(side),'%s_leg_rock_mult.input1X'%(side)),('%s_IK_leg_ctrl.footRock'%(side),'%s_leg_rock_mult.input1Y'%(side)),('%s_leg_rock_mult.outputX'%(side),'%s_leg_rock_con.colorIfFalseG'%(side)),('%s_leg_rock_mult.outputX'%(side),'%s_leg_rock_con.colorIfTrueR'%(side)),('%s_IK_leg_ctrl.footRock'%(side),'%s_leg_rock_con.firstTerm'%(side)),('%s_leg_rock_con.outColorR'%(side),'%s_leg_roll_out_loc.rotateZ'%(side)),('%s_leg_rock_con.outColorG'%(side),'%s_leg_roll_in_loc.rotateZ'%(side)),('%s_IK_arm_ctrl.footRock'%(side),'%s_arm_rock_mult.input1X'%(side)),('%s_IK_arm_ctrl.footRock'%(side),'%s_arm_rock_mult.input1Y'%(side)),('%s_arm_rock_mult.outputX'%(side),'%s_arm_rock_con.colorIfFalseG'%(side)),('%s_arm_rock_mult.outputX'%(side),'%s_arm_rock_con.colorIfTrueR'%(side)),('%s_IK_arm_ctrl.footRock'%(side),'%s_arm_rock_con.firstTerm'%(side)),('%s_arm_rock_con.outColorR'%(side),'%s_arm_roll_out_loc.rotateZ'%(side)),('%s_arm_rock_con.outColorG'%(side),'%s_arm_roll_in_loc.rotateZ'%(side)),('%s_IK_leg_ctrl.heelLift'%(side),'%s_leg_heel_loc.rotateY'%(side)),('%s_IK_arm_ctrl.heelLift'%(side),'%s_arm_heel_loc.rotateY'%(side)),('%s_IK_leg_ctrl.toeLift'%(side),'%s_leg_toe_lift_loc.rotateY'%(side)),('%s_IK_arm_ctrl.toeLift'%(side),'%s_arm_toe_lift_loc.rotateY'%(side)),('%s_IK_leg_ctrl.follow'%(side),'%s_IK_leg_ctrl_grp_parentConstraint1.spine_01_bln_jntW0'%(side)),('%s_IK_leg_ctrl.follow'%(side),'%s_leg_follow_rev.inputX'%(side)),('%s_leg_follow_rev.outputX'%(side),'%s_IK_leg_ctrl_grp_parentConstraint1.world_ctrlW1'%(side)),('%s_IK_arm_ctrl.follow'%(side),'%s_IK_arm_ctrl_grp_parentConstraint1.%s_shoulder_ctrlW0'%(side,side)),('%s_IK_arm_ctrl.follow'%(side),'%s_arm_follow_rev.inputX'%(side)),('%s_arm_follow_rev.outputX'%(side),'%s_IK_arm_ctrl_grp_parentConstraint1.world_ctrlW1'%(side)),('%s_leg_PV_ctrl.follow'%(side),'%s_leg_PV_ctrl_grp_parentConstraint1.%s_leg_PV_aim_base_locW0'%(side,side)),('%s_leg_PV_ctrl.follow'%(side),'%s_leg_PV_follow_rev.inputX'%(side)),('%s_leg_PV_follow_rev.outputX'%(side),'%s_leg_PV_ctrl_grp_parentConstraint1.%s_leg_PV_aim_world_locW1'%(side,side)),('%s_arm_PV_ctrl.follow'%(side),'%s_arm_PV_ctrl_grp_parentConstraint1.%s_arm_PV_aim_base_locW0'%(side,side)),('%s_arm_PV_ctrl.follow'%(side),'%s_arm_PV_follow_rev.inputX'%(side)),('%s_arm_PV_follow_rev.outputX'%(side),'%s_arm_PV_ctrl_grp_parentConstraint1.%s_arm_PV_aim_world_locW1'%(side,side))]
for each in toConnectNode:
cmds.connectAttr(each[0],each[1])
toPointCon = [('%s_IK_leg_01_jnt'%(side),'%s_leg_PV_aim_base_loc'%(side)),('%s_IK_arm_01_jnt'%(side),'%s_arm_PV_aim_base_loc'%(side))]
for each in toPointCon:
cmds.pointConstraint(each[0],each[1],mo = False)
cmds.aimConstraint('%s_arm_PV_aim_loc'%(side),'%s_arm_PV_aim_base_loc'%(side),wut = 'object',wuo = '%s_arm_PV_aim_up_loc'%(side),mo = True)
cmds.aimConstraint('%s_leg_PV_aim_loc'%(side),'%s_leg_PV_aim_base_loc'%(side),wut = 'object',wuo = '%s_leg_PV_aim_up_loc'%(side),mo = True)
toScaleCon = [('world_ctrl','%s_IK_leg_jnt_grp'%(side)),('world_ctrl','%s_IK_arm_jnt_grp'%(side)),('world_ctrl','%s_IK_leg_PV_loc_grp'%(side)),('world_ctrl','%s_IK_arm_PV_loc_grp'%(side))]
for each in toScaleCon:
cmds.scaleConstraint(each[0],each[1],mo=True)
# the command to change the progress bar
cmds.progressBar('QuadrupedProgressBar', edit=True, step=1)
leftRightIKsetup('l')
leftRightIKsetup('r')
#create IKFK setup#
def IKFKsetup(side):
nameOfIKFKjoint = [('%s_bln_leg_01_jnt'%(side)),('%s_bln_leg_02_jnt'%(side)),('%s_bln_leg_03_jnt'%(side)),('%s_bln_leg_04_jnt'%(side)),('%s_bln_arm_01_jnt'%(side)),('%s_bln_arm_02_jnt'%(side)),('%s_bln_arm_03_jnt'%(side)),('%s_bln_arm_04_jnt'%(side))]
for each in nameOfIKFKjoint:
cmds.joint(n=each)
nameOfGroup = [('%s_bln_leg_jnt_grp'%(side)),('%s_bln_arm_jnt_grp'%(side))]
for each in nameOfGroup:
cmds.group(n=each,em=True)
toParent = [('%s_bln_leg_01_jnt'%(side),'%s_bln_leg_jnt_grp'%(side)),('%s_bln_arm_01_jnt'%(side),'%s_bln_arm_jnt_grp'%(side))]
for each in toParent:
cmds.parent(each[0],each[1])
toGetPos = [('%s_leg_01_setup_jnt'%(side),'%s_bln_leg_01_jnt'%(side)),('%s_leg_02_setup_jnt'%(side),'%s_bln_leg_02_jnt'%(side)),('%s_leg_03_setup_jnt'%(side),'%s_bln_leg_03_jnt'%(side)),('%s_leg_04_setup_jnt'%(side),'%s_bln_leg_04_jnt'%(side)),('%s_arm_01_setup_jnt'%(side),'%s_bln_arm_01_jnt'%(side)),('%s_arm_02_setup_jnt'%(side),'%s_bln_arm_02_jnt'%(side)),('%s_arm_03_setup_jnt'%(side),'%s_bln_arm_03_jnt'%(side)),('%s_arm_04_setup_jnt'%(side),'%s_bln_arm_04_jnt'%(side))]
for each in toGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.makeIdentity('%s_bln_leg_01_jnt'%(side),'%s_bln_arm_01_jnt'%(side),apply=True,translate=True,rotate=True)
toCreateController = [('%s_IKFK_leg_switch'%(side),'%s_IKFK_leg_switch_grp'%(side)),('%s_IKFK_arm_switch'%(side),'%s_IKFK_arm_switch_grp'%(side))]
for each in toCreateController:
cmds.curve(n=each[0],d=1,p=[(1.25, 0, 7.5),(-1.25, 0, 7.5),(-1.25, 0, 1.25),(-7.5, 0, 1.25),(-7.5, 0, -1.25),(-1.25, 0, -1.25),(-1.25, 0, -7.5),(1.25, 0 ,-7.5),(1.25, 0, -1.25),(7.5, 0, -1.25),(7.5, 0, 1.25,),(1.25, 0 ,1.25),(1.25, 0, 7.5)])
cmds.group(n=each[1])
toParentCon = [('%s_FK_leg_01_jnt'%(side),'%s_bln_leg_01_jnt'%(side)),('%s_IK_leg_01_jnt'%(side),'%s_bln_leg_01_jnt'%(side)),('%s_FK_leg_02_jnt'%(side),'%s_bln_leg_02_jnt'%(side)),('%s_IK_leg_02_jnt'%(side),'%s_bln_leg_02_jnt'%(side)),('%s_FK_leg_03_jnt'%(side),'%s_bln_leg_03_jnt'%(side)),('%s_IK_leg_03_jnt'%(side),'%s_bln_leg_03_jnt'%(side)),('%s_FK_leg_04_jnt'%(side),'%s_bln_leg_04_jnt'%(side)),('%s_IK_leg_04_jnt'%(side),'%s_bln_leg_04_jnt'%(side)),('%s_FK_arm_01_jnt'%(side),'%s_bln_arm_01_jnt'%(side)),('%s_IK_arm_01_jnt'%(side),'%s_bln_arm_01_jnt'%(side)),('%s_FK_arm_02_jnt'%(side),'%s_bln_arm_02_jnt'%(side)),('%s_IK_arm_02_jnt'%(side),'%s_bln_arm_02_jnt'%(side)),('%s_FK_arm_03_jnt'%(side),'%s_bln_arm_03_jnt'%(side)),('%s_IK_arm_03_jnt'%(side),'%s_bln_arm_03_jnt'%(side)),('%s_FK_arm_04_jnt'%(side),'%s_bln_arm_04_jnt'%(side)),('%s_IK_arm_04_jnt'%(side),'%s_bln_arm_04_jnt'%(side)),('%s_bln_leg_04_jnt'%(side),'%s_IKFK_leg_switch_grp'%(side)),('%s_bln_arm_04_jnt'%(side),'%s_IKFK_arm_switch_grp'%(side))]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo=True)
toGetPos = [('%s_leg_04_setup_jnt'%(side),'%s_IKFK_leg_switch'%(side)),('%s_arm_04_setup_jnt'%(side),'%s_IKFK_arm_switch'%(side))]
for each in toGetPos:
forDel = cmds.pointConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
toLockIKFKcontroller = [('%s_IKFK_leg_switch'%(side)),('%s_IKFK_arm_switch'%(side))]
for each in toLockIKFKcontroller:
cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.rotateX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.rotateY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.rotateZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.translateX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.translateY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.translateZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,15)
cmds.addAttr (each,sn='IKFK',min=0,max=1,k=1)
toCreateNode = [('reverse','%s_IKFK_leg_rev'%(side)),('reverse','%s_IKFK_arm_rev'%(side))]
for each in toCreateNode:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
toConnectNode = [('%s_IKFK_leg_switch.IKFK'%(side),'%s_bln_leg_01_jnt_parentConstraint1.%s_FK_leg_01_jntW0'%(side,side)),('%s_IKFK_leg_switch.IKFK'%(side),'%s_IKFK_leg_rev.inputX'%(side)),('%s_IKFK_leg_rev.outputX'%(side),'%s_bln_leg_01_jnt_parentConstraint1.%s_IK_leg_01_jntW1'%(side,side)),('%s_IKFK_leg_switch.IKFK'%(side),'%s_bln_leg_02_jnt_parentConstraint1.%s_FK_leg_02_jntW0'%(side,side)),('%s_IKFK_leg_rev.outputX'%(side),'%s_bln_leg_02_jnt_parentConstraint1.%s_IK_leg_02_jntW1'%(side,side)),('%s_IKFK_leg_switch.IKFK'%(side),'%s_bln_leg_03_jnt_parentConstraint1.%s_FK_leg_03_jntW0'%(side,side)),('%s_IKFK_leg_rev.outputX'%(side),'%s_bln_leg_03_jnt_parentConstraint1.%s_IK_leg_03_jntW1'%(side,side)),('%s_IKFK_leg_switch.IKFK'%(side),'%s_bln_leg_04_jnt_parentConstraint1.%s_FK_leg_04_jntW0'%(side,side)),('%s_IKFK_leg_rev.outputX'%(side),'%s_bln_leg_04_jnt_parentConstraint1.%s_IK_leg_04_jntW1'%(side,side)),('%s_IKFK_arm_switch.IKFK'%(side),'%s_bln_arm_01_jnt_parentConstraint1.%s_FK_arm_01_jntW0'%(side,side)),('%s_IKFK_arm_switch.IKFK'%(side),'%s_IKFK_arm_rev.inputX'%(side)),('%s_IKFK_arm_rev.outputX'%(side),'%s_bln_arm_01_jnt_parentConstraint1.%s_IK_arm_01_jntW1'%(side,side)),('%s_IKFK_arm_switch.IKFK'%(side),'%s_bln_arm_02_jnt_parentConstraint1.%s_FK_arm_02_jntW0'%(side,side)),('%s_IKFK_arm_rev.outputX'%(side),'%s_bln_arm_02_jnt_parentConstraint1.%s_IK_arm_02_jntW1'%(side,side)),('%s_IKFK_arm_switch.IKFK'%(side),'%s_bln_arm_03_jnt_parentConstraint1.%s_FK_arm_03_jntW0'%(side,side)),('%s_IKFK_arm_rev.outputX'%(side),'%s_bln_arm_03_jnt_parentConstraint1.%s_IK_arm_03_jntW1'%(side,side)),('%s_IKFK_arm_switch.IKFK'%(side),'%s_bln_arm_04_jnt_parentConstraint1.%s_FK_arm_04_jntW0'%(side,side)),('%s_IKFK_arm_rev.outputX'%(side),'%s_bln_arm_04_jnt_parentConstraint1.%s_IK_arm_04_jntW1'%(side,side)),('%s_IKFK_leg_switch.IKFK'%(side),'%s_FK_leg_01_ctrl_grp.visibility'%(side)),('%s_IKFK_leg_rev.outputX'%(side),'%s_IK_leg_grp.visibility'%(side)),('%s_IKFK_arm_switch.IKFK'%(side),'%s_FK_arm_01_ctrl_grp.visibility'%(side)),('%s_IKFK_arm_rev.outputX'%(side),'%s_IK_arm_grp.visibility'%(side))]
for each in toConnectNode:
cmds.connectAttr(each[0],each[1])
toScaleCon = [('%s_bln_leg_04_jnt'%(side),'%s_IKFK_leg_switch_grp'%(side)),('%s_bln_arm_04_jnt'%(side),'%s_IKFK_arm_switch_grp'%(side)),('world_ctrl','%s_bln_leg_04_jnt'%(side)),('world_ctrl','%s_bln_arm_04_jnt'%(side))]
for each in toScaleCon:
cmds.scaleConstraint(each[0],each[1],mo=True)
# the command to change the progress bar
cmds.progressBar('QuadrupedProgressBar', edit=True, step=1)
IKFKsetup('l')
IKFKsetup('r')
#create bind joint#
def createSpineBindJoint():
SpineBindJoint = [('root_bind_jnt'),('spine_01_bind_jnt'),('spine_02_bind_jnt'),('tail_01_bind_jnt'),('tail_02_bind_jnt'),('tail_03_bind_jnt'),('tail_04_bind_jnt'),('tail_05_bind_jnt'),('neck_01_bind_jnt'),('neck_02_bind_jnt'),('head_bind_jnt')]
for each in SpineBindJoint:
cmds.joint(n=each)
toGetPos = [('spine_01_bln_jnt','root_bind_jnt'),('spine_02_bln_jnt','spine_01_bind_jnt'),('spine_03_bln_jnt','spine_02_bind_jnt'),('tail_bln_01_jnt','tail_01_bind_jnt'),('tail_bln_02_jnt','tail_02_bind_jnt'),('tail_bln_03_jnt','tail_03_bind_jnt'),('tail_bln_04_jnt','tail_04_bind_jnt'),('tail_bln_05_jnt','tail_05_bind_jnt'),('neck_01_jnt','neck_01_bind_jnt'),('neck_02_jnt','neck_02_bind_jnt'),('head_jnt','head_bind_jnt')]
for each in toGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
toParent = [('tail_01_bind_jnt','root_bind_jnt'),('neck_01_bind_jnt','spine_02_bind_jnt')]
for each in toParent:
cmds.parent(each[0],each[1])
cmds.makeIdentity('root_bind_jnt',apply=True,translate=True,rotate=True)
toParentCon = [('spine_01_bln_jnt','root_bind_jnt'),('spine_02_bln_jnt','spine_01_bind_jnt'),('spine_03_bln_jnt','spine_02_bind_jnt'),('tail_bln_01_jnt','tail_01_bind_jnt'),('tail_bln_02_jnt','tail_02_bind_jnt'),('tail_bln_03_jnt','tail_03_bind_jnt'),('tail_bln_04_jnt','tail_04_bind_jnt'),('tail_bln_05_jnt','tail_05_bind_jnt'),('neck_01_jnt','neck_01_bind_jnt'),('neck_02_jnt','neck_02_bind_jnt'),('head_jnt','head_bind_jnt')]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo=True)
# the command to change the progress bar
cmds.progressBar('QuadrupedProgressBar', edit=True, step=1)
createSpineBindJoint()
def createLeftRightBindJoint(side):
LeftRightBindJoint = [('%s_leg_01_bind_jnt'%(side)),('%s_leg_02_bind_jnt'%(side)),('%s_leg_03_bind_jnt'%(side)),('%s_leg_04_bind_jnt'%(side)),('%s_arm_01_bind_jnt'%(side)),('%s_arm_02_bind_jnt'%(side)),('%s_arm_03_bind_jnt'%(side)),('%s_arm_04_bind_jnt'%(side)),('%s_shoulder_bind_jnt'%(side))]
for each in LeftRightBindJoint:
cmds.joint(n=each)
toGetPos = [('%s_bln_leg_01_jnt'%(side),'%s_leg_01_bind_jnt'%(side)),('%s_bln_leg_02_jnt'%(side),'%s_leg_02_bind_jnt'%(side)),('%s_bln_leg_03_jnt'%(side),'%s_leg_03_bind_jnt'%(side)),('%s_bln_leg_04_jnt'%(side),'%s_leg_04_bind_jnt'%(side)),('%s_bln_arm_01_jnt'%(side),'%s_arm_01_bind_jnt'%(side)),('%s_bln_arm_02_jnt'%(side),'%s_arm_02_bind_jnt'%(side)),('%s_bln_arm_03_jnt'%(side),'%s_arm_03_bind_jnt'%(side)),('%s_bln_arm_04_jnt'%(side),'%s_arm_04_bind_jnt'%(side)),('%s_shoulder_jnt'%(side),'%s_shoulder_bind_jnt'%(side))]
for each in toGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.parent('%s_shoulder_bind_jnt'%(side),w=True)
toParent = [('%s_leg_01_bind_jnt'%(side),'root_bind_jnt'),('%s_arm_01_bind_jnt'%(side),'%s_shoulder_bind_jnt'%(side)),('%s_shoulder_bind_jnt'%(side),'spine_02_bind_jnt')]
for each in toParent:
cmds.parent(each[0],each[1])
cmds.makeIdentity('%s_leg_01_bind_jnt'%(side),'%s_arm_01_bind_jnt'%(side),'%s_shoulder_bind_jnt'%(side),apply=True,translate=True,rotate=True)
toParentCon = [('%s_bln_leg_01_jnt'%(side),'%s_leg_01_bind_jnt'%(side)),('%s_bln_leg_02_jnt'%(side),'%s_leg_02_bind_jnt'%(side)),('%s_bln_leg_03_jnt'%(side),'%s_leg_03_bind_jnt'%(side)),('%s_bln_leg_04_jnt'%(side),'%s_leg_04_bind_jnt'%(side)),('%s_bln_arm_01_jnt'%(side),'%s_arm_01_bind_jnt'%(side)),('%s_bln_arm_02_jnt'%(side),'%s_arm_02_bind_jnt'%(side)),('%s_bln_arm_03_jnt'%(side),'%s_arm_03_bind_jnt'%(side)),('%s_bln_arm_04_jnt'%(side),'%s_arm_04_bind_jnt'%(side)),('%s_shoulder_jnt'%(side),'%s_shoulder_bind_jnt'%(side))]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo=True)
# the command to change the progress bar
cmds.progressBar('QuadrupedProgressBar', edit=True, step=1)
createLeftRightBindJoint('l')
createLeftRightBindJoint('r')
def groupAll():
nameOfGroup = [('ctrl_grp'),('jnt_grp'),('bind_jnt_grp'),('extra'),('mesh'),('rename')]
for each in nameOfGroup:
cmds.group(n=each,em=True)
toParentGroup = [('tail_setup_grp','extra'),('spine_IK_setup_grp','extra'),('spine_IK_chest_jnt','jnt_grp'),('spine_IK_root_jnt','jnt_grp'),('spine_IK_jnt_grp','jnt_grp'),('spine_01_FK_jnt','jnt_grp'),('cog_ctrl_grp','world_ctrl'),('l_FK_leg_01_ctrl_grp','world_ctrl'),('r_FK_leg_01_ctrl_grp','world_ctrl'),('l_shoulder_ctrl_grp','world_ctrl'),('r_shoulder_ctrl_grp','world_ctrl'),('tail_ctrl_grp','world_ctrl'),('neck_01_ctrl_grp','world_ctrl'),('l_IK_leg_grp','world_ctrl'),('l_IK_arm_grp','world_ctrl'),('r_IK_leg_grp','world_ctrl'),('r_IK_arm_grp','world_ctrl'),('l_IKFK_leg_switch_grp','world_ctrl'),('r_IKFK_leg_switch_grp','world_ctrl'),('spine_01_setup_jnt','extra'),('world_ctrl_grp','ctrl_grp'),('spine_01_bln_jnt_grp','jnt_grp'),('l_FK_leg_01_jnt','jnt_grp'),('l_FK_arm_01_jnt','jnt_grp'),('l_shoulder_jnt','jnt_grp'),('r_FK_leg_01_jnt','jnt_grp'),('r_FK_arm_01_jnt','jnt_grp'),('r_shoulder_jnt','jnt_grp'),('tail_jnt_grp','jnt_grp'),('neck_01_jnt','jnt_grp'),('l_IK_leg_jnt_grp','jnt_grp'),('l_IK_arm_jnt_grp','jnt_grp'),('r_IK_leg_jnt_grp','jnt_grp'),('r_IK_arm_jnt_grp','jnt_grp'),('l_bln_leg_jnt_grp','jnt_grp'),('l_bln_arm_jnt_grp','jnt_grp'),('r_bln_leg_jnt_grp','jnt_grp'),('r_bln_arm_jnt_grp','jnt_grp'),('l_IK_leg_loc_grp','extra'),('l_IK_arm_loc_grp','extra'),('l_IK_arm_PV_loc_grp','extra'),('l_IK_leg_PV_loc_grp','extra'),('r_IK_leg_loc_grp','extra'),('r_IK_arm_loc_grp','extra'),('r_IK_arm_PV_loc_grp','extra'),('r_IK_leg_PV_loc_grp','extra'),('l_IKFK_arm_switch_grp','world_ctrl'),('r_IKFK_arm_switch_grp','world_ctrl'),('root_bind_jnt','bind_jnt_grp'),('ctrl_grp','rename'),('jnt_grp','rename'),('bind_jnt_grp','rename'),('extra','rename'),('mesh','rename')]
for each in toParentGroup:
cmds.parent(each[0],each[1])
cmds.setAttr('jnt_grp.visibility',0)
cmds.setAttr('extra.visibility',0)
# the command to change the progress bar
cmds.progressBar('QuadrupedProgressBar', edit=True, step=1)
cmds.progressBar('QuadrupedProgressBar', edit=True, step=1)
cmds.progressBar('QuadrupedProgressBar', edit=True, step=1)
groupAll()
def progressBarWindowClose():
# the command to close the progress bar
cmds.deleteUI('QuadrupedProgress',window=True)
progressBarWindowClose()
#create setup joint function#
def setupjoint():
#create setup jnt#
nameOfSpineArmSetupJnt = [('world_setup',(0, 0, 0),(0,0,0)),('cog_setup',(0, 95, 0),(0,0,0)),('pelvis_setup',(0, 95, 0),(0,0,0)),('root_setup',(0, 95, 0),(0,0,0)),('spine_setup',(0, 110, 0),(0,0,0)),('chest_setup',(0, 125, 0),(0,0,0)),('l_shoulder_setup',(7, 140, -5),(0,0,0)),('l_arm_01_setup',(22, 140, -5),(0,0,0)),('l_arm_02_setup',(50, 140, -5),(0,0,0)),('l_elbow_setup',(50, 140, -40),(0,0,0)),('l_arm_03_setup',(74, 140, -5),(0,0,0)),('l_fingers_setup',(110, 140, -5),(0,0,0)),('l_thumb_01_setup',(77, 140, 3),(0,0,0)),('l_thumb_02_setup',(80, 140, 3),(0,0,0)),('l_thumb_03_setup',(83, 140, 3),(0,0,0)),('l_index_01_setup',(80, 140, 0),(0,0,0)),('l_index_02_setup',(85, 140, 0),(0,0,0)),('l_index_03_setup',(90, 140, 0),(0,0,0)),('l_index_04_setup',(95, 140, 0),(0,0,0)),('l_middle_01_setup',(80, 140, -3),(0,0,0)),('l_middle_02_setup',(87, 140, -3),(0,0,0)),('l_middle_03_setup',(94, 140, -3),(0,0,0)),('l_middle_04_setup',(101, 140, -3),(0,0,0)),('l_ring_01_setup',(80, 140, -6),(0,0,0)),('l_ring_02_setup',(86, 140, -6),(0,0,0)),('l_ring_03_setup',(92, 140, -6),(0,0,0)),('l_ring_04_setup',(98, 140, -6),(0,0,0)),('l_pinky_01_setup',(80, 140, -9),(0,0,0)),('l_pinky_02_setup',(84, 140, -9),(0,0,0)),('l_pinky_03_setup',(88, 140, -9),(0,0,0)),('l_pinky_04_setup',(92, 140, -9),(0,0,0)),('r_shoulder_setup',(-7, 140, -5),(180,0,0)),('r_arm_01_setup',(-22, 140, -5),(0,0,0)),('r_arm_02_setup',(-50, 140, -5),(0,0,0)),('r_elbow_setup',(-50, 140, -40),(0,0,0)),('r_arm_03_setup',(-74, 140, -5),(0,0,0)),('r_fingers_setup',(-110, 140, -5),(0,0,0)),('r_thumb_01_setup',(-77, 140, 3),(0,0,0)),('r_thumb_02_setup',(-80, 140, 3),(0,0,0)),('r_thumb_03_setup',(-83, 140, 3),(0,0,0)),('r_index_01_setup',(-80, 140, 0),(0,0,0)),('r_index_02_setup',(-85, 140, 0),(0,0,0)),('r_index_03_setup',(-90, 140, 0),(0,0,0)),('r_index_04_setup',(-95, 140, 0),(0,0,0)),('r_middle_01_setup',(-80, 140, -3),(0,0,0)),('r_middle_02_setup',(-87, 140, -3),(0,0,0)),('r_middle_03_setup',(-94, 140, -3),(0,0,0)),('r_middle_04_setup',(-101, 140, -3),(0,0,0)),('r_ring_01_setup',(-80, 140, -6),(0,0,0)),('r_ring_02_setup',(-86, 140, -6),(0,0,0)),('r_ring_03_setup',(-92, 140, -6),(0,0,0)),('r_ring_04_setup',(-98, 140, -6),(0,0,0)),('r_pinky_01_setup',(-80, 140, -9),(0,0,0)),('r_pinky_02_setup',(-84, 140, -9),(0,0,0)),('r_pinky_03_setup',(-88, 140, -9),(0,0,0)),('r_pinky_04_setup',(-92, 140, -9),(0,0,0)),('l_leg_01_setup',(11, 88, 0),(-90,0,90)),('l_leg_02_setup',(11, 50, 0),(0,0,0)),('l_knee_setup',(11, 50, 40),(0,0,0)),('l_leg_03_setup',(11, 15, 0),(0,0,0)),('l_leg_heel_setup',(11, 3, -5),(0,0,90)),('l_leg_04_setup',(11, 3, 15),(0,0,0)),('l_leg_roll_out_setup',(13, 3, 15),(0,0,0)),('l_leg_roll_in_setup',(9, 3, 15),(0,0,0)),('l_leg_05_setup',(11, 3, 20),(0,0,0)),('l_leg_06_setup',(11, 3, 25),(0,0,0)),('r_leg_01_setup',(-11, 88, 0),(0,0,-90)),('r_leg_02_setup',(-11, 50, 0),(0,0,0)),('r_knee_setup',(-11, 50, 40),(0,0,0)),('r_leg_03_setup',(-11, 15, 0),(0,0,0)),('r_leg_heel_setup',(-11, 3, -5),(0,0,-90)),('r_leg_04_setup',(-11, 3, 15),(0,0,180)),('r_leg_roll_out_setup',(-13, 3, 15),(0,0,-180)),('r_leg_roll_in_setup',(-9, 3, 15),(0,0,0)),('r_leg_05_setup',(-11, 3, 20),(0,0,0)),('r_leg_06_setup',(-11, 3, 25),(0,0,0)),('neck_setup',(0, 145, 0),(0,90,180)),('head_setup',(0, 155, 0),(0,0,0)),('head_end_setup',(0, 170, 0),(0,0,0)),('l_eye_setup',(5, 165, 10),(0,0,0)),('r_eye_setup',(-5, 165, 10),(0,0,0)),('eye_aim_setup',(0, 165, 50),(0,0,0))]
for each in nameOfSpineArmSetupJnt:
cmds.joint(n=each[0],p=each[1],o=each[2])
parentJnt = [('root_setup','cog_setup'),('l_arm_03_setup','l_arm_02_setup'),('l_thumb_01_setup','l_arm_03_setup'),('l_index_01_setup','l_arm_03_setup'),('l_middle_01_setup','l_arm_03_setup'),('l_ring_01_setup','l_arm_03_setup'),('l_pinky_01_setup','l_arm_03_setup'),('r_shoulder_setup','chest_setup'),('r_thumb_01_setup','r_arm_03_setup'),('r_index_01_setup','r_arm_03_setup'),('r_middle_01_setup','r_arm_03_setup'),('r_pinky_01_setup','r_arm_03_setup'),('r_ring_01_setup','r_arm_03_setup'),('l_leg_01_setup','pelvis_setup'),('l_leg_03_setup','l_leg_02_setup'),('l_leg_roll_in_setup','l_leg_04_setup'),('l_leg_05_setup','l_leg_04_setup'),('l_leg_04_setup','l_leg_03_setup'),('r_arm_03_setup','r_arm_02_setup'),('r_leg_01_setup','pelvis_setup'),('r_leg_03_setup','r_leg_02_setup'),('r_leg_04_setup','r_leg_03_setup'),('r_leg_roll_in_setup','r_leg_04_setup'),('r_leg_05_setup','r_leg_04_setup'),('neck_setup','chest_setup'),('l_eye_setup','head_setup'),('r_eye_setup','head_setup'),('eye_aim_setup','head_setup')]
for each in parentJnt:
cmds.parent(each[0],each[1])
toGetIKrotation = [('l_arm_02_setup','l_leg_02_setup'),('r_arm_02_setup','r_leg_02_setup')]
for each in toGetIKrotation:
cmds.setAttr(each[0]+'.rotateY',-5)
cmds.setAttr(each[1]+'.rotateZ',-2)
toLockSetupFoot = [('l_leg_04_setup.rotateX'),('l_leg_04_setup.rotateY'),('l_leg_04_setup.rotateZ'),('l_leg_05_setup.rotateX'),('l_leg_05_setup.rotateY'),('l_leg_05_setup.rotateZ'),('l_leg_06_setup.rotateX'),('l_leg_06_setup.rotateY'),('l_leg_06_setup.rotateZ'),('l_leg_04_setup.scaleX'),('l_leg_04_setup.scaleY'),('l_leg_04_setup.scaleZ'),('l_leg_05_setup.scaleX'),('l_leg_05_setup.scaleY'),('l_leg_05_setup.scaleZ'),('l_leg_06_setup.scaleX'),('l_leg_06_setup.scaleY'),('l_leg_06_setup.scaleZ'),('l_leg_roll_out_setup.rotateX'),('l_leg_roll_out_setup.rotateY'),('l_leg_roll_out_setup.rotateZ'),('l_leg_roll_in_setup.rotateX'),('l_leg_roll_in_setup.rotateY'),('l_leg_roll_in_setup.rotateZ'),('l_leg_heel_setup.rotateX'),('l_leg_heel_setup.rotateY'),('l_leg_heel_setup.rotateZ'),('l_leg_roll_out_setup.scaleX'),('l_leg_roll_out_setup.scaleY'),('l_leg_roll_out_setup.scaleZ'),('l_leg_roll_in_setup.scaleX'),('l_leg_roll_in_setup.scaleY'),('l_leg_roll_in_setup.scaleZ'),('l_leg_heel_setup.scaleX'),('l_leg_heel_setup.scaleY'),('l_leg_heel_setup.scaleZ'),('r_leg_04_setup.rotateX'),('r_leg_04_setup.rotateY'),('r_leg_04_setup.rotateZ'),('r_leg_05_setup.rotateX'),('r_leg_05_setup.rotateY'),('r_leg_05_setup.rotateZ'),('r_leg_06_setup.rotateX'),('r_leg_06_setup.rotateY'),('r_leg_06_setup.rotateZ'),('r_leg_04_setup.scaleX'),('r_leg_04_setup.scaleY'),('r_leg_04_setup.scaleZ'),('r_leg_05_setup.scaleX'),('r_leg_05_setup.scaleY'),('r_leg_05_setup.scaleZ'),('r_leg_06_setup.scaleX'),('r_leg_06_setup.scaleY'),('r_leg_06_setup.scaleZ'),('r_leg_roll_out_setup.rotateX'),('r_leg_roll_out_setup.rotateY'),('r_leg_roll_out_setup.rotateZ'),('r_leg_roll_in_setup.rotateX'),('r_leg_roll_in_setup.rotateY'),('r_leg_roll_in_setup.rotateZ'),('r_leg_heel_setup.rotateX'),('r_leg_heel_setup.rotateY'),('r_leg_heel_setup.rotateZ'),('r_leg_roll_out_setup.scaleX'),('r_leg_roll_out_setup.scaleY'),('r_leg_roll_out_setup.scaleZ'),('r_leg_roll_in_setup.scaleX'),('r_leg_roll_in_setup.scaleY'),('r_leg_roll_in_setup.scaleZ'),('r_leg_heel_setup.scaleX'),('r_leg_heel_setup.scaleY'),('r_leg_heel_setup.scaleZ')]
for each in toLockSetupFoot:
cmds.setAttr(each, lock = True)
#######################################################################################
def mirrorSetupjoint():
toUnlockSetupFoot = [('l_leg_04_setup.rotateX'),('l_leg_04_setup.rotateY'),('l_leg_04_setup.rotateZ'),('l_leg_05_setup.rotateX'),('l_leg_05_setup.rotateY'),('l_leg_05_setup.rotateZ'),('l_leg_06_setup.rotateX'),('l_leg_06_setup.rotateY'),('l_leg_06_setup.rotateZ'),('l_leg_04_setup.scaleX'),('l_leg_04_setup.scaleY'),('l_leg_04_setup.scaleZ'),('l_leg_05_setup.scaleX'),('l_leg_05_setup.scaleY'),('l_leg_05_setup.scaleZ'),('l_leg_06_setup.scaleX'),('l_leg_06_setup.scaleY'),('l_leg_06_setup.scaleZ'),('l_leg_roll_out_setup.rotateX'),('l_leg_roll_out_setup.rotateY'),('l_leg_roll_out_setup.rotateZ'),('l_leg_roll_in_setup.rotateX'),('l_leg_roll_in_setup.rotateY'),('l_leg_roll_in_setup.rotateZ'),('l_leg_heel_setup.rotateX'),('l_leg_heel_setup.rotateY'),('l_leg_heel_setup.rotateZ'),('l_leg_roll_out_setup.scaleX'),('l_leg_roll_out_setup.scaleY'),('l_leg_roll_out_setup.scaleZ'),('l_leg_roll_in_setup.scaleX'),('l_leg_roll_in_setup.scaleY'),('l_leg_roll_in_setup.scaleZ'),('l_leg_heel_setup.scaleX'),('l_leg_heel_setup.scaleY'),('l_leg_heel_setup.scaleZ'),('r_leg_04_setup.rotateX'),('r_leg_04_setup.rotateY'),('r_leg_04_setup.rotateZ'),('r_leg_05_setup.rotateX'),('r_leg_05_setup.rotateY'),('r_leg_05_setup.rotateZ'),('r_leg_06_setup.rotateX'),('r_leg_06_setup.rotateY'),('r_leg_06_setup.rotateZ'),('r_leg_04_setup.scaleX'),('r_leg_04_setup.scaleY'),('r_leg_04_setup.scaleZ'),('r_leg_05_setup.scaleX'),('r_leg_05_setup.scaleY'),('r_leg_05_setup.scaleZ'),('r_leg_06_setup.scaleX'),('r_leg_06_setup.scaleY'),('r_leg_06_setup.scaleZ'),('r_leg_roll_out_setup.rotateX'),('r_leg_roll_out_setup.rotateY'),('r_leg_roll_out_setup.rotateZ'),('r_leg_roll_in_setup.rotateX'),('r_leg_roll_in_setup.rotateY'),('r_leg_roll_in_setup.rotateZ'),('r_leg_heel_setup.rotateX'),('r_leg_heel_setup.rotateY'),('r_leg_heel_setup.rotateZ'),('r_leg_roll_out_setup.scaleX'),('r_leg_roll_out_setup.scaleY'),('r_leg_roll_out_setup.scaleZ'),('r_leg_roll_in_setup.scaleX'),('r_leg_roll_in_setup.scaleY'),('r_leg_roll_in_setup.scaleZ'),('r_leg_heel_setup.scaleX'),('r_leg_heel_setup.scaleY'),('r_leg_heel_setup.scaleZ')]
for each in toUnlockSetupFoot:
cmds.setAttr(each, lock = False)
cmds.mirrorJoint('l_shoulder_setup',mb = True,myz = True,sr = ('l_','r_mirror_'))
#parentConArmJointForPosition#
parentConArmMirrorJntForPos = [('r_mirror_shoulder_setup','r_shoulder_setup')],[('r_mirror_arm_01_setup','r_arm_01_setup')],[('r_mirror_elbow_setup','r_elbow_setup')],[('r_mirror_arm_02_setup','r_arm_02_setup')],[('r_mirror_arm_03_setup','r_arm_03_setup')],[('r_mirror_fingers_setup','r_fingers_setup')],[('r_mirror_thumb_01_setup','r_thumb_01_setup')],[('r_mirror_thumb_02_setup','r_thumb_02_setup')],[('r_mirror_thumb_03_setup','r_thumb_03_setup')],[('r_mirror_index_01_setup','r_index_01_setup')],[('r_mirror_index_02_setup','r_index_02_setup')],[('r_mirror_index_03_setup','r_index_03_setup')],[('r_mirror_index_04_setup','r_index_04_setup')],[('r_mirror_middle_01_setup','r_middle_01_setup')],[('r_mirror_middle_02_setup','r_middle_02_setup')],[('r_mirror_middle_03_setup','r_middle_03_setup')],[('r_mirror_middle_04_setup','r_middle_04_setup')],[('r_mirror_ring_01_setup','r_ring_01_setup')],[('r_mirror_ring_02_setup','r_ring_02_setup')],[('r_mirror_ring_03_setup','r_ring_03_setup')],[('r_mirror_ring_04_setup','r_ring_04_setup')],[('r_mirror_pinky_01_setup','r_pinky_01_setup')],[('r_mirror_pinky_02_setup','r_pinky_02_setup')],[('r_mirror_pinky_03_setup','r_pinky_03_setup')],[('r_mirror_pinky_04_setup','r_pinky_04_setup')]
for armJnt in parentConArmMirrorJntForPos:
for jnt in armJnt:
parentConArmMirrorForDel = cmds.parentConstraint(jnt[0],jnt[1],mo = False)
cmds.delete(parentConArmMirrorForDel)
cmds.delete('r_mirror_shoulder_setup')
#parentConLegJointForPosition#
cmds.mirrorJoint('l_leg_01_setup',mb = True,myz = True)
forDel = cmds.parentConstraint('l_leg_01_setup1','r_leg_01_setup',mo=False)
cmds.delete(forDel)
cmds.makeIdentity('r_leg_01_setup',apply=True,translate=True,rotate=True)
cmds.setAttr('r_leg_01_setup.rotateZ',180)
forDel = cmds.parentConstraint('l_leg_02_setup1','r_leg_02_setup',mo=False)
cmds.delete(forDel)
cmds.makeIdentity('r_leg_02_setup',apply=True,translate=True,rotate=True)
cmds.setAttr('r_leg_02_setup.rotateZ',180)
forDel = cmds.parentConstraint('l_leg_03_setup1','r_leg_03_setup',mo=False)
cmds.delete(forDel)
cmds.makeIdentity('r_leg_03_setup',apply=True,translate=True,rotate=True)
cmds.setAttr('r_leg_03_setup.rotateZ',180)
forDel = cmds.parentConstraint('l_leg_04_setup1','r_leg_04_setup',mo=False)
cmds.delete(forDel)
cmds.makeIdentity('r_leg_04_setup',apply=True,translate=True,rotate=True)
cmds.setAttr('r_leg_04_setup.rotateZ',180)
list = [('l_knee_setup1','r_knee_setup'),('l_leg_heel_setup1','r_leg_heel_setup'),('l_leg_roll_out_setup1','r_leg_roll_out_setup'),('l_leg_roll_in_setup1','r_leg_roll_in_setup'),('l_leg_05_setup1','r_leg_05_setup'),('l_leg_06_setup1','r_leg_06_setup')]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1])
cmds.delete(forDel)
cmds.delete('l_leg_01_setup1')
cmds.mirrorJoint('l_eye_setup',mb = False,myz = True,sr = ('l_','r_mirror_'))
cmds.parentConstraint('r_mirror_eye_setup','r_eye_setup',mo=False)
cmds.delete('r_mirror_eye_setup')
def buildsetup():
def progressBarWindow():
# this command opens the window
window = cmds.window('EugenesProgress',title='Building')
cmds.columnLayout()
cmds.progressBar('EugenesProgressBar',maxValue=10, width=300)
cmds.showWindow( window )
progressBarWindow()
def ControllerAttr(controllerName,visKeyableOrnot,scaleXKeyableOrnot,scaleYKeyableOrnot,scaleZKeyableOrnot,rotateXKeyableOrnot,rotateYKeyableOrnot,rotateZKeyableOrnot,visLockOrnot,scaleXLockOrnot,scaleYLockOrnot,scaleZLockOrnot,rotateXLockOrnot,rotateYLockOrnot,rotateZLockOrnot,colorEnableOrnot,colorNumber,translateXKeyableOrnot,translateYKeyableOrnot,translateZKeyableOrnot,translateXLockOrnot,translateYLockOrnot,translateZLockOrnot):
cmds.setAttr ((controllerName) +'.visibility',keyable = visKeyableOrnot, cb = False, lock = visLockOrnot)
cmds.setAttr ((controllerName) +'.scaleX',keyable = scaleXKeyableOrnot, cb = False, lock = scaleXLockOrnot)
cmds.setAttr ((controllerName) +'.scaleY',keyable = scaleYKeyableOrnot, cb = False, lock = scaleYLockOrnot)
cmds.setAttr ((controllerName) +'.scaleZ',keyable = scaleZKeyableOrnot, cb = False, lock = scaleZLockOrnot)
cmds.setAttr ((controllerName) +'.rotateX',keyable = rotateXKeyableOrnot, cb = False, lock = rotateXLockOrnot)
cmds.setAttr ((controllerName) +'.rotateY',keyable = rotateYKeyableOrnot, cb = False, lock = rotateYLockOrnot)
cmds.setAttr ((controllerName) +'.rotateZ',keyable = rotateZKeyableOrnot, cb = False, lock = rotateZLockOrnot)
cmds.setAttr ((controllerName) +'.translateX',keyable = translateXKeyableOrnot, cb = False, lock = translateXLockOrnot)
cmds.setAttr ((controllerName) +'.translateY',keyable = translateYKeyableOrnot, cb = False, lock = translateYLockOrnot)
cmds.setAttr ((controllerName) +'.translateZ',keyable = translateZKeyableOrnot, cb = False, lock = translateZLockOrnot)
cmds.setAttr ((controllerName) + '.overrideEnabled' ,colorEnableOrnot)
cmds.setAttr ((controllerName) + '.overrideColor' ,colorNumber)
def spineSetup():
#FK spine#
toUnlockSetupFoot = [('l_leg_04_setup.rotateX'),('l_leg_04_setup.rotateY'),('l_leg_04_setup.rotateZ'),('l_leg_05_setup.rotateX'),('l_leg_05_setup.rotateY'),('l_leg_05_setup.rotateZ'),('l_leg_06_setup.rotateX'),('l_leg_06_setup.rotateY'),('l_leg_06_setup.rotateZ'),('l_leg_04_setup.scaleX'),('l_leg_04_setup.scaleY'),('l_leg_04_setup.scaleZ'),('l_leg_05_setup.scaleX'),('l_leg_05_setup.scaleY'),('l_leg_05_setup.scaleZ'),('l_leg_06_setup.scaleX'),('l_leg_06_setup.scaleY'),('l_leg_06_setup.scaleZ'),('l_leg_roll_out_setup.rotateX'),('l_leg_roll_out_setup.rotateY'),('l_leg_roll_out_setup.rotateZ'),('l_leg_roll_in_setup.rotateX'),('l_leg_roll_in_setup.rotateY'),('l_leg_roll_in_setup.rotateZ'),('l_leg_heel_setup.rotateX'),('l_leg_heel_setup.rotateY'),('l_leg_heel_setup.rotateZ'),('l_leg_roll_out_setup.scaleX'),('l_leg_roll_out_setup.scaleY'),('l_leg_roll_out_setup.scaleZ'),('l_leg_roll_in_setup.scaleX'),('l_leg_roll_in_setup.scaleY'),('l_leg_roll_in_setup.scaleZ'),('l_leg_heel_setup.scaleX'),('l_leg_heel_setup.scaleY'),('l_leg_heel_setup.scaleZ'),('r_leg_04_setup.rotateX'),('r_leg_04_setup.rotateY'),('r_leg_04_setup.rotateZ'),('r_leg_05_setup.rotateX'),('r_leg_05_setup.rotateY'),('r_leg_05_setup.rotateZ'),('r_leg_06_setup.rotateX'),('r_leg_06_setup.rotateY'),('r_leg_06_setup.rotateZ'),('r_leg_04_setup.scaleX'),('r_leg_04_setup.scaleY'),('r_leg_04_setup.scaleZ'),('r_leg_05_setup.scaleX'),('r_leg_05_setup.scaleY'),('r_leg_05_setup.scaleZ'),('r_leg_06_setup.scaleX'),('r_leg_06_setup.scaleY'),('r_leg_06_setup.scaleZ'),('r_leg_roll_out_setup.rotateX'),('r_leg_roll_out_setup.rotateY'),('r_leg_roll_out_setup.rotateZ'),('r_leg_roll_in_setup.rotateX'),('r_leg_roll_in_setup.rotateY'),('r_leg_roll_in_setup.rotateZ'),('r_leg_heel_setup.rotateX'),('r_leg_heel_setup.rotateY'),('r_leg_heel_setup.rotateZ'),('r_leg_roll_out_setup.scaleX'),('r_leg_roll_out_setup.scaleY'),('r_leg_roll_out_setup.scaleZ'),('r_leg_roll_in_setup.scaleX'),('r_leg_roll_in_setup.scaleY'),('r_leg_roll_in_setup.scaleZ'),('r_leg_heel_setup.scaleX'),('r_leg_heel_setup.scaleY'),('r_leg_heel_setup.scaleZ')]
for each in toUnlockSetupFoot:
cmds.setAttr(each, lock = False)
cmds.makeIdentity( 'cog_setup',apply=True,translate=True,rotate=True)
cmds.curve(p=[(0.0, 0.0, 107.43535641560554),(0.0, 0.0, 107.43535641560554),(24.915725527215045, 0.0, 75.00395255193817),(24.915725527215045, 0.0, 75.00395255193817),(11.244867487196904, 8.522407998048963e-16, 75.00395255193817),(11.244867487196904, 8.522407998048963e-16, 75.00395255193817),(11.245769514449382, -8.522407998048963e-16, 58.21954194768595),(11.245769514449382, -8.522407998048963e-16, 58.21954194768595),(23.21945878815599, 0.0, 56.05673231731379),(42.90396545838193, -6.817926398439171e-15, 42.90396545838193),(56.05673231731379, -1.7044815996097927e-15, 23.219458788155972),(58.21954194768592, -5.113444798829372e-15, 11.245317823980379),(58.21954194768592, -5.113444798829372e-15, 11.245317823980379),(75.00395255193817, 0.0, 11.245307123418877),(75.00395255193817, 0.0, 11.245307123418877),(75.00395255193817, 0.0, 24.915725527215034),(75.00395255193817, 0.0, 24.915725527215034),(107.43535641560554, -2.0453779195317487e-14, 0.0),(107.43535641560554, -2.0453779195317487e-14, 0.0),(75.00395255193817, 0.0, -24.915725527215034),(75.00395255193817, 0.0, -24.915725527215034),(75.00395255193817, 0.0, -11.245149376085063),(75.00395255193817, 0.0, -11.245149376085063),(58.21954194768592, -5.113444798829372e-15, -11.245479986907359),(58.21954194768592, -5.113444798829372e-15, -11.245479986907359),(56.05673231731379, -1.7044815996097927e-15, -23.219458788155972),(42.90396545838193, -6.817926398439171e-15, -42.90396545838193),(23.21945878815599, 0.0, -56.05673231731379),(11.245769514449382, -8.522407998048963e-16, -58.21954194768595),(11.245769514449382, -8.522407998048963e-16, -58.21954194768595),(11.244855432949919, 0.0, -75.00395255193817),(11.244855432949919, 0.0, -75.00395255193817),(24.915725527215045, 0.0, -75.00395255193817),(24.915725527215045, 0.0, -75.00395255193817),(0.0, 0.0, -107.43535641560554),(0.0, 0.0, -107.43535641560554),(-24.915725527215045, 0.0, -75.00395255193817),(-24.915725527215045, 0.0, -75.00395255193817),(-11.245232466589695, 2.9828427993171384e-15, -75.00395255193817),(-11.245232466589695, 2.9828427993171384e-15, -75.00395255193817),(-11.245388215625923, 0.0, -58.21954194768595),(-11.245388215625923, 0.0, -58.21954194768595),(-23.21945878815599, 0.0, -56.05673231731379),(-42.90396545838193, 6.817926398439171e-15, -42.90396545838193),(-56.05673231731379, 1.7044815996097927e-15, -23.219458788155972),(-58.21954194768592, 5.113444798829372e-15, -11.245479986907359),(-58.21954194768592, 5.113444798829372e-15, -11.245479986907359),(-75.00395255193817, 0.0, -11.245144960491917),(-75.00395255193817, 0.0, -11.245144960491917),(-75.00395255193817, 0.0, -24.915725527215034),(-75.00395255193817, 0.0, -24.915725527215034),(-107.43535641560554, 2.0453779195317487e-14, 0.0),(-107.43535641560554, 2.0453779195317487e-14, 0.0),(-75.00395255193817, 0.0, 24.915725527215034),(-75.00395255193817, 0.0, 24.915725527215034),(-75.00395255193817, 0.0, 11.245307273828363),(-75.00395255193817, 0.0, 11.245307273828363),(-58.21954194768592, 5.113444798829372e-15, 11.245317823980379),(-58.21954194768592, 5.113444798829372e-15, 11.245317823980379),(-56.05673231731379, 1.7044815996097927e-15, 23.219458788155972),(-42.90396545838193, 6.817926398439171e-15, 42.90396545838193),(-23.21945878815599, 0.0, 56.05673231731379),(-11.245394640260228, -8.522407998048963e-16, 58.21954194768595),(-11.245394640260228, -8.522407998048963e-16, 58.21954194768595),(-11.245230307139062, 4.2612039990244817e-16, 75.00395255193817),(-11.245230307139062, 4.2612039990244817e-16, 75.00395255193817),(-24.915725527215045, 0.0, 75.00395255193817),(-24.915725527215045, 0.0, 75.00395255193817),(0.0, 0.0, 107.43535641560554)], d=2)
cmds.rename('main_ctrl')
cmds.setAttr('main_ctrl.overrideEnabled' ,True)
cmds.setAttr('main_ctrl.overrideColor' ,20)
cmds.setAttr ('main_ctrl.visibility',keyable = False, cb = False, lock = True)
cmds.group(n='main_ctrl_grp')
cmds.circle(n='world_ctrl',r=50, nry = 90)
cmds.setAttr('world_ctrl.overrideEnabled' ,True)
cmds.setAttr('world_ctrl.overrideColor' ,20)
cmds.setAttr ('world_ctrl.visibility',keyable = False, cb = False, lock = True)
cmds.group(n='world_ctrl_grp')
cmds.parent('world_ctrl_grp','main_ctrl')
cmds.curve(d=1, p=[(-4.0751377334481305, 0.0, 24.450826400688754),(-24.450826400688754, 0.0, 4.075137733448116),(-24.450826400688754, 0.0, 8.150275466896261),(-32.601101867585015, 0.0, 0.0),(-24.450826400688754, 0.0, -8.150275466896261),(-24.450826400688754, 0.0, -4.075137733448116),(-4.0751377334481305, 0.0, -24.450826400688754),(-4.0751377334481305, 0.0, -24.450826400688754),(-8.150275466896247, 0.0, -24.450826400688754),(0.0, 0.0, -32.60110186758499),(8.150275466896247, 0.0, -24.450826400688754),(4.0751377334481305, 0.0, -24.450826400688754),(24.450826400688754, 0.0, -4.075137733448116),(24.450826400688754, 0.0, -8.150275466896261),(24.450826400688754, 0.0, -8.150275466896261),(32.60110186758501, 0.0, 0.0),(24.450826400688754, 0.0, 8.150275466896261),(24.450826400688754, 0.0, 4.075137733448116),(4.0751377334481305, 0.0, 24.450826400688754),(4.0751377334481305, 0.0, 24.450826400688754),(8.150275466896247, 0.0, 24.450826400688754),(0.0, 0.0, 32.601101867585015),(-8.150275466896247, 0.0, 24.450826400688754),(-4.0751377334481305, 0.0, 24.450826400688754)])
cmds.rename('cog_ctrl')
cmds.setAttr ('cog_ctrl.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr ('cog_ctrl.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr ('cog_ctrl.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr ('cog_ctrl.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr ('cog_ctrl.overrideEnabled' ,True)
cmds.setAttr ('cog_ctrl.overrideColor' ,20)
cmds.group(n='cog_ctrl_grp',em=True)
cmds.parent('cog_ctrl','cog_ctrl_grp')
cmds.group(n='jnt_grp',em=True)
nameOfFKspineController = [('spine_01_FK_ctrl','spine_01_FK_ctrl_grp'),('spine_02_FK_ctrl','spine_02_FK_ctrl_grp'),('spine_03_FK_ctrl','spine_03_FK_ctrl_grp')]
for each in nameOfFKspineController:
cmds.curve(d=1, p=[(-6.5, 2, 18),(6.5, 2, 18),(18, 2, 6.5),(18, 2, -6.5),(6.5, 2, -18),(-6.5, 2, -18),(-18, 2, -6.5),(-18, 2, 6.5),(-6.5, 2, 18),(-6.5, -2, 18),(-18, -2, 6.5),(-18, 2, 6.5),(-18, -2, 6.5),(-18, -2, -6.5),(-18, 2, -6.5),(-18, -2, -6.5),(-6.5, -2, -18),(-6.5, 2, -18),(-6.5, -2, -18),(6.5, -2, -18),(6.5, 2, -18),(6.5, -2, -18),(18, -2, -6.5),(18, 2, -6.5),(18, -2, -6.5),(18, -2, 6.5),(18, 2, 6.5),(18, -2, 6.5),(6.5, -2, 18),(6.5, 2, 18),(6.5, -2, 18),(-6.5, -2, 18)])
cmds.rename(each[0])
cmds.group(n=each[1])
nameOfFKspineJoint = ['spine_FK_01_jnt','spine_FK_02_jnt','spine_FK_03_jnt']
for each in nameOfFKspineJoint:
cmds.joint(n=each)
cmds.parent('spine_FK_01_jnt',w=True)
toGetFkspineJointPos = [('root_setup','spine_FK_01_jnt'),('spine_setup','spine_FK_02_jnt'),('chest_setup','spine_FK_03_jnt'),('root_setup','spine_01_FK_ctrl_grp'),('spine_setup','spine_02_FK_ctrl_grp'),('chest_setup','spine_03_FK_ctrl_grp'),('root_setup','cog_ctrl_grp')]
for each in toGetFkspineJointPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
forParentCon = [('spine_01_FK_ctrl','spine_FK_01_jnt'),('spine_02_FK_ctrl','spine_FK_02_jnt'),('spine_03_FK_ctrl','spine_FK_03_jnt'),('cog_ctrl','spine_01_FK_ctrl_grp')]
for each in forParentCon:
cmds.parentConstraint(each[0],each[1],mo=True)
toParent = [('spine_03_FK_ctrl_grp','spine_02_FK_ctrl'),('spine_02_FK_ctrl_grp','spine_01_FK_ctrl')]
for each in toParent:
cmds.parent(each[0],each[1])
#IK spine#
cmds.curve(d=3, p=[(0, 0, 0),(0, 2.5, 0),(0, 5, 0),(0, 7.5, 0),(0, 10, 0)])
cmds.rename('spine_crv')
nameOfLoc = ['spine_01_loc','spine_02_loc','spine_03_loc','spine_04_loc','spine_05_loc']
for each in nameOfLoc:
cmds.spaceLocator(n=each)
toGetLocPos = [('spine_01_loc.translateY',0),('spine_02_loc.translateY',2.5),('spine_03_loc.translateY',5),('spine_04_loc.translateY',7.5),('spine_05_loc.translateY',10)]
for each in toGetLocPos:
cmds.setAttr(each[0],each[1])
toConnectLoc = [('spine_01_loc.worldPosition[0]','spine_crvShape.controlPoints[0]'),('spine_02_loc.worldPosition[0]','spine_crvShape.controlPoints[1]'),('spine_03_loc.worldPosition[0]','spine_crvShape.controlPoints[2]'),('spine_04_loc.worldPosition[0]','spine_crvShape.controlPoints[3]'),('spine_05_loc.worldPosition[0]','spine_crvShape.controlPoints[4]')]
for each in toConnectLoc:
cmds.connectAttr(each[0],each[1])
toCreateIKspineController = [('spine_01_IK_ctrl','spine_01_IK_ctrl_grp'),('spine_02_IK_ctrl','spine_02_IK_ctrl_grp'),('spine_03_IK_ctrl','spine_03_IK_ctrl_grp')]
for each in toCreateIKspineController:
cmds.circle(n=each[0],r=10,nry = 90)
cmds.group(n=each[1])
cmds.delete('world_ctrl','spine_01_IK_ctrl','spine_02_IK_ctrl','spine_03_IK_ctrl',constructionHistory = True)
toCreateJoint = ['spine_IK_chest_jnt','spine_IK_root_jnt','spine_IK_01_jnt','spine_IK_02_jnt','spine_IK_03_jnt','spine_IK_04_jnt','spine_IK_05_jnt','spine_01_length_jnt','spine_02_length_jnt','spine_03_length_jnt','spine_04_length_jnt','spine_05_length_jnt','spine_start_length_jnt','spine_end_length_jnt']
for each in toCreateJoint:
cmds.joint(n=each)
cmds.group(n='spine_IK_jnt_grp',em=True)
cmds.parent('spine_IK_01_jnt','spine_IK_jnt_grp')
cmds.orientConstraint('cog_ctrl','spine_IK_jnt_grp')
cmds.parent('spine_IK_root_jnt','spine_IK_chest_jnt','spine_01_length_jnt','spine_start_length_jnt',w=True)
toGetPos = [('root_setup','spine_IK_01_jnt'),('root_setup','spine_IK_02_jnt'),('spine_setup','spine_IK_02_jnt'),('spine_setup','spine_IK_03_jnt'),('spine_setup','spine_IK_04_jnt'),('chest_setup','spine_IK_04_jnt'),('chest_setup','spine_IK_05_jnt'),('root_setup','spine_01_IK_ctrl_grp'),('spine_setup','spine_02_IK_ctrl_grp'),('chest_setup','spine_03_IK_ctrl_grp'),('root_setup','spine_start_length_jnt'),('chest_setup','spine_end_length_jnt'),('root_setup','spine_01_length_jnt'),('root_setup','spine_01_loc'),('spine_setup','spine_03_loc'),('chest_setup','spine_05_loc'),('root_setup','spine_IK_root_jnt'),('chest_setup','spine_IK_chest_jnt')]
for each in toGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
forDelspine_02_lenghtJntParentCon = cmds.parentConstraint('root_setup','spine_02_length_jnt',mo=False)
forDelspine_02_lenghtJntParentCon = cmds.parentConstraint('spine_setup','spine_02_length_jnt',mo=False)
forDelspine_03_lenghtJntParentCon = cmds.parentConstraint('spine_setup','spine_03_length_jnt',mo=False)
forDelspine_04_lenghtJntParentCon = cmds.parentConstraint('spine_setup','spine_04_length_jnt',mo=False)
forDelspine_04_lenghtJntParentCon = cmds.parentConstraint('chest_setup','spine_04_length_jnt',mo=False)
forDelspine_05_lenghtJntParentCon = cmds.parentConstraint('chest_setup','spine_05_length_jnt',mo=False)
cmds.delete(forDelspine_02_lenghtJntParentCon)
cmds.delete(forDelspine_03_lenghtJntParentCon)
cmds.delete(forDelspine_04_lenghtJntParentCon)
cmds.delete(forDelspine_05_lenghtJntParentCon)
forDelspine_02_locParentCon = cmds.parentConstraint('root_setup','spine_02_loc',mo=False)
forDelspine_02_locParentCon = cmds.parentConstraint('spine_setup','spine_02_loc',mo=False)
forDelspine_04_locParentCon = cmds.parentConstraint('spine_setup','spine_04_loc',mo=False)
forDelspine_04_locParentCon = cmds.parentConstraint('chest_setup','spine_04_loc',mo=False)
cmds.delete(forDelspine_02_locParentCon)
cmds.delete(forDelspine_04_locParentCon)
toParentCon = [('spine_03_IK_ctrl','spine_IK_chest_jnt'),('spine_01_IK_ctrl','spine_IK_root_jnt'),('spine_01_IK_ctrl','spine_01_loc'),('spine_02_IK_ctrl','spine_03_loc'),('spine_03_IK_ctrl','spine_05_loc'),('spine_01_IK_ctrl','spine_02_loc'),('spine_02_IK_ctrl','spine_02_loc'),('spine_02_IK_ctrl','spine_04_loc'),('spine_03_IK_ctrl','spine_04_loc'),('spine_03_IK_ctrl','spine_02_IK_ctrl_grp'),('spine_01_IK_ctrl','spine_02_IK_ctrl_grp'),('cog_ctrl','spine_01_IK_ctrl_grp'),('cog_ctrl','spine_03_IK_ctrl_grp')]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo=True)
cmds.select('spine_IK_01_jnt','spine_IK_05_jnt','spine_crv')
cmds.ikHandle(n='spine_ikh',sol='ikSplineSolver',ccv=0,pcv =0)
createNode = [('multiplyDivide','spine_twist_mult'),('plusMinusAverage','spine_twist_pma'),('multiplyDivide','spine_stretch_01_mult'),('multiplyDivide','spine_stretch_02_mult')]
for each in createNode:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
toSetNode = [('spine_twist_mult.input2X',-1),('spine_stretch_01_mult.operation',2),('spine_stretch_01_mult.operation',2)]
for each in toSetNode:
cmds.setAttr(each[0],each[1])
cmds.arclen('spine_crv',ch = True)
toConnectAttr = [('spine_01_IK_ctrl.rotateY','spine_twist_mult.input1X'),('spine_03_IK_ctrl.rotateY','spine_twist_pma.input1D[0]'),('spine_01_IK_ctrl.rotateY','spine_ikh.roll'),('spine_twist_pma.output1D','spine_ikh.twist'),('spine_twist_mult.outputX','spine_twist_pma.input1D[1]'),('curveInfo1.arcLength','spine_stretch_01_mult.input1X'),('spine_stretch_01_mult.outputX','spine_stretch_02_mult.input1X'),('spine_02_length_jnt.translateY','spine_stretch_02_mult.input2X'),('spine_stretch_02_mult.outputX','spine_IK_02_jnt.translateY'),('spine_stretch_02_mult.outputX','spine_IK_03_jnt.translateY'),('spine_stretch_02_mult.outputX','spine_IK_04_jnt.translateY'),('spine_stretch_02_mult.outputX','spine_IK_05_jnt.translateY'),('spine_end_length_jnt.translateY','spine_stretch_01_mult.input2X')]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
toCreateGroup = ['spine_IK_setup_jnt_grp','spine_IK_ctrl_grp','spine_IK_loc_grp','spine_IK_setup_grp']
for each in toCreateGroup:
cmds.group(n=each,em=True)
toParent = [('spine_01_loc','spine_IK_loc_grp'),('spine_02_loc','spine_IK_loc_grp'),('spine_03_loc','spine_IK_loc_grp'),('spine_04_loc','spine_IK_loc_grp'),('spine_05_loc','spine_IK_loc_grp'),('spine_01_IK_ctrl_grp','spine_IK_ctrl_grp'),('spine_02_IK_ctrl_grp','spine_IK_ctrl_grp'),('spine_03_IK_ctrl_grp','spine_IK_ctrl_grp'),('spine_01_length_jnt','spine_IK_setup_jnt_grp'),('spine_start_length_jnt','spine_IK_setup_jnt_grp'),('spine_ikh','spine_IK_setup_grp'),('spine_crv','spine_IK_setup_grp'),('spine_IK_setup_jnt_grp','spine_IK_setup_grp'),('spine_IK_loc_grp','spine_IK_setup_grp')]
for each in toParent:
cmds.parent(each[0],each[1])
cmds.scaleConstraint('world_ctrl','spine_IK_setup_jnt_grp',mo=True)
#set IKFK spine controller attributes#
listOfSpineController = ['spine_01_IK_ctrl','spine_02_IK_ctrl','spine_03_IK_ctrl','spine_01_FK_ctrl','spine_02_FK_ctrl','spine_03_FK_ctrl']
for each in listOfSpineController:
cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,17)
#create IKFK spine bind joint#
nameOfSpineBindJoint = ['spine_01_bln_jnt','spine_02_bln_jnt','spine_03_bln_jnt']
for each in nameOfSpineBindJoint:
cmds.joint(n=each)
cmds.parent('spine_01_bln_jnt',w=True)
cmds.group(n='spine_01_bln_jnt_grp')
cmds.scaleConstraint('world_ctrl','spine_01_bln_jnt_grp',mo=True)
toGetSpineBindJointPos = [('root_setup','spine_01_bln_jnt'),('spine_setup','spine_02_bln_jnt'),('chest_setup','spine_03_bln_jnt')]
for each in toGetSpineBindJointPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
toParentConIKFKspine = [('spine_FK_01_jnt','spine_01_bln_jnt'),('spine_IK_root_jnt','spine_01_bln_jnt'),('spine_FK_02_jnt','spine_02_bln_jnt'),('spine_IK_03_jnt','spine_02_bln_jnt'),('spine_FK_03_jnt','spine_03_bln_jnt'),('spine_IK_chest_jnt','spine_03_bln_jnt')]
for each in toParentConIKFKspine:
cmds.parentConstraint(each[0],each[1],mo=True)
cmds.curve(n='spine_ik_fk_switch',d=1, p=[(1.25, 0, 7.5),(-1.25, 0, 7.5),(-1.25, 0, 1.25),(-7.5, 0, 1.25),(-7.5, 0, -1.25),(-1.25, 0, -1.25),(-1.25, 0, -7.5),(1.25, 0 ,-7.5),(1.25, 0, -1.25),(7.5, 0, -1.25),(7.5, 0, 1.25,),(1.25, 0 ,1.25),(1.25, 0, 7.5)])
cmds.group(n='spine_ik_fk_switch_grp')
ControllerAttr('spine_ik_fk_switch',False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,15,False,False,False,True,True,True)
cmds.parent('spine_ik_fk_switch_grp', 'world_ctrl')
cmds.addAttr('spine_ik_fk_switch',sn='IKFK', min = 0, max=1 ,k=1,dv=1)
cmds.parentConstraint('spine_02_bln_jnt','spine_ik_fk_switch_grp')
cmds.shadingNode('reverse',n='spine_ik_rev',asUtility=1)
toConnectAttr = [('spine_ik_fk_switch.IKFK','spine_01_bln_jnt_parentConstraint1.spine_FK_01_jntW0'),('spine_ik_fk_switch.IKFK','spine_ik_rev.inputX'),('spine_ik_rev.outputX','spine_01_bln_jnt_parentConstraint1.spine_IK_root_jntW1'),('spine_ik_fk_switch.IKFK','spine_02_bln_jnt_parentConstraint1.spine_FK_02_jntW0'),('spine_ik_rev.outputX','spine_02_bln_jnt_parentConstraint1.spine_IK_03_jntW1'),('spine_ik_fk_switch.IKFK','spine_03_bln_jnt_parentConstraint1.spine_FK_03_jntW0'),('spine_ik_rev.outputX','spine_03_bln_jnt_parentConstraint1.spine_IK_chest_jntW1'),('spine_ik_rev.outputX','spine_IK_ctrl_grp.visibility'),('spine_ik_fk_switch.IKFK','spine_01_FK_ctrl_grp.visibility')]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
#group all spine joint#
cmds.group(n='spine_jnt_grp',em=True)
spineJointList = [('spine_FK_01_jnt','spine_jnt_grp'),('spine_IK_root_jnt','spine_jnt_grp'),('spine_IK_chest_jnt','spine_jnt_grp'),('spine_IK_jnt_grp','spine_jnt_grp'),('spine_01_bln_jnt_grp','spine_jnt_grp')]
for each in spineJointList:
cmds.parent(each[0],each[1])
# the command to change the progress bar
cmds.progressBar('EugenesProgressBar', edit=True, step=1)
spineSetup()
def ShoulderSetup(side):
cmds.curve(d=1, p=[(-5, -10, 10),(-5, 10, 10),(5, 10, 10),(5, -10, 10),(5, -10, -10),(5, 10, -10),(-5, 10, -10),(-5, -10, -10),(-5, -10, 10),(5, -10, 10),(5, 10, 10),(5, 10, -10),(5, -10, -10),(-5, -10, -10),(-5, 10, -10),(-5, 10, 10)])
cmds.rename('%s_shoulder_ctrl'%(side))
ControllerAttr('%s_shoulder_ctrl'%(side),False,False,False,False,True,True,True,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
cmds.group(n='%s_shoulder_ctrl_grp'%(side))
forDel = cmds.parentConstraint('%s_shoulder_setup'%(side),'%s_shoulder_ctrl_grp'%(side),mo=False)
cmds.delete(forDel)
cmds.joint(n='%s_shoulder_jnt'%(side))
cmds.parent('%s_shoulder_ctrl_grp'%(side),'world_ctrl')
cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_shoulder_jnt'%(side),mo=False)
cmds.parentConstraint('spine_03_bln_jnt','%s_shoulder_ctrl_grp'%(side),mo=True)
ShoulderSetup('l')
ShoulderSetup('r')
def buildBendyArm():
def FKarmSetup(side):
#FKarm#
fkarmcontroller = [('%s_fk_arm_01_ctrl'%(side),'%s_fk_arm_01_ctrl_grp'%(side)),('%s_fk_arm_02_ctrl'%(side),'%s_fk_arm_02_ctrl_grp'%(side)),('%s_fk_arm_03_ctrl'%(side),'%s_fk_arm_03_ctrl_grp'%(side))]
for each in fkarmcontroller:
ctrl = cmds.curve(d=1,p=[(0.0, 1.8457071003629746, -6.888272674590291),(0.0, 1.6065215981349992, -5.995620227271308),(0.0, -1.6065234643869502, -5.995624729951774),(0.0, -1.8454397435472047, -6.8872682416730004),(0.0, -5.041829388107622, -5.041831819868864),(0.0, -4.389101595742385, -4.389102497134237),(0.0, -5.995620227271308, -1.6065215981349992),(0.0, -6.888272674590291, -1.8457071003629746),(0.0, -6.8872682416730004, 1.8454397435472047),(0.0, -5.995624729951774, 1.6065234643869502),(0.0, -4.389102497134237, 4.389101595742385),(0.0, -5.041831819868864, 5.041829388107622),(0.0, -1.8457071003629746, 6.888272674590291),(0.0, -1.6065215981349992, 5.995620227271308),(0.0, 1.6065234643869502, 5.995624729951774),(0.0, 1.8454397435472047, 6.8872682416730004),(0.0, 5.041829388107622, 5.041831819868864),(0.0, 4.389101595742385, 4.389102497134237),(0.0, 5.995620227271308, 1.6065215981349992),(0.0, 6.888272674590291, 1.8457071003629746),(0.0, 6.8872682416730004, -1.8454397435472047),(0.0, 5.995624729951774, -1.6065234643869502),(0.0, 4.389102497134237, -4.389101595742385),(0.0, 5.041831819868864, -5.041829388107622),(0.0, 1.8457071003629746, -6.888272674590291)])
cmds.rename(each[0])
cmds.group(n=each[1])
createjoint = ['%s_fk_arm_01_jnt'%(side),'%s_fk_arm_02_jnt'%(side),'%s_fk_arm_03_jnt'%(side)]
for each in createjoint:
cmds.joint(n=each)
toGetJntPos = ('%s_arm_01_setup'%(side),'%s_fk_arm_01_jnt'%(side)),('%s_arm_02_setup'%(side),'%s_fk_arm_02_jnt'%(side)),('%s_arm_03_setup'%(side),'%s_fk_arm_03_jnt'%(side))
for each in toGetJntPos:
forDel = cmds.parentConstraint(each[0],each[1])
cmds.delete(forDel)
cmds.parent('%s_fk_arm_01_jnt'%(side),w=True)
toGetCtrlPos = [('%s_arm_01_setup'%(side),'%s_fk_arm_01_ctrl_grp'%(side)),('%s_arm_02_setup'%(side),'%s_fk_arm_02_ctrl_grp'%(side)),('%s_arm_03_setup'%(side),'%s_fk_arm_03_ctrl_grp'%(side))]
for each in toGetCtrlPos:
forDel = cmds.parentConstraint(each[0],each[1])
cmds.delete(forDel)
toParent = [('%s_fk_arm_02_ctrl_grp'%(side),'%s_fk_arm_01_ctrl'%(side)),('%s_fk_arm_03_ctrl_grp'%(side),'%s_fk_arm_02_ctrl'%(side))]
for each in toParent:
cmds.parent(each[0],each[1])
toParentCon = [('%s_shoulder_ctrl'%(side),'%s_fk_arm_01_ctrl_grp'%(side)),('%s_fk_arm_01_ctrl'%(side),'%s_fk_arm_01_jnt'%(side)),('%s_fk_arm_02_ctrl'%(side),'%s_fk_arm_02_jnt'%(side)),('%s_fk_arm_03_ctrl'%(side),'%s_fk_arm_03_jnt'%(side))]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo=True)
toLockAttr = [('%s_fk_arm_01_ctrl'%(side)),('%s_fk_arm_02_ctrl'%(side)),('%s_fk_arm_03_ctrl'%(side))]
for each in toLockAttr:
cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,6)
FKarmSetup('l')
FKarmSetup('r')
def IKarmSetup(side):
#IKarm#
cmds.joint(n='%s_ik_01_jnt'%(side))
forDel = cmds.parentConstraint('%s_arm_01_setup'%(side),'%s_ik_01_jnt'%(side),mo = False)
cmds.delete(forDel)
cmds.joint(n='%s_ik_02_jnt'%(side))
forDel = cmds.parentConstraint('%s_arm_02_setup'%(side),'%s_ik_02_jnt'%(side),mo = False)
cmds.delete(forDel)
cmds.joint(n='%s_ik_03_jnt'%(side))
forDel = cmds.parentConstraint('%s_arm_03_setup'%(side),'%s_ik_03_jnt'%(side),mo = False)
deleteparent = cmds.delete(forDel)
cmds.makeIdentity( '%s_ik_01_jnt'%(side), apply=True, translate=True, rotate=True)
cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_ik_01_jnt'%(side),mo=True)
cmds.ikHandle( n='%s_arm_ikh'%(side), sj='%s_ik_01_jnt'%(side), ee='%s_ik_03_jnt'%(side) )
cmds.setAttr('%s_arm_ikh.visibility'%(side),0)
cmds.curve(d=1, p=[(-5, -5, 5),(-5, 5, 5),(5, 5, 5),(5, -5, 5),(5, -5, -5),(5, 5, -5),(-5, 5, -5),(-5, -5, -5),(-5, -5, 5),(5, -5, 5),(5, 5, 5),(5, 5, -5),(5, -5, -5),(-5, -5, -5),(-5, 5, -5),(-5, 5, 5)])
cmds.rename('%s_ik_arm_ctrl'%(side))
ControllerAttr('%s_ik_arm_ctrl'%(side),False,False,False,False,True,True,True,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
cmds.addAttr('%s_ik_arm_ctrl'%(side),sn='stretch',at = 'bool',k=1)
cmds.addAttr('%s_ik_arm_ctrl'%(side), at = 'enum', keyable=True, en = 'string1:string2:', ln='follow')
cmds.addAttr('%s_ik_arm_ctrl'%(side)+'.follow', e=True, en = 'world:shoulder:')
cmds.orientConstraint('%s_ik_arm_ctrl'%(side), '%s_ik_03_jnt'%(side))
cmds.group(n='%s_ik_arm_ctrl_grp'%(side))
forDel = cmds.parentConstraint('%s_arm_03_setup'%(side),'%s_ik_arm_ctrl_grp'%(side),mo = False)
deleteparent = cmds.delete(forDel)
cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_ik_arm_ctrl_grp'%(side),mo = True)
cmds.connectAttr('%s_ik_arm_ctrl.follow'%(side),'%s_ik_arm_ctrl_grp_parentConstraint1.%s_shoulder_ctrlW0'%(side,side))
cmds.parent('%s_arm_ikh'%(side), '%s_ik_arm_ctrl'%(side))
cmds.parent('%s_ik_arm_ctrl_grp'%(side),'world_ctrl')
cmds.curve(d=1, p=[(0.0, 3.468342867164149, 0.0),(0.0, 3.468342867164149, 0.5221724371834184),(0.0, 4.967930096687364, 0.0),(0.5221724371834184, 3.468342867164149, 0.0),(-0.5221724371834184, 3.468342867164149, 0.0),(0.0, 4.967930096687364, 0.0),(0.0, 3.468342867164149, -0.5221724371834184),(0.0, 3.468342867164149, 0.0),(0.0, -3.468342867164149, 0.0),(-0.5221724371834184, -3.468342867164149, 0.0),(0.0, -4.967930096687364, 0.0),(0.0, -3.468342867164149, -0.5221724371834184),(0.0, -3.468342867164149, 0.5221724371834184),(0.0, -4.967930096687364, 0.0),(0.5221724371834184, -3.468342867164149, 0.0),(0.0, -3.468342867164149, 0.0),(0.0, 0.0, 0.0),(-3.468342867164149, 0.0, 0.0),(-3.468342867164149, 0.5221724371834184, 0.0),(-4.967930096687364, 0.0, 0.0),(-3.468342867164149, 0.0, -0.5221724371834184),(-3.468342867164149, 0.0, 0.5221724371834184),(-4.967930096687364, 0.0, 0.0),(-3.468342867164149, -0.5221724371834184, 0.0),(-3.468342867164149, 0.0, 0.0),(3.468342867164149, 0.0, 0.0),(3.468342867164149, 0.0, -0.5221724371834184),(4.967930096687364, 0.0, 0.0),(3.468342867164149, 0.5221724371834184, 0.0),(3.468342867164149, -0.5221724371834184, 0.0),(4.967930096687364, 0.0, 0.0),(3.468342867164149, 0.0, 0.5221724371834184),(3.468342867164149, 0.0, 0.0),(0.0, 0.0, 0.0),(0.0, 0.0, 3.468342867164149),(0.0, 0.5221724371834184, 3.468342867164149),(0.0, 0.0, 4.967930096687364),(0.5221724371834184, 0.0, 3.468342867164149),(-0.5221724371834184, 0.0, 3.468342867164149),(0.0, 0.0, 4.967930096687364),(0.0, -0.5221724371834184, 3.468342867164149),(0.0, 0.0, 3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.5221724371834184, -3.468342867164149),(0.0, 0.0, -4.967930096687364),(-0.5221724371834184, 0.0, -3.468342867164149),(0.5221724371834184, 0.0, -3.468342867164149),(0.0, 0.0, -4.967930096687364),(0.0, -0.5221724371834184, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149)])
cmds.rename('%s_elbow_ctrl'%(side))
ControllerAttr('%s_elbow_ctrl'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,6,True,True,True,False,False,False)
cmds.addAttr('%s_elbow_ctrl'%(side),sn='follow', min = 0, max=1 ,k=1)
cmds.group(n='%s_elbow_ctrl_grp'%(side))
cmds.parent('%s_elbow_ctrl_grp'%(side),'world_ctrl')
forDel = cmds.pointConstraint('%s_elbow_setup'%(side), '%s_elbow_ctrl_grp'%(side))
deparent = cmds.delete(forDel)
cmds.poleVectorConstraint( '%s_elbow_ctrl'%(side), '%s_arm_ikh'%(side) )
cmds.spaceLocator(n='%s_elbow_loc_world'%(side))
forDel = cmds.parentConstraint('%s_elbow_setup'%(side),'%s_elbow_loc_world'%(side))
cmds.delete(forDel)
cmds.spaceLocator(n='%s_elbow_loc_follow'%(side))
forDel = cmds.parentConstraint('%s_elbow_setup'%(side),'%s_elbow_loc_follow'%(side))
cmds.delete(forDel)
cmds.group(n='%s_elbow_loc_grp'%(side))
cmds.parent('%s_elbow_loc_world'%(side),'%s_elbow_loc_grp'%(side))
cmds.parentConstraint('%s_ik_arm_ctrl'%(side),'%s_elbow_loc_follow'%(side),mo = True)
cmds.parentConstraint('%s_elbow_loc_follow'%(side),'%s_elbow_ctrl_grp'%(side),mo = True)
cmds.parentConstraint('%s_elbow_loc_world'%(side),'%s_elbow_ctrl_grp'%(side),mo = True)
cmds.parentConstraint('world_ctrl','%s_elbow_loc_world'%(side),mo = True)
cmds.shadingNode('reverse',n = '%s_elbow_rev'%(side),asUtility=1)
cmds.connectAttr('%s_elbow_ctrl.follow'%(side), '%s_elbow_ctrl_grp_parentConstraint1.%s_elbow_loc_followW0'%(side,side))
cmds.connectAttr('%s_elbow_ctrl.follow'%(side), '%s_elbow_rev.inputX'%(side))
cmds.connectAttr('%s_elbow_rev.outputX'%(side), '%s_elbow_ctrl_grp_parentConstraint1.%s_elbow_loc_worldW1'%(side,side))
cmds.group(n='%s_ik_arm_jnt_grp'%(side),em=True)
cmds.parent('%s_ik_01_jnt'%(side),'%s_ik_arm_jnt_grp'%(side))
cmds.scaleConstraint('world_ctrl','%s_ik_arm_jnt_grp'%(side),mo=True)
#IKarmPVcrv#
cmds.curve(d=1, p=[(0, 0, 0),(0, 10, 0)])
cmds.rename('%s_elbow_direction_crv'%(side))
nameOfLoc = ['%s_elbow_01_loc'%(side),'%s_elbow_02_loc'%(side)]
for each in nameOfLoc:
cmds.spaceLocator(n=each)
toGetLocPos = [('%s_elbow_01_loc.translateY'%(side),0),('%s_elbow_02_loc.translateY'%(side),10)]
for each in toGetLocPos:
cmds.setAttr(each[0],each[1])
toConnectLoc = [('%s_elbow_01_loc.worldPosition[0]'%(side),'%s_elbow_direction_crvShape.controlPoints[0]'%(side)),('%s_elbow_02_loc.worldPosition[0]'%(side),'%s_elbow_direction_crvShape.controlPoints[4]'%(side))]
for each in toConnectLoc:
cmds.connectAttr(each[0],each[1])
toSetAttr = [('%s_elbow_direction_crv.overrideEnabled'%(side),1),('%s_elbow_direction_crv.overrideDisplayType'%(side),2),('%s_elbow_01_loc.visibility'%(side),0),('%s_elbow_02_loc.visibility'%(side),0)]
for each in toSetAttr:
cmds.setAttr(each[0],each[1])
toGetParent = [('%s_elbow_ctrl'%(side),'%s_elbow_01_loc'%(side)),('%s_ik_02_jnt'%(side),'%s_elbow_02_loc'%(side))]
for each in toGetParent:
cmds.parentConstraint(each[0],each[1],mo = False)
cmds.group(n='%s_elbow_direction_crv_grp'%(side),em = True)
toGetParent = [('%s_elbow_01_loc'%(side),'%s_elbow_direction_crv_grp'%(side)),('%s_elbow_02_loc'%(side),'%s_elbow_direction_crv_grp'%(side)),('%s_elbow_direction_crv'%(side),'%s_elbow_direction_crv_grp'%(side))]
for each in toGetParent:
cmds.parent(each[0],each[1])
IKarmSetup('l')
IKarmSetup('r')
list = [('tail_01_setup_jnt','tail_01_IK_ctrl_grp'),('tail_03_setup_jnt','tail_02_IK_ctrl_grp'),('tail_05_setup_jnt','tail_03_IK_ctrl_grp'),('tail_01_setup_jnt','tail_01_IK_jnt'),('tail_02_setup_jnt','tail_02_IK_jnt'),('tail_03_setup_jnt','tail_03_IK_jnt'),('tail_04_setup_jnt','tail_04_IK_jnt'),('tail_05_setup_jnt','tail_05_IK_jnt'),('tail_01_setup_jnt','tail_01_length_jnt'),('tail_02_setup_jnt','tail_02_length_jnt'),('tail_03_setup_jnt','tail_03_length_jnt'),('tail_04_setup_jnt','tail_04_length_jnt'),('tail_05_setup_jnt','tail_05_length_jnt'),('tail_01_setup_jnt','tail_start_length_jnt'),('tail_05_setup_jnt','tail_end_length_jnt')]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.curve(d=3, p=[(0, 0, 0),(0, 2.5, 0),(0, 5, 0),(0, 7.5, 0),(0, 10, 0)])
cmds.rename('tail_crv')
nameOfLoc = ['tail_01_loc','tail_02_loc','tail_03_loc','tail_04_loc','tail_05_loc']
for each in nameOfLoc:
cmds.spaceLocator(n=each)
toGetLocPos = [('tail_01_loc.translateY',0),('tail_02_loc.translateY',2.5),('tail_03_loc.translateY',5),('tail_04_loc.translateY',7.5),('tail_05_loc.translateY',10)]
for each in toGetLocPos:
cmds.setAttr(each[0],each[1])
toConnectLoc = [('tail_01_loc.worldPosition[0]','tail_crv.controlPoints[0]'),('tail_02_loc.worldPosition[0]','tail_crv.controlPoints[1]'),('tail_03_loc.worldPosition[0]','tail_crv.controlPoints[2]'),('tail_04_loc.worldPosition[0]','tail_crv.controlPoints[3]'),('tail_05_loc.worldPosition[0]','tail_crv.controlPoints[4]')]
for each in toConnectLoc:
cmds.connectAttr(each[0],each[1])
list = [('tail_01_setup_jnt','tail_01_loc'),('tail_02_setup_jnt','tail_02_loc'),('tail_03_setup_jnt','tail_03_loc'),('tail_04_setup_jnt','tail_04_loc'),('tail_05_setup_jnt','tail_05_loc')]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('tail_01_IK_ctrl','tail_01_loc'),('tail_01_IK_ctrl','tail_02_loc'),('tail_02_IK_ctrl','tail_02_loc'),('tail_02_IK_ctrl','tail_03_loc'),('tail_02_IK_ctrl','tail_04_loc'),('tail_03_IK_ctrl','tail_04_loc'),('tail_03_IK_ctrl','tail_05_loc')]
for each in list:
cmds.parentConstraint(each[0],each[1],mo=True)
cmds.select('tail_01_IK_jnt','tail_05_IK_jnt','tail_crv')
cmds.ikHandle(n='tail_ikh',sol='ikSplineSolver',ccv=0,pcv =0)
list = [('multiplyDivide','tail_stretch_01_mult'),('multiplyDivide','tail_stretch_02_mult')]
for each in list:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
cmds.setAttr('tail_stretch_01_mult.operation',2)
cmds.arclen('tail_crv',ch = True)
toConnectAttr = [('tail_03_IK_ctrl.rotateX','tail_ikh.twist'),('curveInfo1.arcLength','tail_stretch_01_mult.input1X'),('tail_stretch_01_mult.outputX','tail_stretch_02_mult.input1X'),('tail_02_length_jnt.translateX','tail_stretch_02_mult.input2X'),('tail_stretch_02_mult.outputX','tail_02_IK_jnt.translateX'),('tail_stretch_02_mult.outputX','tail_03_IK_jnt.translateX'),('tail_stretch_02_mult.outputX','tail_04_IK_jnt.translateX'),('tail_stretch_02_mult.outputX','tail_05_IK_jnt.translateX'),('tail_end_length_jnt.translateX','tail_stretch_01_mult.input2X')]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
#create IKFK tail
list = ['tail_01_bln_jnt','tail_02_bln_jnt','tail_03_bln_jnt','tail_04_bln_jnt','tail_05_bln_jnt']
for each in list:
cmds.joint(n=each)
list = [('tail_01_setup_jnt','tail_01_bln_jnt'),('tail_02_setup_jnt','tail_02_bln_jnt'),('tail_03_setup_jnt','tail_03_bln_jnt'),('tail_04_setup_jnt','tail_04_bln_jnt'),('tail_05_setup_jnt','tail_05_bln_jnt')]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('tail_01_FK_jnt','tail_01_bln_jnt'),('tail_02_FK_jnt','tail_02_bln_jnt'),('tail_03_FK_jnt','tail_03_bln_jnt'),('tail_04_FK_jnt','tail_04_bln_jnt'),('tail_05_FK_jnt','tail_05_bln_jnt'),('tail_01_IK_jnt','tail_01_bln_jnt'),('tail_02_IK_jnt','tail_02_bln_jnt'),('tail_03_IK_jnt','tail_03_bln_jnt'),('tail_04_IK_jnt','tail_04_bln_jnt'),('tail_05_IK_jnt','tail_05_bln_jnt')]
for each in list:
cmds.parentConstraint(each[0],each[1],mo=True)
cmds.curve(n='tail_ik_fk_switch',d=1, p=[(1.25, 0, 7.5),(-1.25, 0, 7.5),(-1.25, 0, 1.25),(-7.5, 0, 1.25),(-7.5, 0, -1.25),(-1.25, 0, -1.25),(-1.25, 0, -7.5),(1.25, 0 ,-7.5),(1.25, 0, -1.25),(7.5, 0, -1.25),(7.5, 0, 1.25,),(1.25, 0 ,1.25),(1.25, 0, 7.5)])
cmds.group(n='tail_ik_fk_switch_grp')
cmds.setAttr('tail_ik_fk_switch.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.translateX',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.translateY',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.translateZ',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.rotateX',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.rotateY',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.rotateZ',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.overrideEnabled' ,True)
cmds.setAttr('tail_ik_fk_switch.overrideColor' ,15)
cmds.addAttr('tail_ik_fk_switch',sn='IKFK', min = 0, max=1 ,k=1)
cmds.parentConstraint('tail_01_bln_jnt','tail_ik_fk_switch_grp')
cmds.shadingNode('reverse',n='tail_ik_rev',asUtility=1)
toConnectAttr = [('tail_ik_fk_switch.IKFK','tail_01_bln_jnt_parentConstraint1.tail_01_FK_jntW0'),('tail_ik_fk_switch.IKFK','tail_ik_rev.inputX'),('tail_ik_rev.outputX','tail_01_bln_jnt_parentConstraint1.tail_01_IK_jntW1'),('tail_ik_fk_switch.IKFK','tail_02_bln_jnt_parentConstraint1.tail_02_FK_jntW0'),('tail_ik_rev.outputX','tail_02_bln_jnt_parentConstraint1.tail_02_IK_jntW1'),('tail_ik_fk_switch.IKFK','tail_03_bln_jnt_parentConstraint1.tail_03_FK_jntW0'),('tail_ik_rev.outputX','tail_03_bln_jnt_parentConstraint1.tail_03_IK_jntW1'),('tail_ik_fk_switch.IKFK','tail_04_bln_jnt_parentConstraint1.tail_04_FK_jntW0'),('tail_ik_rev.outputX','tail_04_bln_jnt_parentConstraint1.tail_04_IK_jntW1'),('tail_ik_fk_switch.IKFK','tail_05_bln_jnt_parentConstraint1.tail_05_FK_jntW0'),('tail_ik_rev.outputX','tail_05_bln_jnt_parentConstraint1.tail_05_IK_jntW1'),('tail_ik_rev.outputX','tail_01_IK_ctrl_grp.visibility'),('tail_ik_rev.outputX','tail_02_IK_ctrl_grp.visibility'),('tail_ik_rev.outputX','tail_03_IK_ctrl_grp.visibility'),('tail_ik_fk_switch.IKFK','tail_01_FK_ctrl_grp.visibility')]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
#create group
list = ['jnt_grp','extra','ctrl_grp','rename']
for each in list:
cmds.group(n=each,em=True)
list = [('tail_01_setup_jnt','extra'),('tail_01_FK_ctrl_grp','ctrl_grp'),('tail_01_FK_jnt','jnt_grp'),('tail_01_IK_ctrl_grp','ctrl_grp'),('tail_02_IK_ctrl_grp','ctrl_grp'),('tail_03_IK_ctrl_grp','ctrl_grp'),('tail_01_IK_jnt','jnt_grp'),('tail_start_length_jnt','extra'),('tail_01_length_jnt','extra'),('tail_crv','extra'),('tail_01_loc','extra'),('tail_02_loc','extra'),('tail_03_loc','extra'),('tail_04_loc','extra'),('tail_05_loc','extra'),('tail_ikh','extra'),('extra','rename'),('jnt_grp','rename'),('ctrl_grp','rename')]
for each in list:
cmds.parent(each[0],each[1])
cmds.setAttr('extra.visibility',0)
def createLocator():
list = ['start_loc','end_loc']
for each in list:
cmds.spaceLocator(n=each)
cmds.setAttr (each +'.rotateX',keyable = False, cb = False, lock = True)
cmds.setAttr (each +'.rotateY',keyable = False, cb = False, lock = True)
cmds.setAttr (each +'.rotateZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each +'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each +'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each +'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr('start_loc.translateX',-5)
cmds.setAttr('end_loc.translateX',10)
def createMotionPath():
def progressBarWindow():
# this command opens the window
window = cmds.window('MotionPathSetupProgress',title='Building')
cmds.columnLayout()
cmds.progressBar('MotionPathSetupProgress',maxValue=10, width=300)
cmds.showWindow( window )
progressBarWindow()
# the command to find value
list = ['start_loc','end_loc']
for each in list:
cmds.setAttr(each + '.visibility',0)
def vector_sub(p1,p2):
x = p1[0] - p2[0]
y = p1[1] - p2[1]
z = p1[2] - p2[2]
return [x,y,z]
def vector_add(p1,p2):
x = p1[0] + p2[0]
y = p1[1] + p2[1]
z = p1[2] + p2[2]
return [x,y,z]
def vector_div(p,f):
x = p[0] / f
y = p[1] / f
z = p[2] / f
return [x,y,z]
def vector_mult(p,f):
x = p[0] * f
y = p[1] * f
z = p[2] * f
return [x,y,z]
p1 = cmds.xform(list[0], q=1, ws=1, t=1)
p2 = cmds.xform(list[1], q=1, ws=1, t=1)
print(p2)
n = cmds.intField('numbersOfLocator',q=1,value=1)
direction = vector_sub(p2,p1)
direction = vector_div(direction,n)
points = []
for i in range(n):
p = vector_add(p1,vector_mult(direction,i))
points.append(p)
points.append(p2)
# the command to change the progress bar
cmds.progressBar('MotionPathSetupProgress', edit=True, step=1)
# the command to find motion path in between value
plus = n
mpInBetween = 1/plus
# the command to create curve
crv = cmds.curve(d=1, p=[p1,p2])
cmds.rename('mp_crv')
cmds.setAttr('.template',1)
cmds.rebuildCurve('mp_crv',d=2, rt=0, s=n-1)
# the command to change the progress bar
cmds.progressBar('MotionPathSetupProgress', edit=True, step=1)
# the command to create joints
cmds.joint(n='main_mp_0_jnt',p=[0,0,0])
number = len(points)
for each in range(number):
cmds.joint(n='main_mp_%s_jnt'%(each+1),p=points[each])
cmds.parent(w=True)
forDel = cmds.aimConstraint('end_loc','main_mp_%s_jnt'%(each+1),mo=False)
cmds.delete(forDel)
m=n+1
for each in range(number):
cmds.parent('main_mp_%s_jnt'%(m-each),'main_mp_%s_jnt'%(n-each))
cmds.parent('main_mp_1_jnt',w=True)
cmds.delete('main_mp_0_jnt')
forDel = cmds.orientConstraint('main_mp_1_jnt','main_mp_%s_jnt'%(n+1))
cmds.delete(forDel)
cmds.makeIdentity('main_mp_1_jnt',apply=True,translate=True,rotate=True)
# the command to change the progress bar
cmds.progressBar('MotionPathSetupProgress', edit=True, step=1)
# the command to create controllers
number = len(points)
for each in range(number):
ctrl = cmds.curve(n='mp_%s_ctrl'%(each+1),d=1, p=[(0, 0.5, 0.5),(0, -0.5, 0.5),(0, -0.5, -0.5),(0, 0.5, -0.5),(0, 0.5, 0.5)])
cmds.setAttr (ctrl +'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (ctrl +'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (ctrl +'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (ctrl + ".overrideEnabled" ,True)
cmds.setAttr (ctrl + ".overrideColor" ,18)
cmds.setAttr (ctrl +'.visibility',keyable = False, cb = False, lock = True)
grp = cmds.group(n='mp_%s_ctrl_grp'%(each+1))
forDel = cmds.parentConstraint('main_mp_%s_jnt'%(each+1),grp,mo=False)
cmds.delete(forDel)
# the command to change the progress bar
cmds.progressBar('MotionPathSetupProgress', edit=True, step=1)
# the command to create locator
number = len(points)
for each in range(number):
cmds.spaceLocator(n='aim_up_%s_loc'%(each+1))
cmds.setAttr('.visibility',0)
forDel = cmds.parentConstraint('main_mp_%s_jnt'%(each+1),'aim_up_%s_loc'%(each+1),mo=False)
cmds.delete(forDel)
cmds.setAttr('aim_up_%s_loc.translateY'%(each+1),2.5)
cmds.parent('aim_up_%s_loc'%(each+1),'mp_%s_ctrl'%(each+1))
# the command to change the progress bar
cmds.progressBar('MotionPathSetupProgress', edit=True, step=2)
# the command to create node and motion path
number = len(points)
for each in range(number):
jnt = cmds.joint(n='mp_%s_jnt'%(each+1),p=points[each])
cmds.setAttr('.visibility',0)
cmds.shadingNode('plusMinusAverage',n = 'mp_%s_plm'%(each+1),asUtility=1)
cmds.shadingNode('plusMinusAverage',n = 'mp_sec_%s_plm'%(each+1),asUtility=1)
cmds.pathAnimation('mp_%s_jnt'%(each+1), c='mp_crv',fm=True,wut='objectrotation',wuo='aim_up_%s_loc'%(each+1),f=True,fa='x',ua='y')
cmds.cutKey('motionPath%s'%(each+1), attribute='uValue', clear = True)
cmds.connectAttr('mp_%s_ctrl.rotateY'%(each+1),'motionPath%s.upTwist'%(each+1))
cmds.connectAttr('mp_%s_ctrl.rotateZ'%(each+1),'motionPath%s.sideTwist'%(each+1))
cmds.parent('mp_1_jnt',w=True)
# the command to change the progress bar
cmds.progressBar('MotionPathSetupProgress', edit=True, step=1)
# the command to set value on each motion path
number = len(points)
for each in range(number):
cmds.setAttr('motionPath%s.uValue'%(each+1),mpInBetween*each)
# the command to create extra controller
cmds.curve(d=1, p=[(0.25, 0, 1.5),(-0.25, 0, 1.5),(-0.25, 0, 0.25),(-1.5, 0, 0.25),(-1.5, 0, -0.25),(-0.25, 0, -0.25),(-0.25, 0, -1.5),(0.25, 0 ,-1.5),(0.25, 0, -0.25),(1.5, 0, -0.25),(1.5, 0, 0.25,),(0.25, 0 ,0.25),(0.25, 0, 1.5)])
cmds.rename('mp_extra_ctrl')
cmds.setAttr ('mp_extra_ctrl'+'.translateX',keyable = False, cb = False, lock = True)
cmds.setAttr ('mp_extra_ctrl'+'.translateY',keyable = False, cb = False, lock = True)
cmds.setAttr ('mp_extra_ctrl'+'.translateZ',keyable = False, cb = False, lock = True)
cmds.setAttr ('mp_extra_ctrl'+'.rotateX',keyable = False, cb = False, lock = True)
cmds.setAttr ('mp_extra_ctrl'+'.rotateY',keyable = False, cb = False, lock = True)
cmds.setAttr ('mp_extra_ctrl'+'.rotateZ',keyable = False, cb = False, lock = True)
cmds.setAttr ('mp_extra_ctrl'+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr ('mp_extra_ctrl'+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr ('mp_extra_ctrl'+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr ('mp_extra_ctrl'+ ".overrideEnabled" ,True)
cmds.setAttr ('mp_extra_ctrl'+ ".overrideColor" ,29)
cmds.setAttr ('mp_extra_ctrl'+'.visibility',keyable = False, cb = False, lock = True)
cmds.addAttr('mp_extra_ctrl',sn='motionPath', min = 0, max=10 , k=1, dv=10)
cmds.group(n='mp_extra_ctrl_grp')
forDel = cmds.parentConstraint('main_mp_2_jnt','mp_extra_ctrl_grp')
cmds.delete(forDel)
# the command to search CV and create cluster
targetCurve = 'mp_crv'
curveCVs = cmds.ls('{0}.cv[:]'.format(targetCurve), fl = True)
for cv in curveCVs:
cmds.cluster(cv,n='cl1')
cmds.setAttr('.visibility',0)
cmds.shadingNode('multiplyDivide',n = 'mp_mult',asUtility=1)
cmds.setAttr('mp_mult.input2X',10)
cmds.setAttr('mp_mult.operation',2)
cmds.connectAttr('mp_extra_ctrl.motionPath','mp_mult.input1X')
# the command to change the progress bar
cmds.progressBar('MotionPathSetupProgress', edit=True, step=2)
# the command to set and connect node
number = len(curveCVs)
for each in range(number):
cmds.setAttr('mp_%s_plm.operation'%(each+1), 2)
cmds.connectAttr('mp_mult.outputX','mp_%s_plm.input1D[0]'%(each+1))
cmds.setAttr('mp_%s_plm.input1D[1]'%(each+1),1)
cmds.connectAttr('mp_%s_plm.output1D'%(each+1),'mp_sec_%s_plm.input1D[0]'%(each+1))
cmds.connectAttr('motionPath%s.uValue'%(each+1),'mp_sec_%s_plm.input1D[1]'%(each+1))
forDel = cmds.parentConstraint('main_mp_%s_jnt'%(each+1),'cl%sHandle'%(each+1),mo=False)
cmds.delete(forDel)
cmds.parent('cl%sHandle'%(each+1),'mp_%s_ctrl'%(each+1))
cmds.cutKey('mp_%s_plm'%(each+1), attribute='input1D[1]',clear = True)
# the command to change the progress bar
cmds.progressBar('MotionPathSetupProgress', edit=True, step=1)
# the command to connect node
number = len(curveCVs)
for each in range(number):
cmds.disconnectAttr('motionPath%s.uValue'%(each+1),'mp_sec_%s_plm.input1D[1]'%(each+1))
cmds.connectAttr('mp_sec_%s_plm.output1D'%(each+1),'motionPath%s.uValue'%(each+1))
forDel = cmds.parentConstraint('mp_%s_jnt'%(each+1),'main_mp_%s_jnt'%(each+1),mo=True)
cmds.delete(forDel)
cmds.makeIdentity('main_mp_1_jnt',apply=True,translate=True,rotate=True)
number = len(curveCVs)
for each in range(number):
cmds.parentConstraint('mp_%s_jnt'%(each+1),'main_mp_%s_jnt'%(each+1),mo=True)
# the command to create group
list = ['ctrl_grp','jnt_grp','setup_grp','mp_grp','setup_jnt_grp']
for each in list:
cmds.group(n=each,em=True)
# the command to create main controller
cmds.circle(n='mp_main_ctrl',r=1,nrx = 90)
cmds.setAttr ('mp_main_ctrl'+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr ('mp_main_ctrl'+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr ('mp_main_ctrl'+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr ('mp_main_ctrl'+ ".overrideEnabled" ,True)
cmds.setAttr ('mp_main_ctrl'+ ".overrideColor" ,29)
cmds.setAttr ('mp_main_ctrl'+'.visibility',keyable = False, cb = False, lock = True)
cmds.group(n='mp_main_ctrl_grp')
forDel = cmds.parentConstraint('main_mp_1_jnt','mp_main_ctrl_grp')
cmds.delete(forDel)
cmds.parent('ctrl_grp','mp_main_ctrl')
cmds.parent('mp_extra_ctrl_grp','mp_main_ctrl')
# the command to change the progress bar
cmds.progressBar('MotionPathSetupProgress', edit=True, step=1)
# the command to group controllers and joints
number = len(curveCVs)
for each in range(number):
cmds.parent('mp_%s_ctrl_grp'%(each+1),'ctrl_grp')
cmds.parent('mp_%s_jnt'%(each+1),'setup_jnt_grp')
# the command to group everything
list = [('start_loc','setup_grp'),('end_loc','setup_grp'),('mp_crv','setup_grp'),('setup_jnt_grp','setup_grp'),('main_mp_1_jnt','jnt_grp'),('setup_grp','mp_grp'),('jnt_grp','mp_grp'),('mp_main_ctrl_grp','mp_grp')]
for each in list:
cmds.parent(each[0],each[1])
# the command to change the progress bar
cmds.progressBar('MotionPathSetupProgress', edit=True, step=2)
def progressBarWindowClose():
# the command to close the progress bar
cmds.deleteUI('MotionPathSetupProgress',window=True)
progressBarWindowClose()
#create quadruped setup joint function#
def BuildQuadrupedSetupJoint():
nameOfJoint = [('spine_01_setup_jnt',(0, 95, -25),(0,0,0)),('spine_02_setup_jnt',(0, 95, 0),(0,0,0)),('spine_03_setup_jnt',(0, 95, 25),(0,0,0)),('l_leg_01_setup_jnt',(10, 85, -35),(0,0,-90)),('l_leg_02_setup_jnt',(10, 60, -35),(0,0,0)),('l_leg_03_setup_jnt',(10, 30, -35),(0,0,0)),('l_leg_04_setup_jnt',(10, 10, -35),(0,0,0)),('l_leg_05_setup_jnt',(10, 0, -35),(0,0,0)),('l_leg_rock_out_setup_jnt',(15, 0, -35),(0,0,0)),('l_leg_rock_in_setup_jnt',(5, 0, -35),(0,0,0)),('l_leg_heel_setup_jnt',(10, 0, -45),(0,0,0)),('r_leg_01_setup_jnt',(-10, 85, -35),(0,0,0)),('r_leg_02_setup_jnt',(-10, 60, -35),(0,0,0)),('r_leg_03_setup_jnt',(-10, 30, -35),(0,0,0)),('r_leg_04_setup_jnt',(-10, 10, -35),(0,0,0)),('r_leg_05_setup_jnt',(-10, 0, -35),(0,180,0)),('r_leg_rock_out_setup_jnt',(-15, 0, -35),(0,0,0)),('r_leg_rock_in_setup_jnt',(-5, 0, -35),(0,0,0)),('r_leg_heel_setup_jnt',(-10, 0, -45),(0,0,0)),('l_shoulder_setup_jnt',(10, 90, 35),(0,-180,0)),('l_arm_01_setup_jnt',(10, 70, 35),(0,0,0)),('l_arm_02_setup_jnt',(10, 50, 35),(0,0,0)),('l_arm_03_setup_jnt',(10, 25, 35),(0,0,0)),('l_arm_04_setup_jnt',(10, 5, 35),(0,0,0)),('l_arm_05_setup_jnt',(10, 0, 35),(0,0,0)),('l_arm_rock_in_setup_jnt',(5, 0, 35),(0,0,0)),('l_arm_rock_out_setup_jnt',(15, 0, 35),(0,0,0)),('l_arm_heel_setup_jnt',(10, 0, 25),(0,0,0)),('r_shoulder_setup_jnt',(-10, 90, 35),(0,0,0)),('r_arm_01_setup_jnt',(-10, 70, 35),(0,0,0)),('r_arm_02_setup_jnt',(-10, 50, 35),(0,0,0)),('r_arm_03_setup_jnt',(-10, 25, 35),(0,0,0)),('r_arm_04_setup_jnt',(-10, 5, 35),(0,0,0)),('r_arm_05_setup_jnt',(-10, 0, 35),(0,180,0)),('r_arm_rock_in_setup_jnt',(-5, 0, 35),(0,0,0)),('r_arm_rock_out_setup_jnt',(-15, 0, 35),(0,0,0)),('r_arm_heel_setup_jnt',(-10, 0, 25),(0,0,0)),('neck_01_setup_jnt',(0, 105, 35),(0,-180,0)),('neck_02_setup_jnt',(0, 105, 45),(0,0,0)),('head_setup_jnt',(0, 105, 55),(0,0,0)),('head_setup_end_jnt',(0, 105, 75),(0,0,0)),('tail_01_setup_jnt',(0, 95, -35),(0,90,90)),('tail_02_setup_jnt',(0, 95, -45),(0,0,0)),('tail_03_setup_jnt',(0, 95, -55),(0,0,0)),('tail_04_setup_jnt',(0, 95, -65),(0,0,0)),('tail_05_setup_jnt',(0, 95, -75),(0,0,0))]
for each in nameOfJoint:
cmds.joint(n=each[0],p=each[1],o=each[2])
toParentJoint = [('l_leg_01_setup_jnt','spine_01_setup_jnt'),('r_leg_01_setup_jnt','spine_01_setup_jnt'),('l_leg_rock_out_setup_jnt','l_leg_04_setup_jnt'),('l_leg_rock_in_setup_jnt','l_leg_04_setup_jnt'),('l_leg_heel_setup_jnt','l_leg_04_setup_jnt'),('r_leg_rock_out_setup_jnt','r_leg_04_setup_jnt'),('r_leg_rock_in_setup_jnt','r_leg_04_setup_jnt'),('r_leg_heel_setup_jnt','r_leg_04_setup_jnt'),('l_shoulder_setup_jnt','spine_03_setup_jnt'),('l_arm_rock_out_setup_jnt','l_arm_04_setup_jnt'),('l_arm_rock_in_setup_jnt','l_arm_04_setup_jnt'),('l_arm_heel_setup_jnt','l_arm_04_setup_jnt'),('r_shoulder_setup_jnt','spine_03_setup_jnt'),('r_arm_rock_out_setup_jnt','r_arm_04_setup_jnt'),('r_arm_rock_in_setup_jnt','r_arm_04_setup_jnt'),('r_arm_heel_setup_jnt','r_arm_04_setup_jnt'),('neck_01_setup_jnt','spine_03_setup_jnt'),('tail_01_setup_jnt','spine_01_setup_jnt')]
for each in toParentJoint:
cmds.parent(each[0],each[1])
toSetJointRotation = [('l_leg_01_setup_jnt.rotateY',-15),('l_leg_02_setup_jnt.rotateY',30),('l_leg_03_setup_jnt.rotateY',-30),('r_leg_01_setup_jnt.rotateY',-15),('r_leg_02_setup_jnt.rotateY',30),('r_leg_03_setup_jnt.rotateY',-30),('l_shoulder_setup_jnt.rotateY',-30),('l_arm_01_setup_jnt.rotateY',70),('l_arm_02_setup_jnt.rotateY',-45),('l_arm_03_setup_jnt.rotateY',10),('r_shoulder_setup_jnt.rotateY',-30),('r_arm_01_setup_jnt.rotateY',70),('r_arm_02_setup_jnt.rotateY',-45),('r_arm_03_setup_jnt.rotateY',10),('neck_01_setup_jnt.rotateY',-50),('neck_02_setup_jnt.rotateY',-20),('head_setup_jnt.rotateY',-10)]
for each in toSetJointRotation:
cmds.setAttr(each[0],each[1])
nameOfLoc = [('l_leg_PV_setup_loc'),('r_leg_PV_setup_loc'),('l_arm_PV_setup_loc'),('r_arm_PV_setup_loc')]
for each in nameOfLoc:
cmds.spaceLocator(n=each)
toParentLoc = [('l_leg_PV_setup_loc','l_leg_02_setup_jnt'),('r_leg_PV_setup_loc','r_leg_02_setup_jnt'),('l_arm_PV_setup_loc','l_arm_02_setup_jnt'),('r_arm_PV_setup_loc','r_arm_02_setup_jnt')]
for each in toParentLoc:
cmds.parent(each[0],each[1])
toGetLocPos = [('l_leg_PV_setup_loc'),('r_leg_PV_setup_loc'),('l_arm_PV_setup_loc'),('r_arm_PV_setup_loc')]
for each in toGetLocPos:
cmds.setAttr(each+'.translateX',0)
cmds.setAttr(each+'.translateY',0)
cmds.setAttr(each+'.translateZ',0)
cmds.setAttr(each+'.rotateX',0)
cmds.setAttr(each+'.rotateZ',0)
cmds.setAttr('l_leg_PV_setup_loc'+'.translateZ',25)
cmds.setAttr('r_leg_PV_setup_loc'+'.translateZ',25)
cmds.setAttr('l_arm_PV_setup_loc'+'.translateZ',-20)
cmds.setAttr('r_arm_PV_setup_loc'+'.translateZ',-20)
#mirror quadruped setup joint#
def MirrorQuadrupedSetupJoint():
cmds.mirrorJoint('l_leg_01_setup_jnt',mb = True,myz = True,sr = ('l_','r_mirror_'))
forDel = cmds.parentConstraint('r_mirror_leg_01_setup_jnt','r_leg_01_setup_jnt')
cmds.delete(forDel)
cmds.makeIdentity('r_leg_01_setup_jnt',apply=True,translate=True,rotate=True)
cmds.setAttr('r_leg_01_setup_jnt.rotateY',180)
forDel = cmds.parentConstraint('r_mirror_leg_02_setup_jnt','r_leg_02_setup_jnt')
cmds.delete(forDel)
cmds.makeIdentity('r_leg_02_setup_jnt',apply=True,translate=True,rotate=True)
cmds.setAttr('r_leg_02_setup_jnt.rotateY',180)
forDel = cmds.parentConstraint('r_mirror_leg_03_setup_jnt','r_leg_03_setup_jnt')
cmds.delete(forDel)
cmds.makeIdentity('r_leg_03_setup_jnt',apply=True,translate=True,rotate=True)
cmds.setAttr('r_leg_03_setup_jnt.rotateY',180)
forDel = cmds.parentConstraint('r_mirror_leg_04_setup_jnt','r_leg_04_setup_jnt')
cmds.delete(forDel)
cmds.makeIdentity('r_leg_04_setup_jnt',apply=True,translate=True,rotate=True)
cmds.setAttr('r_leg_04_setup_jnt.rotateY',180)
cmds.mirrorJoint('l_shoulder_setup_jnt',mb = True,myz = True,sr = ('l_','r_mirror_'))
forDel = cmds.parentConstraint('r_mirror_shoulder_setup_jnt','r_shoulder_setup_jnt')
cmds.delete(forDel)
cmds.makeIdentity('r_shoulder_setup_jnt',apply=True,translate=True,rotate=True)
cmds.setAttr('r_shoulder_setup_jnt.rotateY',180)
forDel = cmds.parentConstraint('r_mirror_arm_01_setup_jnt','r_arm_01_setup_jnt')
cmds.delete(forDel)
cmds.makeIdentity('r_arm_01_setup_jnt',apply=True,translate=True,rotate=True)
cmds.setAttr('r_arm_01_setup_jnt.rotateY',180)
forDel = cmds.parentConstraint('r_mirror_arm_02_setup_jnt','r_arm_02_setup_jnt')
cmds.delete(forDel)
cmds.makeIdentity('r_arm_02_setup_jnt',apply=True,translate=True,rotate=True)
cmds.setAttr('r_arm_02_setup_jnt.rotateY',180)
forDel = cmds.parentConstraint('r_mirror_arm_03_setup_jnt','r_arm_03_setup_jnt')
cmds.delete(forDel)
cmds.makeIdentity('r_arm_03_setup_jnt',apply=True,translate=True,rotate=True)
cmds.setAttr('r_arm_03_setup_jnt.rotateY',180)
forDel = cmds.parentConstraint('r_mirror_arm_04_setup_jnt','r_arm_04_setup_jnt')
cmds.delete(forDel)
cmds.makeIdentity('r_arm_04_setup_jnt',apply=True,translate=True,rotate=True)
cmds.setAttr('r_arm_04_setup_jnt.rotateY',180)
list = [('r_mirror_leg_heer_mirror_setup_jnt','r_leg_heel_setup_jnt'),('r_mirror_leg_rock_in_setup_jnt','r_leg_rock_in_setup_jnt'),('r_mirror_leg_rock_out_setup_jnt','r_leg_rock_out_setup_jnt'),('r_mirror_leg_05_setup_jnt','r_leg_05_setup_jnt'),('r_mirror_arm_heer_mirror_setup_jnt','r_arm_heel_setup_jnt'),('r_mirror_arm_rock_in_setup_jnt','r_arm_rock_in_setup_jnt'),('r_mirror_arm_rock_out_setup_jnt','r_arm_rock_out_setup_jnt'),('r_mirror_arm_05_setup_jnt','r_arm_05_setup_jnt')]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.delete('r_mirror_shoulder_setup_jnt','r_mirror_leg_01_setup_jnt')
#create quadruped setup rig function#
def BuildQuadrupedSetupRig():
def progressBarWindow():
# this command opens the window
window = cmds.window('QuadrupedProgress',title='Building')
cmds.columnLayout()
cmds.progressBar('QuadrupedProgressBar',maxValue=10, width=300)
cmds.showWindow( window )
progressBarWindow()
cmds.setAttr('spine_01_setup_jnt.visibility',0)
def spineSetup():
# FKspine #
nameOfController = [('spine_01_FK_ctrl','spine_01_FK_ctrl_grp'),('spine_02_FK_ctrl','spine_02_FK_ctrl_grp'),('spine_03_FK_ctrl','spine_03_FK_ctrl_grp')]
for each in nameOfController:
cmds.curve(n=each[0],d=1, p=[(12.5, 12.5, 0),(-12.5, 12.5, 0),(-12.5, -12.5, 0),(12.5, -12.5, 0),(12.5, 12.5, 0)])
cmds.group(n=each[1])
cmds.circle(n='world_ctrl',r=50, nry = 90)
cmds.setAttr('world_ctrl.overrideEnabled' ,True)
cmds.setAttr('world_ctrl.overrideColor' ,29)
cmds.setAttr ('world_ctrl.visibility',keyable = False, cb = False, lock = True)
cmds.group(n='world_ctrl_grp')
cmds.curve(n='cog_ctrl',d=1, p=[(-3, 0, 18),(-18, 0, 3),(-18, 0, 6),(-24, 0, 0),(-18, 0, -6),(-18, 0, -3),(-3, 0, -18),(-3, 0, -18),(-6, 0, -18),(0, 0, -24),(6, 0, -18),(3, 0, -18),(18, 0, -3),(18, 0, -3),(18, 0, -6),(24, 0, 0),(18, 0, 6),(18, 0, 3),(3, 0, 18),(3, 0, 18),(6, 0, 18),(0, 0, 24),(-6, 0, 18),(-3, 0, 18)])
cmds.group(n='cog_ctrl_grp',em=1)
cmds.parent('cog_ctrl','cog_ctrl_grp')
nameOfJoint = [('spine_01_FK_jnt'),('spine_02_FK_jnt'),('spine_03_FK_jnt')]
for each in nameOfJoint:
cmds.joint(n=each)
cmds.parent(w=True)
toGetPos = [('spine_01_setup_jnt','cog_ctrl_grp'),('spine_02_setup_jnt','spine_02_FK_ctrl_grp'),('spine_03_setup_jnt','spine_03_FK_ctrl_grp'),('spine_01_setup_jnt','spine_01_FK_ctrl_grp'),('spine_01_setup_jnt','spine_01_FK_jnt'),('spine_02_setup_jnt','spine_02_FK_jnt'),('spine_03_setup_jnt','spine_03_FK_jnt')]
for each in toGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
cmds.makeIdentity('spine_01_FK_jnt',apply=True,translate=True,rotate=True)
toParentCon = [('spine_01_FK_ctrl','spine_01_FK_jnt'),('spine_02_FK_ctrl','spine_02_FK_jnt'),('spine_03_FK_ctrl','spine_03_FK_jnt'),('cog_ctrl','spine_01_FK_ctrl_grp')]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo = True)
toParent = [('spine_03_FK_jnt','spine_02_FK_jnt'),('spine_02_FK_jnt','spine_01_FK_jnt'),('spine_03_FK_ctrl_grp','spine_02_FK_ctrl'),('spine_02_FK_ctrl_grp','spine_01_FK_ctrl'),('spine_01_FK_ctrl_grp','world_ctrl')]
for each in toParent:
cmds.parent(each[0],each[1])
toLockAttr = [('spine_01_FK_ctrl'),('spine_02_FK_ctrl'),('spine_03_FK_ctrl'),('cog_ctrl')]
for each in toLockAttr:
cmds.setAttr(each+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,17)
# IKspine #
cmds.curve(d=3, p=[(0, 0, 0),(0, 2.5, 0),(0, 5, 0),(0, 7.5, 0),(0, 10, 0)])
cmds.rename('spine_crv')
nameOfLoc = ['spine_01_loc','spine_02_loc','spine_03_loc','spine_04_loc','spine_05_loc']
for each in nameOfLoc:
cmds.spaceLocator(n=each)
toGetLocPos = [('spine_01_loc.translateY',0),('spine_02_loc.translateY',2.5),('spine_03_loc.translateY',5),('spine_04_loc.translateY',7.5),('spine_05_loc.translateY',10)]
for each in toGetLocPos:
cmds.setAttr(each[0],each[1])
toConnectLoc = [('spine_01_loc.worldPosition[0]','spine_crvShape.controlPoints[0]'),('spine_02_loc.worldPosition[0]','spine_crvShape.controlPoints[1]'),('spine_03_loc.worldPosition[0]','spine_crvShape.controlPoints[2]'),('spine_04_loc.worldPosition[0]','spine_crvShape.controlPoints[3]'),('spine_05_loc.worldPosition[0]','spine_crvShape.controlPoints[4]')]
for each in toConnectLoc:
cmds.connectAttr(each[0],each[1])
toCreateIKspineController = [('spine_01_IK_ctrl','spine_01_IK_ctrl_grp'),('spine_02_IK_ctrl','spine_02_IK_ctrl_grp'),('spine_03_IK_ctrl','spine_03_IK_ctrl_grp')]
for each in toCreateIKspineController:
cmds.circle(n=each[0],r=10,nrz = 90)
cmds.group(n=each[1])
cmds.delete('world_ctrl','spine_01_IK_ctrl','spine_02_IK_ctrl','spine_03_IK_ctrl',constructionHistory = True)
toCreateJoint = ['spine_IK_chest_jnt','spine_IK_root_jnt','spine_IK_01_jnt','spine_IK_02_jnt','spine_IK_03_jnt','spine_IK_04_jnt','spine_IK_05_jnt','spine_01_length_jnt','spine_02_length_jnt','spine_03_length_jnt','spine_04_length_jnt','spine_05_length_jnt','spine_start_length_jnt','spine_end_length_jnt']
for each in toCreateJoint:
cmds.joint(n=each)
cmds.group(n='spine_IK_jnt_grp',em=True)
cmds.parent('spine_IK_01_jnt','spine_IK_jnt_grp')
cmds.orientConstraint('cog_ctrl','spine_IK_jnt_grp')
cmds.parent('spine_IK_root_jnt','spine_IK_chest_jnt','spine_01_length_jnt','spine_start_length_jnt',w=True)
toGetPos = [('spine_01_setup_jnt','spine_IK_01_jnt'),('spine_01_setup_jnt','spine_IK_02_jnt'),('spine_02_setup_jnt','spine_IK_02_jnt'),('spine_02_setup_jnt','spine_IK_03_jnt'),('spine_02_setup_jnt','spine_IK_04_jnt'),('spine_03_setup_jnt','spine_IK_04_jnt'),('spine_03_setup_jnt','spine_IK_05_jnt'),('spine_01_setup_jnt','spine_01_IK_ctrl_grp'),('spine_02_setup_jnt','spine_02_IK_ctrl_grp'),('spine_03_setup_jnt','spine_03_IK_ctrl_grp'),('spine_01_setup_jnt','spine_start_length_jnt'),('spine_03_setup_jnt','spine_end_length_jnt'),('spine_01_setup_jnt','spine_01_length_jnt'),('spine_01_setup_jnt','spine_01_loc'),('spine_02_setup_jnt','spine_03_loc'),('spine_03_setup_jnt','spine_05_loc'),('spine_01_setup_jnt','spine_IK_root_jnt'),('spine_03_setup_jnt','spine_IK_chest_jnt')]
for each in toGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
forDelspine_02_lenghtJntParentCon = cmds.parentConstraint('spine_01_setup_jnt','spine_02_length_jnt',mo=False)
forDelspine_02_lenghtJntParentCon = cmds.parentConstraint('spine_02_setup_jnt','spine_02_length_jnt',mo=False)
forDelspine_03_lenghtJntParentCon = cmds.parentConstraint('spine_02_setup_jnt','spine_03_length_jnt',mo=False)
forDelspine_04_lenghtJntParentCon = cmds.parentConstraint('spine_02_setup_jnt','spine_04_length_jnt',mo=False)
forDelspine_04_lenghtJntParentCon = cmds.parentConstraint('spine_03_setup_jnt','spine_04_length_jnt',mo=False)
forDelspine_05_lenghtJntParentCon = cmds.parentConstraint('spine_03_setup_jnt','spine_05_length_jnt',mo=False)
cmds.delete(forDelspine_02_lenghtJntParentCon)
cmds.delete(forDelspine_03_lenghtJntParentCon)
cmds.delete(forDelspine_04_lenghtJntParentCon)
cmds.delete(forDelspine_05_lenghtJntParentCon)
forDelspine_02_locParentCon = cmds.parentConstraint('spine_01_setup_jnt','spine_02_loc',mo=False)
forDelspine_02_locParentCon = cmds.parentConstraint('spine_02_setup_jnt','spine_02_loc',mo=False)
forDelspine_04_locParentCon = cmds.parentConstraint('spine_02_setup_jnt','spine_04_loc',mo=False)
forDelspine_04_locParentCon = cmds.parentConstraint('spine_03_setup_jnt','spine_04_loc',mo=False)
cmds.delete(forDelspine_02_locParentCon)
cmds.delete(forDelspine_04_locParentCon)
toParentCon = [('spine_03_IK_ctrl','spine_IK_chest_jnt'),('spine_01_IK_ctrl','spine_IK_root_jnt'),('spine_01_IK_ctrl','spine_01_loc'),('spine_02_IK_ctrl','spine_03_loc'),('spine_03_IK_ctrl','spine_05_loc'),('spine_01_IK_ctrl','spine_02_loc'),('spine_02_IK_ctrl','spine_02_loc'),('spine_02_IK_ctrl','spine_04_loc'),('spine_03_IK_ctrl','spine_04_loc'),('spine_03_IK_ctrl','spine_02_IK_ctrl_grp'),('spine_01_IK_ctrl','spine_02_IK_ctrl_grp'),('cog_ctrl','spine_01_IK_ctrl_grp'),('cog_ctrl','spine_03_IK_ctrl_grp')]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo=True)
cmds.select('spine_IK_01_jnt','spine_IK_05_jnt','spine_crv')
cmds.ikHandle(n='spine_ikh',sol='ikSplineSolver',ccv=0,pcv =0)
createNode = [('multiplyDivide','spine_twist_mult'),('plusMinusAverage','spine_twist_pma'),('multiplyDivide','spine_stretch_01_mult'),('multiplyDivide','spine_stretch_02_mult')]
for each in createNode:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
toSetNode = [('spine_twist_mult.input2X',-1),('spine_stretch_01_mult.operation',2),('spine_stretch_01_mult.operation',2)]
for each in toSetNode:
cmds.setAttr(each[0],each[1])
cmds.arclen('spine_crv',ch = True)
toConnectAttr = [('spine_01_IK_ctrl.rotateZ','spine_twist_mult.input1X'),('spine_03_IK_ctrl.rotateZ','spine_twist_pma.input1D[0]'),('spine_01_IK_ctrl.rotateZ','spine_ikh.roll'),('spine_twist_pma.output1D','spine_ikh.twist'),('spine_twist_mult.outputX','spine_twist_pma.input1D[1]'),('curveInfo1.arcLength','spine_stretch_01_mult.input1X'),('spine_stretch_01_mult.outputX','spine_stretch_02_mult.input1X'),('spine_02_length_jnt.translateZ','spine_stretch_02_mult.input2X'),('spine_stretch_02_mult.outputX','spine_IK_02_jnt.translateZ'),('spine_stretch_02_mult.outputX','spine_IK_03_jnt.translateZ'),('spine_stretch_02_mult.outputX','spine_IK_04_jnt.translateZ'),('spine_stretch_02_mult.outputX','spine_IK_05_jnt.translateZ'),('spine_end_length_jnt.translateZ','spine_stretch_01_mult.input2X')]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
toCreateGroup = ['spine_IK_setup_jnt_grp','spine_IK_ctrl_grp','spine_IK_loc_grp','spine_IK_setup_grp']
for each in toCreateGroup:
cmds.group(n=each,em=True)
toParent = [('spine_01_loc','spine_IK_loc_grp'),('spine_02_loc','spine_IK_loc_grp'),('spine_03_loc','spine_IK_loc_grp'),('spine_04_loc','spine_IK_loc_grp'),('spine_05_loc','spine_IK_loc_grp'),('spine_01_IK_ctrl_grp','spine_IK_ctrl_grp'),('spine_02_IK_ctrl_grp','spine_IK_ctrl_grp'),('spine_03_IK_ctrl_grp','spine_IK_ctrl_grp'),('spine_01_length_jnt','spine_IK_setup_jnt_grp'),('spine_start_length_jnt','spine_IK_setup_jnt_grp'),('spine_ikh','spine_IK_setup_grp'),('spine_crv','spine_IK_setup_grp'),('spine_IK_setup_jnt_grp','spine_IK_setup_grp'),('spine_IK_loc_grp','spine_IK_setup_grp'),('spine_IK_ctrl_grp','world_ctrl')]
for each in toParent:
cmds.parent(each[0],each[1])
cmds.scaleConstraint('world_ctrl','spine_IK_setup_jnt_grp',mo=True)
#set IKFK spine controller attributes#
listOfSpineController = ['cog_ctrl','spine_01_IK_ctrl','spine_02_IK_ctrl','spine_03_IK_ctrl','spine_01_FK_ctrl','spine_02_FK_ctrl','spine_03_FK_ctrl']
for each in listOfSpineController:
cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,17)
#create IKFK spine bind joint#
nameOfSpineBindJoint = ['spine_01_bln_jnt','spine_02_bln_jnt','spine_03_bln_jnt']
for each in nameOfSpineBindJoint:
cmds.joint(n=each)
cmds.parent('spine_01_bln_jnt',w=True)
cmds.group(n='spine_01_bln_jnt_grp')
cmds.scaleConstraint('world_ctrl','spine_01_bln_jnt_grp',mo=True)
toGetSpineBindJointPos = [('spine_01_setup_jnt','spine_01_bln_jnt'),('spine_02_setup_jnt','spine_02_bln_jnt'),('spine_03_setup_jnt','spine_03_bln_jnt')]
for each in toGetSpineBindJointPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
toParentConIKFKspine = [('spine_01_FK_jnt','spine_01_bln_jnt'),('spine_IK_root_jnt','spine_01_bln_jnt'),('spine_02_FK_jnt','spine_02_bln_jnt'),('spine_IK_03_jnt','spine_02_bln_jnt'),('spine_03_FK_jnt','spine_03_bln_jnt'),('spine_IK_chest_jnt','spine_03_bln_jnt')]
for each in toParentConIKFKspine:
cmds.parentConstraint(each[0],each[1],mo=True)
cmds.curve(n='spine_ik_fk_switch',d=1, p=[(1.25, 0, 7.5),(-1.25, 0, 7.5),(-1.25, 0, 1.25),(-7.5, 0, 1.25),(-7.5, 0, -1.25),(-1.25, 0, -1.25),(-1.25, 0, -7.5),(1.25, 0 ,-7.5),(1.25, 0, -1.25),(7.5, 0, -1.25),(7.5, 0, 1.25,),(1.25, 0 ,1.25),(1.25, 0, 7.5)])
cmds.group(n='spine_ik_fk_switch_grp')
cmds.setAttr('spine_ik_fk_switch.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr('spine_ik_fk_switch.translateX',keyable = False, cb = False, lock = True)
cmds.setAttr('spine_ik_fk_switch.translateY',keyable = False, cb = False, lock = True)
cmds.setAttr('spine_ik_fk_switch.translateZ',keyable = False, cb = False, lock = True)
cmds.setAttr('spine_ik_fk_switch.rotateX',keyable = False, cb = False, lock = True)
cmds.setAttr('spine_ik_fk_switch.rotateY',keyable = False, cb = False, lock = True)
cmds.setAttr('spine_ik_fk_switch.rotateZ',keyable = False, cb = False, lock = True)
cmds.setAttr('spine_ik_fk_switch.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr('spine_ik_fk_switch.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr('spine_ik_fk_switch.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr('spine_ik_fk_switch.overrideEnabled' ,True)
cmds.setAttr('spine_ik_fk_switch.overrideColor' ,15)
cmds.parent('spine_ik_fk_switch_grp', 'world_ctrl')
cmds.addAttr('spine_ik_fk_switch',sn='IKFK', min = 0, max=1 ,k=1)
cmds.parentConstraint('spine_02_bln_jnt','spine_ik_fk_switch_grp')
cmds.shadingNode('reverse',n='spine_ik_rev',asUtility=1)
toConnectAttr = [('spine_ik_fk_switch.IKFK','spine_01_bln_jnt_parentConstraint1.spine_01_FK_jntW0'),('spine_ik_fk_switch.IKFK','spine_ik_rev.inputX'),('spine_ik_rev.outputX','spine_01_bln_jnt_parentConstraint1.spine_IK_root_jntW1'),('spine_ik_fk_switch.IKFK','spine_02_bln_jnt_parentConstraint1.spine_02_FK_jntW0'),('spine_ik_rev.outputX','spine_02_bln_jnt_parentConstraint1.spine_IK_03_jntW1'),('spine_ik_fk_switch.IKFK','spine_03_bln_jnt_parentConstraint1.spine_03_FK_jntW0'),('spine_ik_rev.outputX','spine_03_bln_jnt_parentConstraint1.spine_IK_chest_jntW1'),('spine_ik_rev.outputX','spine_IK_ctrl_grp.visibility'),('spine_ik_fk_switch.IKFK','spine_01_FK_ctrl_grp.visibility')]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
# the command to change the progress bar
cmds.progressBar('QuadrupedProgressBar', edit=True, step=1)
spineSetup()
def leftRightFKsetup(side):
nameOfFKcontroller = [('%s_FK_leg_01_ctrl'%(side),'%s_FK_leg_01_ctrl_grp'%(side)),('%s_FK_leg_02_ctrl'%(side),'%s_FK_leg_02_ctrl_grp'%(side)),('%s_FK_leg_03_ctrl'%(side),'%s_FK_leg_03_ctrl_grp'%(side)),('%s_FK_leg_04_ctrl'%(side),'%s_FK_leg_04_ctrl_grp'%(side)),('%s_FK_arm_01_ctrl'%(side),'%s_FK_arm_01_ctrl_grp'%(side)),('%s_FK_arm_02_ctrl'%(side),'%s_FK_arm_02_ctrl_grp'%(side)),('%s_FK_arm_03_ctrl'%(side),'%s_FK_arm_03_ctrl_grp'%(side)),('%s_FK_arm_04_ctrl'%(side),'%s_FK_arm_04_ctrl_grp'%(side)),('%s_shoulder_ctrl'%(side),'%s_shoulder_ctrl_grp'%(side))]
for each in nameOfFKcontroller:
ctrl = cmds.circle(n=each[0],r=5,nrx = 90)
cmds.delete(ctrl,constructionHistory = True)
cmds.group(n=each[1])
nameOfJoint = [('%s_FK_leg_01_jnt'%(side)),('%s_FK_leg_02_jnt'%(side)),('%s_FK_leg_03_jnt'%(side)),('%s_FK_leg_04_jnt'%(side)),('%s_FK_arm_01_jnt'%(side)),('%s_FK_arm_02_jnt'%(side)),('%s_FK_arm_03_jnt'%(side)),('%s_FK_arm_04_jnt'%(side)),('%s_shoulder_jnt'%(side))]
for each in nameOfJoint:
cmds.joint(n=each)
cmds.parent(w = True)
togetPos = [('%s_leg_01_setup_jnt'%(side),'%s_FK_leg_01_jnt'%(side)),('%s_leg_02_setup_jnt'%(side),'%s_FK_leg_02_jnt'%(side)),('%s_leg_03_setup_jnt'%(side),'%s_FK_leg_03_jnt'%(side)),('%s_leg_04_setup_jnt'%(side),'%s_FK_leg_04_jnt'%(side)),('%s_leg_01_setup_jnt'%(side),'%s_FK_leg_01_ctrl_grp'%(side)),('%s_leg_02_setup_jnt'%(side),'%s_FK_leg_02_ctrl_grp'%(side)),('%s_leg_03_setup_jnt'%(side),'%s_FK_leg_03_ctrl_grp'%(side)),('%s_leg_04_setup_jnt'%(side),'%s_FK_leg_04_ctrl_grp'%(side)),('%s_arm_01_setup_jnt'%(side),'%s_FK_arm_01_jnt'%(side)),('%s_arm_02_setup_jnt'%(side),'%s_FK_arm_02_jnt'%(side)),('%s_arm_03_setup_jnt'%(side),'%s_FK_arm_03_jnt'%(side)),('%s_arm_04_setup_jnt'%(side),'%s_FK_arm_04_jnt'%(side)),('%s_arm_01_setup_jnt'%(side),'%s_FK_arm_01_ctrl_grp'%(side)),('%s_arm_02_setup_jnt'%(side),'%s_FK_arm_02_ctrl_grp'%(side)),('%s_arm_03_setup_jnt'%(side),'%s_FK_arm_03_ctrl_grp'%(side)),('%s_arm_04_setup_jnt'%(side),'%s_FK_arm_04_ctrl_grp'%(side)),('%s_shoulder_setup_jnt'%(side),'%s_shoulder_jnt'%(side)),('%s_shoulder_setup_jnt'%(side),'%s_shoulder_ctrl_grp'%(side))]
for each in togetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
toParent = [('%s_FK_leg_04_ctrl_grp'%(side),'%s_FK_leg_03_ctrl'%(side)),('%s_FK_leg_03_ctrl_grp'%(side),'%s_FK_leg_02_ctrl'%(side)),('%s_FK_leg_02_ctrl_grp'%(side),'%s_FK_leg_01_ctrl'%(side)),('%s_FK_leg_04_jnt'%(side),'%s_FK_leg_03_jnt'%(side)),('%s_FK_leg_03_jnt'%(side),'%s_FK_leg_02_jnt'%(side)),('%s_FK_leg_02_jnt'%(side),'%s_FK_leg_01_jnt'%(side)),('%s_FK_arm_04_ctrl_grp'%(side),'%s_FK_arm_03_ctrl'%(side)),('%s_FK_arm_03_ctrl_grp'%(side),'%s_FK_arm_02_ctrl'%(side)),('%s_FK_arm_02_ctrl_grp'%(side),'%s_FK_arm_01_ctrl'%(side)),('%s_FK_arm_04_jnt'%(side),'%s_FK_arm_03_jnt'%(side)),('%s_FK_arm_03_jnt'%(side),'%s_FK_arm_02_jnt'%(side)),('%s_FK_arm_02_jnt'%(side),'%s_FK_arm_01_jnt'%(side)),('%s_FK_arm_01_ctrl_grp'%(side),'%s_shoulder_ctrl'%(side))]
for each in toParent:
cmds.parent(each[0],each[1])
cmds.makeIdentity('%s_FK_leg_01_jnt'%(side),'%s_FK_arm_01_jnt'%(side),'%s_shoulder_jnt'%(side),apply=True,translate=True,rotate=True)
toParentCon = [('%s_FK_leg_01_ctrl'%(side),'%s_FK_leg_01_jnt'%(side)),('%s_FK_leg_02_ctrl'%(side),'%s_FK_leg_02_jnt'%(side)),('%s_FK_leg_03_ctrl'%(side),'%s_FK_leg_03_jnt'%(side)),('%s_FK_leg_04_ctrl'%(side),'%s_FK_leg_04_jnt'%(side)),('%s_FK_arm_01_ctrl'%(side),'%s_FK_arm_01_jnt'%(side)),('%s_FK_arm_02_ctrl'%(side),'%s_FK_arm_02_jnt'%(side)),('%s_FK_arm_03_ctrl'%(side),'%s_FK_arm_03_jnt'%(side)),('%s_FK_arm_04_ctrl'%(side),'%s_FK_arm_04_jnt'%(side)),('%s_shoulder_ctrl'%(side),'%s_shoulder_jnt'%(side)),('spine_03_bln_jnt','%s_shoulder_ctrl_grp'%(side)),('spine_01_bln_jnt','%s_FK_leg_01_ctrl_grp'%(side))]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo = True)
toLockAttr = [('%s_FK_leg_01_ctrl'%(side)),('%s_FK_leg_02_ctrl'%(side)),('%s_FK_leg_03_ctrl'%(side)),('%s_FK_leg_04_ctrl'%(side)),('%s_shoulder_ctrl'%(side)),('%s_FK_arm_01_ctrl'%(side)),('%s_FK_arm_02_ctrl'%(side)),('%s_FK_arm_03_ctrl'%(side)),('%s_FK_arm_04_ctrl'%(side))]
for each in toLockAttr:
cmds.setAttr(each+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,6)
# the command to change the progress bar
cmds.progressBar('QuadrupedProgressBar', edit=True, step=1)
leftRightFKsetup('l')
leftRightFKsetup('r')
def tailSetup():
# FK tail
nameOfController = [('tail_FK_01_ctrl','tail_FK_01_ctrl_grp'),('tail_FK_02_ctrl','tail_FK_02_ctrl_grp'),('tail_FK_03_ctrl','tail_FK_03_ctrl_grp'),('tail_FK_04_ctrl','tail_FK_04_ctrl_grp'),('tail_FK_05_ctrl','tail_FK_05_ctrl_grp')]
for each in nameOfController:
ctrl = cmds.circle(n=each[0],r=5,nrx = 90)
cmds.delete(ctrl,constructionHistory = True)
cmds.group(n = each[1])
nameOfJoint = [('tail_FK_01_jnt'),('tail_FK_02_jnt'),('tail_FK_03_jnt'),('tail_FK_04_jnt'),('tail_FK_05_jnt')]
for each in nameOfJoint:
cmds.joint(n = each)
cmds.parent(w = True)
toGetPos = [('tail_01_setup_jnt','tail_FK_01_ctrl_grp'),('tail_02_setup_jnt','tail_FK_02_ctrl_grp'),('tail_03_setup_jnt','tail_FK_03_ctrl_grp'),('tail_04_setup_jnt','tail_FK_04_ctrl_grp'),('tail_05_setup_jnt','tail_FK_05_ctrl_grp'),('tail_01_setup_jnt','tail_FK_01_jnt'),('tail_02_setup_jnt','tail_FK_02_jnt'),('tail_03_setup_jnt','tail_FK_03_jnt'),('tail_04_setup_jnt','tail_FK_04_jnt'),('tail_05_setup_jnt','tail_FK_05_jnt')]
for each in toGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
toParent = [('tail_FK_05_ctrl_grp','tail_FK_04_ctrl'),('tail_FK_04_ctrl_grp','tail_FK_03_ctrl'),('tail_FK_03_ctrl_grp','tail_FK_02_ctrl'),('tail_FK_02_ctrl_grp','tail_FK_01_ctrl'),('tail_FK_05_jnt','tail_FK_04_jnt'),('tail_FK_04_jnt','tail_FK_03_jnt'),('tail_FK_03_jnt','tail_FK_02_jnt'),('tail_FK_02_jnt','tail_FK_01_jnt')]
for each in toParent:
cmds.parent(each[0],each[1])
cmds.makeIdentity('tail_FK_01_jnt',apply=True,translate=True,rotate=True)
toParentCon = [('tail_FK_01_ctrl','tail_FK_01_jnt'),('tail_FK_02_ctrl','tail_FK_02_jnt'),('tail_FK_03_ctrl','tail_FK_03_jnt'),('tail_FK_04_ctrl','tail_FK_04_jnt'),('tail_FK_05_ctrl','tail_FK_05_jnt'),('spine_01_bln_jnt','tail_FK_01_ctrl_grp')]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo = True)
toLockAttr = [('tail_FK_01_ctrl'),('tail_FK_02_ctrl'),('tail_FK_03_ctrl'),('tail_FK_04_ctrl'),('tail_FK_05_ctrl')]
for each in toLockAttr:
cmds.setAttr(each+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,6)
# IK tail
list = ['tail_IK_01_jnt','tail_IK_02_jnt','tail_IK_03_jnt','tail_IK_04_jnt','tail_IK_05_jnt','tail_start_length_jnt','tail_end_length_jnt','tail_01_length_jnt','tail_02_length_jnt','tail_03_length_jnt','tail_04_length_jnt','tail_05_length_jnt']
for each in list:
cmds.joint(n=each)
list = [('tail_IK_01_ctrl','tail_IK_01_ctrl_grp'),('tail_IK_02_ctrl','tail_IK_02_ctrl_grp'),('tail_IK_03_ctrl','tail_IK_03_ctrl_grp')]
for each in list:
cmds.curve(n=each[0],d=1, p=[(-2.5, -5, 5),(-2.5, 5, 5),(2.5, 5, 5),(2.5, -5, 5),(2.5, -5, -5),(2.5, 5, -5),(-2.5, 5, -5),(-2.5, -5, -5),(-2.5, -5, 5),(2.5, -5, 5),(2.5, 5, 5),(2.5, 5, -5),(2.5, -5, -5),(-2.5, -5, -5),(-2.5, 5, -5),(-2.5, 5, 5)])
cmds.group(n=each[1])
list = [('tail_01_setup_jnt','tail_IK_01_jnt'),('tail_02_setup_jnt','tail_IK_02_jnt'),('tail_03_setup_jnt','tail_IK_03_jnt'),('tail_04_setup_jnt','tail_IK_04_jnt'),('tail_05_setup_jnt','tail_IK_05_jnt'),('tail_01_setup_jnt','tail_IK_01_ctrl_grp'),('tail_03_setup_jnt','tail_IK_02_ctrl_grp'),('tail_05_setup_jnt','tail_IK_03_ctrl_grp'),('tail_01_setup_jnt','tail_01_length_jnt'),('tail_02_setup_jnt','tail_02_length_jnt'),('tail_03_setup_jnt','tail_03_length_jnt'),('tail_04_setup_jnt','tail_04_length_jnt'),('tail_05_setup_jnt','tail_05_length_jnt'),('tail_01_setup_jnt','tail_start_length_jnt'),('tail_05_setup_jnt','tail_end_length_jnt')]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.curve(d=3, p=[(0, 0, 0),(0, 2.5, 0),(0, 5, 0),(0, 7.5, 0),(0, 10, 0)])
cmds.rename('tail_crv')
nameOfLoc = ['tail_01_loc','tail_02_loc','tail_03_loc','tail_04_loc','tail_05_loc']
for each in nameOfLoc:
cmds.spaceLocator(n=each)
toGetLocPos = [('tail_01_loc.translateY',0),('tail_02_loc.translateY',2.5),('tail_03_loc.translateY',5),('tail_04_loc.translateY',7.5),('tail_05_loc.translateY',10)]
for each in toGetLocPos:
cmds.setAttr(each[0],each[1])
toConnectLoc = [('tail_01_loc.worldPosition[0]','tail_crv.controlPoints[0]'),('tail_02_loc.worldPosition[0]','tail_crv.controlPoints[1]'),('tail_03_loc.worldPosition[0]','tail_crv.controlPoints[2]'),('tail_04_loc.worldPosition[0]','tail_crv.controlPoints[3]'),('tail_05_loc.worldPosition[0]','tail_crv.controlPoints[4]')]
for each in toConnectLoc:
cmds.connectAttr(each[0],each[1])
list = ['tail_setup_grp','tail_jnt_grp','tail_ctrl_grp','tail_IK_ctrl_grp','tail_IK_jnt_grp','tail_IK_setup_jnt_grp']
for each in list:
cmds.group(n=each,em=True)
cmds.orientConstraint('tail_IK_01_ctrl','tail_IK_jnt_grp',mo=True)
list = [('tail_01_setup_jnt','tail_01_loc'),('tail_02_setup_jnt','tail_02_loc'),('tail_03_setup_jnt','tail_03_loc'),('tail_04_setup_jnt','tail_04_loc'),('tail_05_setup_jnt','tail_05_loc')]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('tail_IK_01_ctrl','tail_01_loc'),('tail_IK_01_ctrl','tail_02_loc'),('tail_IK_02_ctrl','tail_02_loc'),('tail_IK_02_ctrl','tail_03_loc'),('tail_IK_02_ctrl','tail_04_loc'),('tail_IK_03_ctrl','tail_04_loc'),('tail_IK_03_ctrl','tail_05_loc'),('tail_IK_01_ctrl','tail_IK_02_ctrl_grp'),('tail_IK_03_ctrl','tail_IK_02_ctrl_grp'),('spine_01_bln_jnt','tail_IK_ctrl_grp')]
for each in list:
cmds.parentConstraint(each[0],each[1],mo=True)
cmds.select('tail_IK_01_jnt','tail_IK_05_jnt','tail_crv')
cmds.ikHandle(n='tail_ikh',sol='ikSplineSolver',ccv=0,pcv =0)
createNode = [('multiplyDivide','tail_stretch_01_mult'),('multiplyDivide','tail_stretch_02_mult')]
for each in createNode:
cmds.shadingNode(each[0],n=each[1],asUtility=1)
toSetNode = [('tail_stretch_01_mult.operation',2),('tail_stretch_01_mult.operation',2)]
for each in toSetNode:
cmds.setAttr(each[0],each[1])
cmds.arclen('tail_crv',ch = True)
toConnectAttr = [('tail_IK_03_ctrl.rotateX','tail_ikh.twist'),('curveInfo2.arcLength','tail_stretch_01_mult.input1X'),('tail_stretch_01_mult.outputX','tail_stretch_02_mult.input1X'),('tail_02_length_jnt.translateX','tail_stretch_02_mult.input2X'),('tail_stretch_02_mult.outputX','tail_IK_02_jnt.translateX'),('tail_stretch_02_mult.outputX','tail_IK_03_jnt.translateX'),('tail_stretch_02_mult.outputX','tail_IK_04_jnt.translateX'),('tail_stretch_02_mult.outputX','tail_IK_05_jnt.translateX'),('tail_end_length_jnt.translateX','tail_stretch_01_mult.input2X')]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
# IKFK tail setup
list = ['tail_bln_01_jnt','tail_bln_02_jnt','tail_bln_03_jnt','tail_bln_04_jnt','tail_bln_05_jnt']
for each in list:
cmds.joint(n=each)
list = [('tail_01_setup_jnt','tail_bln_01_jnt'),('tail_02_setup_jnt','tail_bln_02_jnt'),('tail_03_setup_jnt','tail_bln_03_jnt'),('tail_04_setup_jnt','tail_bln_04_jnt'),('tail_05_setup_jnt','tail_bln_05_jnt')]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('tail_FK_01_jnt','tail_bln_01_jnt'),('tail_FK_02_jnt','tail_bln_02_jnt'),('tail_FK_03_jnt','tail_bln_03_jnt'),('tail_FK_04_jnt','tail_bln_04_jnt'),('tail_FK_05_jnt','tail_bln_05_jnt'),('tail_IK_01_jnt','tail_bln_01_jnt'),('tail_IK_02_jnt','tail_bln_02_jnt'),('tail_IK_03_jnt','tail_bln_03_jnt'),('tail_IK_04_jnt','tail_bln_04_jnt'),('tail_IK_05_jnt','tail_bln_05_jnt')]
for each in list:
cmds.parentConstraint(each[0],each[1],mo=True)
cmds.curve(n='tail_ik_fk_switch',d=1, p=[(1.25, 0, 7.5),(-1.25, 0, 7.5),(-1.25, 0, 1.25),(-7.5, 0, 1.25),(-7.5, 0, -1.25),(-1.25, 0, -1.25),(-1.25, 0, -7.5),(1.25, 0 ,-7.5),(1.25, 0, -1.25),(7.5, 0, -1.25),(7.5, 0, 1.25,),(1.25, 0 ,1.25),(1.25, 0, 7.5)])
cmds.group(n='tail_ik_fk_switch_grp')
cmds.setAttr('tail_ik_fk_switch.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.translateX',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.translateY',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.translateZ',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.rotateX',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.rotateY',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.rotateZ',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr('tail_ik_fk_switch.overrideEnabled' ,True)
cmds.setAttr('tail_ik_fk_switch.overrideColor' ,15)
cmds.parent('tail_ik_fk_switch_grp', 'world_ctrl')
cmds.addAttr('tail_ik_fk_switch',sn='IKFK', min = 0, max=1 ,k=1)
cmds.parentConstraint('tail_bln_01_jnt','tail_ik_fk_switch_grp')
cmds.shadingNode('reverse',n='tail_ik_rev',asUtility=1)
toConnectAttr = [('tail_ik_fk_switch.IKFK','tail_bln_01_jnt_parentConstraint1.tail_FK_01_jntW0'),('tail_ik_fk_switch.IKFK','tail_ik_rev.inputX'),('tail_ik_rev.outputX','tail_bln_01_jnt_parentConstraint1.tail_IK_01_jntW1'),('tail_ik_fk_switch.IKFK','tail_bln_02_jnt_parentConstraint1.tail_FK_02_jntW0'),('tail_ik_rev.outputX','tail_bln_02_jnt_parentConstraint1.tail_IK_02_jntW1'),('tail_ik_fk_switch.IKFK','tail_bln_03_jnt_parentConstraint1.tail_FK_03_jntW0'),('tail_ik_rev.outputX','tail_bln_03_jnt_parentConstraint1.tail_IK_03_jntW1'),('tail_ik_fk_switch.IKFK','tail_bln_04_jnt_parentConstraint1.tail_FK_04_jntW0'),('tail_ik_rev.outputX','tail_bln_04_jnt_parentConstraint1.tail_IK_04_jntW1'),('tail_ik_fk_switch.IKFK','tail_bln_05_jnt_parentConstraint1.tail_FK_05_jntW0'),('tail_ik_rev.outputX','tail_bln_05_jnt_parentConstraint1.tail_IK_05_jntW1'),('tail_ik_rev.outputX','tail_IK_ctrl_grp.visibility'),('tail_ik_fk_switch.IKFK','tail_FK_01_ctrl_grp.visibility')]
for each in toConnectAttr:
cmds.connectAttr(each[0],each[1])
# create tail group
list = [('tail_IK_01_jnt','tail_IK_jnt_grp'),('tail_start_length_jnt','tail_IK_setup_jnt_grp'),('tail_01_length_jnt','tail_IK_setup_jnt_grp'),('tail_IK_01_ctrl_grp','tail_IK_ctrl_grp'),('tail_IK_02_ctrl_grp','tail_IK_ctrl_grp'),('tail_IK_03_ctrl_grp','tail_IK_ctrl_grp'),('tail_IK_ctrl_grp','tail_ctrl_grp'),('tail_FK_01_ctrl_grp','tail_ctrl_grp'),('tail_ik_fk_switch_grp','tail_ctrl_grp'),('tail_FK_01_jnt','tail_jnt_grp'),('tail_IK_01_jnt','tail_jnt_grp'),('tail_bln_01_jnt','tail_jnt_grp'),('tail_IK_setup_jnt_grp','tail_jnt_grp'),('tail_IK_jnt_grp','tail_jnt_grp'),('tail_crv','tail_setup_grp'),('tail_01_loc','tail_setup_grp'),('tail_02_loc','tail_setup_grp'),('tail_03_loc','tail_setup_grp'),('tail_04_loc','tail_setup_grp'),('tail_05_loc','tail_setup_grp'),('tail_IK_jnt_grp','tail_setup_grp'),('tail_IK_setup_jnt_grp','tail_setup_grp'),('tail_ikh','tail_setup_grp')]
for each in list:
cmds.parent(each[0],each[1])
# the command to change the progress bar
cmds.progressBar('QuadrupedProgressBar', edit=True, step=1)
tailSetup()
def neckSetup():
nameOfController = [('neck_01_ctrl','neck_01_ctrl_grp'),('neck_02_ctrl','neck_02_ctrl_grp'),('head_ctrl','head_ctrl_grp')]
for each in nameOfController:
cmds.curve(n=each[0],d=1, p=[(12.5, 12.5, 0),(-12.5, 12.5, 0),(-12.5, -12.5, 0),(12.5, -12.5, 0),(12.5, 12.5, 0)])
cmds.group(n=each[1])
nameOfJoint = [('neck_01_jnt'),('neck_02_jnt'),('head_jnt')]
for each in nameOfJoint:
cmds.joint(n=each)
cmds.parent(w=True)
toGetPos = [('neck_01_setup_jnt','neck_01_ctrl_grp'),('neck_02_setup_jnt','neck_02_ctrl_grp'),('head_setup_jnt','head_ctrl_grp'),('neck_01_setup_jnt','neck_01_jnt'),('neck_02_setup_jnt','neck_02_jnt'),('head_setup_jnt','head_jnt')]
for each in toGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
toParent = [('head_ctrl_grp','neck_02_ctrl'),('neck_02_ctrl_grp','neck_01_ctrl'),('head_jnt','neck_02_jnt'),('neck_02_jnt','neck_01_jnt')]
for each in toParent:
cmds.parent(each[0],each[1])
cmds.makeIdentity('neck_01_jnt',apply=True,translate=True,rotate=True)
toParentCon = [('neck_01_ctrl','neck_01_jnt'),('neck_02_ctrl','neck_02_jnt'),('head_ctrl','head_jnt'),('spine_03_bln_jnt','neck_01_ctrl_grp')]
for each in toParentCon:
cmds.parentConstraint(each[0],each[1],mo = True)
toLockAttr = [('neck_01_ctrl'),('neck_02_ctrl'),('head_ctrl')]
for each in toLockAttr:
cmds.setAttr(each+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,17)
# the command to change the progress bar
cmds.progressBar('QuadrupedProgressBar', edit=True, step=1)
neckSetup()
def leftRightIKsetup(side):
nameOfJoint = [('%s_IK_leg_01_jnt'%(side)),('%s_IK_leg_02_jnt'%(side)),('%s_IK_leg_03_jnt'%(side)),('%s_IK_leg_04_jnt'%(side)),('%s_IK_arm_01_jnt'%(side)),('%s_IK_arm_02_jnt'%(side)),('%s_IK_arm_03_jnt'%(side)),('%s_IK_arm_04_jnt'%(side))]
for each in nameOfJoint:
cmds.joint(n=each)
list = [('%s_IK_leg_roll_ctrl'%(side),'%s_IK_leg_roll_ctrl_grp'%(side)),('%s_IK_arm_roll_ctrl'%(side),'%s_IK_arm_roll_ctrl_grp'%(side))]
for each in list:
cmds.curve(d=1, p=[(0.5, 0.5, 0.5),(-0.5, 0.5, 0.5),(-1, 0, 0.5),(-1, 0, 1),(-1.5, -0.5, 0),(-1, 0, -1),(-1, 0, -0.5),(-0.5, 0.5, -0.5),(0.5, 0.5, -0.5),(1, 0, -0.5),(1, 0, -1),(1.5, -0.5, 0),(1, 0, 1),(1, 0, 1),(1, 0, 0.5),(0.5, 0.5, 0.5)],n=each[0])
cmds.group(n=each[1])
nameOfIKfootController = [('%s_IK_leg_ctrl'%(side),'%s_IK_leg_ctrl_grp'%(side)),('%s_IK_arm_ctrl'%(side),'%s_IK_arm_ctrl_grp'%(side))]
for each in nameOfIKfootController:
cmds.curve(n=each[0],d=1, p=[(-5, -5, 5),(-5, 5, 5),(5, 5, 5),(5, -5, 5),(5, -5, -5),(5, 5, -5),(-5, 5, -5),(-5, -5, -5),(-5, -5, 5),(5, -5, 5),(5, 5, 5),(5, 5, -5),(5, -5, -5),(-5, -5, -5),(-5, 5, -5),(-5, 5, 5)])
cmds.group(n=each[1])
nameOfPVcontroller = [('%s_leg_PV_ctrl'%(side),'%s_leg_PV_ctrl_grp'%(side)),('%s_arm_PV_ctrl'%(side),'%s_arm_PV_ctrl_grp'%(side))]
for each in nameOfPVcontroller:
cmds.curve(n=each[0],d = 1, p = [(0, 5, 0), (0, 0, 5), (0, -5, 0), (0, 0, -5), (0, 5, 0), (5, 0, 0), (0, -5, 0), (-5, 0, 0), (0, 0, 5), (5, 0, 0), (0, 0, -5), (-5, 0, 0), (0, 5, 0)])
cmds.group(n=each[1])
toGetControllerPos = [('%s_leg_04_setup_jnt'%(side),'%s_IK_leg_ctrl_grp'%(side)),('%s_arm_04_setup_jnt'%(side),'%s_IK_arm_ctrl_grp'%(side)),('%s_leg_PV_setup_loc'%(side),'%s_leg_PV_ctrl_grp'%(side)),('%s_arm_PV_setup_loc'%(side),'%s_arm_PV_ctrl_grp'%(side)),('%s_leg_04_setup_jnt'%(side),'%s_IK_leg_roll_ctrl_grp'%(side)),('%s_arm_04_setup_jnt'%(side),'%s_IK_arm_roll_ctrl_grp'%(side))]
for each in toGetControllerPos:
forDel = cmds.pointConstraint(each[0],each[1],mo = False)
cmds.delete(forDel)
toGetJointPos = [('%s_leg_01_setup_jnt'%(side),'%s_IK_leg_01_jnt'%(side)),('%s_leg_02_setup_jnt'%(side),'%s_IK_leg_02_jnt'%(side)),('%s_leg_03_setup_jnt'%(side),'%s_IK_leg_03_jnt'%(side)),('%s_leg_04_setup_jnt'%(side),'%s_IK_leg_04_jnt'%(side)),('%s_arm_01_setup_jnt'%(side),'%s_IK_arm_01_jnt'%(side)),('%s_arm_02_setup_jnt'%(side),'%s_IK_arm_02_jnt'%(side)),('%s_arm_03_setup_jnt'%(side),'%s_IK_arm_03_jnt'%(side)),('%s_arm_04_setup_jnt'%(side),'%s_IK_arm_04_jnt'%(side))]
for each in toGetJointPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('%s_IK_leg_roll_ctrl'%(side)),('%s_IK_arm_roll_ctrl'%(side))]
for each in list:
cmds.setAttr (each+'.translateX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.translateY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.translateZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,6)
toLockPVcontroller = [('%s_leg_PV_ctrl'%(side)),('%s_arm_PV_ctrl'%(side))]
for each in toLockPVcontroller:
cmds.setAttr (each+'.rotateX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.rotateY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.rotateZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,6)
cmds.addAttr (each,sn='follow', min = 0, max=1 ,k=1)
toLockIKcontroller = [('%s_IK_leg_ctrl'%(side)),('%s_IK_arm_ctrl'%(side))]
for each in toLockIKcontroller:
cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
cmds.setAttr (each+'.overrideEnabled' ,True)
cmds.setAttr (each+'.overrideColor' ,6)
cmds.addAttr (each,sn='stretch',at = 'bool',k=1)
cmds.addAttr (each,sn='heelLift' ,k=1)
cmds.addAttr (each,sn='toeLift' ,k=1)
cmds.addAttr (each,sn='footRock' ,k=1)
nameOfLoc = [('%s_leg_heel_loc'%(side)),('%s_leg_toe_lift_loc'%(side)),('%s_leg_roll_out_loc'%(side)),('%s_leg_roll_in_loc'%(side)),('%s_arm_heel_loc'%(side)),('%s_arm_toe_lift_loc'%(side)),('%s_arm_roll_out_loc'%(side)),('%s_arm_roll_in_loc'%(side)),('%s_leg_PV_aim_loc'%(side)),('%s_leg_PV_aim_up_loc'%(side)),('%s_leg_PV_aim_base_loc'%(side)),('%s_leg_PV_aim_world_loc'%(side)),('%s_arm_PV_aim_loc'%(side)),('%s_arm_PV_aim_up_loc'%(side)),('%s_arm_PV_aim_base_loc'%(side)),('%s_arm_PV_aim_world_loc'%(side))]
for each in nameOfLoc:
cmds.spaceLocator(n=each)
toGetGrp = [('%s_IK_leg_loc_grp'%(side)),('%s_IK_arm_loc_grp'%(side)),('%s_IK_leg_jnt_grp'%(side)),('%s_IK_arm_jnt_grp'%(side)),('%s_IK_arm_PV_loc_grp'%(side)),('%s_IK_leg_PV_loc_grp'%(side)),('%s_IK_leg_grp'%(side)),('%s_IK_arm_grp'%(side))]
for each in toGetGrp:
cmds.group(n=each,em=True)
toGetPos = [('%s_leg_05_setup_jnt'%(side),'%s_leg_toe_lift_loc'%(side)),('%s_leg_heel_setup_jnt'%(side),'%s_leg_heel_loc'%(side)),('%s_leg_rock_out_setup_jnt'%(side),'%s_leg_roll_out_loc'%(side)),('%s_leg_rock_in_setup_jnt'%(side),'%s_leg_roll_in_loc'%(side)),('%s_arm_05_setup_jnt'%(side),'%s_arm_toe_lift_loc'%(side)),('%s_arm_heel_setup_jnt'%(side),'%s_arm_heel_loc'%(side)),('%s_arm_rock_out_setup_jnt'%(side),'%s_arm_roll_out_loc'%(side)),('%s_arm_rock_in_setup_jnt'%(side),'%s_arm_roll_in_loc'%(side)),('%s_leg_04_setup_jnt'%(side),'%s_IK_leg_loc_grp'%(side)),('%s_arm_04_setup_jnt'%(side),'%s_IK_arm_loc_grp'%(side)),('spine_01_bln_jnt','%s_leg_PV_aim_up_loc'%(side)),('%s_IK_leg_01_jnt'%(side),'%s_leg_PV_aim_base_loc'%(side)),('%s_IK_leg_04_jnt'%(side),'%s_leg_PV_aim_loc'%(side)),('%s_leg_PV_ctrl'%(side),'%s_leg_PV_aim_world_loc'%(side)),('spine_03_bln_jnt','%s_arm_PV_aim_up_loc'%(side)),('%s_IK_arm_01_jnt'%(side),'%s_arm_PV_aim_base_loc'%(side)),('%s_IK_arm_04_jnt'%(side),'%s_arm_PV_aim_loc'%(side)),('%s_arm_PV_ctrl'%(side),'%s_arm_PV_aim_world_loc'%(side))]
for each in toGetPos:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('%s_arm_heel_loc'%(side),'%s_IK_arm_loc_grp'%(side)),('%s_leg_heel_loc'%(side),'%s_IK_leg_loc_grp'%(side))]
for each in list:
forDel = cmds.orientConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
cmds.parent('%s_IK_leg_01_jnt'%(side),'%s_IK_leg_jnt_grp'%(side))
cmds.parent('%s_IK_arm_01_jnt'%(side),'%s_IK_arm_jnt_grp'%(side))
cmds.makeIdentity('%s_IK_leg_01_jnt'%(side),'%s_IK_arm_01_jnt'%(side),apply=True,translate=True,rotate=True)
cmds.addAttr ('%s_IK_leg_ctrl'%(side), at = 'enum', keyable=True, en = 'string1:string2:', ln='follow')
cmds.addAttr ('%s_IK_leg_ctrl'%(side)+'.follow', e=True, en = 'world:pelvis:')
cmds.addAttr ('%s_IK_arm_ctrl'%(side), at = 'enum', keyable=True, en = 'string1:string2:', ln='follow')
cmds.addAttr ('%s_IK_arm_ctrl'%(side)+'.follow', e=True, en = 'world:shoulder:')
cmds.ikHandle(n='%s_leg_upr_ikh'%(side), sj='%s_IK_leg_01_jnt'%(side), ee='%s_IK_leg_03_jnt'%(side),sol='ikRPsolver')
cmds.ikHandle(n='%s_leg_lwr_ikh'%(side), sj='%s_IK_leg_03_jnt'%(side), ee='%s_IK_leg_04_jnt'%(side),sol='ikRPsolver')
cmds.ikHandle(n='%s_arm_upr_ikh'%(side), sj='%s_IK_arm_01_jnt'%(side), ee='%s_IK_arm_03_jnt'%(side),sol='ikRPsolver')
cmds.ikHandle(n='%s_arm_lwr_ikh'%(side), sj='%s_IK_arm_03_jnt'%(side), ee='%s_IK_arm_04_jnt'%(side),sol='ikRPsolver')
cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_IK_arm_01_jnt'%(side),mo = True)
cmds.poleVectorConstraint('%s_arm_PV_ctrl'%(side),'%s_arm_upr_ikh'%(side))
cmds.poleVectorConstraint('%s_leg_PV_ctrl'%(side),'%s_leg_upr_ikh'%(side))
from maya import cmds, OpenMaya
def ui():
if cmds.workspaceControl("Rig Tools",ex = True):
cmds.deleteUI("Rig Tools")
myWin = cmds.workspaceControl("Rig Tools")
myWin = cmds.tabLayout()
cmds.scrollLayout(': : : : : : : : : : : : : : : : : : : : : : : : Tools : : : : : : : : : : : : : : : : : : : : : : : :',hst=16,vst=16,w=340)
cmds.columnLayout(adj = True)
cmds.showWindow("Rig Tools")
cmds.frameLayout(label='Rig Help', collapsable=True, collapse=True,w=330)
cmds.rowColumnLayout(nc=1)
cmds.separator(vis=False)
cmds.text('Help to create locator, group, joint, parent and scale constraint.',al='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=5)
cmds.button('1',vis=False,w=20)
cmds.button(label='Create Locators', command=create_locator_on_selection,w=139)
cmds.button('2',vis=False)
cmds.button(label="Create Group", command=create_group_on_selection,w=139)
cmds.button('3',vis=False)
cmds.separator(h=15,vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.button('4',vis=False)
cmds.button("Create Joint",c = "jnt()")
cmds.button('6',vis=False)
cmds.button("Parent Scale Constraint",c="parentscale()")
cmds.setParent('..')
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
#Controller tab
cmds.frameLayout(label='Controller', collapsable=True, collapse=True)
cmds.rowColumnLayout(nr=4)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.frameLayout(label='Shape', collapsable=True, collapse=True,w=310)
cmds.rowColumnLayout( nc=1 )
cmds.rowColumnLayout(nc=1)
cmds.separator(vis=False)
cmds.text('Help to create different type of controller.',al='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=5)
cmds.button(w=20,vis=False)
cmds.button("cube",command=create_cube_on_selection,w = 130)
cmds.button(w=20,vis=False)
cmds.button("circle",command=create_circle_on_selection,w = 130)
cmds.button(w=20,vis=False)
cmds.separator(h=15,vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.button(w=20,vis=False)
cmds.button("square",command=create_square_on_selection)
cmds.button(w=20,vis=False)
cmds.button("cross",command=create_x_on_selection)
cmds.button(w=20,vis=False)
cmds.separator(h=15,vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.button(w=20,vis=False)
cmds.button("pyramid",command=create_pyramid_on_selection)
cmds.button(w=20,vis=False)
cmds.button("trianglecube",command=create_trianglecube_on_selection)
cmds.setParent('..')
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
#Color tab
cmds.frameLayout(label='Color', collapsable=True, collapse=True,w=310)
cmds.rowColumnLayout(nc=1)
cmds.separator(vis=False)
cmds.text('Help to change color of selected controller.',align='left')
cmds.separator(h=10,vis=False)
cmds.gridLayout(nr=1,nc=10,cellWidthHeight=(31,20))
backgroundColor = [((0.348,0.057,0.064),"DarkRed()"),((0.081,0.115,0.404),"darkBlue()"),((0.100,0.031,3.658),"blue()"),((0.052,0.013,0.114),"black()"),((0.531,0.091,0.768),"purple()"),((0.288,0.145,0.088),"brown()"),((0.096,0.058,0.049),"darkBrown()"),((0.333,0.089,0.016),"darkOrange()"),((1.240,0.106,0.018),"red()"),((0.294,5.113,0.000),"lightGreen()"),((8.423,2.724,0.000),"yellow()"),((0.423,1.213,8.659),"lightBlue()"),((2.320,0.606,0.574),"pink()"),((1.094,0.572,0.285),"lightOrange()"),((0.175,0.402,0.174),"darkGreen()"),((0.443,0.469,0.104),"darkYellow()"),((0.210,0.448,0.198),"green()"),((0.350,0.109,0.219),"darkPink()"),((0.208,0.096,0.447),"darkPurple()"),((0.147,0.211,0.456),"navy()")]
for each in backgroundColor:
cmds.iconTextButton(bgc=each[0],c=each[1])
cmds.setParent('..')
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
#Lock attributes tab
cmds.frameLayout(label='Attributes Lock / Unlock', collapsable=True, collapse=True,w=310)
cmds.rowColumnLayout(nc=1)
cmds.separator(vis=False)
cmds.text('Help to lock or unlock attributes of selected controller.',align='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=5)
cmds.button('1',vis=False,w=17)
cmds.button("lock / unlock translate",c = "LockTranslate()",w=134)
cmds.button('2',vis=False,w=17)
cmds.button("lock / unlock rotate",c = "LockRotate()",w=134)
cmds.button('3',vis=False,w=17)
cmds.separator(h=15,vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.button('4',vis=False,w=17)
cmds.button("lock / unlock scale",c = "LockScale()")
cmds.button('5',vis=False,w=17)
cmds.button("lock / unlock visibility",c = "LockVisibility()")
cmds.setParent('..')
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
#Mirror controller tab
cmds.frameLayout(label='Mirror', collapsable=True, collapse=True,w=310)
cmds.rowColumnLayout(nc=1)
cmds.separator(vis=False)
cmds.text('Help to mirror controller.',align='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=7)
cmds.button(w=10,vis=False)
cmds.button("Left To Right",c = "MirrorFromLeft()",w=90)
cmds.button(w=10,vis=False)
cmds.button("Right To Left",c = "MirrorFromRight()",w=90)
cmds.button(w=10,vis=False)
cmds.button("Selected",c = "MirrorFromSelected()",w=90)
cmds.button(w=10,vis=False)
cmds.separator(h=5,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
#Connect attributes tab
cmds.frameLayout(label='Connect Attr', collapsable=True, collapse=True)
cmds.rowColumnLayout(nc=1)
cmds.separator(vis=False)
cmds.text('Help to connect atrribute of selected object.',align='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=7)
cmds.button(w=10,vis=False)
cmds.button("Connect Translate",c = "ConnectTanslate()",w=96)
cmds.button(w=10,vis=False)
cmds.button("Connect Rotate",c = "ConnectRotate()",w=96)
cmds.button(w=10,vis=False)
cmds.button("Connect Scale",c = "ConnectScale()",w=96)
cmds.button(w=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
#follicle tab
cmds.frameLayout(label='Create Follicle', collapsable=True, collapse=True)
cmds.rowColumnLayout(nc=1)
cmds.separator(vis=False)
cmds.text('Select a plane and locators then click "Create Follicles".',align='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=3)
cmds.button(w=63,vis=False)
cmds.button("Create Follicles",c = 'createFollicles()',w=200)
cmds.button(w=63,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.frameLayout(label='Rename', collapsable=True, collapse=True)
cmds.rowColumnLayout(nr=5)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
#rename tab#
cmds.frameLayout(label='Search And Replace', collapsable=True, collapse=True,w=310)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=5,vis=False)
cmds.text('Help to search and replace name of selected object.',al='left')
cmds.rowColumnLayout(nc=4)
cmds.separator(h=10,vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.text(label='Search:',w=70,al='left')
cmds.button(w=20,vis=False)
cmds.textField('search_field',w=190)
cmds.button(w=20,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.text(label='Replace:',al='left')
cmds.button(w=20,vis=False)
cmds.textField('replace_field')
cmds.button(vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.button(vis=False)
cmds.button(w=20,vis=False)
cmds.button(label='Rename', command='search_replace()')
cmds.button(vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
# Prefix UI elements
cmds.frameLayout(label='Add Prefix', collapsable=True, collapse=True)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=5,vis=False)
cmds.text('Help to add prefix name of selected object.',al='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=4)
cmds.text(label='Prefix:',w=70,al='left')
cmds.button(w=20,vis=False)
cmds.textField('prefix_field',w=190)
cmds.button(w=20,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.button(vis=False)
cmds.button(w=20,vis=False)
cmds.button(label='Add Prefix',c='addPrefix()')
cmds.button(w=20,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
# Suffix UI elements
cmds.frameLayout(label='Add Suffix', collapsable=True, collapse=True)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=5,vis=False)
cmds.text('Help to add suffix name of selected object.',al='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=4)
cmds.text(label='Suffix:',w=70,al = 'left')
cmds.button(w=20,vis=False)
cmds.textField('suffix_field',w=190)
cmds.button(w=20,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.separator(vis=False)
cmds.button(vis=False)
cmds.button(w=20,vis=False)
cmds.button(label='Add Suffix',c='addSuffix()')
cmds.button(w=20,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
#add suffix name#
cmds.frameLayout(label='Add Prefix or Suffix Name', collapsable=True, collapse=True)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=5,vis=False)
cmds.text('Help to add suffix name of selected object.',al='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=7)
cmds.button(w=10,vis=False)
cmds.button(label='_jnt',c='addSuffixJnt()',w=88)
cmds.button(w=10,vis=False)
cmds.button(label='_grp',c='addSuffixGrp()',w=88)
cmds.button(w=10,vis=False)
cmds.button(label='_ctrl',c='addSuffixCtrl()',w=88)
cmds.button(w=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
#add number suffix name#
cmds.frameLayout(label='Add Number Suffix Name', collapsable=True, collapse=True)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=5,vis=False)
cmds.text('Help to add number suffix name of selected object.',al='left')
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=4)
cmds.text(label="Start number:",al='left')
cmds.button(w=20,vis=False)
cmds.intField('startNumField',value=1, minValue=1,w=190)
cmds.button(w=20,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.text(label="Increment:",al='left')
cmds.button(w=20,vis=False)
cmds.intField('incrementField',value=1, minValue=1)
cmds.button(w=20,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.button(w=20,vis=False)
cmds.button(w=20,vis=False)
cmds.button(label="Add Suffix", command='add_suffix()')
cmds.button(w=20,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
#Auto rig tab
cmds.frameLayout(label='Auto Rig', collapsable=True, collapse=True)
cmds.rowColumnLayout(nr=4)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.frameLayout(label='Biped', collapsable=True, collapse=True,w=310)
cmds.rowColumnLayout( nc=1 )
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=3)
cmds.text('Biped Setup:',al='left')
cmds.button("SetupJoint",c = "setupjoint()",w = 150)
cmds.button(w = 150,vis=0)
cmds.separator(h=25,w=100)
cmds.separator()
cmds.separator()
cmds.text('Mirror Setup:',al='left')
cmds.button("MirrorSetupJoint",c = "mirrorSetupjoint()",w = 90)
cmds.button(w = 150,vis=0)
cmds.separator(h=25)
cmds.separator()
cmds.separator()
cmds.text('Build Setup:',al='left')
cmds.button("BuildSetup",c = "buildsetup()",w = 90)
cmds.button(w = 150,vis=0)
cmds.separator(h=25)
cmds.separator()
cmds.separator()
cmds.text('Bendy Setup:',al='left')
cmds.checkBox('bendyArm', label='BendyArm')
cmds.button(w = 150,vis=0)
cmds.button(w = 150,vis=0)
cmds.checkBox('bendyLeg', label='BendyLeg')
cmds.separator(vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.frameLayout(label='Extra Rig', collapsable=True, collapse=True)
cmds.rowColumnLayout(nc=1)
cmds.rowColumnLayout(nr=3)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.frameLayout(label='IK Spring Rig', collapsable=True, collapse=True,w=285)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=4)
cmds.text('IK Spring Setup:',al='left')
cmds.button(w=40,vis=False)
cmds.button("BuildIKSpringSetupJoint",c = "BuildIKSpringSetupJoint()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Build Setup:',al='left')
cmds.button(w=40,vis=False)
cmds.button("BuildIKSpringSetupRig",c = "BuildIKSpringSetupRig()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.frameLayout(label='Tail Rig', collapsable=True, collapse=True)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout( nc=4 )
cmds.text('Tail Setup:',al='left')
cmds.button(w=60,vis=False)
cmds.button("BuildTailSetupJoint",c = "BuildTailSetupJoint()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Build Setup:',al='left')
cmds.button(w=60,vis=False)
cmds.button("BuildTailSetupRig",c = "BuildTailSetupRig()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.frameLayout(label='Motion Path Rig', collapsable=True, collapse=True)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout(nc=3)
cmds.text('Path Setup:',al='left')
cmds.button(w=60,vis=False)
cmds.button("MotionPathSetupLocator",c = "createLocator()",w = 150)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Joints Setup:',al='left')
cmds.button(w=60,vis=False)
cmds.intField('numbersOfLocator',min=1,value=1)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Build Setup:',al='left')
cmds.button(w=60,vis=False)
cmds.button("BuildMotionPathSetupRig",c = "createMotionPath()",w = 150)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.frameLayout(label='Quadruped Rig', collapsable=True, collapse=True)
cmds.rowColumnLayout( nc=1 )
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout( nc=4 )
cmds.text('Quadruped Setup:',al='left')
cmds.button(w=60,vis=False)
cmds.button("BuildQuadrupedSetupJoint",c = "BuildQuadrupedSetupJoint()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Mirror Setup:',al='left')
cmds.button(w=60,vis=False)
cmds.button("MirrorQuadrupedSetupJoint",c = "MirrorQuadrupedSetupJoint()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Build Setup:',al='left')
cmds.button(w=60,vis=False)
cmds.button("BuildQuadrupedRig",c = "BuildQuadrupedSetupRig()",w = 150)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.frameLayout(label='Facial', collapsable=True, collapse=True,w=310)
cmds.rowColumnLayout(nc=1)
cmds.rowColumnLayout(nr=3)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.button(w=10,vis=0)
cmds.frameLayout(label='Eyelid', collapsable=True, collapse=True,w=285)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout( nc=4 )
cmds.text('Eye Locator Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button("Eye Placement",c = "create_display_eye()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Eye Upper Lid Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button("Upper Eyelid Vertex",c = "store_vertex_ids()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Eye Lower Lid Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button("Lower Eyelid Vertex",c = "store_lower_vertex_ids()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Eyelid Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button("Build Eyelid",c = "create_joints_and_parent_joints()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.text('Eyelid Curve Reverse:',al='left')
cmds.button(w=20,vis=False)
cmds.checkBox('reversecrv', label='Reverse Curve')
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Eyelid Rename:',al='left')
cmds.button(w=20,vis=False)
cmds.button("Left Eyelid",c = "rename_left()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=10,vis=False)
cmds.separator(h=20,vis=False)
cmds.separator(h=20,vis=False)
cmds.button("Right Eyelid",c = "rename_right()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=10,vis=False)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.frameLayout(label='Lip', collapsable=True, collapse=True,w=285)
global head_joint_field
cmds.rowColumnLayout(nc=1)
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout( nc=4 )
cmds.text('Head Joint Name:',al='left')
cmds.button(w=5,vis=False)
head_joint_field = cmds.textField(placeholderText="Enter Head Joint Name")
cmds.button(w=20,vis=False)
cmds.button(w=20,vis=False)
cmds.button(w=20,vis=False)
cmds.button(label="Store Selected", command=store_head_joint_name)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Lip Upper Curve Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button("Upper Lip Edge",c = "create_upper_lip_edge()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Lip Lower Curve Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button("Lower Lip Edge",c = "create_lower_lip_edge()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Lip Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button("Build Lip Setup",c = "build_lip_setup()",w = 150)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.setParent('..')
cmds.setParent('..')
cmds.setParent('..')
cmds.frameLayout(label='Eyebrow and Cheek', collapsable=True, collapse=True,w=285)
cmds.rowColumnLayout(nc=1)
cmds.rowColumnLayout(nc=1)
cmds.separator(h=10,vis=False)
cmds.rowColumnLayout( nc=4 )
cmds.text('Inner Eyebrow Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button(label="Place Selected", command=build_inner_eyebrow_locator,w = 140)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Middle Eyebrow Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button(label="Place Selected", command=build_middle_eyebrow_locator,w = 140)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Outer Eyebrow Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button(label="Place Selected", command=build_outer_eyebrow_locator,w = 140)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Cheek Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button(label="Place Selected", command=build_cheek_locator,w = 140)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.text('Build Setup:',al='left')
cmds.button(w=20,vis=False)
cmds.button(label="Build All", command=build_all,w = 140)
cmds.button(w=5,vis=False)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
cmds.separator(h=20)
#locator function#
def create_locator(position):
locator = cmds.spaceLocator()[0]
cmds.move(position[0], position[1], position[2], locator)
return locator
def create_locator_with_values(selected_object):
position = cmds.xform(selected_object, query=True, worldSpace=True, translation=True)
rotation = cmds.xform(selected_object, query=True, worldSpace=True, rotation=True)
locator_name = '{}_loc'.format(selected_object)
locator = create_locator(position)
cmds.rotate(rotation[0], rotation[1], rotation[2], locator)
cmds.rename(locator, locator_name)
return locator
def create_locator_on_selection(*args):
selected_objects = cmds.ls(selection=True)
if selected_objects:
for selected_object in selected_objects:
create_locator_with_values(selected_object)
else:
create_locator([0, 0, 0])
#group function#
def create_group_with_values(selected_object=None):
group_name = selected_object + "_grp" if selected_object else "group"
if cmds.objExists(group_name):
group_name = cmds.rename(group_name, "{}_1".format(group_name))
cmds.group(empty=True, name=group_name)
if selected_object:
position = cmds.xform(selected_object, query=True, worldSpace=True, translation=True)
rotation = cmds.xform(selected_object, query=True, worldSpace=True, rotation=True)
cmds.move(position[0], position[1], position[2], group_name)
cmds.rotate(rotation[0], rotation[1], rotation[2], group_name)
return group_name
def create_group_on_selection(*args):
selected_objects = cmds.ls(selection=True)
if selected_objects:
for selected_object in selected_objects:
create_group_with_values(selected_object)
else:
cmds.group(em=True)
#joint function#
def jnt():
selected = cmds.ls(sl = True)
if selected:
for each in selected:
cmds.select(each)
newJoint = cmds.joint(n=each+'_jnt')
cmds.parent(newJoint,w = True)
else:
cmds.joint()
#parentscale function#
def parentscale():
lst = cmds.ls(sl = True)
cmds.parentConstraint(lst,mo = True)
cmds.scaleConstraint(lst,mo = True)
#cube function#
def create_group_with_cube_values(selected_object=None):
group_name = selected_object + "_ctrl_grp" if selected_object else "group"
if cmds.objExists(group_name):
group_name = cmds.rename(group_name, "{}_1".format(group_name))
group = cmds.group(empty=True, name=group_name)
cube = cmds.curve(d=1, p=[(-0.5, -0.5, 0.5),(-0.5, 0.5, 0.5),(0.5, 0.5, 0.5),(0.5, -0.5, 0.5),(0.5, -0.5, -0.5),(0.5, 0.5, -0.5),(-0.5, 0.5, -0.5),(-0.5, -0.5, -0.5),(-0.5, -0.5, 0.5),(0.5, -0.5, 0.5),(0.5, 0.5, 0.5),(0.5, 0.5, -0.5),(0.5, -0.5, -0.5),(-0.5, -0.5, -0.5),(-0.5, 0.5, -0.5),(-0.5, 0.5, 0.5)])
cmds.parent(cube,group)
cmds.rename(cube,selected_object + '_ctrl')
if selected_object:
position = cmds.xform(selected_object, query=True, worldSpace=True, translation=True)
rotation = cmds.xform(selected_object, query=True, worldSpace=True, rotation=True)
cmds.move(position[0], position[1], position[2], group_name)
cmds.rotate(rotation[0], rotation[1], rotation[2], group_name)
return group_name
def create_cube_on_selection(*args):
selected_objects = cmds.ls(selection=True)
if selected_objects:
for selected_object in selected_objects:
create_group_with_cube_values(selected_object)
else:
cmds.curve(d=1, p=[(-0.5, -0.5, 0.5),(-0.5, 0.5, 0.5),(0.5, 0.5, 0.5),(0.5, -0.5, 0.5),(0.5, -0.5, -0.5),(0.5, 0.5, -0.5),(-0.5, 0.5, -0.5),(-0.5, -0.5, -0.5),(-0.5, -0.5, 0.5),(0.5, -0.5, 0.5),(0.5, 0.5, 0.5),(0.5, 0.5, -0.5),(0.5, -0.5, -0.5),(-0.5, -0.5, -0.5),(-0.5, 0.5, -0.5),(-0.5, 0.5, 0.5)])
cmds.group()
#circle function#
def create_group_with_circle_values(selected_object=None):
group_name = selected_object + "_ctrl_grp" if selected_object else "group"
if cmds.objExists(group_name):
group_name = cmds.rename(group_name, "{}_1".format(group_name))
group = cmds.group(empty=True, name=group_name)
curvecircle = cmds.circle()[0]
cmds.delete(curvecircle,constructionHistory = True)
cmds.parent(curvecircle,group)
cmds.rename(curvecircle,selected_object + '_ctrl')
if selected_object:
position = cmds.xform(selected_object, query=True, worldSpace=True, translation=True)
rotation = cmds.xform(selected_object, query=True, worldSpace=True, rotation=True)
cmds.move(position[0], position[1], position[2], group_name)
cmds.rotate(rotation[0], rotation[1], rotation[2], group_name)
return group_name
def create_circle_on_selection(*args):
selected_objects = cmds.ls(selection=True)
if selected_objects:
for selected_object in selected_objects:
create_group_with_circle_values(selected_object)
else:
ctrl = cmds.circle()
cmds.group()
cmds.delete(ctrl,constructionHistory = True)
#square function#
def create_group_with_square_values(selected_object=None):
group_name = selected_object + "_ctrl_grp" if selected_object else "group"
if cmds.objExists(group_name):
group_name = cmds.rename(group_name, "{}_1".format(group_name))
group = cmds.group(empty=True, name=group_name)
square = cmds.curve(d=1, p=[(0.5, 0, 0.5),(-0.5, 0, 0.5),(-0.5, 0, -0.5),(0.5, 0, -0.5),(0.5, 0, 0.5)])
cmds.parent(square,group)
cmds.rename(square,selected_object + '_ctrl')
if selected_object:
position = cmds.xform(selected_object, query=True, worldSpace=True, translation=True)
rotation = cmds.xform(selected_object, query=True, worldSpace=True, rotation=True)
cmds.move(position[0], position[1], position[2], group_name)
cmds.rotate(rotation[0], rotation[1], rotation[2], group_name)
return group_name
def create_square_on_selection(*args):
selected_objects = cmds.ls(selection=True)
if selected_objects:
for selected_object in selected_objects:
create_group_with_square_values(selected_object)
else:
cmds.curve(d=1, p=[(0.5, 0, 0.5),(-0.5, 0, 0.5),(-0.5, 0, -0.5),(0.5, 0, -0.5),(0.5, 0, 0.5)])
cmds.group()
#X function#
def create_group_with_x_values(selected_object=None):
group_name = selected_object + "_ctrl_grp" if selected_object else "group"
if cmds.objExists(group_name):
group_name = cmds.rename(group_name, "{}_1".format(group_name))
group = cmds.group(empty=True, name=group_name)
x = cmds.curve(d=1, p=[(0.25, 0, 1.5),(-0.25, 0, 1.5),(-0.25, 0, 0.25),(-1.5, 0, 0.25),(-1.5, 0, -0.25),(-0.25, 0, -0.25),(-0.25, 0, -1.5),(0.25, 0 ,-1.5),(0.25, 0, -0.25),(1.5, 0, -0.25),(1.5, 0, 0.25,),(0.25, 0 ,0.25),(0.25, 0, 1.5)])
cmds.parent(x,group)
cmds.rename(x,selected_object + '_ctrl')
if selected_object:
position = cmds.xform(selected_object, query=True, worldSpace=True, translation=True)
rotation = cmds.xform(selected_object, query=True, worldSpace=True, rotation=True)
cmds.move(position[0], position[1], position[2], group_name)
cmds.rotate(rotation[0], rotation[1], rotation[2], group_name)
return group_name
def create_x_on_selection(*args):
selected_objects = cmds.ls(selection=True)
if selected_objects:
for selected_object in selected_objects:
create_group_with_x_values(selected_object)
else:
cmds.curve(d=1, p=[(0.25, 0, 1.5),(-0.25, 0, 1.5),(-0.25, 0, 0.25),(-1.5, 0, 0.25),(-1.5, 0, -0.25),(-0.25, 0, -0.25),(-0.25, 0, -1.5),(0.25, 0 ,-1.5),(0.25, 0, -0.25),(1.5, 0, -0.25),(1.5, 0, 0.25,),(0.25, 0 ,0.25),(0.25, 0, 1.5)])
cmds.group()
#pyramid function#
def create_group_with_pyramid_values(selected_object=None):
group_name = selected_object + "_ctrl_grp" if selected_object else "group"
if cmds.objExists(group_name):
group_name = cmds.rename(group_name, "{}_1".format(group_name))
group = cmds.group(empty=True, name=group_name)
pyramid = cmds.curve(d=1, p=[(1, -0.75, 1), (0, 0.5, 0), (-1, -0.75, 1), (1, -0.75, 1), (0, 0.5, 0), (-1, -0.75, -1), (1, -0.75, -1), (0, 0.5, 0), (1, -0.75, -1), (1, -0.75, 1), (0, 0.5, 0), (-1, -0.75, 1), (-1, -0.75, -1)])
cmds.parent(pyramid,group)
cmds.rename(pyramid,selected_object + '_ctrl')
if selected_object:
position = cmds.xform(selected_object, query=True, worldSpace=True, translation=True)
rotation = cmds.xform(selected_object, query=True, worldSpace=True, rotation=True)
cmds.move(position[0], position[1], position[2], group_name)
cmds.rotate(rotation[0], rotation[1], rotation[2], group_name)
return group_name
def create_pyramid_on_selection(*args):
selected_objects = cmds.ls(selection=True)
if selected_objects:
for selected_object in selected_objects:
create_group_with_pyramid_values(selected_object)
else:
cmds.curve(d=1, p=[(1, -0.75, 1), (0, 0.5, 0), (-1, -0.75, 1), (1, -0.75, 1), (0, 0.5, 0), (-1, -0.75, -1), (1, -0.75, -1), (0, 0.5, 0), (1, -0.75, -1), (1, -0.75, 1), (0, 0.5, 0), (-1, -0.75, 1), (-1, -0.75, -1)])
cmds.group()
#trianglecube function#
def create_group_with_trianglecube_values(selected_object=None):
group_name = selected_object + "_ctrl_grp" if selected_object else "group"
if cmds.objExists(group_name):
group_name = cmds.rename(group_name, "{}_1".format(group_name))
group = cmds.group(empty=True, name=group_name)
trianglecube = cmds.curve(d = 1, p = [(0, 0.5, 0), (0, 0, 0.5), (0, -0.5, 0), (0, 0, -0.5), (0, 0.5, 0), (0.5, 0, 0), (0, -0.5, 0), (-0.5, 0, 0), (0, 0, 0.5), (0.5, 0, 0), (0, 0, -0.5), (-0.5, 0, 0), (0, 0.5, 0)])
cmds.parent(trianglecube,group)
cmds.rename(trianglecube,selected_object + '_ctrl')
if selected_object:
position = cmds.xform(selected_object, query=True, worldSpace=True, translation=True)
rotation = cmds.xform(selected_object, query=True, worldSpace=True, rotation=True)
cmds.move(position[0], position[1], position[2], group_name)
cmds.rotate(rotation[0], rotation[1], rotation[2], group_name)
return group_name
def create_trianglecube_on_selection(*args):
selected_objects = cmds.ls(selection=True)
if selected_objects:
for selected_object in selected_objects:
create_group_with_trianglecube_values(selected_object)
else:
cmds.curve(d = 1, p = [(0, 0.5, 0), (0, 0, 0.5), (0, -0.5, 0), (0, 0, -0.5), (0, 0.5, 0), (0.5, 0, 0), (0, -0.5, 0), (-0.5, 0, 0), (0, 0, 0.5), (0.5, 0, 0), (0, 0, -0.5), (-0.5, 0, 0), (0, 0.5, 0)])
cmds.group()
#dark red function#
def DarkRed():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,4)
#dark blue function#
def darkBlue():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,5)
#blue function#
def blue():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,6)
#black function#
def black():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,8)
#pink function#
def purple():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,9)
#brown function#
def brown():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,10)
#dark brown function#
def darkBrown():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,11)
#dark orange function#
def darkOrange():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,12)
#red function#
def red():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,13)
#light green function#
def lightGreen():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,14)
#yellow function#
def yellow():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,17)
#lightblue function#
def lightBlue():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,18)
#pink function#
def pink():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,20)
#light orange function#
def lightOrange():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,21)
#dark green function#
def darkGreen():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,7)
#dark yellow function#
def darkYellow():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,25)
#green function#
def green():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,26)
#dark pink function#
def darkPink():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,31)
#dark purple function#
def darkPurple():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,30)
#navy function#
def navy():
sel = cmds. ls(sl = True)
shape =cmds.listRelatives(sel, shapes = True)
for node in shape:
cmds.setAttr(node + ".overrideEnabled" ,True)
cmds.setAttr(node + ".overrideColor" ,29)
#lock translate function#
def LockTranslate():
sel = cmds.ls(sl = True)
for obj in sel:
lockOrNot = cmds.getAttr (obj +'.translateX',lock = True)
if lockOrNot == False:
cmds.setAttr (obj +'.translateX',keyable = False, cb = False, lock = True)
cmds.setAttr (obj +'.translateY',keyable = False, cb = False, lock = True)
cmds.setAttr (obj +'.translateZ',keyable = False, cb = False, lock = True)
else:
cmds.setAttr (obj +'.translateX',keyable = True, cb = False, lock = False)
cmds.setAttr (obj +'.translateY',keyable = True, cb = False, lock = False)
cmds.setAttr (obj +'.translateZ',keyable = True, cb = False, lock = False)
#lock rotate function#
def LockRotate():
sel = cmds.ls(sl = True)
for obj in sel:
lockOrNot = cmds.getAttr (obj +'.rotateX',lock = True)
if lockOrNot == False:
cmds.setAttr (obj +'.rotateX',keyable = False, cb = False, lock = True)
cmds.setAttr (obj +'.rotateY',keyable = False, cb = False, lock = True)
cmds.setAttr (obj +'.rotateZ',keyable = False, cb = False, lock = True)
else:
cmds.setAttr (obj +'.rotateX',keyable = True, cb = False, lock = False)
cmds.setAttr (obj +'.rotateY',keyable = True, cb = False, lock = False)
cmds.setAttr (obj +'.rotateZ',keyable = True, cb = False, lock = False)
#lock scale function#
def LockScale():
sel = cmds.ls(sl = True)
for obj in sel:
lockOrNot = cmds.getAttr (obj +'.scaleX',lock = True)
if lockOrNot == False:
cmds.setAttr (obj +'.scaleX',keyable = False, cb = False, lock = True)
cmds.setAttr (obj +'.scaleY',keyable = False, cb = False, lock = True)
cmds.setAttr (obj +'.scaleZ',keyable = False, cb = False, lock = True)
else:
cmds.setAttr (obj +'.scaleX',keyable = True, cb = False, lock = False)
cmds.setAttr (obj +'.scaleY',keyable = True, cb = False, lock = False)
cmds.setAttr (obj +'.scaleZ',keyable = True, cb = False, lock = False)
#lock visibility function#
def LockVisibility():
sel = cmds.ls(sl = True)
for obj in sel:
lockOrNot = cmds.getAttr (obj +'.visibility',lock = True)
if lockOrNot == False:
cmds.setAttr (obj +'.visibility',keyable = False, cb = False, lock = True)
else:
cmds.setAttr (obj +'.visibility',keyable = True, cb = False, lock = False)
#connect tanslation function#
def ConnectTanslate():
selection = cmds.ls(selection=True)
if len(selection) != 2:
cmds.warning("Please select exactly two objects.")
else:
source_obj = selection[0]
destination_obj = selection[1]
attrs = ["translateX", "translateY", "translateZ"]
for attr in attrs:
cmds.connectAttr(source_obj + "." + attr, destination_obj + "." + attr)
#connect roration function#
def ConnectRotate():
selection = cmds.ls(selection=True)
if len(selection) != 2:
cmds.warning("Please select exactly two objects.")
else:
source_obj = selection[0]
destination_obj = selection[1]
attrs = ["rotateX", "rotateY", "rotateZ"]
for attr in attrs:
cmds.connectAttr(source_obj + "." + attr, destination_obj + "." + attr)
#connect scaling function#
def ConnectScale():
selection = cmds.ls(selection=True)
if len(selection) != 2:
cmds.warning("Please select exactly two objects.")
else:
source_obj = selection[0]
destination_obj = selection[1]
attrs = ["scaleX", "scaleY", "scaleZ"]
for attr in attrs:
cmds.connectAttr(source_obj + "." + attr, destination_obj + "." + attr)
# Mirror controllers function
def MirrorFromLeft():
# Define your left and right prefixes
left_prefix = "l_"
right_prefix = "r_"
# Get a list of NURBS curves with the left prefix
left_curves = cmds.ls(left_prefix + "*", type="nurbsCurve")
# Specify the names of the curves to skip
curves_to_skip = ["r_elbow_direction_crvShape", "l_elbow_direction_crvShape","r_knee_direction_crvShape","l_knee_direction_crvShape","r_lwr_bendy_arm_crvShape","l_lwr_bendy_arm_crvShape","r_lwr_bendy_leg_crvShape","l_lwr_bendy_leg_crvShape","r_upr_bendy_arm_crvShape","l_upr_bendy_arm_crvShape","r_upr_bendy_leg_crvShape","l_upr_bendy_leg_crvShape"]
# Iterate through the left curves
for left_curve in left_curves:
# Check if the curve is in the list of curves to skip
if left_curve in curves_to_skip:
print(f"Skipping {left_curve}.")
continue
# Construct the corresponding right curve name
right_curve = left_curve.replace(left_prefix, right_prefix)
# Check if the right curve exists
if cmds.objExists(right_curve):
# Retrieve the CVs from the left curve
left_cvs = cmds.getAttr(f"{left_curve}.cv[*]")
# Get the number of CVs
num_cvs = len(left_cvs)
# Apply the copied CVs to the right curve
for i in range(num_cvs):
target_cv_attr = "{0}.cv[{1}]".format(right_curve, i)
cmds.setAttr(target_cv_attr, *left_cvs[i], type="double3")
print("CVs copied from '{0}' to '{1}'.".format(left_curve, right_curve))
else:
cmds.warning("Corresponding right curve '{0}' not found for '{1}'. Skipping.".format(right_curve, left_curve))
print("CV copy completed.")
def MirrorFromRight():
# Define your left and right prefixes
left_prefix = "l_"
right_prefix = "r_"
# Get a list of NURBS curves with the left prefix
right_curves = cmds.ls(right_prefix + "*", type="nurbsCurve")
# Specify the names of the curves to skip
curves_to_skip = ["r_elbow_direction_crvShape", "l_elbow_direction_crvShape","r_knee_direction_crvShape","l_knee_direction_crvShape","r_lwr_bendy_arm_crvShape","l_lwr_bendy_arm_crvShape","r_lwr_bendy_leg_crvShape","l_lwr_bendy_leg_crvShape","r_upr_bendy_arm_crvShape","l_upr_bendy_arm_crvShape","r_upr_bendy_leg_crvShape","l_upr_bendy_leg_crvShape"]
# Iterate through the left curves
for right_curve in right_curves:
# Check if the curve is in the list of curves to skip
if right_curve in curves_to_skip:
print(f"Skipping {right_curve}.")
continue
# Construct the corresponding right curve name
left_curve = right_curve.replace(right_prefix, left_prefix)
# Check if the right curve exists
if cmds.objExists(left_curve):
# Retrieve the CVs from the left curve
right_cvs = cmds.getAttr(f"{right_curve}.cv[*]")
# Get the number of CVs
num_cvs = len(right_cvs)
# Apply the copied CVs to the right curve
for i in range(num_cvs):
target_cv_attr = "{0}.cv[{1}]".format(left_curve, i)
cmds.setAttr(target_cv_attr, *right_cvs[i], type="double3")
print("CVs copied from '{0}' to '{1}'.".format(right_curve, left_curve))
else:
cmds.warning("Corresponding left curve '{0}' not found for '{1}'. Skipping.".format(left_curve, right_curve))
print("CV copy completed.")
def MirrorFromSelected():
# Get the selected control shapes (NURBS curves)
selected_objects = cmds.ls(selection=True)
# Ensure there are exactly two selected control shapes
if len(selected_objects) != 2:
cmds.warning("Please select exactly two NURBS curves to copy from and copy to.")
else:
# Sort the selected objects
selected_objects.sort()
# Extract CVs from the first selected control shape
source_cvs = cmds.getAttr(f"{selected_objects[0]}.cp[*]")
# Extract the number of CVs in the source curve
num_cvs = len(source_cvs)
# Apply the copied CVs to the second selected control shape
for i in range(num_cvs):
target_cv_attr = "{0}.cp[{1}]".format(selected_objects[1], i)
cmds.setAttr(target_cv_attr, *source_cvs[i])
print("CVs copied from '{0}' to '{1}'.".format(selected_objects[0], selected_objects[1]))
#create follicles function#
def createFollicles(*args):
sel = cmds.ls(selection=True)
if len(sel) < 2:
cmds.warning('Please select a plane and at least one locator.')
return
plane = sel[0]
locators = sel[1:]
minX, minY, minZ, maxX, maxY, maxZ = cmds.xform(plane, q=True, ws=True, bb=True)
width = maxX - minX
height = maxZ - minZ
for loc in locators:
posX, posY, posZ = cmds.xform(loc, q=True, ws=True, translation=True)
u = (posX - minX) / width
v = (posZ - minZ) / height
follicleX = u * width + minX
follicleY = maxY
follicleZ = v * height + minZ
follicle = cmds.createNode('follicle')
cmds.connectAttr('%s.outMesh' % plane, '%s.inputMesh' % follicle)
cmds.connectAttr('%s.worldMatrix[0]' % plane, '%s.inputWorldMatrix' % follicle)
cmds.setAttr('%s.parameterU' % follicle, u)
cmds.setAttr('%s.parameterV' % follicle, v)
cmds.move(follicleX, follicleY, follicleZ, follicle)
cmds.setAttr('%s.visibility' % follicle, 0)
follicleTransform = cmds.listRelatives(follicle, parent=True)[0]
cmds.connectAttr('%s.outTranslate' % follicle, '%s.translate' % follicleTransform)
cmds.connectAttr('%s.outRotate' % follicle, '%s.rotate' % follicleTransform)
#rename function#
def search_replace():
selection = cmds.ls(selection=True)
search_text = cmds.textField('search_field', query=True, text=True)
replace_text = cmds.textField('replace_field', query=True, text=True)
for node in selection:
new_name = node.replace(search_text, replace_text)
cmds.rename(node, new_name)
cmds.textField('search_field',edit=True,text = '')
cmds.textField('replace_field',edit=True,text = '')
#prefix and suffix functions#
def addPrefix():
selection = cmds.ls(selection=True)
prefix = cmds.textField('prefix_field', query=True, text=True)
for node in selection:
new_name = prefix + node
cmds.rename(node, new_name)
cmds.textField('prefix_field',edit=True,text = '')
def addSuffix():
selection = cmds.ls(selection=True)
suffix = cmds.textField('suffix_field', query=True, text=True)
for node in selection:
new_name = node + suffix
cmds.rename(node, new_name)
cmds.textField('suffix_field',edit=True,text = '')
def addSuffixJnt():
selection = cmds.ls(selection=True)
for node in selection:
new_name = node + '_jnt'
cmds.rename(node, new_name)
def addSuffixGrp():
selection = cmds.ls(selection=True)
for node in selection:
new_name = node + '_grp'
cmds.rename(node, new_name)
def addSuffixCtrl():
selection = cmds.ls(selection=True)
for node in selection:
new_name = node + '_ctrl'
cmds.rename(node, new_name)
#add number suffix function#
def add_suffix():
start_num = cmds.intField('startNumField', query=True, value=True)
increment = cmds.intField('incrementField', query=True, value=True)
selected_objects = cmds.ls(selection=True)
for i, obj in enumerate(selected_objects):
new_suffix = "_{:02d}".format(start_num + i*increment)
new_name = obj + new_suffix
cmds.rename(obj, new_name)
#build IK spring setup joint#
def BuildIKSpringSetupJoint():
nameOfIKSpringSetupJnt = [('ikSpring_01_setup_jnt',(0,0,0)),('ikSpring_02_setup_jnt',(5,0,0)),('ikSpring_03_setup_jnt',(10,0,0)),('ikSpring_04_setup_jnt',(15,0,0)),('ikSpring_05_setup_jnt',(20,0,0))]
for each in nameOfIKSpringSetupJnt:
cmds.joint(n=each[0],p=each[1])
cmds.setAttr('ikSpring_01_setup_jnt.rotateY',30)
cmds.setAttr('ikSpring_02_setup_jnt.rotateY',-60)
cmds.setAttr('ikSpring_03_setup_jnt.rotateY',60)
cmds.setAttr('ikSpring_04_setup_jnt.rotateY',-60)
#build IK spring setup rig#
def BuildIKSpringSetupRig():
def ControllerAttr(controllerName,visKeyableOrnot,scaleXKeyableOrnot,scaleYKeyableOrnot,scaleZKeyableOrnot,rotateXKeyableOrnot,rotateYKeyableOrnot,rotateZKeyableOrnot,visLockOrnot,scaleXLockOrnot,scaleYLockOrnot,scaleZLockOrnot,rotateXLockOrnot,rotateYLockOrnot,rotateZLockOrnot,colorEnableOrnot,colorNumber,translateXKeyableOrnot,translateYKeyableOrnot,translateZKeyableOrnot,translateXLockOrnot,translateYLockOrnot,translateZLockOrnot):
cmds.setAttr ((controllerName) +'.visibility',keyable = visKeyableOrnot, cb = False, lock = visLockOrnot)
cmds.setAttr ((controllerName) +'.scaleX',keyable = scaleXKeyableOrnot, cb = False, lock = scaleXLockOrnot)
cmds.setAttr ((controllerName) +'.scaleY',keyable = scaleYKeyableOrnot, cb = False, lock = scaleYLockOrnot)
cmds.setAttr ((controllerName) +'.scaleZ',keyable = scaleZKeyableOrnot, cb = False, lock = scaleZLockOrnot)
cmds.setAttr ((controllerName) +'.rotateX',keyable = rotateXKeyableOrnot, cb = False, lock = rotateXLockOrnot)
cmds.setAttr ((controllerName) +'.rotateY',keyable = rotateYKeyableOrnot, cb = False, lock = rotateYLockOrnot)
cmds.setAttr ((controllerName) +'.rotateZ',keyable = rotateZKeyableOrnot, cb = False, lock = rotateZLockOrnot)
cmds.setAttr ((controllerName) +'.translateX',keyable = translateXKeyableOrnot, cb = False, lock = translateXLockOrnot)
cmds.setAttr ((controllerName) +'.translateY',keyable = translateYKeyableOrnot, cb = False, lock = translateYLockOrnot)
cmds.setAttr ((controllerName) +'.translateZ',keyable = translateZKeyableOrnot, cb = False, lock = translateZLockOrnot)
cmds.setAttr ((controllerName) + '.overrideEnabled' ,colorEnableOrnot)
cmds.setAttr ((controllerName) + '.overrideColor' ,colorNumber)
nameOfIKSpringSetupRigUprJnt = [('ik_upr_01_jnt'),('ik_upr_02_jnt'),('ik_upr_03_jnt')]
for each in nameOfIKSpringSetupRigUprJnt:
cmds.joint(n=each)
toGetPosUprJnt = [('ikSpring_01_setup_jnt','ik_upr_01_jnt'),('ikSpring_02_setup_jnt','ik_upr_02_jnt'),('ikSpring_03_setup_jnt','ik_upr_03_jnt')]
for each in toGetPosUprJnt:
parentConForDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(parentConForDel)
orientConForDel = cmds.orientConstraint('ikSpring_02_setup_jnt','ik_upr_03_jnt',mo=False)
cmds.delete(orientConForDel)
cmds.makeIdentity( 'ik_upr_01_jnt', apply=True, translate=True, rotate=True )
nameOfIKSpringSetupRigLwrJnt = [('ik_lwr_01_jnt'),('ik_lwr_02_jnt'),('ik_lwr_03_jnt')]
for each in nameOfIKSpringSetupRigLwrJnt:
cmds.joint(n=each)
cmds.parent(w=True)
toGetPosLwrJnt = [('ikSpring_03_setup_jnt','ik_lwr_01_jnt'),('ikSpring_04_setup_jnt','ik_lwr_02_jnt'),('ikSpring_05_setup_jnt','ik_lwr_03_jnt')]
for each in toGetPosLwrJnt:
parentConForDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(parentConForDel)
nameOfFKSetupJnt = [('fk_01_jnt'),('fk_02_jnt'),('fk_03_jnt'),('fk_04_jnt'),('fk_05_jnt')]
for each in nameOfFKSetupJnt:
cmds.joint(n=each)
cmds.parent(w=True)
toGetPosFKJnt = [('ikSpring_01_setup_jnt','fk_01_jnt'),('ikSpring_02_setup_jnt','fk_02_jnt'),('ikSpring_03_setup_jnt','fk_03_jnt'),('ikSpring_04_setup_jnt','fk_04_jnt'),('ikSpring_05_setup_jnt','fk_05_jnt')]
for each in toGetPosFKJnt:
parentConForDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(parentConForDel)
nameOfIKSpringSetupRigJnt = [('ikSpring_01_jnt'),('ikSpring_02_jnt'),('ikSpring_03_jnt'),('ikSpring_04_jnt'),('ikSpring_05_jnt')]
for each in nameOfIKSpringSetupRigJnt:
cmds.joint(n=each)
cmds.parent(w=True)
toGetPosIKSpringJnt = [('ikSpring_01_setup_jnt','ikSpring_01_jnt'),('ikSpring_02_setup_jnt','ikSpring_02_jnt'),('ikSpring_03_setup_jnt','ikSpring_03_jnt'),('ikSpring_04_setup_jnt','ikSpring_04_jnt'),('ikSpring_05_setup_jnt','ikSpring_05_jnt')]
for each in toGetPosIKSpringJnt:
parentConForDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(parentConForDel)
toParent = [('fk_05_jnt','fk_04_jnt'),('fk_04_jnt','fk_03_jnt'),('fk_03_jnt','fk_02_jnt'),('fk_02_jnt','fk_01_jnt'),('ik_lwr_03_jnt','ik_lwr_02_jnt'),('ik_lwr_02_jnt','ik_lwr_01_jnt'),('ikSpring_05_jnt','ikSpring_04_jnt'),('ikSpring_04_jnt','ikSpring_03_jnt'),('ikSpring_03_jnt','ikSpring_02_jnt'),('ikSpring_02_jnt','ikSpring_01_jnt')]
for each in toParent:
cmds.parent(each[0],each[1])
cmds.makeIdentity( 'ik_lwr_01_jnt','fk_01_jnt','ikSpring_01_jnt', apply=True, translate=True, rotate=True )
#ik Rig#
cmds.ikHandle(n='upr_ikh', sj='ik_upr_01_jnt', ee='ik_upr_03_jnt')
cmds.ikHandle(n='lwr_ikh', sj='ik_lwr_01_jnt', ee='ik_lwr_03_jnt')
cmds.ikHandle(n='spring_ikh', sj='ikSpring_01_jnt', ee='ikSpring_05_jnt',sol='ikSpringSolver')
cmds.curve(d=1, p=[(-1, -1, 1),(-1, 1, 1),(1, 1, 1),(1, -1, 1),(1, -1, -1),(1, 1, -1),(-1, 1, -1),(-1, -1, -1),(-1, -1, 1),(1, -1, 1),(1, 1, 1),(1, 1, -1),(1, -1, -1),(-1, -1, -1),(-1, 1, -1),(-1, 1, 1)])
cmds.rename('ik_mid_ctrl')
ControllerAttr('ik_mid_ctrl',False,False,False,False,False,False,False,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
cmds.group()
cmds.rename('ik_mid_ctrl_grp')
parentCon = cmds.parentConstraint('ik_upr_03_jnt','ik_mid_ctrl_grp',mo = False)
cmds.delete(parentCon)
cmds.curve(d=1, p=[(-1, -1, 1),(-1, 1, 1),(1, 1, 1),(1, -1, 1),(1, -1, -1),(1, 1, -1),(-1, 1, -1),(-1, -1, -1),(-1, -1, 1),(1, -1, 1),(1, 1, 1),(1, 1, -1),(1, -1, -1),(-1, -1, -1),(-1, 1, -1),(-1, 1, 1)])
cmds.rename('ik_inr_ctrl')
ControllerAttr('ik_inr_ctrl',False,False,False,False,True,True,True,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
cmds.group()
cmds.rename('ik_inr_ctrl_grp')
parentCon = cmds.parentConstraint('ik_lwr_03_jnt','ik_inr_ctrl_grp',mo = False)
cmds.delete(parentCon)
cmds.curve(d=1, p=[(-2, -2, 2),(-2, 2, 2),(2, 2, 2),(2, -2, 2),(2, -2, -2),(2, 2, -2),(-2, 2, -2),(-2, -2, -2),(-2, -2, 2),(2, -2, 2),(2, 2, 2),(2, 2, -2),(2, -2, -2),(-2, -2, -2),(-2, 2, -2),(-2, 2, 2)])
cmds.rename('ik_ctrl')
ControllerAttr('ik_ctrl',False,False,False,False,True,True,True,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
cmds.group()
cmds.rename('ik_ctrl_grp')
parentCon = cmds.parentConstraint('ik_lwr_03_jnt','ik_ctrl_grp',mo = False)
cmds.delete(parentCon)
cmds.pointConstraint('ik_ctrl','spring_ikh',mo = True)
cmds.parentConstraint('ikSpring_05_jnt','ik_inr_ctrl_grp',mo = True)
cmds.parentConstraint('ikSpring_03_jnt','ik_mid_ctrl_grp',mo = True)
cmds.pointConstraint('ik_mid_ctrl','upr_ikh',mo = True)
cmds.pointConstraint('ik_inr_ctrl','lwr_ikh',mo = True)
cmds.pointConstraint('ik_mid_ctrl','ik_lwr_01_jnt',mo = True)
cmds.orientConstraint('ik_inr_ctrl','ik_lwr_03_jnt',mo = True)
#fk Rig#
nameOfFKctrl = [('fk_01_ctrl','fk_01_ctrl_grp'),('fk_02_ctrl','fk_02_ctrl_grp'),('fk_03_ctrl','fk_03_ctrl_grp'),('fk_04_ctrl','fk_04_ctrl_grp'),('fk_05_ctrl','fk_05_ctrl_grp')]
for each in nameOfFKctrl:
FKctrl = cmds.circle(n=each[0],r=1,nrx = 90)
cmds.group(n=each[1])
ControllerAttr(each[0],False,False,False,False,True,True,True,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
toGetPosOfFKctrl = [('ikSpring_01_setup_jnt','fk_01_ctrl_grp'),('ikSpring_02_setup_jnt','fk_02_ctrl_grp'),('ikSpring_03_setup_jnt','fk_03_ctrl_grp'),('ikSpring_04_setup_jnt','fk_04_ctrl_grp'),('ikSpring_05_setup_jnt','fk_05_ctrl_grp')]
for each in toGetPosOfFKctrl:
parentCon = cmds.parentConstraint(each[0],each[1],mo = False)
cmds.delete(parentCon)
toGetParent = [('fk_05_ctrl_grp','fk_04_ctrl'),('fk_04_ctrl_grp','fk_03_ctrl'),('fk_03_ctrl_grp','fk_02_ctrl'),('fk_02_ctrl_grp','fk_01_ctrl')]
for each in toGetParent:
cmds.parent(each[0],each[1])
parentCon = [('fk_01_ctrl','fk_01_jnt'),('fk_02_ctrl','fk_02_jnt'),('fk_03_ctrl','fk_03_jnt'),('fk_04_ctrl','fk_04_jnt'),('fk_05_ctrl','fk_05_jnt')]
for each in parentCon:
cmds.parentConstraint(each[0],each[1],mo = True)
#IKFK Setup Rig#
nameOfIKFKSetupJnt = [('bln_01_jnt'),('bln_02_jnt'),('bln_03_jnt'),('bln_04_jnt'),('bln_05_jnt')]
for each in nameOfIKFKSetupJnt:
cmds.joint(n=each)
cmds.parent(w = True)
toGetPosOfIKFKjnt = [('ikSpring_01_setup_jnt','bln_01_jnt'),('ikSpring_02_setup_jnt','bln_02_jnt'),('ikSpring_03_setup_jnt','bln_03_jnt'),('ikSpring_04_setup_jnt','bln_04_jnt'),('ikSpring_05_setup_jnt','bln_05_jnt')]
for each in toGetPosOfIKFKjnt:
parentCon = cmds.parentConstraint(each[0],each[1])
cmds.delete(parentCon)
toGetParent = [('bln_05_jnt','bln_04_jnt'),('bln_04_jnt','bln_03_jnt'),('bln_03_jnt','bln_02_jnt'),('bln_02_jnt','bln_01_jnt')]
for each in toGetParent:
cmds.parent(each[0],each[1])
cmds.makeIdentity( 'bln_01_jnt', apply=True, translate=True, rotate=True )
parentConIKFKjnt = [('ik_upr_01_jnt','bln_01_jnt'),('ik_upr_02_jnt','bln_02_jnt'),('ik_lwr_01_jnt','bln_03_jnt'),('ik_lwr_02_jnt','bln_04_jnt'),('ik_lwr_03_jnt','bln_05_jnt'),('fk_01_jnt','bln_01_jnt'),('fk_02_jnt','bln_02_jnt'),('fk_03_jnt','bln_03_jnt'),('fk_04_jnt','bln_04_jnt'),('fk_05_jnt','bln_05_jnt')]
for each in parentConIKFKjnt:
cmds.parentConstraint(each[0],each[1],mo = True)
cmds.curve(d=1, p=[(0.5, 0, 2.25),(-0.5, 0, 2.25),(-0.5, 0, 0.5),(-2.25, 0, 0.5),(-2.25, 0, -0.5),(-0.5, 0, -0.5),(-0.5, 0, -2.25),(0.5, 0 ,-2.25),(0.5, 0, -0.5),(2.25, 0, -0.5),(2.25, 0, 0.5,),(0.5, 0 ,0.5),(0.5, 0, 2.25)])
cmds.rename('ik_fk_switch')
ControllerAttr('ik_fk_switch',False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,15,False,False,False,True,True,True)
cmds.group()
cmds.rename('ik_fk_switch_grp')
cmds.addAttr('ik_fk_switch',sn='IKFK', min = 0, max=1 ,k=1)
cmds.parentConstraint('bln_05_jnt', 'ik_fk_switch_grp')
cmds.shadingNode('reverse',n = 'ik_fk_rev',asUtility=1)
toConect = [('ik_fk_switch.IKFK','bln_01_jnt_parentConstraint1.fk_01_jntW1'),('ik_fk_switch.IKFK','bln_02_jnt_parentConstraint1.fk_02_jntW1'),('ik_fk_switch.IKFK', 'bln_03_jnt_parentConstraint1.fk_03_jntW1'),('ik_fk_switch.IKFK', 'bln_04_jnt_parentConstraint1.fk_04_jntW1'),('ik_fk_switch.IKFK', 'bln_05_jnt_parentConstraint1.fk_05_jntW1'),('ik_fk_rev.outputX', 'bln_01_jnt_parentConstraint1.ik_upr_01_jntW0'),('ik_fk_rev.outputX', 'bln_02_jnt_parentConstraint1.ik_upr_02_jntW0'),('ik_fk_switch.IKFK', 'ik_fk_rev.inputX'),('ik_fk_rev.outputX', 'bln_03_jnt_parentConstraint1.ik_lwr_01_jntW0'),('ik_fk_rev.outputX', 'bln_04_jnt_parentConstraint1.ik_lwr_02_jntW0'),('ik_fk_rev.outputX', 'bln_05_jnt_parentConstraint1.ik_lwr_03_jntW0'),('ik_fk_switch.IKFK','fk_01_ctrl_grp.visibility'),('ik_fk_rev.outputX','ik_mid_ctrl_grp.visibility'),('ik_fk_rev.outputX','ik_inr_ctrl_grp.visibility'),('ik_fk_rev.outputX','ik_ctrl_grp.visibility')]
for each in toConect:
cmds.connectAttr(each[0],each[1])
toHide = [('ikSpring_01_setup_jnt.visibility'),('ik_lwr_01_jnt.visibility'),('fk_01_jnt.visibility'),('ikSpring_01_jnt.visibility'),('ik_upr_01_jnt.visibility'),('upr_ikh.visibility'),('lwr_ikh.visibility'),('spring_ikh.visibility')]
for each in toHide:
cmds.setAttr(each,0)
createGroup = ('rig_grp','jnt_grp','rename')
for each in createGroup:
cmds.group(w=1,n=each,em=1)
toGroup = [('ikSpring_01_setup_jnt','rig_grp'),('ik_lwr_01_jnt','rig_grp'),('fk_01_jnt','rig_grp'),('ikSpring_01_jnt','rig_grp'),('upr_ikh','rig_grp'),('lwr_ikh','rig_grp'),('spring_ikh','rig_grp'),('fk_01_ctrl_grp','rig_grp'),('ik_mid_ctrl_grp','rig_grp'),('ik_inr_ctrl_grp','rig_grp'),('ik_ctrl_grp','rig_grp'),('ik_fk_switch_grp','rig_grp'),('bln_01_jnt','jnt_grp'),('jnt_grp','rename'),('rig_grp','rename')]
for each in toGroup:
cmds.parent(each[0],each[1])
#create tail setup joint function#
def BuildTailSetupJoint():
list = [('tail_01_setup_jnt',(0, 0, 0)),('tail_02_setup_jnt',(10, 0, 0)),('tail_03_setup_jnt',(20, 0, 0)),('tail_04_setup_jnt',(30, 0, 0)),('tail_05_setup_jnt',(40, 0, 0))]
for each in list:
cmds.joint(n=each[0],p=each[1])
#create tail setup rig function#
def BuildTailSetupRig():
#create FK tail setup
list = ['tail_01_FK_jnt','tail_02_FK_jnt','tail_03_FK_jnt','tail_04_FK_jnt','tail_05_FK_jnt']
for each in list:
cmds.joint(n=each)
list = [('tail_01_FK_ctrl','tail_01_FK_ctrl_grp'),('tail_02_FK_ctrl','tail_02_FK_ctrl_grp'),('tail_03_FK_ctrl','tail_03_FK_ctrl_grp'),('tail_04_FK_ctrl','tail_04_FK_ctrl_grp'),('tail_05_FK_ctrl','tail_05_FK_ctrl_grp')]
for each in list:
ctrl = cmds.circle(n=each[0],r=5,nrx = 90)
cmds.delete(ctrl,constructionHistory = True)
cmds.group(n=each[1])
cmds.parent('tail_01_FK_jnt',w=True)
list = [('tail_01_setup_jnt','tail_01_FK_ctrl_grp'),('tail_02_setup_jnt','tail_02_FK_ctrl_grp'),('tail_03_setup_jnt','tail_03_FK_ctrl_grp'),('tail_04_setup_jnt','tail_04_FK_ctrl_grp'),('tail_05_setup_jnt','tail_05_FK_ctrl_grp'),('tail_01_setup_jnt','tail_01_FK_jnt'),('tail_02_setup_jnt','tail_02_FK_jnt'),('tail_03_setup_jnt','tail_03_FK_jnt'),('tail_04_setup_jnt','tail_04_FK_jnt'),('tail_05_setup_jnt','tail_05_FK_jnt')]
for each in list:
forDel = cmds.parentConstraint(each[0],each[1],mo=False)
cmds.delete(forDel)
list = [('tail_05_FK_ctrl_grp','tail_04_FK_ctrl'),('tail_04_FK_ctrl_grp','tail_03_FK_ctrl'),('tail_03_FK_ctrl_grp','tail_02_FK_ctrl'),('tail_02_FK_ctrl_grp','tail_01_FK_ctrl')]
for each in list:
cmds.parent(each[0],each[1])
list = [('tail_01_FK_ctrl','tail_01_FK_jnt'),('tail_02_FK_ctrl','tail_02_FK_jnt'),('tail_03_FK_ctrl','tail_03_FK_jnt'),('tail_04_FK_ctrl','tail_04_FK_jnt'),('tail_05_FK_ctrl','tail_05_FK_jnt')]
for each in list:
cmds.parentConstraint(each[0],each[1],mo=True)
#create IK tail
list = ['tail_01_IK_jnt','tail_02_IK_jnt','tail_03_IK_jnt','tail_04_IK_jnt','tail_05_IK_jnt','tail_01_length_jnt','tail_02_length_jnt','tail_03_length_jnt','tail_04_length_jnt','tail_05_length_jnt','tail_start_length_jnt','tail_end_length_jnt']
for each in list:
cmds.joint(n=each)
list = [('tail_01_IK_ctrl','tail_01_IK_ctrl_grp'),('tail_02_IK_ctrl','tail_02_IK_ctrl_grp'),('tail_03_IK_ctrl','tail_03_IK_ctrl_grp')]
for each in list:
cmds.curve(n=each[0],d=1, p=[(-2.5, -5, 5),(-2.5, 5, 5),(2.5, 5, 5),(2.5, -5, 5),(2.5, -5, -5),(2.5, 5, -5),(-2.5, 5, -5),(-2.5, -5, -5),(-2.5, -5, 5),(2.5, -5, 5),(2.5, 5, 5),(2.5, 5, -5),(2.5, -5, -5),(-2.5, -5, -5),(-2.5, 5, -5),(-2.5, 5, 5)])
cmds.group(n=each[1])
cmds.parent('tail_01_IK_jnt','tail_start_length_jnt','tail_01_length_jnt',w=True)
from maya import cmds , OpenMaya
def getUParam( pnt = [], crv = None):
point = OpenMaya.MPoint(pnt[0],pnt[1],pnt[2])
curveFn = OpenMaya.MFnNurbsCurve(getDagPath(crv))
paramUtill=OpenMaya.MScriptUtil()
paramPtr=paramUtill.asDoublePtr()
isOnCurve = curveFn.isPointOnCurve(point)
if isOnCurve == True:
curveFn.getParamAtPoint(point , paramPtr,0.001,OpenMaya.MSpace.kObject )
else :
point = curveFn.closestPoint(point,paramPtr,0.001,OpenMaya.MSpace.kObject)
curveFn.getParamAtPoint(point , paramPtr,0.001,OpenMaya.MSpace.kObject )
param = paramUtill.getDouble(paramPtr)
return param
def getDagPath( objectName):
if isinstance(objectName, list)==True:
oNodeList=[]
for o in objectName:
selectionList = OpenMaya.MSelectionList()
selectionList.add(o)
oNode = OpenMaya.MDagPath()
selectionList.getDagPath(0, oNode)
oNodeList.append(oNode)
return oNodeList
else:
selectionList = OpenMaya.MSelectionList()
selectionList.add(objectName)
oNode = OpenMaya.MDagPath()
selectionList.getDagPath(0, oNode)
return oNode
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int min_jumps(int nums[], int n)
{
if (n <= 1) {
return 0; // No jumps needed if the array has only one element
}
// Initialize variables
int jumps = 0;
int farthest = 0;
int current_end = 0;
for (int i = 0; i < n - 1; i++)
{
// Update the farthest we can reach
farthest = max(farthest, i + nums[i]);
// When we reach the end of the current range, we must jump
if (i == current_end)
{
jumps++;
current_end = farthest;
// If we can already reach the last index, break early
if (current_end >= n - 1)
{
break;
}
}
}
return jumps;
}
int main()
{
int n;
cout << "Enter the size of the array: ";
cin >> n;
int nums[n];
cout << "Enter the elements of the array: ";
for (int i = 0; i < n; i++)
{
cin >> nums[i];
}
int result = min_jumps(nums, n);
cout << "Minimum number of jumps to reach the last index: " << result << endl;
return 0;
}
ssh-keygen -t ed25519 -C "your_email@example.com"
public with sharing class ImpersonationUtil {
public static String getImpersonatorEmail() {
String query = 'SELECT CreatedById FROM AuthSession WHERE UsersId = :UserInfo.getUserId() AND SessionType = \'SubstituteUser\' ORDER BY CreatedDate DESC LIMIT 1';
AuthSession session = Database.query(query);
if (session != null) {
User creator = [SELECT Email FROM User WHERE Id = :session.CreatedById LIMIT 1];
return creator.Email;
}
return null;
}
}
#include <iostream>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
// FAP nghĩa là find all path
vector<vector<int>> FAP(int A, int B, vector<vector<int>>& S) {
deque<vector<int>> dq;
vector<vector<int>> all;
dq.push_back({A});
while (!dq.empty()) {
vector<int> path = dq.front();
dq.pop_front();
int end = path.back();
if (end == B) {
all.push_back(path);
} else {
for (int i = 0; i < S[end].size(); i++) {
int nei = S[end][i];
if (find(path.begin(), path.end(), nei) == path.end()) {
vector<int> newpath = path;
newpath.push_back(nei);
dq.push_back(newpath);
}
}
}
}
// In tất cả các đường đi tìm được
cout << "Tất cả các đường đi từ " << A << " đến " << B << ":\n";
for (const auto& p : all) {
for (int i = 0; i < p.size(); i++) {
cout << p[i];
if (i < p.size() - 1) cout << " -> ";
}
cout << endl;
}
return all; // Trả về kết quả tìm được
}
int main() {
int n, m;
cin >> n >> m;
vector<vector<int>> S(n + 1); // Sử dụng vector 2D để lưu đồ thị
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
S[u].push_back(v);
S[v].push_back(u); // Đồ thị vô hướng
}
int A, B; // Đỉnh bắt đầu A và đỉnh đích B
cin >> A >> B;
vector<vector<int>> all = FAP(A, B, S);
vector<int> LT(n + 1, 0); // Khởi tạo mảng đếm với kích thước n+1
for (const auto& p : all) {
for (int i = 0; i < p.size(); i++) {
LT[p[i]]++;
}
}
int maxx = *max_element(LT.begin(), LT.end());
for (int i = 0; i < LT.size(); i++) {
if(i == A || i == B){
continue;
}
else if (LT[i] == maxx) {
cout << i << " ";
}
}
return 0;
}
$args = [ \
'title' => 'Test Recurring Event', \
'status' => 'publish', \
'start_date' => '2022-09-01 14:00:00', \
'end_date' => '2022-09-01 17:00:00', \
'timezone' => 'America/New_York', \
'recurrence' => 'RRULE:FREQ=DAILY;COUNT=10', \
];
$recurring_event = tribe_events()->set_args( $args )->create()->ID;
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":star: What's on in Melbourne this week! :star:"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "\n\n Hey Melbourne, happy Monday! Please see below for what's on this week. "
}
},
{
"type": "divider"
},
{
"type": "header",
"text": {
"type": "plain_text",
"text": "Xero Café :coffee:",
"emoji": true
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "\n :new-thing: *This week we are offering:* \n\n Chocolate Freckle Cookies, Brownies (GF), and Melting Moments Cookies \n\n *Weekly Café Special*: _Turmeric Latte_"
}
},
{
"type": "header",
"text": {
"type": "plain_text",
"text": " Wednesday, 18th September :calendar-date-18:",
"emoji": true
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "\n\n:footprint: *STEPtember Afternoon Tea*: From *2pm* in the L3 kitchen + breakout space! \n\n :walking:*STEPtember Office Walk:* Take 30 minutes to join in the STEPtember office walk\n\n:yoga2:*Wellbeing - Yin Yoga & Breathwork*: Confirm your spot <https://docs.google.com/spreadsheets/d/1iKMQtSaawEdJluOmhdi_r_dAifeIg0JGCu7ZSPuwRbo/edit?gid=0#gid=0/|*here*>. Please note we have a maximum of 15 participants per class, a minimum notice period of 4 hours is required if you can no longer attend."
}
},
{
"type": "header",
"text": {
"type": "plain_text",
"text": "Thursday, 19th September :calendar-date-19:",
"emoji": true
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": ":breakfast: *Breakfast*: Provided by *Kartel Catering* from *8:30am - 10:30am* in the Wominjeka Breakout Space.\n\n"
}
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Later this month:* We have our Grand Final Eve-Eve BBQ Social on the 26th of September! Make sure to wear your team colours (can be NRL or AFL) and come along for some fun! \n\nStay tuned to this channel for more details, and make sure you're subscribed to the <https://calendar.google.com/calendar/u/0?cid=Y19xczkyMjk5ZGlsODJzMjA4aGt1b3RnM2t1MEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t|*Melbourne Social Calendar*> :party-wx:"
}
}
]
}
from bs4 import BeautifulSoup
import requests
import json
# Initialize the list to store API data
api = []
# Base URL for Yahoo News
base_url = 'https://www.yahoo.com'
# Fetch the main page
url = f'{base_url}/news/'
response = requests.get(url)
# Check if the request was successful
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
# Find all news items
for news_item in soup.find_all('ul', class_='stream-items'):
for item in news_item.find_all('li', class_='stream-item'):
# Extract the article link
item_id = item.find('a', class_='js-content-viewer')
if item_id:
link = item_id.get('href')
full_link = f'{base_url}{link}'
# Fetch the article page
response2 = requests.get(full_link)
if response2.status_code == 200:
soup2 = BeautifulSoup(response2.text, 'html.parser')
# Extract article details
itemInfo = soup2.find('div', class_='caas-inner-body')
if itemInfo:
text1 = ''
for text in itemInfo.find_all('div', class_='caas-body'):
text1 += text.text
# Remove "View comments" from the text
text1 = text1.replace("View comments", "").strip()
# Extract additional details if available
image = item.find('img')['src'] if item.find('img') else ''
category = item.find('strong', class_='Tt(c)').text if item.find('strong', class_='Tt(c)') else ''
ell = item.find('span', class_='Ell').text if item.find('span', class_='Ell') else ''
title = item.find('h3', class_='stream-item-title').text if item.find('h3', class_='stream-item-title') else ''
description = item.find('p', class_='finance-ticker-fetch-success_D(n)').text if item.find('p', class_='finance-ticker-fetch-success_D(n)') else ''
# Append data to the api list
api.append({
'link': full_link,
'image': image,
'category': category,
'ell': ell,
'title': title,
'description': description,
'text': text1,
})
# Convert the api list to a JSON-formatted string
api_json = json.dumps(api, indent=4)
# Write the JSON data to a file
with open('news_data.json', 'w') as file:
file.write(api_json)
print("Data has been written to news_data.json")
#include <iostream>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
// FAP nghĩa là find all path
void FAP(int A, int B, vector<vector<int>>& S){
deque<vector<int> > dq;
vector<vector<int>> all;
dq.push_back({A});
while (!dq.empty()) {
vector<int> path = dq.front();
dq.pop_front();
int end = path.back();
if (end == B) {
all.push_back(path);
} else {
for (int i = 0; i < S[end].size(); i++) {
int nei = S[end][i];
if (find(path.begin(), path.end(), nei) == path.end()) {
vector<int> newpath = path;
newpath.push_back(nei);
dq.push_back(newpath);
}
}
}
}
// In tất cả các đường đi tìm được
cout << "Tất cả các đường đi từ " << A << " đến " << B << ":\n";
for (const auto& p : all) {
for (int i = 0; i < p.size(); i++) {
cout << p[i];
if (i < p.size() - 1) cout << " -> ";
}
cout << endl;
}
}
int main() {
int n, m;
cin >> n >> m;
vector<vector<int> > S(n + 1); // Sử dụng vector 2D để lưu đồ thị
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
S[u].push_back(v);
S[v].push_back(u); // Đồ thị vô hướng
}
int A, B; // Đỉnh bắt đầu A và đỉnh đích B
cin >> A >> B;
FAP(A, B, S);
return 0;
}
#Open an elevated command prompt: Dism.exe /online /Cleanup-Image /StartComponentCleanup
package com.example.diceroller
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.*
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.Alignment
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.example.diceroller.ui.theme.DiceRollerTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
DiceRollerTheme {
DiceRollerApp()
}
}
}
}
@Composable
fun DiceRollerApp() {
DiceWithButtonAndImage()
}
@Composable
fun DiceWithButtonAndImage(modifier: Modifier = Modifier) {
var result by remember { mutableStateOf(1) }
val imageResource = when (result) {
1 -> R.drawable.dice_1
2 -> R.drawable.dice_2
3 -> R.drawable.dice_3
4 -> R.drawable.dice_4
5 -> R.drawable.dice_5
else -> R.drawable.dice_6
}
Column(
modifier = modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(
painter = painterResource(imageResource),
contentDescription = result.toString()
)
Spacer(modifier = Modifier.height(16.dp))
Button(onClick = { result = (1..6).random() }) {
Text(text = "roll dice")
}
}
}
package com.example.sep11
import android.os.Bundle
import android.widget.Space
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Button
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.example.sep11.ui.theme.Sep11Theme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
//display()
//RowExample()
//HelloWorld()
//ImageExample()
simpleButton()
}
}
}
@Composable
fun display(){
Column( modifier = Modifier.padding(top = 150.dp, start = 60.dp)) {
Text(text = "Hello JetPackCompose",
fontSize = 35.sp,
color = Color.Red,
)
Text(text = "Python",
color = Color.Blue,
fontSize = 45.sp,
)
}
}
@Composable
fun RowExample(){
Row(modifier = Modifier.padding(all = 40.dp)){
Text(text = "Java", color = Color.Green, fontSize = 45.sp)
Text(text = "Kotlin", color = Color.Magenta, fontSize = 45.sp)
}
}
@Composable
fun HelloWorld(){
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Text(text = "Hello World", color = Color.Red,
fontWeight = FontWeight.Bold,
)
}
}
@Composable
fun ImageExample(){
Column{
Image(painter = painterResource(id = R.drawable.java),
contentDescription = "Java Logo",
modifier = Modifier.padding(top = 45.dp)
)
Spacer(modifier = Modifier.height(45.dp))
Text(text = "This is a Java Logo")
}
}
@Composable
fun simpleButton(){
val context = LocalContext.current
Button(onClick = {Toast.makeText(context,"Button Clicked", Toast.LENGTH_LONG).show() }) {
Text(text = "Click Here")
}
}
package com.example.diceroller
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.material3.Button
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.example.diceroller.ui.theme.DiceRollerTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
DiceRollerTheme {
DiceRollerApp()
}
}
}
}
@Preview
@Composable
fun DiceRollerApp() {
DiceWithButtonAndImage(modifier = Modifier
.fillMaxSize()
.wrapContentSize(Alignment.Center)
)
}
@Composable
fun DiceWithButtonAndImage(modifier: Modifier = Modifier) {
var result by remember { mutableStateOf(1) }
val imageResource = when (result) {
1 -> R.drawable.one
2 -> R.drawable.two
3 -> R.drawable.three
4 -> R.drawable.four
5 -> R.drawable.five
else -> R.drawable.six
}
Column(
modifier = modifier,
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(
painter = painterResource(imageResource),
contentDescription = result.toString()
)
Spacer(modifier = Modifier.height(16.dp))
Button(onClick = { result = (1..6).random() }) {
Text(stringResource(R.string.roll))
}
}
}
package com.example.diceroller
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.*
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.Alignment
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.example.diceroller.ui.theme.DiceRollerTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
DiceRollerTheme {
DiceRollerApp()
}
}
}
}
@Composable
fun DiceRollerApp() {
DiceWithButtonAndImage()
}
@Composable
fun DiceWithButtonAndImage(modifier: Modifier = Modifier) {
var result by remember { mutableStateOf(1) }
val imageResource = when (result) {
1 -> R.drawable.dice_1
2 -> R.drawable.dice_2
3 -> R.drawable.dice_3
4 -> R.drawable.dice_4
5 -> R.drawable.dice_5
else -> R.drawable.dice_6
}
Column(
modifier = modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(
painter = painterResource(imageResource),
contentDescription = result.toString()
)
Spacer(modifier = Modifier.height(16.dp))
Button(onClick = { result = (1..6).random() }) {
Text(text = "roll dice")
}
}
}
We cannot edit Wix Service pages - as its the inbuilt booking system. The client will have to build out pages with text and button and we can integrate the FH hyperlinks. We cannot build the content for them. The second page - we can add calendar. but please note FH embeds will NOT lightframe in WIx, due to the CMS limitations
$font-sizes: 12px 14px 16px 18px;
@for $i from 1 through length($font-sizes) {
.text-#{$i} {
font-size: nth($font-sizes, $i); // Retrieves the corresponding font size from the list
}
}
//generates
.text-1 {
font-size: 12px;
}
.text-2 {
font-size: 14px;
}
.text-3 {
font-size: 16px;
}
.text-4 {
font-size: 18px;
}
{data.map((item, index) => (
<div key={index} className=" overflow-hidden w-[50%] sm:w-1/2 md:w-1/3 lg:w-1/4">
{item.image_url && (
<div
className="w-[300px] relative h-56 bg-cover bg-center rounded-2xl before:bg-black/30 before:rounded-2xl before:absolute before:inset-0 before:content-['']"
style={{ backgroundImage: `url(${item.image_url})` }}
aria-label={item.title}
>
<div className="absolute bottom-0 right-0 p-4 flex justify-end items-end text-white w-full h-full ">
<p className="hover:underline font-semibold">{item.title}</p>
</div>
</div>
)}
</div>
))}
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":star: Boost Day is Here! :star:"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Hey Wellington! \n\nIt's Boost Day!\n\nCheck out today's fantastic lineup: "
}
},
{
"type": "divider"
},
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":calendar-date-30: Tuesday, 30th July",
"emoji": true
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "\n:coffee: *Xero Café*: Café-style beverages and sweet treats.\n:clipboard: *Weekly Café Special*: _Caramel Mocha Latte_.\n:breakfast: *Breakfast*: Provided by *Simply Food* from *8AM - 10AM* in the All Hands.\n:massage:*Wellbeing - Massage*: Book a session <https://www.google.com/|*here*> to relax and unwind."
}
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "plain_text",
"text": "Have an amazing Boost Day, Wellington!\n\nLove,\n\nWX :party-wx: ",
"emoji": true
}
}
]
}
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":newspaper: STAY IN THE KNOW :newspaper:"
}
},
{
"type": "context",
"elements": [
{
"text": "*February 2024* | Monthly Spotlight",
"type": "mrkdwn"
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "FOR YOUR INFORMATION",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\nStay in the loop about what’s happening at the office such as upcoming visitors, onsite meetings, lunches, and more. Don’t miss out—click to subscribe below."
}
]
}
]
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": ":google-workspace-calendar: *DEN Happenings* calendar"
},
"accessory": {
"type": "button",
"text": {
"type": "plain_text",
"text": "Click to subscribe",
"emoji": true
},
"value": "click_me_123",
"url": "https://calendar.google.com/calendar/u/0?cid=eGVyby5jb21fNXI3dXQzZTEyMGYxbWZqNWFwdGc5MHRtMzRAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ",
"action_id": "button-action"
}
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "emoji",
"name": "invite-envelope"
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "You're invited!",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/8",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "emoji",
"name": "scribble_heart_rainbow"
},
{
"type": "text",
"text": " Galentine's Day Happy Hour\n"
},
{
"type": "text",
"text": "2/13",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "emoji",
"name": "scribble_heart_rainbow"
},
{
"type": "text",
"text": " Galentine's Day Celebration\n "
},
{
"type": "emoji",
"name": "hatching_chick",
"unicode": "1f423"
},
{
"type": "text",
"text": " Nancy's Baby Shower\n\n"
},
{
"type": "emoji",
"name": "announcement-blue"
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "ANNOUNCEMENT",
"style": {
"bold": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "emoji",
"name": "announcement-blue"
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/15",
"style": {
"code": true
}
},
{
"type": "text",
"text": " Our host for the US Stand Up is Taylor Maiman!\n"
}
]
},
{
"type": "rich_text_preformatted",
"border": 0,
"elements": [
{
"type": "text",
"text": "If you're keen on leading one, don't hesitate to reach out to wxhelp@xero.com!"
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "2/15",
"style": {
"code": true
}
},
{
"type": "text",
"text": " Happy Hour Trivia\n"
},
{
"type": "text",
"text": "2/19",
"style": {
"code": true
}
},
{
"type": "text",
"text": " President's Day - Office Closed\n"
},
{
"type": "emoji",
"name": "sticky-note"
},
{
"type": "text",
"text": " You may still access the office via access card"
}
]
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "emoji",
"name": "date",
"unicode": "1f4c5"
},
{
"type": "text",
"text": " | "
},
{
"type": "text",
"text": "TUESDAY BREAKFAST SCHEDULE",
"style": {
"bold": true
}
},
{
"type": "text",
"text": " | "
},
{
"type": "emoji",
"name": "date",
"unicode": "1f4c5"
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/6",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "emoji",
"name": "chinese-lantern"
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "OneFold",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/13",
"style": {
"code": true
}
},
{
"type": "text",
"text": " ",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "Pirate Chef\n\n"
},
{
"type": "text",
"text": "2/20",
"style": {
"code": true
}
},
{
"type": "text",
"text": " ",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "The Taqueria\n\n"
},
{
"type": "text",
"text": "2/27",
"style": {
"code": true
}
},
{
"type": "text",
"text": " ",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "Trez Banderas"
}
]
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "emoji",
"name": "date",
"unicode": "1f4c5"
},
{
"type": "text",
"text": " | "
},
{
"type": "text",
"text": "THURSDAY LUNCH SCHEDULE",
"style": {
"bold": true
}
},
{
"type": "text",
"text": " | "
},
{
"type": "emoji",
"name": "date",
"unicode": "1f4c5"
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/1",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "Lazo Empanadas",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/8",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "emoji",
"name": "chinese-lantern"
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "Zoe Mama",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/13",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "emoji",
"name": "star-party"
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "Bonus Lunch: Pizza ",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/15",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "Chipotle",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/22",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "Hot Chicks Kitchen ",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/29",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "Adobo",
"style": {
"bold": true
}
}
]
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_quote",
"elements": [
{
"type": "text",
"text": "WX offers comprehensive event planning services, including:"
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "\n"
}
]
},
{
"type": "rich_text_list",
"style": "bullet",
"indent": 0,
"border": 0,
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "Assistance with logistics and coordination "
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "Access to a network of vendors for catering, supply ordering, etc."
}
]
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "\nNote: Even if you don’t need our assistance but are using the office space, kindly inform WX."
}
]
}
]
},
{
"type": "divider"
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": ":pushpin: Have something important to add to our calendar? Get in touch with us at wxhelp@xero.com and let us know. We're here to help!"
}
]
}
]
}
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":newspaper: STAY IN THE KNOW :newspaper:"
}
},
{
"type": "context",
"elements": [
{
"text": "*February 2024* | Monthly Spotlight",
"type": "mrkdwn"
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "FOR YOUR INFORMATION",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\nStay in the loop about what’s happening at the office such as upcoming visitors, onsite meetings, lunches, and more. Don’t miss out—click to subscribe below."
}
]
}
]
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": ":google-workspace-calendar: *NYC Happenings* calendar"
},
"accessory": {
"type": "button",
"text": {
"type": "plain_text",
"text": "Click to subscribe",
"emoji": true
},
"value": "click_me_123",
"url": "https://calendar.google.com/calendar/u/0?cid=Y19iMzQyMGZiNWFjMDU5ZTFlMDM2ZGJkMjEwOTBhODc1YmI3YjJlYzQ3NWY3MTRmZWNjZGNlZjMwNDkzNGQ0ODA2QGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20",
"action_id": "button-action"
}
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "emoji",
"name": "office-building"
},
{
"type": "text",
"text": " | "
},
{
"type": "text",
"text": "Building Announcements ",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "| "
},
{
"type": "emoji",
"name": "office-building"
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/13",
"style": {
"code": true
}
},
{
"type": "text",
"text": " Would you like to be our Valentine? Join\nus at the lobby for some sweet treats!\n"
},
{
"type": "text",
"text": "2/19",
"style": {
"code": true
}
},
{
"type": "text",
"text": " President's Day, Property Management Office will be closed"
}
]
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "emoji",
"name": "announcement-blue"
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "ANNOUNCEMENT",
"style": {
"bold": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "emoji",
"name": "announcement-blue"
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/15",
"style": {
"code": true
}
},
{
"type": "text",
"text": " Our host for the US Stand Up is Taylor Maiman!\n"
}
]
},
{
"type": "rich_text_preformatted",
"border": 0,
"elements": [
{
"type": "text",
"text": "If you're keen on leading one, don't hesitate to reach out to wxhelp@xero.com!"
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "2/21 & 2/22",
"style": {
"code": true
}
},
{
"type": "text",
"text": " Leadership Onsite"
}
]
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "emoji",
"name": "date",
"unicode": "1f4c5"
},
{
"type": "text",
"text": " | "
},
{
"type": "text",
"text": "THURSDAY LUNCH SCHEDULE",
"style": {
"bold": true
}
},
{
"type": "text",
"text": " | "
},
{
"type": "emoji",
"name": "date",
"unicode": "1f4c5"
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/8",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "emoji",
"name": "chinese-lantern"
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "Ollie's Sichuan",
"style": {
"bold": true,
"italic": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/15",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "Lenwich",
"style": {
"bold": true,
"italic": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/22",
"style": {
"code": true
}
},
{
"type": "text",
"text": " Chopt Creative Salad Co",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/29",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "Sophie's Cuban Cuisine",
"style": {
"bold": true
}
}
]
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_quote",
"elements": [
{
"type": "text",
"text": "WX offers comprehensive event planning services, including:"
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "\n"
}
]
},
{
"type": "rich_text_list",
"style": "bullet",
"indent": 0,
"border": 0,
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "Assistance with logistics and coordination "
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "Access to a network of vendors for catering, supply ordering, etc."
}
]
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "\nNote: Even if you don’t need our assistance but are using the office space, kindly inform WX."
}
]
}
]
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": ":pushpin: Have something important to add to our calendar? Get in touch with us at wxhelp@xero.com and let us know. We're here to help!"
}
]
}
]
}
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":newspaper: STAY IN THE KNOW :newspaper:"
}
},
{
"type": "context",
"elements": [
{
"text": "*February 2024* | Monthly Spotlight",
"type": "mrkdwn"
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "FOR YOUR INFORMATION",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\nStay in the loop about what’s happening at the office such as upcoming visitors, onsite meetings, lunches, and more. Don’t miss out—click to subscribe below."
}
]
}
]
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": ":google-workspace-calendar: *SFO Happenings* calendar"
},
"accessory": {
"type": "button",
"text": {
"type": "plain_text",
"text": "Click to subscribe",
"emoji": true
},
"value": "click_me_123",
"url": "https://calendar.google.com/calendar/u/0?cid=Y184MjJkZWFkYWYyMjhiMWNhZmM0NjQ4NTA4MmMzY2E4ZjNlNjgyZDg0NGIzODFmYTYwZjRlNGU1ODUxOTdmNjhhQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20",
"action_id": "button-action"
}
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "emoji",
"name": "announcement-blue"
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "ANNOUNCEMENT",
"style": {
"bold": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "emoji",
"name": "announcement-blue"
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/15",
"style": {
"code": true
}
},
{
"type": "text",
"text": " Our host for the US Stand Up is Taylor Maiman!\n"
}
]
},
{
"type": "rich_text_preformatted",
"border": 0,
"elements": [
{
"type": "text",
"text": "If you're keen on leading one, don't hesitate to reach out to wxhelp@xero.com!"
}
]
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "emoji",
"name": "date",
"unicode": "1f4c5"
},
{
"type": "text",
"text": " | "
},
{
"type": "text",
"text": "THURSDAY LUNCH SCHEDULE",
"style": {
"bold": true
}
},
{
"type": "text",
"text": " | "
},
{
"type": "emoji",
"name": "date",
"unicode": "1f4c5"
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/8",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": " ",
"style": {
"bold": true,
"italic": true
}
},
{
"type": "emoji",
"name": "chinese-lantern",
"style": {
"bold": true,
"italic": true
}
},
{
"type": "text",
"text": " Little Szechuan",
"style": {
"bold": true,
"italic": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/15",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "The Grove - Yerba Buena",
"style": {
"bold": true,
"italic": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/22",
"style": {
"code": true
}
},
{
"type": "text",
"text": " RT Rotisserie",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "\n\n"
},
{
"type": "text",
"text": "2/29",
"style": {
"code": true
}
},
{
"type": "text",
"text": " "
},
{
"type": "text",
"text": "sweetgreen",
"style": {
"bold": true
}
}
]
}
]
},
{
"type": "divider"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_quote",
"elements": [
{
"type": "text",
"text": "WX offers comprehensive event planning services, including:"
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "\n"
}
]
},
{
"type": "rich_text_list",
"style": "bullet",
"indent": 0,
"border": 0,
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "Assistance with logistics and coordination "
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "Access to a network of vendors for catering, supply ordering, etc."
}
]
}
]
},
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "\nNote: Even if you don’t need our assistance but are using the office space, kindly inform WX."
}
]
}
]
},
{
"type": "divider"
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": ":pushpin: Have something important to add to our calendar? Don’t hesitate to reach out if you have any questions or concerns. Get in touch with us at wxhelp@xero.com and let us know. We're here to help!"
}
]
}
]
}
Unlock the potential of Telegram with our custom Telegram Mini Apps development services. Our skilled developers create versatile, lightweight mini apps that seamlessly integrate with Telegram, enhancing user engagement and offering a unique digital experience. From e-commerce solutions and payment gateways to customer support bots and interactive content, we build Telegram Mini Apps that elevate your business presence on the platform. We focus on delivering secure, scalable, and feature-rich apps that provide a smooth user experience and leverage the vast reach of Telegram’s ecosystem. Transform your business communication and customer interaction with innovative Telegram Mini Apps tailored to your specific needs.
If you’re searching for the best SEO services for your business, NounQ Technologies is a top SEO company in India. By using successive SEO tactics our digital marketing experts improve the website's organic visibility and maintain high rank in Search Engine. Our experts monitor your campaign manually by identifying areas for improvement and the needs of your targeted clients and work according to it. Our SEO services are committed towards providing effective and ethical Search Engine Optimization for both small and large scale businesses. Our SEO company works for you to create and promote valuable content according to the needs of clients.
void confirmDialog(
String req, TicketModel ticket, List<AuthModel> assignToPersonList) {
try {
if (req == "Approve") {
timeDurationController.clear();
showDialog(
barrierDismissible: false,
context: context,
builder: (context) {
return StatefulBuilder(
builder: (context, setState) {
return AlertDialog(
title: Center(
child: Text(
"Verify",
style: Theme.of(context).textTheme.bodyLarge,
),
),
content: SizedBox(
height: 200,
child: Column(
children: [
DropdownButtonFormField<String>(
validator: (value) {
if (value == null) {
return 'Please select a Person to Assign';
}
return null;
},
decoration: InputDecoration(
labelText: "Person to Assign",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
),
),
style: Theme.of(context).textTheme.bodyLarge,
iconSize: 30,
hint: const Text("Select Person to Assign"),
items: assignToPersonList.map((authModel) {
return DropdownMenuItem(
value: authModel.uid,
child: Text(authModel.fullName),
);
}).toList(),
onChanged: (String? value) {
setState(() {
selectedPerson = value;
});
},
),
const SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () {
setState(() {
isHourly = true;
timeDurationController.clear();
});
},
style: ElevatedButton.styleFrom(
backgroundColor: isHourly
? Color.fromARGB(255, 0, 0, 0)
: Color.fromARGB(255, 17, 17, 17),
),
child: const Text("Hourly"),
),
ElevatedButton(
onPressed: () {
setState(() {
isHourly = false;
});
},
style: ElevatedButton.styleFrom(
backgroundColor: !isHourly
? Color.fromARGB(255, 0, 0, 0)
: Color.fromARGB(255, 17, 17, 17),
),
child: const Text("Day"),
),
],
),
const SizedBox(height: 20),
TextField(
controller: timeDurationController,
keyboardType: TextInputType.number,
inputFormatters: [
FilteringTextInputFormatter.digitsOnly,
],
decoration: InputDecoration(
labelText: isHourly
? "Time Duration (Hours)"
: "Time Duration (Days)",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
),
),
// Restrict input based on mode
onChanged: (value) {
if (value.isNotEmpty) {
int enteredValue = int.parse(value);
if (isHourly) {
// If hourly, restrict between 1 and 7
if (enteredValue < 1 || enteredValue > 7) {
timeDurationController.text = "1";
}
} else {
// If day-wise, restrict between 1 and 60
if (enteredValue < 1 || enteredValue > 60) {
timeDurationController.text = "1";
}
}
// Set the cursor position at the end of the text
timeDurationController.selection =
TextSelection.fromPosition(
TextPosition(
offset: timeDurationController.text.length),
);
}
},
),
],
),
),
actions: <Widget>[
TextButton(
child: const Text('Cancel'),
onPressed: () {
Navigator.pop(context);
},
),
ElevatedButton(
child: const Text('Approve'),
onPressed: () async {
if (selectedPerson != null &&
timeDurationController.text.isNotEmpty) {
int timeDuration =
int.parse(timeDurationController.text);
if (!isHourly) {
timeDuration *= 7;
}
ticket.assignTo = selectedPerson!;
ticket.timeDuration = timeDuration;
ticket.status = TicketStatus.inProgress;
ref
.read(ticketControllerProvider)
.updateTicket(ref, ticket);
ref.invalidate(ticketListStreamProvider);
ref.invalidate(ticketsByCreatedByStreamProvider);
Navigator.pop(context);
} else {
log("Error: Please fill all fields.");
}
},
),
],
);
},
);
},
);
} else if (req == "Reject") {
TextEditingController rejectReason = TextEditingController();
final GlobalKey<FormState> _reject = GlobalKey<FormState>();
showDialog(
barrierDismissible: false,
context: context,
builder: (context) {
return AlertDialog(
title: Center(
child: Text(
"Verify",
style: Theme.of(context).textTheme.bodyLarge,
),
),
content: SizedBox(
height: 120,
child: Form(
key: _reject,
child: TextFormField(
validator: (text) {
if (text == null || text.isEmpty) {
return 'Please enter a reason for rejecting the request';
}
return null;
},
controller: rejectReason,
keyboardType: TextInputType.text,
textCapitalization: TextCapitalization.words,
decoration: InputDecoration(
labelText: "Reason for Rejection",
hintText: "Enter reason to reject the request",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
),
),
),
),
),
actions: <Widget>[
TextButton(
child: const Text('Cancel'),
onPressed: () {
Navigator.pop(context);
},
),
ElevatedButton(
child: const Text('Reject'),
onPressed: () async {
if (_reject.currentState!.validate()) {
ticket.status = TicketStatus.rejected;
ticket.rejectionRemark = rejectReason.text;
ref
.read(ticketControllerProvider)
.updateTicket(ref, ticket);
ref.invalidate(ticketListStreamProvider);
ref.invalidate(ticketsByCreatedByStreamProvider);
Navigator.pop(context);
}
},
),
],
);
},
);
}
} catch (e) {
log("Error occurred: $e");
}
}
void confirmDialog(
String req, TicketModel ticket, List<AuthModel> assignToPersonList) {
try {
if (req == "Approve") {
timeDurationController.clear();
showDialog(
barrierDismissible: false,
context: context,
builder: (context) {
return StatefulBuilder(
builder: (context, setState) {
return AlertDialog(
title: Center(
child: Text(
"Verify",
style: Theme.of(context).textTheme.bodyLarge,
),
),
content: SizedBox(
height: 200,
child: Column(
children: [
DropdownButtonFormField<String>(
validator: (value) {
if (value == null) {
return 'Please select a Person to Assign';
}
return null;
},
decoration: InputDecoration(
labelText: "Person to Assign",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
),
),
style: Theme.of(context).textTheme.bodyLarge,
iconSize: 30,
hint: const Text("Select Person to Assign"),
items: assignToPersonList.map((authModel) {
return DropdownMenuItem(
value: authModel.uid,
child: Text(authModel.fullName),
);
}).toList(),
onChanged: (String? value) {
setState(() {
selectedPerson = value;
});
},
),
const SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () {
setState(() {
isHourly = true;
timeDurationController.clear();
});
},
style: ElevatedButton.styleFrom(
backgroundColor: isHourly
? Color.fromARGB(255, 0, 0, 0)
: Color.fromARGB(255, 17, 17, 17),
),
child: const Text("Hourly"),
),
ElevatedButton(
onPressed: () {
setState(() {
isHourly = false;
});
},
style: ElevatedButton.styleFrom(
backgroundColor: !isHourly
? Color.fromARGB(255, 0, 0, 0)
: Color.fromARGB(255, 17, 17, 17),
),
child: const Text("Day"),
),
],
),
const SizedBox(height: 20),
TextField(
controller: timeDurationController,
keyboardType: TextInputType.number,
inputFormatters: [
FilteringTextInputFormatter.digitsOnly,
],
decoration: InputDecoration(
labelText: isHourly
? "Time Duration (Hours)"
: "Time Duration (Days)",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
),
),
onChanged: (value) {
if (value.isNotEmpty) {
int enteredValue = int.parse(value);
if (isHourly) {
// If hourly, restrict between 1 and 7
if (enteredValue < 1 || enteredValue > 7) {
timeDurationController.text = "1";
}
} else {
// If day-wise, restrict between 1 and 60
if (enteredValue < 1 || enteredValue > 60) {
timeDurationController.text = "1";
}
}
timeDurationController.selection =
TextSelection.fromPosition(
TextPosition(
offset: timeDurationController.text.length),
);
}
},
),
],
),
),
actions: <Widget>[
TextButton(
child: const Text('Cancel'),
onPressed: () {
Navigator.pop(context);
},
),
ElevatedButton(
child: const Text('Approve'),
onPressed: () async {
if (selectedPerson != null &&
timeDurationController.text.isNotEmpty) {
int timeDuration = int.parse(timeDurationController.text);
ticket.assignTo = selectedPerson!;
// Store the current time in assigningTime
DateTime assigningTime = DateTime.now();
ticket.assigningTime = assigningTime;
if (!isHourly) {
// Convert days to hours for storing as timeDuration
timeDuration *= 24;
}
// Add timeDuration to assigningTime to calculate estimatedTime
ticket.estimatedTime =
assigningTime.add(Duration(hours: timeDuration));
ticket.timeDuration = timeDuration;
ticket.status = TicketStatus.inProgress;
ref
.read(ticketControllerProvider)
.updateTicket(ref, ticket);
ref.invalidate(ticketListStreamProvider);
ref.invalidate(ticketsByCreatedByStreamProvider);
Navigator.pop(context);
} else {
log("Error: Please fill all fields.");
}
},
),
],
);
},
);
},
);
} else if (req == "Reject") {
// Code for Reject case
}
} catch (e) {
log("Error occurred: $e");
}
}
Use Node.js built-in tools with --inspect and Chrome DevTools for profiling. Use clinic.js for comprehensive performance analysis. Use memwatch-next for detecting memory leaks. Use heapdump for taking heap snapshots. Use autocannon for performance benchmarking.
// ignore_for_file: public_member_api_docs, sort_constructors_first
import 'dart:convert';
import 'dart:ui';
import 'package:enum_to_string/enum_to_string.dart';
import 'package:rrispat_app/src/features/ticket/ticket_enums.dart';
class TicketModel {
String id;
String createdBy;
String userDepartment;
String assignTo;
String againstDepartment;
String hod;
String subDepartment;
String teamLead;
int timeDuration;
String description;
DateTime? createdAt;
TicketStatus status;
int userRating;
UserReviewStatus userReviewStatus;
String rejectionRemark;
String reviewRemark;
List<String> solutionRemarks = [];
DateTime? assigningTime;
DateTime? estimatedTime;
TicketModel({
this.id = '',
this.createdBy = '',
this.userDepartment = '',
this.assignTo = '',
this.againstDepartment = '',
this.hod = '',
this.subDepartment = '',
this.teamLead = '',
this.timeDuration = 0,
this.description = '',
this.userRating = 0,
this.rejectionRemark = '',
this.reviewRemark = '',
this.solutionRemarks = const [],
this.userReviewStatus = UserReviewStatus.reviewNotReceived,
this.createdAt,
this.assigningTime,
this.estimatedTime,
this.status = TicketStatus.created,
// required this.status,
});
TicketModel copyWith({
String? id,
String? createdBy,
String? userDepartment,
String? assignTo,
String? againstDepartment,
String? hod,
String? subDepartment,
String? teamLead,
int? timeDuration,
String? description,
int? userRating,
UserReviewStatus? userReviewStatus,
String? rejectionRemark,
String? reviewRemark,
List<String>? solutionRemarks,
DateTime? createdAt,
TicketStatus? status,
}) {
return TicketModel(
id: id ?? this.id,
createdBy: createdBy ?? this.createdBy,
userDepartment: userDepartment ?? this.userDepartment,
assignTo: assignTo ?? this.assignTo,
againstDepartment: againstDepartment ?? this.againstDepartment,
hod: hod ?? this.hod,
subDepartment: subDepartment ?? this.subDepartment,
teamLead: teamLead ?? this.teamLead,
timeDuration: timeDuration ?? this.timeDuration,
description: description ?? this.description,
userRating: userRating ?? this.userRating,
userReviewStatus: userReviewStatus ?? this.userReviewStatus,
rejectionRemark: rejectionRemark ?? this.rejectionRemark,
reviewRemark: reviewRemark ?? this.reviewRemark,
solutionRemarks: solutionRemarks ?? this.solutionRemarks,
createdAt: createdAt ?? this.createdAt,
status: status ?? this.status,
);
}
Map<String, dynamic> toMap() {
return <String, dynamic>{
'id': id,
'createdBy': createdBy,
'userDepartment': userDepartment,
'assignTo': assignTo,
'againstDepartment': againstDepartment,
'hod': hod,
'subDepartment': subDepartment,
'teamLead': teamLead,
'timeDuration': timeDuration,
'description': description,
'userRating': userRating,
'userReviewStatus': userReviewStatus.name,
'rejectionRemark': rejectionRemark,
'reviewRemark': reviewRemark,
'solutionRemarks': solutionRemarks,
'createdAt': createdAt?.millisecondsSinceEpoch,
'status': status.name,
};
}
factory TicketModel.fromMap(Map<String, dynamic> map) {
return TicketModel(
id: map['_id'] as String,
createdBy: (map['createdBy'] ?? '') as String,
userDepartment: (map['userDepartment'] ?? '') as String,
assignTo: (map['assignTo'] ?? '') as String,
againstDepartment: (map['againstDepartment'] ?? '') as String,
hod: (map['hod'] ?? '') as String,
subDepartment: (map['subDepartment'] ?? '') as String,
teamLead: (map['teamLead'] ?? '') as String,
timeDuration: (map['timeDuration'] ?? 0) as int,
description: (map['description'] ?? '') as String,
userRating: (map['userRating'] ?? 0) as int,
rejectionRemark: (map['rejectionRemark'] ?? '') as String,
reviewRemark: (map['reviewRemark'] ?? '') as String,
solutionRemarks: List<String>.from(map['solutionRemarks'] ?? []),
createdAt: DateTime.parse((map['createdAt'])),
status:
EnumToString.fromString(TicketStatus.values, map['status'].toString())
as TicketStatus,
userReviewStatus: EnumToString.fromString(
UserReviewStatus.values, map['userReviewStatus'].toString())
as UserReviewStatus,
);
}
String toJson() => json.encode(toMap());
factory TicketModel.fromJson(String source) =>
TicketModel.fromMap(json.decode(source) as Map<String, dynamic>);
@override
String toString() {
return 'TicketModel(id: $id, createdBy: $createdBy, userDepartment: $userDepartment, assignTo: $assignTo, againstDepartment: $againstDepartment, hod: $hod, subDepartment: $subDepartment, teamLead: $teamLead, timeDuration: $timeDuration, description: $description,userRating: $userRating,userReviewStatus: $userReviewStatus, rejectionRemark: $rejectionRemark,reviewRemark: $reviewRemark,solutionRemarks: $solutionRemarks, createdAt: $createdAt, status: $status)';
}
@override
bool operator ==(covariant TicketModel other) {
if (identical(this, other)) return true;
return other.id == id &&
other.createdBy == createdBy &&
other.userDepartment == userDepartment &&
other.assignTo == assignTo &&
other.againstDepartment == againstDepartment &&
other.hod == hod &&
other.subDepartment == subDepartment &&
other.teamLead == teamLead &&
other.timeDuration == timeDuration &&
other.description == description &&
other.userRating == userRating &&
other.userReviewStatus == userReviewStatus &&
other.rejectionRemark == rejectionRemark &&
other.reviewRemark == reviewRemark &&
other.solutionRemarks == solutionRemarks &&
other.createdAt == createdAt &&
other.status == status;
}
@override
int get hashCode {
return hashList([
id,
createdBy,
userDepartment,
assignTo,
againstDepartment,
hod,
subDepartment,
teamLead,
timeDuration,
description,
userRating,
userReviewStatus,
rejectionRemark,
reviewRemark,
solutionRemarks,
createdAt,
status,
]);
}
}
def lines_that_equal(line_to_match, fp):
return [line for line in fp if line == line_to_match]
def lines_that_contain(string, fp):
return [line for line in fp if string in line]
def lines_that_start_with(string, fp):
return [line for line in fp if line.startswith(string)]
def lines_that_end_with(string, fp):
return [line for line in fp if line.endswith(string)]
Thu Sep 12 2024 14:31:48 GMT+0000 (Coordinated Universal Time)
@Y@sir #automatefaqsschema #bricksaccordionelement #automatefaqsschema for bricks accordion element
Thu Sep 12 2024 12:48:13 GMT+0000 (Coordinated Universal Time) https://creatiosoft.com/poker-game-development
Thu Sep 12 2024 10:01:27 GMT+0000 (Coordinated Universal Time) https://www.coinsclone.com/hire-blockchain-developers/
@AaronMG ##hireblockchaindevelopers ##hiringblockchaindevelopers ##bestblockchaindevelopers
Thu Sep 12 2024 08:06:31 GMT+0000 (Coordinated Universal Time) https://www.coinsclone.com/top-nft-trends/
@LilianAnderson #topnfttrends #nfttrends #nftdevelopment #nftsolutions #tokenization
Thu Sep 12 2024 05:44:34 GMT+0000 (Coordinated Universal Time) https://medium.com/@tempmailwithpassword/finding-the-email-of-the-founder-in-salesforce-when-logging-in-as-a-different-user-bea709883ad2
Thu Sep 12 2024 04:49:09 GMT+0000 (Coordinated Universal Time) https://www.vishyat.com/website-designing-services-in-gurgaon/
Thu Sep 12 2024 03:28:08 GMT+0000 (Coordinated Universal Time) https://www.programiz.com/cpp-programming/online-compiler/
Wed Sep 11 2024 19:31:10 GMT+0000 (Coordinated Universal Time) https://www.programiz.com/cpp-programming/online-compiler/
Wed Sep 11 2024 11:20:55 GMT+0000 (Coordinated Universal Time) https://www.tenforums.com/tutorials/82643-clean-up-component-store-winsxs-folder-windows-10-a.html
Tue Sep 10 2024 13:30:15 GMT+0000 (Coordinated Universal Time) https://blockchain.oodles.io/telegram-mini-apps-development/?utm_source=thiscodeworks
Tue Sep 10 2024 12:59:53 GMT+0000 (Coordinated Universal Time) https://stackoverflow.com/questions/54087631/paypal-sizeof-parameter-must-be-an-array-or-an-object-that-implements-countab
Tue Sep 10 2024 11:24:46 GMT+0000 (Coordinated Universal Time) https://magento.stackexchange.com/questions/318291/no-administrators-role-was-found-data-fixture-needs-to-be-run
Tue Sep 10 2024 10:51:38 GMT+0000 (Coordinated Universal Time) https://nounq.com/seo-services


