This commit is contained in:
2025-11-24 00:15:32 +08:00
parent 9f7667a475
commit 0eeeb54784
256 changed files with 49494 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
# Welcome to mutils!
`mutils` is a python package containing many Maya utility functions for managing poses and animations in Maya.
* www.studiolibrary.com

View File

@@ -0,0 +1,30 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
from .cmds import *
from .decorators import *
from . import playblast
from . import namespace
from .scriptjob import ScriptJob
from .matchnames import matchNames, groupObjects
from .node import Node
from .attribute import Attribute
from .transferobject import TransferObject
from .selectionset import SelectionSet, saveSelectionSet
from .pose import Pose, savePose, loadPose
from .animation import Animation, PasteOption, saveAnim, loadAnims
from .mirrortable import MirrorTable, MirrorOption, saveMirrorTable

View File

@@ -0,0 +1,839 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
import os
import shutil
import logging
from studiovendor.Qt import QtWidgets
import mutils
import mutils.gui
try:
import maya.cmds
except ImportError:
import traceback
traceback.print_exc()
logger = logging.getLogger(__name__)
MIN_TIME_LIMIT = -10000
MAX_TIME_LIMIT = 100000
DEFAULT_FILE_TYPE = "mayaBinary" # "mayaAscii"
# A feature flag that will be removed in the future.
FIX_SAVE_ANIM_REFERENCE_LOCKED_ERROR = True
class PasteOption:
Insert = "insert"
Replace = "replace"
ReplaceAll = "replace all"
ReplaceCompletely = "replaceCompletely"
class AnimationTransferError(Exception):
"""Base class for exceptions in this module."""
pass
class OutOfBoundsError(AnimationTransferError):
"""Exceptions for clips or ranges that are outside the expected range"""
pass
def validateAnimLayers():
"""
Check if the selected animation layer can be exported.
:raise: AnimationTransferError
"""
if maya.cmds.about(q=True, batch=True):
return
animLayers = maya.mel.eval('$gSelectedAnimLayers=$gSelectedAnimLayers')
# Check if more than one animation layer has been selected.
if len(animLayers) > 1:
msg = "More than one animation layer is selected! " \
"Please select only one animation layer for export!"
raise AnimationTransferError(msg)
# Check if the selected animation layer is locked
if len(animLayers) == 1:
if maya.cmds.animLayer(animLayers[0], query=True, lock=True):
msg = "Cannot export an animation layer that is locked! " \
"Please unlock the anim layer before exporting animation!"
raise AnimationTransferError(msg)
def saveAnim(
objects,
path,
time=None,
sampleBy=1,
fileType="",
metadata=None,
iconPath="",
sequencePath="",
bakeConnected=True
):
"""
Save the anim data for the given objects.
Example:
import mutils
mutils.saveAnim(
path="c:/example.anim",
objects=["control1", "control2"]
time=(1, 20),
metadata={'description': 'Example anim'}
)
:type path: str
:type objects: None or list[str]
:type time: (int, int) or None
:type fileType: str or None
:type sampleBy: int
:type iconPath: str
:type sequencePath: str
:type metadata: dict or None
:type bakeConnected: bool
:rtype: mutils.Animation
"""
# Copy the icon path to the temp location
if iconPath:
shutil.copyfile(iconPath, path + "/thumbnail.jpg")
# Copy the sequence path to the temp location
if sequencePath:
shutil.move(sequencePath, path + "/sequence")
# Save the animation to the temp location
anim = mutils.Animation.fromObjects(objects)
anim.updateMetadata(metadata)
anim.save(
path,
time=time,
sampleBy=sampleBy,
fileType=fileType,
bakeConnected=bakeConnected
)
return anim
def clampRange(srcTime, dstTime):
"""
Clips the given source time to within the given destination time.
Example:
print clampRange((15, 35), (20, 30))
# 20, 30
print clampRange((25, 45), (20, 30))
# 25, 30
:type srcTime: (int, int)
:type dstTime: (int, int)
:rtype: (int, int)
"""
srcStart, srcEnd = srcTime
dstStart, dstEnd = dstTime
if srcStart > dstEnd or srcEnd < dstStart:
msg = "The src and dst time do not overlap. " \
"Unable to clamp (src=%s, dest=%s)"
raise OutOfBoundsError(msg, srcTime, dstTime)
if srcStart < dstStart:
srcStart = dstStart
if srcEnd > dstEnd:
srcEnd = dstEnd
return srcStart, srcEnd
def moveTime(time, start):
"""
Move the given time to the given start time.
Example:
print moveTime((15, 35), 5)
# 5, 20
:type time: (int, int)
:type start: int
:rtype: (int, int)
"""
srcStartTime, srcEndTime = time
duration = srcEndTime - srcStartTime
if start is None:
startTime = srcStartTime
else:
startTime = start
endTime = startTime + duration
if startTime == endTime:
endTime = startTime + 1
return startTime, endTime
def findFirstLastKeyframes(curves, time=None):
"""
Return the first and last frame of the given animation curves
:type curves: list[str]
:type time: (int, int)
:rtype: (int, int)
"""
first = maya.cmds.findKeyframe(curves, which='first')
last = maya.cmds.findKeyframe(curves, which='last')
result = (first, last)
if time:
# It's possible (but unlikely) that the curves will not lie within the
# first and last frame
try:
result = clampRange(time, result)
except OutOfBoundsError as error:
logger.warning(error)
return result
def insertKeyframe(curves, time):
"""
Insert a keyframe on the given curves at the given time.
:type curves: list[str]
:type time: (int, int)
"""
startTime, endTime = time
for curve in curves:
insertStaticKeyframe(curve, time)
firstFrame = maya.cmds.findKeyframe(curves, time=(startTime, startTime), which='first')
lastFrame = maya.cmds.findKeyframe(curves, time=(endTime, endTime), which='last')
if firstFrame < startTime < lastFrame:
maya.cmds.setKeyframe(curves, insert=True, time=(startTime, startTime))
if firstFrame < endTime < lastFrame:
maya.cmds.setKeyframe(curves, insert=True, time=(endTime, endTime))
def insertStaticKeyframe(curve, time):
"""
Insert a static keyframe on the given curve at the given time.
:type curve: str
:type time: (int, int)
:rtype: None
"""
startTime, endTime = time
lastFrame = maya.cmds.findKeyframe(curve, which='last')
firstFrame = maya.cmds.findKeyframe(curve, which='first')
if firstFrame == lastFrame:
maya.cmds.setKeyframe(curve, insert=True, time=(startTime, endTime))
maya.cmds.keyTangent(curve, time=(startTime, startTime), ott="step")
if startTime < firstFrame:
nextFrame = maya.cmds.findKeyframe(curve, time=(startTime, startTime), which='next')
if startTime < nextFrame < endTime:
maya.cmds.setKeyframe(curve, insert=True, time=(startTime, nextFrame))
maya.cmds.keyTangent(curve, time=(startTime, startTime), ott="step")
if endTime > lastFrame:
previousFrame = maya.cmds.findKeyframe(curve, time=(endTime, endTime), which='previous')
if startTime < previousFrame < endTime:
maya.cmds.setKeyframe(curve, insert=True, time=(previousFrame, endTime))
maya.cmds.keyTangent(curve, time=(previousFrame, previousFrame), ott="step")
def duplicateNode(node, name):
"""Duplicate the given node.
:param node: Maya path.
:type node: str
:param name: Name for the duplicated node.
:type name: str
:returns: Duplicated node names.
:rtype: list[str]
"""
if maya.cmds.nodeType(node) in ["transform", "joint"]:
new = maya.cmds.duplicate(node, name=name, parentOnly=True)[0]
else:
# Please let us know if this logic is causing issues.
new = maya.cmds.duplicate(node, name=name)[0]
shapes = maya.cmds.listRelatives(new, shapes=True) or []
if shapes:
return [shapes[0], new]
return [new]
def loadAnims(
paths,
spacing=1,
objects=None,
option=None,
connect=False,
namespaces=None,
startFrame=None,
mirrorTable=None,
currentTime=None,
showDialog=False,
):
"""
Load the animations in the given order of paths with the spacing specified.
:type paths: list[str]
:type spacing: int
:type connect: bool
:type objects: list[str]
:type namespaces: list[str]
:type startFrame: int
:type option: PasteOption
:type currentTime: bool
:type mirrorTable: bool
:type showDialog: bool
"""
isFirstAnim = True
if spacing < 1:
spacing = 1
if option is None or option == "replace all":
option = PasteOption.ReplaceCompletely
if currentTime and startFrame is None:
startFrame = int(maya.cmds.currentTime(query=True))
if showDialog:
msg = "Load the following animation in sequence;\n"
for i, path in enumerate(paths):
msg += "\n {0}. {1}".format(i, os.path.basename(path))
msg += "\n\nPlease choose the spacing between each animation."
spacing, accepted = QtWidgets.QInputDialog.getInt(
None,
"Load animation sequence",
msg,
spacing,
QtWidgets.QInputDialog.NoButtons,
)
if not accepted:
raise Exception("Dialog canceled!")
for path in paths:
anim = mutils.Animation.fromPath(path)
if startFrame is None and isFirstAnim:
startFrame = anim.startFrame()
if option == "replaceCompletely" and not isFirstAnim:
option = "insert"
anim.load(
option=option,
objects=objects,
connect=connect,
startFrame=startFrame,
namespaces=namespaces,
currentTime=currentTime,
mirrorTable=mirrorTable,
)
duration = anim.endFrame() - anim.startFrame()
startFrame += duration + spacing
isFirstAnim = False
class Animation(mutils.Pose):
IMPORT_NAMESPACE = "REMOVE_IMPORT"
@classmethod
def fromPath(cls, path):
"""
Create and return an Anim object from the give path.
Example:
anim = Animation.fromPath("/temp/example.anim")
print anim.endFrame()
# 14
:type path: str
:rtype: Animation
"""
anim = cls()
anim.setPath(path)
anim.read()
return anim
def __init__(self):
mutils.Pose.__init__(self)
try:
timeUnit = maya.cmds.currentUnit(q=True, time=True)
linearUnit = maya.cmds.currentUnit(q=True, linear=True)
angularUnit = maya.cmds.currentUnit(q=True, angle=True)
self.setMetadata("timeUnit", timeUnit)
self.setMetadata("linearUnit", linearUnit)
self.setMetadata("angularUnit", angularUnit)
except NameError as msg:
logger.exception(msg)
def select(self, objects=None, namespaces=None, **kwargs):
"""
Select the objects contained in the animation.
:type objects: list[str] or None
:type namespaces: list[str] or None
:rtype: None
"""
selectionSet = mutils.SelectionSet.fromPath(self.poseJsonPath())
selectionSet.load(objects=objects, namespaces=namespaces, **kwargs)
def startFrame(self):
"""
Return the start frame for anim object.
:rtype: int
"""
return self.metadata().get("startFrame")
def endFrame(self):
"""
Return the end frame for anim object.
:rtype: int
"""
return self.metadata().get("endFrame")
def mayaPath(self):
"""
:rtype: str
"""
mayaPath = os.path.join(self.path(), "animation.mb")
if not os.path.exists(mayaPath):
mayaPath = os.path.join(self.path(), "animation.ma")
return mayaPath
def poseJsonPath(self):
"""
:rtype: str
"""
return os.path.join(self.path(), "pose.json")
def paths(self):
"""
Return all the paths for Anim object.
:rtype: list[str]
"""
result = []
if os.path.exists(self.mayaPath()):
result.append(self.mayaPath())
if os.path.exists(self.poseJsonPath()):
result.append(self.poseJsonPath())
return result
def animCurve(self, name, attr, withNamespace=False):
"""
Return the animCurve for the given object name and attribute.
:type name: str
:type attr: str
:type withNamespace: bool
:rtype: str
"""
curve = self.attr(name, attr).get("curve", None)
if curve and withNamespace:
curve = Animation.IMPORT_NAMESPACE + ":" + curve
return curve
def setAnimCurve(self, name, attr, curve):
"""
Set the animCurve for the given object name and attribute.
:type name: str
:type attr: str
:type curve: str
"""
self.objects()[name].setdefault("attrs", {})
self.objects()[name]["attrs"].setdefault(attr, {})
self.objects()[name]["attrs"][attr]["curve"] = curve
def read(self, path=None):
"""
Read all the data to be used by the Anim object.
:rtype: None
"""
path = self.poseJsonPath()
logger.debug("Reading: " + path)
mutils.Pose.read(self, path=path)
logger.debug("Reading Done")
def isAscii(self, s):
"""Check if the given string is a valid ascii string."""
return all(ord(c) < 128 for c in s)
@mutils.unifyUndo
@mutils.restoreSelection
def open(self):
"""
The reason we use importing and not referencing is because we
need to modify the imported animation curves and modifying
referenced animation curves is only supported in Maya 2014+
"""
self.close() # Make sure everything is cleaned before importing
if not self.isAscii(self.mayaPath()):
msg = "Cannot load animation using non-ascii paths."
raise IOError(msg)
nodes = maya.cmds.file(
self.mayaPath(),
i=True,
groupLocator=True,
ignoreVersion=True,
returnNewNodes=True,
namespace=Animation.IMPORT_NAMESPACE,
)
return nodes
def close(self):
"""
Clean up all imported nodes, as well as the namespace.
Should be called in a finally block.
"""
nodes = maya.cmds.ls(Animation.IMPORT_NAMESPACE + ":*", r=True) or []
if nodes:
maya.cmds.delete(nodes)
# It is important that we remove the imported namespace,
# otherwise another namespace will be created on next
# animation open.
namespaces = maya.cmds.namespaceInfo(ls=True) or []
if Animation.IMPORT_NAMESPACE in namespaces:
maya.cmds.namespace(set=':')
maya.cmds.namespace(rm=Animation.IMPORT_NAMESPACE)
def cleanMayaFile(self, path):
"""
Clean up all commands in the exported maya file that are
not createNode.
"""
results = []
if path.endswith(".mb"):
return
with open(path, "r") as f:
for line in f.readlines():
if not line.startswith("select -ne"):
results.append(line)
else:
results.append("// End")
break
with open(path, "w") as f:
f.writelines(results)
@mutils.timing
@mutils.unifyUndo
@mutils.showWaitCursor
@mutils.restoreSelection
def save(
self,
path,
time=None,
sampleBy=1,
fileType="",
bakeConnected=True
):
"""
Save all animation data from the objects set on the Anim object.
:type path: str
:type time: (int, int) or None
:type sampleBy: int
:type fileType: str
:type bakeConnected: bool
:rtype: None
"""
objects = list(self.objects().keys())
fileType = fileType or DEFAULT_FILE_TYPE
if not time:
time = mutils.selectedObjectsFrameRange(objects)
start, end = time
# Check selected animation layers
validateAnimLayers()
# Check frame range
if start is None or end is None:
msg = "Please specify a start and end frame!"
raise AnimationTransferError(msg)
if start >= end:
msg = "The start frame cannot be greater than or equal to the end frame!"
raise AnimationTransferError(msg)
# Check if animation exists
if mutils.getDurationFromNodes(objects or [], time=time) <= 0:
msg = "No animation was found on the specified object/s! " \
"Please create a pose instead!"
raise AnimationTransferError(msg)
self.setMetadata("endFrame", end)
self.setMetadata("startFrame", start)
end += 1
validCurves = []
deleteObjects = []
msg = u"Animation.save(path={0}, time={1}, bakeConnections={2}, sampleBy={3})"
msg = msg.format(path, str(time), str(bakeConnected), str(sampleBy))
logger.debug(msg)
try:
if bakeConnected:
maya.cmds.undoInfo(openChunk=True)
mutils.bakeConnected(objects, time=(start, end), sampleBy=sampleBy)
for name in objects:
if maya.cmds.copyKey(name, time=(start, end), includeUpperBound=False, option="keys"):
dstNodes = duplicateNode(name, "CURVE")
dstNode = dstNodes[0]
deleteObjects.extend(dstNodes)
if not FIX_SAVE_ANIM_REFERENCE_LOCKED_ERROR:
mutils.disconnectAll(dstNode)
# Make sure we delete all proxy attributes, otherwise pasteKey will duplicate keys
mutils.Attribute.deleteProxyAttrs(dstNode)
maya.cmds.pasteKey(dstNode)
attrs = maya.cmds.listAttr(dstNode, unlocked=True, keyable=True) or []
attrs = list(set(attrs) - set(['translate', 'rotate', 'scale']))
for attr in attrs:
dstAttr = mutils.Attribute(dstNode, attr)
dstCurve = dstAttr.animCurve()
if dstCurve:
dstCurve = maya.cmds.rename(dstCurve, "CURVE")
deleteObjects.append(dstCurve)
srcAttr = mutils.Attribute(name, attr)
srcCurve = srcAttr.animCurve()
if srcCurve:
preInfinity = maya.cmds.getAttr(srcCurve + ".preInfinity")
postInfinity = maya.cmds.getAttr(srcCurve + ".postInfinity")
curveColor = maya.cmds.getAttr(srcCurve + ".curveColor")
useCurveColor = maya.cmds.getAttr(srcCurve + ".useCurveColor")
maya.cmds.setAttr(dstCurve + ".preInfinity", preInfinity)
maya.cmds.setAttr(dstCurve + ".postInfinity", postInfinity)
maya.cmds.setAttr(dstCurve + ".curveColor", *curveColor[0])
maya.cmds.setAttr(dstCurve + ".useCurveColor", useCurveColor)
if maya.cmds.keyframe(dstCurve, query=True, time=(start, end), keyframeCount=True):
self.setAnimCurve(name, attr, dstCurve)
maya.cmds.cutKey(dstCurve, time=(MIN_TIME_LIMIT, start - 1))
maya.cmds.cutKey(dstCurve, time=(end + 1, end + MAX_TIME_LIMIT))
validCurves.append(dstCurve)
fileName = "animation.ma"
if fileType == "mayaBinary":
fileName = "animation.mb"
mayaPath = os.path.join(path, fileName)
posePath = os.path.join(path, "pose.json")
mutils.Pose.save(self, posePath)
if validCurves:
maya.cmds.select(validCurves)
logger.info("Saving animation: %s" % mayaPath)
maya.cmds.file(mayaPath, force=True, options='v=0', type=fileType, uiConfiguration=False, exportSelected=True)
self.cleanMayaFile(mayaPath)
finally:
if bakeConnected:
# HACK! Undo all baked connections. :)
maya.cmds.undoInfo(closeChunk=True)
maya.cmds.undo()
elif deleteObjects:
maya.cmds.delete(deleteObjects)
self.setPath(path)
@mutils.timing
@mutils.showWaitCursor
def load(
self,
objects=None,
namespaces=None,
attrs=None,
startFrame=None,
sourceTime=None,
option=None,
connect=False,
mirrorTable=None,
currentTime=None
):
"""
Load the animation data to the given objects or namespaces.
:type objects: list[str]
:type namespaces: list[str]
:type startFrame: int
:type sourceTime: (int, int) or None
:type attrs: list[str]
:type option: PasteOption or None
:type connect: bool
:type mirrorTable: mutils.MirrorTable
:type currentTime: bool or None
"""
logger.info(u'Loading: {0}'.format(self.path()))
connect = bool(connect) # Make false if connect is None
if not sourceTime:
sourceTime = (self.startFrame(), self.endFrame())
if option and option.lower() == "replace all":
option = "replaceCompletely"
if option is None or option == PasteOption.ReplaceAll:
option = PasteOption.ReplaceCompletely
self.validate(namespaces=namespaces)
objects = objects or []
logger.debug("Animation.load(objects=%s, option=%s, namespaces=%s, srcTime=%s, currentTime=%s)" %
(len(objects), str(option), str(namespaces), str(sourceTime), str(currentTime)))
srcObjects = self.objects().keys()
if mirrorTable:
self.setMirrorTable(mirrorTable)
valid = False
matches = list(mutils.matchNames(srcObjects=srcObjects, dstObjects=objects, dstNamespaces=namespaces))
for srcNode, dstNode in matches:
if dstNode.exists():
valid = True
break
if not matches or not valid:
text = "No objects match when loading data. " \
"Turn on debug mode to see more details."
raise mutils.NoMatchFoundError(text)
# Load the animation data.
srcCurves = self.open()
try:
maya.cmds.flushUndo()
maya.cmds.undoInfo(openChunk=True)
if currentTime and startFrame is None:
startFrame = int(maya.cmds.currentTime(query=True))
srcTime = findFirstLastKeyframes(srcCurves, sourceTime)
dstTime = moveTime(srcTime, startFrame)
if option != PasteOption.ReplaceCompletely:
insertKeyframe(srcCurves, srcTime)
for srcNode, dstNode in matches:
# Remove the first pipe in-case the object has a parent
dstNode.stripFirstPipe()
for attr in self.attrs(srcNode.name()):
# Filter any attributes if the parameter has been set
if attrs is not None and attr not in attrs:
continue
dstAttr = mutils.Attribute(dstNode.name(), attr)
if not dstAttr.exists():
logger.debug('Skipping attribute: The destination attribute "%s" does not exist!' % dstAttr.fullname())
continue
if dstAttr.isProxy():
logger.debug('Skipping attribute: The destination attribute "%s" is a proxy attribute!', dstAttr.fullname())
continue
srcCurve = self.animCurve(srcNode.name(), attr, withNamespace=True)
if srcCurve:
dstAttr.setAnimCurve(
srcCurve,
time=dstTime,
option=option,
source=srcTime,
connect=connect
)
else:
value = self.attrValue(srcNode.name(), attr)
dstAttr.setStaticKeyframe(value, dstTime, option)
finally:
self.close()
maya.cmds.undoInfo(closeChunk=True)
# Return the focus to the Maya window
maya.cmds.setFocus("MayaWindow")
logger.info(u'Loaded: {0}'.format(self.path()))

View File

@@ -0,0 +1,565 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
"""
Example:
import mutils
attr = mutils.Attribute("sphere1", "translateX")
attr.set(100)
"""
import logging
from studiovendor import six
try:
import maya.cmds
except ImportError:
import traceback
traceback.print_exc()
logger = logging.getLogger(__name__)
VALID_CONNECTIONS = [
"animCurve",
"animBlend",
"pairBlend",
"character"
]
VALID_BLEND_ATTRIBUTES = [
"int",
"long",
"float",
"short",
"double",
"doubleAngle",
"doubleLinear",
]
VALID_ATTRIBUTE_TYPES = [
"int",
"long",
"enum",
"bool",
"string",
"float",
"short",
"double",
"doubleAngle",
"doubleLinear",
]
class AttributeError(Exception):
"""Base class for exceptions in this module."""
pass
class Attribute(object):
@classmethod
def listAttr(cls, name, **kwargs):
"""
Return a list of Attribute from the given name and matching criteria.
If no flags are specified all attributes are listed.
:rtype: list[Attribute]
"""
attrs = maya.cmds.listAttr(name, **kwargs) or []
return [cls(name, attr) for attr in attrs]
@classmethod
def deleteProxyAttrs(cls, name):
"""Delete all the proxy attributes for the given object name."""
attrs = cls.listAttr(name, unlocked=True, keyable=True) or []
for attr in attrs:
if attr.isProxy():
attr.delete()
def __init__(self, name, attr=None, value=None, type=None, cache=True):
"""
:type name: str
:type attr: str | None
:type type: str | None
:type value: object | None
:type cache: bool
"""
if "." in name:
name, attr = name.split(".")
if attr is None:
msg = "Cannot initialise attribute instance without a given attr."
raise AttributeError(msg)
self._name = six.text_type(name)
self._attr = six.text_type(attr)
self._type = type
self._value = value
self._cache = cache
self._fullname = None
def __str__(self):
"""
:rtype: str
"""
return str(self.toDict())
def name(self):
"""
Return the Maya object name for the attribute.
:rtype: str
"""
return self._name
def attr(self):
"""
Return the attribute name.
:rtype: str
"""
return self._attr
def isLocked(self):
"""
Return true if the attribute is locked.
:rtype: bool
"""
return maya.cmds.getAttr(self.fullname(), lock=True)
def isUnlocked(self):
"""
Return true if the attribute is unlocked.
:rtype: bool
"""
return not self.isLocked()
def toDict(self):
"""
Return a dictionary of the attribute object.
:rtype: dict
"""
result = {
"type": self.type(),
"value": self.value(),
"fullname": self.fullname(),
}
return result
def isValid(self):
"""
Return true if the attribute type is valid.
:rtype: bool
"""
return self.type() in VALID_ATTRIBUTE_TYPES
def isProxy(self):
"""
Return true if the attribute is a proxy
:rtype: bool
"""
if not maya.cmds.addAttr(self.fullname(), query=True, exists=True):
return False
return maya.cmds.addAttr(self.fullname(), query=True, usedAsProxy=True)
def delete(self):
"""Delete the attribute"""
maya.cmds.deleteAttr(self.fullname())
def exists(self):
"""
Return true if the object and attribute exists in the scene.
:rtype: bool
"""
return maya.cmds.objExists(self.fullname())
def prettyPrint(self):
"""
Print the command for setting the attribute value
"""
msg = 'maya.cmds.setAttr("{0}", {1})'
msg = msg.format(self.fullname(), self.value())
print(msg)
def clearCache(self):
"""
Clear all cached values
"""
self._type = None
self._value = None
def update(self):
"""
This method will be deprecated.
"""
self.clearCache()
def query(self, **kwargs):
"""
Convenience method for Maya's attribute query command
:rtype: object
"""
return maya.cmds.attributeQuery(self.attr(), node=self.name(), **kwargs)
def listConnections(self, **kwargs):
"""
Convenience method for Maya's list connections command
:rtype: list[str]
"""
return maya.cmds.listConnections(self.fullname(), **kwargs)
def sourceConnection(self, **kwargs):
"""
Return the source connection for this attribute.
:rtype: str | None
"""
try:
return self.listConnections(destination=False, **kwargs)[0]
except IndexError:
return None
def fullname(self):
"""
Return the name with the attr name.
:rtype: str
"""
if self._fullname is None:
self._fullname = '{0}.{1}'.format(self.name(), self.attr())
return self._fullname
def value(self):
"""
Return the value of the attribute.
:rtype: float | str | list
"""
if self._value is None or not self._cache:
try:
self._value = maya.cmds.getAttr(self.fullname())
except Exception:
msg = 'Cannot GET attribute VALUE for "{0}"'
msg = msg.format(self.fullname())
logger.exception(msg)
return self._value
def type(self):
"""
Return the type of data currently in the attribute.
:rtype: str
"""
if self._type is None:
try:
self._type = maya.cmds.getAttr(self.fullname(), type=True)
self._type = six.text_type(self._type)
except Exception:
msg = 'Cannot GET attribute TYPE for "{0}"'
msg = msg.format(self.fullname())
logger.exception(msg)
return self._type
def set(self, value, blend=100, key=False, clamp=True, additive=False):
"""
Set the value for the attribute.
:type key: bool
:type clamp: bool
:type value: float | str | list
:type blend: float
"""
try:
if additive and self.type() != 'bool':
if self.attr().startswith('scale'):
value = self.value() * (1 + (value - 1) * (blend/100.0))
else:
value = self.value() + value * (blend/100.0)
elif int(blend) == 0:
value = self.value()
else:
_value = (value - self.value()) * (blend/100.00)
value = self.value() + _value
except TypeError as error:
msg = 'Cannot BLEND or ADD attribute {0}: Error: {1}'
msg = msg.format(self.fullname(), error)
logger.debug(msg)
try:
if self.type() in ["string"]:
maya.cmds.setAttr(self.fullname(), value, type=self.type())
elif self.type() in ["list", "matrix"]:
maya.cmds.setAttr(self.fullname(), *value, type=self.type())
else:
maya.cmds.setAttr(self.fullname(), value, clamp=clamp)
except (ValueError, RuntimeError) as error:
msg = "Cannot SET attribute {0}: Error: {1}"
msg = msg.format(self.fullname(), error)
logger.debug(msg)
try:
if key:
self.setKeyframe(value=value)
except TypeError as error:
msg = 'Cannot KEY attribute {0}: Error: {1}'
msg = msg.format(self.fullname(), error)
logger.debug(msg)
def setKeyframe(self, value, respectKeyable=True, **kwargs):
"""
Set a keyframe with the given value.
:value: object
:respectKeyable: bool
:rtype: None
"""
if self.query(minExists=True):
minimum = self.query(minimum=True)[0]
if value < minimum:
value = minimum
if self.query(maxExists=True):
maximum = self.query(maximum=True)[0]
if value > maximum:
value = maximum
kwargs.setdefault("value", value)
kwargs.setdefault("respectKeyable", respectKeyable)
maya.cmds.setKeyframe(self.fullname(), **kwargs)
def setStaticKeyframe(self, value, time, option):
"""
Set a static keyframe at the given time.
:type value: object
:type time: (int, int)
:type option: PasteOption
"""
if option == "replaceCompletely":
maya.cmds.cutKey(self.fullname())
self.set(value, key=False)
# This should be changed to only look for animation.
# Also will need to support animation layers ect...
elif self.isConnected():
# TODO: Should also support static attrs when there is animation.
if option == "replace":
maya.cmds.cutKey(self.fullname(), time=time)
self.insertStaticKeyframe(value, time)
elif option == "replace":
self.insertStaticKeyframe(value, time)
else:
self.set(value, key=False)
def insertStaticKeyframe(self, value, time):
"""
Insert a static keyframe at the given time with the given value.
:type value: float | str
:type time: (int, int)
:rtype: None
"""
startTime, endTime = time
duration = endTime - startTime
try:
# Offset all keyframes from the start position.
maya.cmds.keyframe(self.fullname(), relative=True, time=(startTime, 1000000), timeChange=duration)
# Set a key at the given start and end time
self.setKeyframe(value, time=(startTime, startTime), ott='step')
self.setKeyframe(value, time=(endTime, endTime), itt='flat', ott='flat')
# Set the tangent for the next keyframe to flat
nextFrame = maya.cmds.findKeyframe(self.fullname(), time=(endTime, endTime), which='next')
maya.cmds.keyTangent(self.fullname(), time=(nextFrame, nextFrame), itt='flat')
except TypeError as error:
msg = "Cannot insert static key frame for attribute {0}: Error: {1}"
msg = msg.format(self.fullname(), error)
logger.debug(msg)
def setAnimCurve(self, curve, time, option, source=None, connect=False):
"""
Set/Paste the give animation curve to this attribute.
:type curve: str
:type option: PasteOption
:type time: (int, int)
:type source: (int, int)
:type connect: bool
:rtype: None
"""
fullname = self.fullname()
startTime, endTime = time
if self.isProxy():
logger.debug("Cannot set anim curve for proxy attribute")
return
if not self.exists():
logger.debug("Attr does not exists")
return
if self.isLocked():
logger.debug("Cannot set anim curve when the attr locked")
return
if source is None:
first = maya.cmds.findKeyframe(curve, which='first')
last = maya.cmds.findKeyframe(curve, which='last')
source = (first, last)
# We run the copy key command twice to check we have a valid curve.
# It needs to run before the cutKey command, otherwise if it fails
# we have cut keys for no reason!
success = maya.cmds.copyKey(curve, time=source)
if not success:
msg = "Cannot copy keys from the anim curve {0}"
msg = msg.format(curve)
logger.debug(msg)
return
if option == "replace":
maya.cmds.cutKey(fullname, time=time)
else:
time = (startTime, startTime)
try:
# Update the clip board with the give animation curve
maya.cmds.copyKey(curve, time=source)
# Note: If the attribute is connected to referenced
# animation then the following command will not work.
maya.cmds.pasteKey(fullname, option=option, time=time, connect=connect)
if option == "replaceCompletely":
# The pasteKey cmd doesn't support all anim attributes
# so we need to manually set theses.
dstCurve = self.animCurve()
if dstCurve:
curveColor = maya.cmds.getAttr(curve + ".curveColor")
preInfinity = maya.cmds.getAttr(curve + ".preInfinity")
postInfinity = maya.cmds.getAttr(curve + ".postInfinity")
useCurveColor = maya.cmds.getAttr(curve + ".useCurveColor")
maya.cmds.setAttr(dstCurve + ".preInfinity", preInfinity)
maya.cmds.setAttr(dstCurve + ".postInfinity", postInfinity)
maya.cmds.setAttr(dstCurve + ".curveColor", *curveColor[0])
maya.cmds.setAttr(dstCurve + ".useCurveColor", useCurveColor)
except RuntimeError:
msg = 'Cannot paste anim curve "{0}" to attribute "{1}"'
msg = msg.format(curve, fullname)
logger.exception(msg)
def animCurve(self):
"""
Return the connected animation curve.
:rtype: str | None
"""
result = None
if self.exists():
n = self.listConnections(plugs=True, destination=False)
if n and "animCurve" in maya.cmds.nodeType(n):
result = n
elif n and "character" in maya.cmds.nodeType(n):
n = maya.cmds.listConnections(n, plugs=True,
destination=False)
if n and "animCurve" in maya.cmds.nodeType(n):
result = n
if result:
return result[0].split(".")[0]
def isConnected(self, ignoreConnections=None):
"""
Return true if the attribute is connected.
:type ignoreConnections: list[str]
:rtype: bool
"""
if ignoreConnections is None:
ignoreConnections = []
try:
connection = self.listConnections(destination=False)
except ValueError:
return False
if connection:
if ignoreConnections:
connectionType = maya.cmds.nodeType(connection)
for ignoreType in ignoreConnections:
if connectionType.startswith(ignoreType):
return False
return True
else:
return False
def isBlendable(self):
"""
Return true if the attribute can be blended.
:rtype: bool
"""
return self.type() in VALID_BLEND_ATTRIBUTES
def isSettable(self, validConnections=None):
"""
Return true if the attribute can be set.
:type validConnections: list[str]
:rtype: bool
"""
if validConnections is None:
validConnections = VALID_CONNECTIONS
if not self.exists():
return False
if not maya.cmds.listAttr(self.fullname(), unlocked=True, keyable=True, multi=True, scalar=True):
return False
connection = self.listConnections(destination=False)
if connection:
connectionType = maya.cmds.nodeType(connection)
for validType in validConnections:
if connectionType.startswith(validType):
return True
return False
else:
return True

View File

@@ -0,0 +1,425 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
import logging
import platform
import traceback
from studiovendor.Qt import QtCore
from studiovendor.Qt import QtWidgets
try:
import maya.mel
import maya.cmds
except ImportError:
traceback.print_exc()
import mutils
logger = logging.getLogger(__name__)
class MayaUtilsError(Exception):
"""Base class for exceptions in this module."""
class ObjectsError(MayaUtilsError):
pass
class SelectionError(MayaUtilsError):
pass
class NoMatchFoundError(MayaUtilsError):
pass
class NoObjectFoundError(MayaUtilsError):
pass
class MoreThanOneObjectFoundError(MayaUtilsError):
pass
class ModelPanelNotInFocusError(MayaUtilsError):
pass
def system():
"""
Return the current platform in lowercase.
:rtype: str
"""
return platform.system().lower()
def isMac():
"""
Return True if the current OS is Mac.
:rtype: bool
"""
return system().startswith("os") or \
system().startswith("mac") or \
system().startswith("darwin")
def isLinux():
"""
Return True if the current OS is linux.
:rtype: bool
"""
return system().lower().startswith("lin")
def isWindows():
"""
Return True if the current OS is windows.
:rtype: bool
"""
return system().lower().startswith("win")
def isMaya():
"""
Return True if the current python session is in Maya.
:rtype: bool
"""
try:
import maya.cmds
maya.cmds.about(batch=True)
return True
except ImportError:
return False
def selectionModifiers():
"""
Return a dictionary of the current key modifiers
:rtype: dict
"""
result = {"add": False, "deselect": False}
modifiers = QtWidgets.QApplication.keyboardModifiers()
if modifiers == QtCore.Qt.ShiftModifier:
result["deselect"] = True
elif modifiers == QtCore.Qt.ControlModifier:
result["add"] = True
return result
def ls(*args, **kwargs):
"""
List all the node objects for the given options.
:type args: list
:type kwargs: dict
"""
return [mutils.Node(name) for name in maya.cmds.ls(*args, **kwargs) or []]
def listAttr(name, **kwargs):
"""
List all the attributes for the given object name.
:type name: str
:type kwargs: str
:rtype: list[mutils.Attribute]
"""
attrs = maya.cmds.listAttr(name, **kwargs) or []
attrs = list(set(attrs))
return [mutils.Attribute(name, attr) for attr in attrs]
def disconnectAll(name):
"""
Disconnect all connections from the given object name.
:type name: str
"""
plugins = maya.cmds.listConnections(name, plugs=True, source=False) or []
for plug in plugins:
source, = maya.cmds.listConnections(plug, plugs=True)
maya.cmds.disconnectAttr(source, plug)
def animCurve(fullname):
"""
Return the animation curve name for the give attribute.
:type fullname: str or None
:rtype: str or None
"""
attribute = mutils.Attribute(fullname)
return attribute.animCurve()
def deleteUnknownNodes():
"""Delete all unknown nodes in the Maya scene."""
nodes = maya.cmds.ls(type="unknown")
if nodes:
for node in nodes:
if maya.cmds.objExists(node) and \
maya.cmds.referenceQuery(node, inr=True):
maya.cmds.delete(node)
def currentModelPanel():
"""
Get the current model panel name.
:rtype: str or None
"""
currentPanel = maya.cmds.getPanel(withFocus=True)
currentPanelType = maya.cmds.getPanel(typeOf=currentPanel)
if currentPanelType not in ['modelPanel']:
return None
return currentPanel
def getBakeAttrs(objects):
"""
Get the attributes that are not connected to an animation curve.
:type objects: list[str]
:rtype: list[str]
"""
result = []
if not objects:
raise Exception("No objects specified")
connections = maya.cmds.listConnections(
objects,
plugs=True,
source=True,
connections=True,
destination=False
) or []
for i in range(0, len(connections), 2):
dstObj = connections[i]
srcObj = connections[i + 1]
nodeType = maya.cmds.nodeType(srcObj)
if "animCurve" not in nodeType:
result.append(dstObj)
return result
def bakeConnected(objects, time, sampleBy=1):
"""
Bake the given objects.
:type objects: list[str]
:type time: (int, int)
:type sampleBy: int
"""
bakeAttrs = getBakeAttrs(objects)
if bakeAttrs:
maya.cmds.bakeResults(
bakeAttrs,
time=time,
shape=False,
simulation=True,
sampleBy=sampleBy,
controlPoints=False,
minimizeRotation=True,
bakeOnOverrideLayer=False,
preserveOutsideKeys=False,
sparseAnimCurveBake=False,
disableImplicitControl=True,
removeBakedAttributeFromLayer=False,
)
else:
logger.error("Cannot find any connection to bake!")
def getSelectedObjects():
"""
Get a list of the selected objects in Maya.
:rtype: list[str]
:raises: mutils.SelectionError:
"""
selection = maya.cmds.ls(selection=True)
if not selection:
raise mutils.SelectionError("No objects selected!")
return selection
def getSelectedAttrs():
"""
Get the attributes that are selected in the channel box.
:rtype: list[str]
"""
attributes = maya.cmds.channelBox(
"mainChannelBox",
query=True,
selectedMainAttributes=True
)
if attributes is not None:
attributes = str(attributes)
attributes = attributes.replace("tx", "translateX")
attributes = attributes.replace("ty", "translateY")
attributes = attributes.replace("tz", "translateZ")
attributes = attributes.replace("rx", "rotateX")
attributes = attributes.replace("ry", "rotateY")
attributes = attributes.replace("rz", "rotateZ")
attributes = eval(attributes)
return attributes
def currentFrameRange():
"""
Get the current first and last frame depending on the context.
:rtype: (int, int)
"""
start, end = selectedFrameRange()
if end == start:
start, end = selectedObjectsFrameRange()
if start == end:
start, end = playbackFrameRange()
return start, end
def playbackFrameRange():
"""
Get the first and last frame from the play back options.
:rtype: (int, int)
"""
start = maya.cmds.playbackOptions(query=True, min=True)
end = maya.cmds.playbackOptions(query=True, max=True)
return start, end
def selectedFrameRange():
"""
Get the first and last frame from the play back slider.
:rtype: (int, int)
"""
result = maya.mel.eval("timeControl -q -range $gPlayBackSlider")
start, end = result.replace('"', "").split(":")
start, end = int(start), int(end)
if end - start == 1:
end = start
return start, end
def selectedObjectsFrameRange(objects=None):
"""
Get the first and last animation frame from the given objects.
:type objects: list[str]
:rtype: (int, int)
"""
start = 0
end = 0
if not objects:
objects = maya.cmds.ls(selection=True) or []
if objects:
start = int(maya.cmds.findKeyframe(objects, which='first'))
end = int(maya.cmds.findKeyframe(objects, which='last'))
return start, end
def getDurationFromNodes(objects, time=None):
"""
Get the duration of the animation from the given object names.
:type time: [str, str]
:type objects: list[str]
:rtype: float
"""
if objects:
first = maya.cmds.findKeyframe(objects, which='first')
last = maya.cmds.findKeyframe(objects, which='last')
if time:
startKey = maya.cmds.findKeyframe(objects, time=(time[0], time[0]), which="next")
if startKey > time[1] or startKey < time[0]:
return 0
if first == last:
if maya.cmds.keyframe(objects, query=True, keyframeCount=True) > 0:
return 1
else:
return 0
return last - first
else:
return 0
def getReferencePaths(objects, withoutCopyNumber=False):
"""
Get the reference paths for the given objects.
:type objects: list[str]
:type withoutCopyNumber: bool
:rtype: list[str]
"""
paths = []
for obj in objects:
if maya.cmds.referenceQuery(obj, isNodeReferenced=True):
paths.append(maya.cmds.referenceQuery(obj, f=True, wcn=withoutCopyNumber))
return list(set(paths))
def getReferenceData(objects):
"""
Get the reference paths for the given objects.
:type objects: list[str]
:rtype: list[dict]
"""
data = []
paths = getReferencePaths(objects)
for path in paths:
data.append({
"filename": path,
"unresolved": maya.cmds.referenceQuery(path, filename=True, withoutCopyNumber=True),
"namespace": maya.cmds.file(path, q=True, namespace=True),
"node": maya.cmds.referenceQuery(path, referenceNode=True)
})
return data

View File

@@ -0,0 +1,166 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
import time
import logging
try:
import maya.cmds
except ImportError:
import traceback
traceback.print_exc()
logger = logging.getLogger(__name__)
__all__ = [
"timing",
"unifyUndo",
"disableUndo",
"disableViews",
"disableAutoKey",
"showWaitCursor",
"restoreSelection",
"restoreCurrentTime",
]
def timing(fn):
def wrapped(*args, **kwargs):
time1 = time.time()
ret = fn(*args, **kwargs)
time2 = time.time()
logger.debug('%s function took %0.5f sec' % (fn.__name__, (time2 - time1)))
return ret
return wrapped
def unifyUndo(fn):
def wrapped(*args, **kwargs):
maya.cmds.undoInfo(openChunk=True)
try:
return fn(*args, **kwargs)
finally:
maya.cmds.undoInfo(closeChunk=True)
wrapped.__name__ = fn.__name__
wrapped.__doc__ = fn.__doc__
return wrapped
def disableUndo(fn):
def wrapped(*args, **kwargs):
initialUndoState = maya.cmds.undoInfo(q=True, state=True)
maya.cmds.undoInfo(stateWithoutFlush=False)
try:
return fn(*args, **kwargs)
finally:
maya.cmds.undoInfo(stateWithoutFlush=initialUndoState)
wrapped.__name__ = fn.__name__
wrapped.__doc__ = fn.__doc__
return wrapped
def disableAutoKey(fn):
def wrapped(*args, **kwargs):
initialState = maya.cmds.autoKeyframe(query=True, state=True)
maya.cmds.autoKeyframe(edit=True, state=False)
try:
return fn(*args, **kwargs)
finally:
maya.cmds.autoKeyframe(edit=True, state=initialState)
wrapped.__name__ = fn.__name__
wrapped.__doc__ = fn.__doc__
return wrapped
def restoreSelection(fn):
def wrapped(*args, **kwargs):
selection = maya.cmds.ls(selection=True) or []
try:
return fn(*args, **kwargs)
finally:
if selection:
maya.cmds.select(selection)
wrapped.__name__ = fn.__name__
wrapped.__doc__ = fn.__doc__
return wrapped
def restoreCurrentTime(fn):
def wrapped(*args, **kwargs):
initialTime = maya.cmds.currentTime(query=True)
try:
return fn(*args, **kwargs)
finally:
maya.cmds.currentTime(initialTime, edit=True)
wrapped.__name__ = fn.__name__
wrapped.__doc__ = fn.__doc__
return wrapped
def showWaitCursor(fn):
def wrapped(*args, **kwargs):
maya.cmds.waitCursor(state=True)
try:
return fn(*args, **kwargs)
finally:
maya.cmds.waitCursor(state=False)
wrapped.__name__ = fn.__name__
wrapped.__doc__ = fn.__doc__
return wrapped
def disableViews(fn):
def wrapped(*args, **kwargs):
modelPanels = maya.cmds.getPanel(vis=True)
emptySelConn = maya.cmds.selectionConnection()
for panel in modelPanels:
if maya.cmds.getPanel(to=panel) == 'modelPanel':
maya.cmds.isolateSelect(panel, state=True)
maya.cmds.modelEditor(panel, e=True, mlc=emptySelConn)
try:
return fn(*args, **kwargs)
finally:
for panel in modelPanels:
if maya.cmds.getPanel(to=panel) == 'modelPanel':
maya.cmds.isolateSelect(panel, state=False)
maya.cmds.deleteUI(emptySelConn)
wrapped.__name__ = fn.__name__
wrapped.__doc__ = fn.__doc__
return wrapped

View File

@@ -0,0 +1,52 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
from studiovendor.Qt import QtCore
from studiovendor.Qt import QtCompat
from studiovendor.Qt import QtWidgets
try:
import maya.OpenMayaUI as omui
except ImportError as error:
print(error)
from .framerangemenu import FrameRangeMenu
from .framerangemenu import showFrameRangeMenu
from .modelpanelwidget import ModelPanelWidget
from .thumbnailcapturedialog import *
from .thumbnailcapturemenu import ThumbnailCaptureMenu
def mayaWindow():
"""
Return the Maya main window as a QMainWindow object.
:rtype: QMainWindow
"""
mainWindowPtr = omui.MQtUtil.mainWindow()
return QtCompat.wrapInstance(mainWindowPtr, QtWidgets.QMainWindow)
def makeMayaStandaloneWindow(w):
"""
Make a standalone window, though parented under Maya's mainWindow.
The parenting under Maya's mainWindow is done so that the QWidget will
not auto-destroy itself when the instance variable goes out of scope.
"""
# Parent under the main Maya window
w.setParent(mayaWindow())
# Make this widget appear as a standalone window
w.setWindowFlags(QtCore.Qt.Window)
w.raise_()
w.show()

View File

@@ -0,0 +1,67 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
from studiovendor.Qt import QtGui
from studiovendor.Qt import QtWidgets
import mutils
__all__ = ["FrameRangeMenu", "showFrameRangeMenu"]
class FrameRangeAction(QtWidgets.QAction):
def __init__(self, *args):
super(FrameRangeAction, self).__init__(*args)
self._frameRange = (0, 100)
def frameRange(self):
return self._frameRange
def setFrameRange(self, frameRange):
self._frameRange = frameRange
class FrameRangeMenu(QtWidgets.QMenu):
def __init__(self, parent=None):
super(FrameRangeMenu, self).__init__(parent)
action = FrameRangeAction("From Timeline", self)
action.setFrameRange(mutils.playbackFrameRange())
self.addAction(action)
action = FrameRangeAction("From Selected Timeline", self)
action.setFrameRange(mutils.selectedFrameRange())
self.addAction(action)
action = FrameRangeAction("From Selected Objects", self)
action.setFrameRange(mutils.selectedObjectsFrameRange())
self.addAction(action)
def showFrameRangeMenu():
"""
Show the frame range menu at the current cursor position.
:rtype: QtWidgets.QAction
"""
menu = FrameRangeMenu()
position = QtGui.QCursor().pos()
action = menu.exec_(position)
return action
if __name__ == "__main__":
action = showFrameRangeMenu()
print(action.frameRange())

View File

@@ -0,0 +1,100 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
import mutils
import mutils.gui
from studiovendor.Qt import QtCore
from studiovendor.Qt import QtWidgets
try:
import maya.cmds
import maya.OpenMayaUI as mui
isMaya = True
except ImportError:
isMaya = False
__all__ = ["ModelPanelWidget"]
class ModelPanelWidget(QtWidgets.QWidget):
def __init__(self, parent, name="capturedModelPanel", **kwargs):
super(ModelPanelWidget, self).__init__(parent, **kwargs)
uniqueName = name + str(id(self))
self.setObjectName(uniqueName + 'Widget')
layout = QtWidgets.QVBoxLayout()
layout.setContentsMargins(0, 0, 0, 0)
layout.setObjectName(uniqueName + "Layout")
self.setLayout(layout)
maya.cmds.setParent(layout.objectName())
self._modelPanel = maya.cmds.modelPanel(uniqueName, label="ModelPanel")
self.setModelPanelOptions()
def setModelPanelOptions(self):
modelPanel = self.name()
maya.cmds.modelEditor(modelPanel, edit=True, allObjects=False)
maya.cmds.modelEditor(modelPanel, edit=True, grid=False)
maya.cmds.modelEditor(modelPanel, edit=True, dynamics=False)
maya.cmds.modelEditor(modelPanel, edit=True, activeOnly=False)
maya.cmds.modelEditor(modelPanel, edit=True, manipulators=False)
maya.cmds.modelEditor(modelPanel, edit=True, headsUpDisplay=False)
maya.cmds.modelEditor(modelPanel, edit=True, selectionHiliteDisplay=False)
maya.cmds.modelEditor(modelPanel, edit=True, polymeshes=True)
maya.cmds.modelEditor(modelPanel, edit=True, nurbsSurfaces=True)
maya.cmds.modelEditor(modelPanel, edit=True, subdivSurfaces=True)
maya.cmds.modelEditor(modelPanel, edit=True, displayTextures=True)
maya.cmds.modelEditor(modelPanel, edit=True, displayAppearance="smoothShaded")
currentModelPanel = mutils.currentModelPanel()
if currentModelPanel:
camera = maya.cmds.modelEditor(currentModelPanel, query=True, camera=True)
displayLights = maya.cmds.modelEditor(currentModelPanel, query=True, displayLights=True)
displayTextures = maya.cmds.modelEditor(currentModelPanel, query=True, displayTextures=True)
maya.cmds.modelEditor(modelPanel, edit=True, camera=camera)
maya.cmds.modelEditor(modelPanel, edit=True, displayLights=displayLights)
maya.cmds.modelEditor(modelPanel, edit=True, displayTextures=displayTextures)
def name(self):
return self._modelPanel
def modelPanel(self):
ptr = mui.MQtUtil.findControl(self._modelPanel)
return mutils.gui.wrapInstance(ptr, QtWidgets.QWidget)
def barLayout(self):
name = maya.cmds.modelPanel(self._modelPanel, query=True, barLayout=True)
ptr = mui.MQtUtil.findControl(name)
return mutils.gui.wrapInstance(ptr, QtCore.QObject)
def hideBarLayout(self):
self.barLayout().hide()
def hideMenuBar(self):
maya.cmds.modelPanel(self._modelPanel, edit=True, menuBarVisible=False)
def setCamera(self, name):
maya.cmds.modelPanel(self._modelPanel, edit=True, cam=name)
if __name__ == "__main__":
widget = ModelPanelWidget(None, "modelPanel")
widget.show()

View File

@@ -0,0 +1,290 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
"""
The capture dialog is used for creating thumbnails and thumbnail playblasts.
import mutils.gui
print mutils.gui.capture("c:/temp/test.jpg", startFrame=1, endFrame=100)
# c:/temp/test.0001.jpg
"""
import os
import shutil
from studiovendor.Qt import QtGui
from studiovendor.Qt import QtCore
from studiovendor.Qt import QtWidgets
try:
import maya.cmds
except Exception:
import traceback
traceback.print_exc()
import studioqt
import mutils.gui
import mutils.gui.modelpanelwidget
__all__ = [
"thumbnailCapture",
"ThumbnailCaptureDialog",
]
_instance = None
def thumbnailCapture(
path,
startFrame=None,
endFrame=None,
step=1,
clearCache=False,
captured=None,
show=False,
modifier=True,
):
"""
Capture a playblast and save it to the given path.
:type path: str
:type startFrame: int or None
:type endFrame: int or None
:type step: int
:type clearCache: bool
:type captured: func or None
:rtype: ThumbnailCaptureDialog
"""
global _instance
def _clearCache():
dirname = os.path.dirname(path)
if os.path.exists(dirname):
shutil.rmtree(dirname)
if _instance:
_instance.close()
d = mutils.gui.ThumbnailCaptureDialog(
path=path,
startFrame=startFrame,
endFrame=endFrame,
step=step,
)
if captured:
d.captured.connect(captured)
if clearCache:
d.capturing.connect(_clearCache)
d.show()
if not show and not (modifier and studioqt.isControlModifier()):
d.capture()
d.close()
_instance = d
return _instance
class ThumbnailCaptureDialog(QtWidgets.QDialog):
DEFAULT_WIDTH = 250
DEFAULT_HEIGHT = 250
captured = QtCore.Signal(str)
capturing = QtCore.Signal(str)
def __init__(self, path="", parent=None, startFrame=None, endFrame=None, step=1):
"""
:type path: str
:type parent: QtWidgets.QWidget
:type startFrame: int
:type endFrame: int
:type step: int
"""
parent = parent or mutils.gui.mayaWindow()
QtWidgets.QDialog.__init__(self, parent)
self._path = path
self._step = step
self._endFrame = None
self._startFrame = None
self._capturedPath = None
if endFrame is None:
endFrame = int(maya.cmds.currentTime(query=True))
if startFrame is None:
startFrame = int(maya.cmds.currentTime(query=True))
self.setEndFrame(endFrame)
self.setStartFrame(startFrame)
self.setObjectName("CaptureWindow")
self.setWindowTitle("Capture Window")
self._captureButton = QtWidgets.QPushButton("Capture")
self._captureButton.clicked.connect(self.capture)
self._modelPanelWidget = mutils.gui.modelpanelwidget.ModelPanelWidget(self)
vbox = QtWidgets.QVBoxLayout()
vbox.setObjectName(self.objectName() + "Layout")
vbox.addWidget(self._modelPanelWidget)
vbox.addWidget(self._captureButton)
self.setLayout(vbox)
width = (self.DEFAULT_WIDTH * 1.5)
height = (self.DEFAULT_HEIGHT * 1.5) + 50
self.setWidthHeight(width, height)
self.centerWindow()
def path(self):
"""
Return the destination path.
:rtype: str
"""
return self._path
def setPath(self, path):
"""
Set the destination path.
:type path: str
"""
self._path = path
def endFrame(self):
"""
Return the end frame of the playblast.
:rtype: int
"""
return self._endFrame
def setEndFrame(self, endFrame):
"""
Specify the end frame of the playblast.
:type endFrame: int
"""
self._endFrame = int(endFrame)
def startFrame(self):
"""
Return the start frame of the playblast.
:rtype: int
"""
return self._startFrame
def setStartFrame(self, startFrame):
"""
Specify the start frame of the playblast.
:type startFrame: int
"""
self._startFrame = int(startFrame)
def step(self):
"""
Return the step amount of the playblast.
Example:
if step is set to 2 it will playblast every second frame.
:rtype: int
"""
return self._step
def setStep(self, step):
"""
Set the step amount of the playblast.
:type step: int
"""
self._step = step
def setWidthHeight(self, width, height):
"""
Set the width and height of the window.
:type width: int
:type height: int
:rtype: None
"""
x = self.geometry().x()
y = self.geometry().y()
self.setGeometry(x, y, width, height)
def centerWindow(self):
"""
Center the widget to the center of the desktop.
:rtype: None
"""
geometry = self.frameGeometry()
pos = QtGui.QCursor.pos()
screen = QtWidgets.QApplication.screenAt(pos)
centerPoint = screen.availableGeometry().center()
geometry.moveCenter(centerPoint)
self.move(geometry.topLeft())
def capturedPath(self):
"""
Return the location of the captured playblast.
:rtype:
"""
return self._capturedPath
def capture(self):
"""
Capture a playblast and save it to the given path.
:rtype: None
"""
path = self.path()
self.capturing.emit(path)
modelPanel = self._modelPanelWidget.name()
startFrame = self.startFrame()
endFrame = self.endFrame()
step = self.step()
width = self.DEFAULT_WIDTH
height = self.DEFAULT_HEIGHT
self._capturedPath = mutils.playblast.playblast(
path,
modelPanel,
startFrame,
endFrame,
width,
height,
step=step,
)
self.accept()
self.captured.emit(self._capturedPath)
return self._capturedPath

View File

@@ -0,0 +1,149 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
import os
import shutil
import logging
from studiovendor.Qt import QtGui
from studiovendor.Qt import QtCore
from studiovendor.Qt import QtWidgets
import mutils.gui
import studiolibrary.widgets
__all__ = [
"ThumbnailCaptureMenu",
"testThumbnailCaptureMenu"
]
logger = logging.getLogger(__name__)
class ThumbnailCaptureMenu(QtWidgets.QMenu):
captured = QtCore.Signal(str)
def __init__(self, path, force=False, parent=None):
"""
Thumbnail capture menu.
:type path: str
:type force: bool
:type parent: None or QtWidgets.QWidget
"""
QtWidgets.QMenu.__init__(self, parent)
self._path = path
self._force = force
changeImageAction = QtWidgets.QAction('Capture new image', self)
changeImageAction.triggered.connect(self.capture)
self.addAction(changeImageAction)
changeImageAction = QtWidgets.QAction('Show Capture window', self)
changeImageAction.triggered.connect(self.showCaptureWindow)
self.addAction(changeImageAction)
loadImageAction = QtWidgets.QAction('Load image from disk', self)
loadImageAction.triggered.connect(self.showLoadImageDialog)
self.addAction(loadImageAction)
def path(self):
"""
Return the thumbnail path on disc.
:rtype: str
"""
return self._path
def showWarningDialog(self):
"""Show a warning dialog for overriding the previous thumbnail."""
title = "Override Thumbnail"
text = u"This action will delete the previous thumbnail. The " \
u"previous image cannot be backed up. Do you want to " \
u"confirm the action to take a new image and delete " \
u"the previous one?"
clickedButton = studiolibrary.widgets.MessageBox.warning(
self.parent(),
title=title,
text=text,
enableDontShowCheckBox=True,
)
if clickedButton != QtWidgets.QDialogButtonBox.StandardButton.Yes:
raise Exception("Dialog was canceled!")
def showCaptureWindow(self):
"""Show the capture window for framing."""
self.capture(show=True)
def capture(self, show=False):
"""
Capture an image from the Maya viewport.
:type show: bool
"""
if not self._force and os.path.exists(self.path()):
self.showWarningDialog()
mutils.gui.thumbnailCapture(
show=show,
path=self.path(),
captured=self.captured.emit
)
def showLoadImageDialog(self):
"""Show a file dialog for choosing an image from disc."""
if not self._force and os.path.exists(self.path()):
self.showWarningDialog()
fileDialog = QtWidgets.QFileDialog(
self,
caption="Open Image",
filter="Image Files (*.png *.jpg *.bmp)"
)
fileDialog.fileSelected.connect(self._fileSelected)
fileDialog.exec_()
def _fileSelected(self, path):
"""
Triggered when the file dialog is accepted.
:type path: str
"""
shutil.copy(path, self.path())
self.captured.emit(self.path())
def testThumbnailCaptureMenu():
"""A method for testing the thumbnail capture menu in Maya."""
def capturedCallback(path):
"""
Triggered when the captured menu has been accepted.
:type path: str
"""
print("Captured thumbnail to:", path)
path = "c:/tmp/test.png"
menu = ThumbnailCaptureMenu(path, True)
menu.captured.connect(capturedCallback)
menu.exec_(QtGui.QCursor.pos())

View File

@@ -0,0 +1,174 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
import logging
import mutils
from collections import OrderedDict
__all__ = [
"matchNames",
"groupObjects",
]
logger = logging.getLogger(__name__)
def rotateSequence(seq, current):
"""
:type seq:
:type current:
:rtype:
"""
n = len(seq)
for i in range(n):
yield seq[(i + current) % n]
def groupObjects(objects):
"""
:type objects:
:rtype:
"""
results = OrderedDict()
for name in objects:
node = mutils.Node(name)
results.setdefault(node.namespace(), [])
results[node.namespace()].append(name)
results = OrderedDict(sorted(results.items(), key=lambda t: (t[0].count(":"), len(t[0]))))
return results
def indexObjects(objects):
"""
:type objects: list[str]
:rtype: dict
"""
result = {}
if objects:
for name in objects:
node = mutils.Node(name)
result.setdefault(node.shortname(), [])
result[node.shortname()].append(node)
return result
def matchInIndex(node, index):
"""
:type node: mutils.Node
:type index: dict[list[mutils.Node]]
:rtype: Node
"""
result = None
if node.shortname() in index:
nodes = index[node.shortname()]
if nodes:
for n in nodes:
if node.name().endswith(n.name()) or n.name().endswith(node.name()):
result = n
break
if result is not None:
index[node.shortname()].remove(result)
return result
def matchNames(srcObjects, dstObjects=None, dstNamespaces=None, search=None, replace=None):
"""
:type srcObjects: list[str]
:type dstObjects: list[str]
:type dstNamespaces: list[str]
:rtype: list[(mutils.Node, mutils.Node)]
"""
results = []
if dstObjects is None:
dstObjects = []
srcGroup = groupObjects(srcObjects)
srcNamespaces = srcGroup.keys()
if not dstObjects and not dstNamespaces: # and not selection:
dstNamespaces = srcNamespaces
if not dstNamespaces and dstObjects:
dstGroup = groupObjects(dstObjects)
dstNamespaces = dstGroup.keys()
dstIndex = indexObjects(dstObjects)
# DESTINATION NAMESPACES NOT IN SOURCE OBJECTS
dstNamespaces2 = [x for x in dstNamespaces if x not in srcNamespaces]
# DESTINATION NAMESPACES IN SOURCE OBJECTS
dstNamespaces1 = [x for x in dstNamespaces if x not in dstNamespaces2]
# CACHE DESTINATION OBJECTS WITH NAMESPACES IN SOURCE OBJECTS
usedNamespaces = []
notUsedNamespaces = []
# FIRST LOOP THROUGH ALL DESTINATION NAMESPACES IN SOURCE OBJECTS
for srcNamespace in srcNamespaces:
if srcNamespace in dstNamespaces1:
usedNamespaces.append(srcNamespace)
for name in srcGroup[srcNamespace]:
srcNode = mutils.Node(name)
if search is not None and replace is not None:
# Using the mirror table which supports * style replacing
name = mutils.MirrorTable.replace(name, search, replace)
dstNode = mutils.Node(name)
if dstObjects:
dstNode = matchInIndex(dstNode, dstIndex)
if dstNode:
results.append((srcNode, dstNode))
yield (srcNode, dstNode)
else:
logger.debug("Cannot find matching destination object for %s" % srcNode.name())
else:
notUsedNamespaces.append(srcNamespace)
# SECOND LOOP THROUGH ALL OTHER DESTINATION NAMESPACES
srcNamespaces = notUsedNamespaces
srcNamespaces.extend(usedNamespaces)
_index = 0
for dstNamespace in dstNamespaces2:
match = False
i = _index
for srcNamespace in rotateSequence(srcNamespaces, _index):
if match:
_index = i
break
i += 1
for name in srcGroup[srcNamespace]:
srcNode = mutils.Node(name)
dstNode = mutils.Node(name)
dstNode.setNamespace(dstNamespace)
if dstObjects:
dstNode = matchInIndex(dstNode, dstIndex)
elif dstNamespaces:
pass
if dstNode:
match = True
results.append((srcNode, dstNode))
yield (srcNode, dstNode)
else:
logger.debug("Cannot find matching destination object for %s" % srcNode.name())
if logger.parent.level == logging.DEBUG or logger.level == logging.DEBUG:
for dstNodes in dstIndex.values():
for dstNode in dstNodes:
logger.debug("Cannot find matching source object for %s" % dstNode.name())

View File

@@ -0,0 +1,918 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
"""
# mirrortable.py
import mutils
# Example 1:
# Create a MirrorTable instance from the given objects
mt = mutils.MirrorTable.fromObjects(objects, "_l_", "_r_", MirrorPlane.YZ)
# Example 2:
# Create a MirrorTable instance from the selected objects
objects = maya.cmds.ls(selection=True)
mt = mutils.MirrorTable.fromObjects(objects, "_l_", "_r_", MirrorPlane.YZ)
# Example 3:
# Save the MirrorTable to the given JSON path
path = "/tmp/mirrortable.json"
mt.save(path)
# Example 4:
# Create a MirrorTable instance from the given JSON path
path = "/tmp/mirrortable.json"
mt = mutils.MirrorTable.fromPath(path)
# Example 5:
# Mirror all the objects from file
mt.load()
# Example 6:
# Mirror only the selected objects
objects = maya.cmds.ls(selection=True) or []
mt.load(objects=objects)
# Example 7:
# Mirror all objects from file to the given namespaces
mt.load(namespaces=["character1", "character2"])
# Example 8:
# Mirror only the given objects
mt.load(objects=["character1:Hand_L", "character1:Finger_L"])
# Example 9:
# Mirror all objects from left to right
mt.load(option=mutils.MirrorOption.LeftToRight)
# Example 10:
# Mirror all objects from right to left
mt.load(option=mutils.MirrorOption.RightToLeft)
# Example 11:
# Mirror only the current pose
mt.load(animation=False)
"""
import re
import mutils
import logging
import traceback
from studiovendor import six
try:
import maya.cmds
except ImportError:
traceback.print_exc()
__all__ = [
"MirrorTable",
"MirrorPlane",
"MirrorOption",
"saveMirrorTable",
]
logger = logging.getLogger(__name__)
RE_LEFT_SIDE = "Left|left|Lf|lt_|_lt|lf_|_lf|_l_|_L|L_|:l_|^l_|_l$|:L|^L"
RE_RIGHT_SIDE = "Right|right|Rt|rt_|_rt|_r_|_R|R_|:r_|^r_|_r$|:R|^R"
VALID_NODE_TYPES = ["joint", "transform"]
class MirrorPlane:
YZ = [-1, 1, 1]
XZ = [1, -1, 1]
XY = [1, 1, -1]
class MirrorOption:
Swap = 0
LeftToRight = 1
RightToLeft = 2
class KeysOption:
All = "All Keys"
SelectedRange = "Selected Range"
def saveMirrorTable(path, objects, metadata=None, *args, **kwargs):
"""
Convenience function for saving a mirror table to the given disc location.
:type path: str
:type objects: list[str]
:type metadata: dict or None
:type args: list
:type kwargs: dict
:rtype: MirrorTable
"""
mirrorTable = MirrorTable.fromObjects(objects, *args, **kwargs)
if metadata:
mirrorTable.updateMetadata(metadata)
mirrorTable.save(path)
return mirrorTable
class MirrorTable(mutils.TransferObject):
@classmethod
@mutils.timing
@mutils.unifyUndo
@mutils.showWaitCursor
@mutils.restoreSelection
def fromObjects(
cls,
objects,
leftSide=None,
rightSide=None,
mirrorPlane=None
):
"""
Create a new Mirror Table instance from the given Maya object/controls.
:type objects: list[str]
:type leftSide: str
:type rightSide: str
:type mirrorPlane: mirrortable.MirrorPlane or str
:rtype: MirrorTable
"""
mirrorPlane = mirrorPlane or MirrorPlane.YZ
if isinstance(mirrorPlane, six.string_types):
if mirrorPlane.lower() == "yz":
mirrorPlane = MirrorPlane.YZ
elif mirrorPlane.lower() == "xz":
mirrorPlane = MirrorPlane.XZ
elif mirrorPlane.lower() == "xy":
mirrorPlane = MirrorPlane.XY
mirrorTable = cls()
mirrorTable.setMetadata("left", leftSide)
mirrorTable.setMetadata("right", rightSide)
mirrorTable.setMetadata("mirrorPlane", mirrorPlane)
for obj in objects:
nodeType = maya.cmds.nodeType(obj)
if nodeType in VALID_NODE_TYPES:
mirrorTable.add(obj)
else:
msg = "Node of type {0} is not supported. Node name: {1}"
msg = msg.format(nodeType, obj)
logger.info(msg)
return mirrorTable
@staticmethod
def findLeftSide(objects):
"""
Return the left side naming convention for the given objects
:type objects: list[str]
:rtype: str
"""
return MirrorTable.findSide(objects, RE_LEFT_SIDE)
@staticmethod
def findRightSide(objects):
"""
Return the right side naming convention for the given objects
:type objects: list[str]
:rtype: str
"""
return MirrorTable.findSide(objects, RE_RIGHT_SIDE)
@classmethod
def findSide(cls, objects, reSides):
"""
Return the naming convention for the given object names.
:type objects: list[str]
:type reSides: str or list[str]
:rtype: str
"""
if isinstance(reSides, six.string_types):
reSides = reSides.split("|")
# Compile the list of regular expressions into a re.object
reSides = [re.compile(side) for side in reSides]
for obj in objects:
obj = obj.split("|")[-1]
obj = obj.split(":")[-1]
for reSide in reSides:
m = reSide.search(obj)
if m:
side = m.group()
if obj.startswith(side):
side += "*"
if obj.endswith(side):
side = "*" + side
return side
return ""
@staticmethod
def matchSide(name, side):
"""
Return True if the name contains the given side.
:type name: str
:type side: str
:rtype: bool
"""
if side:
return MirrorTable.rreplace(name, side, "X") != name
return False
@staticmethod
def rreplace(name, old, new):
"""
convenience method.
Example:
print MirrorTable.rreplace("CHR1:RIG:RhandCON", ":R", ":L")
"CHR1:RIG:LhandCON"
:type name: str
:type old: str
:type new: str
:rtype: str
"""
names = []
for n in name.split("|"):
namespaces = ''
if ':' in n:
namespaces, n = n.rsplit(':', 1)
other = mutils.mirrortable.MirrorTable.replace(n, old, new)
if namespaces:
other = ':'.join([namespaces, other])
names.append(other)
return "|".join(names)
@staticmethod
def replace(name, old, new):
"""
A static method that is called by self.mirrorObject.
:type name: str
:type old: str
:type new: str
:rtype: str
"""
# Support for replacing a prefix naming convention.
if old.endswith("*") or new.endswith("*"):
name = MirrorTable.replacePrefix(name, old, new)
# Support for replacing a suffix naming convention.
elif old.startswith("*") or new.startswith("*"):
name = MirrorTable.replaceSuffix(name, old, new)
# Support for all other naming conventions.
else:
name = name.replace(old, new)
return name
@staticmethod
def replacePrefix(name, old, new):
"""
Replace the given old prefix with the given new prefix.
It should also support long names.
# Example:
self.replacePrefix("R_footRoll", "R", "L")
# Result: "L_footRoll" and not "L_footLoll".
self.replacePrefix("Grp|Ch1:R_footExtra|Ch1:R_footRoll", "R_", "L_")
# Result: "Grp|Ch1:L_footExtra|Ch1:L_footRoll"
:type name: str
:type old: str
:type new: str
:rtype: str
"""
old = old.replace("*", "")
new = new.replace("*", "")
if name.startswith(old):
name = name.replace(old, new, 1)
return name
@staticmethod
def replaceSuffix(name, old, new):
"""
Replace the given old suffix with the given new suffix.
It should also support long names.
# Example:
self.replaceSuffix("footRoll_R", "R", "L")
# Result: "footRoll_L" and not "footLoll_L".
self.replaceSuffix("Grp|Ch1:footExtra_R|Ch1:footRoll_R", "_R", "_L")
# Result: "Grp|Ch1:footExtra_L|Ch1:footRoll_L"
:type name: str
:type old: str
:type new: str
:rtype: str
"""
old = old.replace("*", "")
new = new.replace("*", "")
if name.endswith(old):
name = name[:-len(old)] + new
return name
def mirrorObject(self, obj):
"""
Return the other/opposite side for the given name.
Example:
print self.mirrorObject("FKSholder_L")
# FKShoulder_R
:type obj: str
:rtype: str or None
"""
leftSide = self.leftSide()
rightSide = self.rightSide()
return self._mirrorObject(obj, leftSide, rightSide)
@staticmethod
def _mirrorObject(obj, leftSide, rightSide):
"""
A static method that is called by self.mirrorObject.
:type obj: str
:rtype: str or None
"""
dstName = MirrorTable.rreplace(obj, leftSide, rightSide)
if obj == dstName:
dstName = MirrorTable.rreplace(obj, rightSide, leftSide)
if dstName != obj:
return dstName
# Return None as the given name is probably a center control
# and doesn't have an opposite side.
return None
@staticmethod
def animCurve(obj, attr):
"""
:type obj: str
:type attr: str
:rtype: str
"""
fullname = obj + "." + attr
connections = maya.cmds.listConnections(fullname, d=False, s=True)
if connections:
return connections[0]
return None
@staticmethod
def scaleKey(obj, attr, time=None):
"""
:type obj: str
:type attr: str
"""
curve = MirrorTable.animCurve(obj, attr)
if curve:
maya.cmds.selectKey(curve)
if time:
maya.cmds.scaleKey(time=time, iub=False, ts=1, fs=1, vs=-1, vp=0, animation="keys")
else:
maya.cmds.scaleKey(iub=False, ts=1, fs=1, vs=-1, vp=0, animation="keys")
@staticmethod
def formatValue(attr, value, mirrorAxis):
"""
:type attr: str
:type value: float
:type mirrorAxis: list[int]
:rtype: float
"""
if MirrorTable.isAttrMirrored(attr, mirrorAxis):
return value * -1
return value
@staticmethod
def maxIndex(numbers):
"""
Finds the largest number in a list
:type numbers: list[float] or list[str]
:rtype: int
"""
m = 0
result = 0
for i in numbers:
v = abs(float(i))
if v > m:
m = v
result = numbers.index(i)
return result
@staticmethod
def axisWorldPosition(obj, axis):
"""
:type obj: str
:type axis: list[int]
:rtype: list[float]
"""
transform1 = maya.cmds.createNode("transform", name="transform1")
try:
transform1, = maya.cmds.parent(transform1, obj, r=True)
maya.cmds.setAttr(transform1 + ".t", *axis)
maya.cmds.setAttr(transform1 + ".r", 0, 0, 0)
maya.cmds.setAttr(transform1 + ".s", 1, 1, 1)
return maya.cmds.xform(transform1, q=True, ws=True, piv=True)
finally:
maya.cmds.delete(transform1)
@staticmethod
def isAttrMirrored(attr, mirrorAxis):
"""
:type attr: str
:type mirrorAxis: list[int]
:rtype: float
"""
if mirrorAxis == [-1, 1, 1]:
if attr == "translateX" or attr == "rotateY" or attr == "rotateZ":
return True
elif mirrorAxis == [1, -1, 1]:
if attr == "translateY" or attr == "rotateX" or attr == "rotateZ":
return True
elif mirrorAxis == [1, 1, -1]:
if attr == "translateZ" or attr == "rotateX" or attr == "rotateY":
return True
elif mirrorAxis == [-1, -1, -1]:
if attr == "translateX" or attr == "translateY" or attr == "translateZ":
return True
return False
@staticmethod
def isAxisMirrored(srcObj, dstObj, axis, mirrorPlane):
"""
:type srcObj: str
:type dstObj: str
:type axis: list[int]
:type mirrorPlane: list[int]
:rtype: int
"""
old1 = maya.cmds.xform(srcObj, q=True, ws=True, piv=True)
old2 = maya.cmds.xform(dstObj, q=True, ws=True, piv=True)
new1 = MirrorTable.axisWorldPosition(srcObj, axis)
new2 = MirrorTable.axisWorldPosition(dstObj, axis)
mp = mirrorPlane
v1 = mp[0]*(new1[0]-old1[0]), mp[1]*(new1[1]-old1[1]), mp[2]*(new1[2]-old1[2])
v2 = new2[0]-old2[0], new2[1]-old2[1], new2[2]-old2[2]
d = sum(p*q for p, q in zip(v1, v2))
if d >= 0.0:
return False
return True
@staticmethod
def _calculateMirrorAxis(obj, mirrorPlane):
"""
:type obj: str
:rtype: list[int]
"""
result = [1, 1, 1]
transform0 = maya.cmds.createNode("transform", name="transform0")
try:
transform0, = maya.cmds.parent(transform0, obj, r=True)
transform0, = maya.cmds.parent(transform0, w=True)
maya.cmds.setAttr(transform0 + ".t", 0, 0, 0)
t1 = MirrorTable.axisWorldPosition(transform0, [1, 0, 0])
t2 = MirrorTable.axisWorldPosition(transform0, [0, 1, 0])
t3 = MirrorTable.axisWorldPosition(transform0, [0, 0, 1])
t1 = "%.3f" % t1[0], "%.3f" % t1[1], "%.3f" % t1[2]
t2 = "%.3f" % t2[0], "%.3f" % t2[1], "%.3f" % t2[2]
t3 = "%.3f" % t3[0], "%.3f" % t3[1], "%.3f" % t3[2]
if mirrorPlane == MirrorPlane.YZ: # [-1, 1, 1]:
x = [t1[0], t2[0], t3[0]]
i = MirrorTable.maxIndex(x)
result[i] = -1
if mirrorPlane == MirrorPlane.XZ: # [1, -1, 1]:
y = [t1[1], t2[1], t3[1]]
i = MirrorTable.maxIndex(y)
result[i] = -1
if mirrorPlane == MirrorPlane.XY: # [1, 1, -1]:
z = [t1[2], t2[2], t3[2]]
i = MirrorTable.maxIndex(z)
result[i] = -1
finally:
maya.cmds.delete(transform0)
return result
def select(self, objects=None, namespaces=None, **kwargs):
"""
Select the objects contained in file.
:type objects: list[str] or None
:type namespaces: list[str] or None
:rtype: None
"""
selectionSet = mutils.SelectionSet.fromPath(self.path())
selectionSet.load(objects=objects, namespaces=namespaces, **kwargs)
def leftSide(self):
"""
:rtype: str | None
"""
return self.metadata().get("left")
def rightSide(self):
"""
:rtype: str | None
"""
return self.metadata().get("right")
def mirrorPlane(self):
"""
:rtype: lsit[int] | None
"""
return self.metadata().get("mirrorPlane")
def mirrorAxis(self, name):
"""
:rtype: list[int]
"""
return self.objects()[name]["mirrorAxis"]
def leftCount(self, objects=None):
"""
:type objects: list[str]
:rtype: int
"""
if objects is None:
objects = self.objects()
return len([obj for obj in objects if self.isLeftSide(obj)])
def rightCount(self, objects=None):
"""
:type objects: list[str]
:rtype: int
"""
if objects is None:
objects = self.objects()
return len([obj for obj in objects if self.isRightSide(obj)])
def createObjectData(self, name):
"""
:type name:
:rtype:
"""
result = {"mirrorAxis": self.calculateMirrorAxis(name)}
return result
def matchObjects(
self,
objects=None,
namespaces=None,
):
"""
:type objects: list[str]
:type namespaces: list[str]
:rtype: list[str]
"""
srcObjects = self.objects().keys()
matches = mutils.matchNames(
srcObjects=srcObjects,
dstObjects=objects,
dstNamespaces=namespaces,
)
for srcNode, dstNode in matches:
dstName = dstNode.name()
mirrorAxis = self.mirrorAxis(srcNode.name())
yield srcNode.name(), dstName, mirrorAxis
def rightToLeft(self):
""""""
self.load(option=MirrorOption.RightToLeft)
def leftToRight(self):
""""""
self.load(option=MirrorOption.LeftToRight)
@mutils.timing
@mutils.unifyUndo
@mutils.showWaitCursor
@mutils.restoreSelection
def load(
self,
objects=None,
namespaces=None,
option=None,
keysOption=None,
time=None,
):
"""
Load the mirror table for the given objects.
:type objects: list[str]
:type namespaces: list[str]
:type option: mirrorOptions
:type keysOption: None or KeysOption.SelectedRange
:type time: None or list[int]
"""
if option and not isinstance(option, int):
if option.lower() == "swap":
option = 0
elif option.lower() == "left to right":
option = 1
elif option.lower() == "right to left":
option = 2
else:
raise ValueError('Invalid load option=' + str(option))
self.validate(namespaces=namespaces)
results = {}
animation = True
foundObject = False
srcObjects = self.objects().keys()
if option is None:
option = MirrorOption.Swap
if keysOption == KeysOption.All:
time = None
elif keysOption == KeysOption.SelectedRange:
time = mutils.selectedFrameRange()
# Check to make sure that the given time is not a single frame
if time and time[0] == time[1]:
time = None
animation = False
matches = mutils.matchNames(
srcObjects=srcObjects,
dstObjects=objects,
dstNamespaces=namespaces,
)
for srcNode, dstNode in matches:
dstObj = dstNode.name()
dstObj2 = self.mirrorObject(dstObj) or dstObj
if dstObj2 not in results:
results[dstObj] = dstObj2
mirrorAxis = self.mirrorAxis(srcNode.name())
dstObjExists = maya.cmds.objExists(dstObj)
dstObj2Exists = maya.cmds.objExists(dstObj2)
if dstObjExists and dstObj2Exists:
foundObject = True
if animation:
self.transferAnimation(dstObj, dstObj2, mirrorAxis=mirrorAxis, option=option, time=time)
else:
self.transferStatic(dstObj, dstObj2, mirrorAxis=mirrorAxis, option=option)
else:
if not dstObjExists:
msg = "Cannot find destination object {0}"
msg = msg.format(dstObj)
logger.debug(msg)
if not dstObj2Exists:
msg = "Cannot find mirrored destination object {0}"
msg = msg.format(dstObj2)
logger.debug(msg)
# Return the focus to the Maya window
maya.cmds.setFocus("MayaWindow")
if not foundObject:
text = "No objects match when loading data. " \
"Turn on debug mode to see more details."
raise mutils.NoMatchFoundError(text)
def transferStatic(self, srcObj, dstObj, mirrorAxis=None, attrs=None, option=MirrorOption.Swap):
"""
:type srcObj: str
:type dstObj: str
:type mirrorAxis: list[int]
:type attrs: None | list[str]
:type option: MirrorOption
"""
srcValue = None
dstValue = None
srcValid = self.isValidMirror(srcObj, option)
dstValid = self.isValidMirror(dstObj, option)
if attrs is None:
attrs = maya.cmds.listAttr(srcObj, keyable=True) or []
for attr in attrs:
dstAttr = dstObj + "." + attr
srcAttr = srcObj + "." + attr
if maya.cmds.objExists(dstAttr):
if dstValid:
srcValue = maya.cmds.getAttr(srcAttr)
if srcValid:
dstValue = maya.cmds.getAttr(dstAttr)
if dstValid:
self.setAttr(dstObj, attr, srcValue, mirrorAxis=mirrorAxis)
if srcValid:
self.setAttr(srcObj, attr, dstValue, mirrorAxis=mirrorAxis)
else:
logger.debug("Cannot find destination attribute %s" % dstAttr)
def setAttr(self, name, attr, value, mirrorAxis=None):
"""
:type name: str
:type: attr: str
:type: value: int | float
:type mirrorAxis: Axis or None
"""
if mirrorAxis is not None:
value = self.formatValue(attr, value, mirrorAxis)
try:
maya.cmds.setAttr(name + "." + attr, value)
except RuntimeError:
msg = "Cannot mirror static attribute {name}.{attr}"
msg = msg.format(name=name, attr=attr)
logger.debug(msg)
def transferAnimation(self, srcObj, dstObj, mirrorAxis=None, option=MirrorOption.Swap, time=None):
"""
:type srcObj: str
:type dstObj: str
:type mirrorAxis: Axis or None
"""
srcValid = self.isValidMirror(srcObj, option)
dstValid = self.isValidMirror(dstObj, option)
tmpObj, = maya.cmds.duplicate(srcObj, name='DELETE_ME', parentOnly=True)
try:
if dstValid:
self._transferAnimation(srcObj, tmpObj, time=time)
if srcValid:
self._transferAnimation(dstObj, srcObj, mirrorAxis=mirrorAxis, time=time)
if dstValid:
self._transferAnimation(tmpObj, dstObj, mirrorAxis=mirrorAxis, time=time)
finally:
maya.cmds.delete(tmpObj)
def _transferAnimation(self, srcObj, dstObj, attrs=None, mirrorAxis=None, time=None):
"""
:type srcObj: str
:type dstObj: str
:type attrs: list[str]
:type time: list[int]
:type mirrorAxis: list[int]
"""
maya.cmds.cutKey(dstObj, time=time or ()) # remove keys
if maya.cmds.copyKey(srcObj, time=time or ()):
if not time:
maya.cmds.pasteKey(dstObj, option="replaceCompletely")
else:
maya.cmds.pasteKey(dstObj, time=time, option="replace")
if attrs is None:
attrs = maya.cmds.listAttr(srcObj, keyable=True) or []
for attr in attrs:
srcAttribute = mutils.Attribute(srcObj, attr)
dstAttribute = mutils.Attribute(dstObj, attr)
if dstAttribute.exists():
if dstAttribute.isConnected():
if self.isAttrMirrored(attr, mirrorAxis):
maya.cmds.scaleKey(dstAttribute.name(), valueScale=-1, attribute=attr)
else:
value = srcAttribute.value()
self.setAttr(dstObj, attr, value, mirrorAxis)
def isValidMirror(self, obj, option):
"""
:type obj: str
:type option: MirrorOption
:rtype: bool
"""
if option == MirrorOption.Swap:
return True
elif option == MirrorOption.LeftToRight and self.isLeftSide(obj):
return False
elif option == MirrorOption.RightToLeft and self.isRightSide(obj):
return False
else:
return True
def isLeftSide(self, name):
"""
Return True if the object contains the left side string.
# Group|Character1:footRollExtra_L|Character1:footRoll_L
# Group|footRollExtra_L|footRoll_LShape
# footRoll_L
# footRoll_LShape
:type name: str
:rtype: bool
"""
side = self.leftSide()
return self.matchSide(name, side)
def isRightSide(self, name):
"""
Return True if the object contains the right side string.
# Group|Character1:footRollExtra_R|Character1:footRoll_R
# Group|footRollExtra_R|footRoll_RShape
# footRoll_R
# footRoll_RShape
:type name: str
:rtype: bool
"""
side = self.rightSide()
return self.matchSide(name, side)
def calculateMirrorAxis(self, srcObj):
"""
:type srcObj: str
:rtype: list[int]
"""
result = [1, 1, 1]
dstObj = self.mirrorObject(srcObj) or srcObj
mirrorPlane = self.mirrorPlane()
if dstObj == srcObj or not maya.cmds.objExists(dstObj):
# The source object does not have an opposite side
result = MirrorTable._calculateMirrorAxis(srcObj, mirrorPlane)
else:
# The source object does have an opposite side
if MirrorTable.isAxisMirrored(srcObj, dstObj, [1, 0, 0], mirrorPlane):
result[0] = -1
if MirrorTable.isAxisMirrored(srcObj, dstObj, [0, 1, 0], mirrorPlane):
result[1] = -1
if MirrorTable.isAxisMirrored(srcObj, dstObj, [0, 0, 1], mirrorPlane):
result[2] = -1
return result

View File

@@ -0,0 +1,88 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
import logging
import traceback
from collections import OrderedDict
try:
import maya.cmds
except ImportError:
traceback.print_exc()
logger = logging.getLogger(__name__)
__all__ = [
"getAll",
"getFromDagPath",
"getFromDagPaths",
"getFromSelection",
]
def getFromDagPaths(dagPaths):
"""
:type dagPaths: list[str]
:rtype: list[str]
"""
namespaces = []
for dagPath in dagPaths:
namespace = getFromDagPath(dagPath)
namespaces.append(namespace)
# Remove any duplicates while retaining the order
return list(OrderedDict.fromkeys(namespaces))
def getFromDagPath(dagPath):
"""
:type dagPath: str
:rtype: str
"""
shortName = dagPath.split("|")[-1]
namespace = ":".join(shortName.split(":")[:-1])
return namespace
def getFromSelection():
"""
Get the current namespaces from the selected objects in Maya.
:rtype: list[str]
"""
namespaces = [""]
try:
names = maya.cmds.ls(selection=True)
namespaces = getFromDagPaths(names) or namespaces
except NameError as error:
# Catch any errors when running this command outside of Maya
logger.exception(error)
return namespaces
def getAll():
"""
Get all the available namespaces in the scene
:rtype: list[str]
"""
IGNORE_NAMESPACES = ['UI', 'shared']
namespaces = maya.cmds.namespaceInfo(listOnlyNamespaces=True, recurse=True)
namespaces = list(set(namespaces) - set(IGNORE_NAMESPACES))
namespaces = sorted(namespaces)
return namespaces

View File

@@ -0,0 +1,178 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
import mutils
from studiovendor import six
try:
import maya.cmds
except Exception:
import traceback
traceback.print_exc()
class Node(object):
@classmethod
def ls(cls, objects=None, selection=False):
"""
nodes = Node.ls(selection=True)
:rtype: list[Node]
"""
if objects is None and not selection:
objects = maya.cmds.ls()
else:
objects = objects or []
if selection:
objects.extend(maya.cmds.ls(selection=True) or [])
return [cls(name) for name in objects]
def __init__(self, name, attributes=None):
"""
:type attributes: [Attribute]
:type name: str
"""
try:
self._name = six.text_type(name) # .encode('ascii')
except UnicodeEncodeError:
raise UnicodeEncodeError('Not a valid ascii name "%s".' % name)
# Cached properties
self._shortname = None
self._namespace = None
self._mirrorAxis = None
self._attributes = attributes
def __str__(self):
return self.name()
def name(self):
"""
:rtype: str
"""
return self._name
def attributes(self):
"""
:rtype: str
"""
return self._attributes
def shortname(self):
"""
:rtype: str
"""
if self._shortname is None:
self._shortname = self.name().split("|")[-1]
return self._shortname
def toShortName(self):
"""
:rtype: None or str
"""
# Try to reduce any long names to short names when using namespaces
names = maya.cmds.ls(self.shortname())
if len(names) == 1:
return Node(names[0])
elif len(names) > 1:
# Return the original name if the short name is not unique
return Node(self.name())
else:
raise mutils.NoObjectFoundError("No object found %s" % str(self.shortname()))
def namespace(self):
"""
:rtype: str
"""
if self._namespace is None:
self._namespace = ":".join(self.shortname().split(":")[:-1])
return self._namespace
def stripFirstPipe(self):
"""
n = Node("|pSphere")
n.stripFirstPipe()
print(n.name())
# Result: pSphere
"""
if self.name().startswith("|"):
self._name = self.name()[1:]
def exists(self):
"""
:rtype: bool
"""
return maya.cmds.objExists(self.name())
def isLong(self):
"""
:rtype: bool
"""
return "|" in self.name()
def isReferenced(self):
"""
:rtype: bool
"""
return maya.cmds.referenceQuery(self.name(), isNodeReferenced=True)
def setMirrorAxis(self, mirrorAxis):
"""
:type mirrorAxis: list[int]
"""
self._mirrorAxis = mirrorAxis
def setNamespace(self, namespace):
"""
Sets the namespace for a current node in Maya.
node.setNamespace("character", "|group|control")
result: |character:group|character:control
setNamespace("", "|character:group|character:control")
result: |group|control
:type namespace: str
"""
newName = self.name()
oldName = self.name()
newNamespace = namespace
oldNamespace = self.namespace()
# Ignore any further processing if the namespace is the same.
if newNamespace == oldNamespace:
return self.name()
# Replace the current namespace with the specified one
if oldNamespace and newNamespace:
newName = oldName.replace(oldNamespace + ":", newNamespace + ":")
# Remove existing namespace
elif oldNamespace and not newNamespace:
newName = oldName.replace(oldNamespace + ":", "")
# Set namespace if the current namespace doesn't exists
elif not oldNamespace and newNamespace:
newName = oldName.replace("|", "|" + newNamespace + ":")
if newNamespace and not newName.startswith("|"):
newName = newNamespace + ":" + newName
self._name = newName
self._shortname = None
self._namespace = None
return self.name()

View File

@@ -0,0 +1,107 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
import os
import logging
import mutils
try:
import maya.cmds
except Exception:
import traceback
traceback.print_exc()
__all__ = [
"playblast",
]
logger = logging.getLogger(__name__)
# Valid Renderers:
# [u'vp2Renderer', u'base_OpenGL_Renderer',
# u'hwRender_OpenGL_Renderer', u'stub_Renderer']
DEFAULT_PLAYBLAST_RENDERER = None
class PlayblastError(Exception):
"""Base class for exceptions in this module."""
pass
def playblast(filename, modelPanel, startFrame, endFrame, width, height, step=1):
"""
Wrapper for Maya's Playblast command.
:type filename: str
:type modelPanel: str
:type startFrame: int
:type endFrame: int
:type width: int
:type height: int
:type step: list[int]
:rtype: str
"""
logger.info(u"Playblasting '{filename}'".format(filename=filename))
if startFrame == endFrame and os.path.exists(filename):
os.remove(filename)
frame = [i for i in range(startFrame, endFrame + 1, step)]
modelPanel = modelPanel or mutils.currentModelPanel()
if maya.cmds.modelPanel(modelPanel, query=True, exists=True):
maya.cmds.setFocus(modelPanel)
if DEFAULT_PLAYBLAST_RENDERER:
maya.cmds.modelEditor(
modelPanel,
edit=True,
rendererName=DEFAULT_PLAYBLAST_RENDERER
)
name, compression = os.path.splitext(filename)
filename = filename.replace(compression, "")
compression = compression.replace(".", "")
offScreen = mutils.isLinux()
path = maya.cmds.playblast(
format="image",
viewer=False,
percent=100,
quality=100,
frame=frame,
width=width,
height=height,
filename=filename,
endTime=endFrame,
startTime=startFrame,
offScreen=offScreen,
forceOverwrite=True,
showOrnaments=False,
compression=compression,
)
if not path:
raise PlayblastError("Playblast was canceled")
src = path.replace("####", str(int(0)).rjust(4, "0"))
if startFrame == endFrame:
dst = src.replace(".0000.", ".")
logger.info("Renaming '%s' => '%s" % (src, dst))
os.rename(src, dst)
src = dst
logger.info(u"Playblasted '%s'" % src)
return src

View File

@@ -0,0 +1,591 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
"""
#
# pose.py
import mutils
# Example 1:
# Save and load a pose from the selected objects
objects = maya.cmds.ls(selection=True)
mutils.savePose("/tmp/pose.json", objects)
mutils.loadPose("/tmp/pose.json")
# Example 2:
# Create a pose object from a list of object names
pose = mutils.Pose.fromObjects(objects)
# Example 3:
# Create a pose object from the selected objects
objects = maya.cmds.ls(selection=True)
pose = mutils.Pose.fromObjects(objects)
# Example 4:
# Save the pose object to disc
path = "/tmp/pose.json"
pose.save(path)
# Example 5:
# Create a pose object from disc
path = "/tmp/pose.json"
pose = mutils.Pose.fromPath(path)
# Load the pose on to the objects from file
pose.load()
# Load the pose to the selected objects
objects = maya.cmds.ls(selection=True)
pose.load(objects=objects)
# Load the pose to the specified namespaces
pose.load(namespaces=["character1", "character2"])
# Load the pose to the specified objects
pose.load(objects=["Character1:Hand_L", "Character1:Finger_L"])
"""
import logging
import mutils
try:
import maya.cmds
except ImportError:
import traceback
traceback.print_exc()
__all__ = ["Pose", "savePose", "loadPose"]
logger = logging.getLogger(__name__)
_pose_ = None
def savePose(path, objects, metadata=None):
"""
Convenience function for saving a pose to disc for the given objects.
Example:
path = "C:/example.pose"
pose = savePose(path, metadata={'description': 'Example pose'})
print(pose.metadata())
# {
'user': 'Hovel',
'mayaVersion': '2016',
'description': 'Example pose'
}
:type path: str
:type objects: list[str]
:type metadata: dict or None
:rtype: Pose
"""
pose = mutils.Pose.fromObjects(objects)
if metadata:
pose.updateMetadata(metadata)
pose.save(path)
return pose
def loadPose(path, *args, **kwargs):
"""
Convenience function for loading the given pose path.
:type path: str
:type args: list
:type kwargs: dict
:rtype: Pose
"""
global _pose_
clearCache = kwargs.get("clearCache")
if not _pose_ or _pose_.path() != path or clearCache:
_pose_ = Pose.fromPath(path)
_pose_.load(*args, **kwargs)
return _pose_
class Pose(mutils.TransferObject):
def __init__(self):
mutils.TransferObject.__init__(self)
self._cache = None
self._mtime = None
self._cacheKey = None
self._isLoading = False
self._selection = None
self._mirrorTable = None
self._autoKeyFrame = None
def createObjectData(self, name):
"""
Create the object data for the given object name.
:type name: str
:rtype: dict
"""
attrs = maya.cmds.listAttr(name, unlocked=True, keyable=True) or []
attrs = list(set(attrs))
attrs = [mutils.Attribute(name, attr) for attr in attrs]
data = {"attrs": self.attrs(name)}
for attr in attrs:
if attr.isValid():
if attr.value() is None:
msg = "Cannot save the attribute %s with value None."
logger.warning(msg, attr.fullname())
else:
data["attrs"][attr.attr()] = {
"type": attr.type(),
"value": attr.value()
}
return data
def select(self, objects=None, namespaces=None, **kwargs):
"""
Select the objects contained in the pose file.
:type objects: list[str] or None
:type namespaces: list[str] or None
:rtype: None
"""
selectionSet = mutils.SelectionSet.fromPath(self.path())
selectionSet.load(objects=objects, namespaces=namespaces, **kwargs)
def cache(self):
"""
Return the current cached attributes for the pose.
:rtype: list[(Attribute, Attribute)]
"""
return self._cache
def attrs(self, name):
"""
Return the attribute for the given name.
:type name: str
:rtype: dict
"""
return self.object(name).get("attrs", {})
def attr(self, name, attr):
"""
Return the attribute data for the given name and attribute.
:type name: str
:type attr: str
:rtype: dict
"""
return self.attrs(name).get(attr, {})
def attrType(self, name, attr):
"""
Return the attribute type for the given name and attribute.
:type name: str
:type attr: str
:rtype: str
"""
return self.attr(name, attr).get("type", None)
def attrValue(self, name, attr):
"""
Return the attribute value for the given name and attribute.
:type name: str
:type attr: str
:rtype: str | int | float
"""
return self.attr(name, attr).get("value", None)
def setMirrorAxis(self, name, mirrorAxis):
"""
Set the mirror axis for the given name.
:type name: str
:type mirrorAxis: list[int]
"""
if name in self.objects():
self.object(name).setdefault("mirrorAxis", mirrorAxis)
else:
msg = "Object does not exist in pose. " \
"Cannot set mirror axis for %s"
logger.debug(msg, name)
def mirrorAxis(self, name):
"""
Return the mirror axis for the given name.
:rtype: list[int] | None
"""
result = None
if name in self.objects():
result = self.object(name).get("mirrorAxis", None)
if result is None:
logger.debug("Cannot find mirror axis in pose for %s", name)
return result
def updateMirrorAxis(self, name, mirrorAxis):
"""
Update the mirror axis for the given object name.
:type name: str
:type mirrorAxis: list[int]
"""
self.setMirrorAxis(name, mirrorAxis)
def mirrorTable(self):
"""
Return the Mirror Table for the pose.
:rtype: mutils.MirrorTable
"""
return self._mirrorTable
def setMirrorTable(self, mirrorTable):
"""
Set the Mirror Table for the pose.
:type mirrorTable: mutils.MirrorTable
"""
objects = self.objects().keys()
self._mirrorTable = mirrorTable
for srcName, dstName, mirrorAxis in mirrorTable.matchObjects(objects):
self.updateMirrorAxis(dstName, mirrorAxis)
def mirrorValue(self, name, attr, mirrorAxis):
"""
Return the mirror value for the given name, attribute and mirror axis.
:type name: str
:type attr: str
:type mirrorAxis: list[]
:rtype: None | int | float
"""
value = None
if self.mirrorTable() and name:
value = self.attrValue(name, attr)
if value is not None:
value = self.mirrorTable().formatValue(attr, value, mirrorAxis)
else:
logger.debug("Cannot find mirror value for %s.%s", name, attr)
return value
def beforeLoad(self, clearSelection=True):
"""
Called before loading the pose.
:type clearSelection: bool
"""
logger.debug('Before Load "%s"', self.path())
if not self._isLoading:
maya.cmds.refresh(cv=True)
self._isLoading = True
maya.cmds.undoInfo(openChunk=True)
self._selection = maya.cmds.ls(selection=True) or []
self._autoKeyFrame = maya.cmds.autoKeyframe(query=True, state=True)
maya.cmds.autoKeyframe(edit=True, state=False)
maya.cmds.select(clear=clearSelection)
def afterLoad(self):
"""Called after loading the pose."""
if not self._isLoading:
return
logger.debug("After Load '%s'", self.path())
self._isLoading = False
if self._selection:
maya.cmds.select(self._selection)
self._selection = None
maya.cmds.autoKeyframe(edit=True, state=self._autoKeyFrame)
maya.cmds.undoInfo(closeChunk=True)
logger.debug('Loaded "%s"', self.path())
@mutils.timing
def load(
self,
objects=None,
namespaces=None,
attrs=None,
blend=100,
key=False,
mirror=False,
additive=False,
refresh=False,
batchMode=False,
clearCache=False,
mirrorTable=None,
onlyConnected=False,
clearSelection=False,
ignoreConnected=False,
searchAndReplace=None,
):
"""
Load the pose to the given objects or namespaces.
:type objects: list[str]
:type namespaces: list[str]
:type attrs: list[str]
:type blend: float
:type key: bool
:type refresh: bool
:type mirror: bool
:type additive: bool
:type mirrorTable: mutils.MirrorTable
:type batchMode: bool
:type clearCache: bool
:type ignoreConnected: bool
:type onlyConnected: bool
:type clearSelection: bool
:type searchAndReplace: (str, str) or None
"""
if mirror and not mirrorTable:
logger.warning("Cannot mirror pose without a mirror table!")
mirror = False
if batchMode:
key = False
self.updateCache(
objects=objects,
namespaces=namespaces,
attrs=attrs,
batchMode=batchMode,
clearCache=clearCache,
mirrorTable=mirrorTable,
onlyConnected=onlyConnected,
ignoreConnected=ignoreConnected,
searchAndReplace=searchAndReplace,
)
self.beforeLoad(clearSelection=clearSelection)
try:
self.loadCache(blend=blend, key=key, mirror=mirror,
additive=additive)
finally:
if not batchMode:
self.afterLoad()
# Return the focus to the Maya window
maya.cmds.setFocus("MayaWindow")
maya.cmds.refresh(cv=True)
def updateCache(
self,
objects=None,
namespaces=None,
attrs=None,
ignoreConnected=False,
onlyConnected=False,
mirrorTable=None,
batchMode=False,
clearCache=True,
searchAndReplace=None,
):
"""
Update the pose cache.
:type objects: list[str] or None
:type namespaces: list[str] or None
:type attrs: list[str] or None
:type ignoreConnected: bool
:type onlyConnected: bool
:type clearCache: bool
:type batchMode: bool
:type mirrorTable: mutils.MirrorTable
:type searchAndReplace: (str, str) or None
"""
if clearCache or not batchMode or not self._mtime:
self._mtime = self.mtime()
mtime = self._mtime
cacheKey = \
str(mtime) + \
str(objects) + \
str(attrs) + \
str(namespaces) + \
str(ignoreConnected) + \
str(searchAndReplace) + \
str(maya.cmds.currentTime(query=True))
if self._cacheKey != cacheKey or clearCache:
self.validate(namespaces=namespaces)
self._cache = []
self._cacheKey = cacheKey
dstObjects = objects
srcObjects = self.objects()
usingNamespaces = not objects and namespaces
if mirrorTable:
self.setMirrorTable(mirrorTable)
search = None
replace = None
if searchAndReplace:
search = searchAndReplace[0]
replace = searchAndReplace[1]
matches = mutils.matchNames(
srcObjects,
dstObjects=dstObjects,
dstNamespaces=namespaces,
search=search,
replace=replace,
)
for srcNode, dstNode in matches:
self.cacheNode(
srcNode,
dstNode,
attrs=attrs,
onlyConnected=onlyConnected,
ignoreConnected=ignoreConnected,
usingNamespaces=usingNamespaces,
)
if not self.cache():
text = "No objects match when loading data. " \
"Turn on debug mode to see more details."
raise mutils.NoMatchFoundError(text)
def cacheNode(
self,
srcNode,
dstNode,
attrs=None,
ignoreConnected=None,
onlyConnected=None,
usingNamespaces=None
):
"""
Cache the given pair of nodes.
:type srcNode: mutils.Node
:type dstNode: mutils.Node
:type attrs: list[str] or None
:type ignoreConnected: bool or None
:type onlyConnected: bool or None
:type usingNamespaces: none or list[str]
"""
mirrorAxis = None
mirrorObject = None
# Remove the first pipe in-case the object has a parent
dstNode.stripFirstPipe()
srcName = srcNode.name()
if self.mirrorTable():
mirrorObject = self.mirrorTable().mirrorObject(srcName)
if not mirrorObject:
mirrorObject = srcName
msg = "Cannot find mirror object in pose for %s"
logger.debug(msg, srcName)
# Check if a mirror axis exists for the mirrorObject otherwise
# check the srcNode
mirrorAxis = self.mirrorAxis(mirrorObject) or self.mirrorAxis(srcName)
if mirrorObject and not maya.cmds.objExists(mirrorObject):
msg = "Mirror object does not exist in the scene %s"
logger.debug(msg, mirrorObject)
if usingNamespaces:
# Try and use the short name.
# Much faster than the long name when setting attributes.
try:
dstNode = dstNode.toShortName()
except mutils.NoObjectFoundError as msg:
logger.debug(msg)
return
except mutils.MoreThanOneObjectFoundError as msg:
logger.debug(msg)
for attr in self.attrs(srcName):
if attrs and attr not in attrs:
continue
dstAttribute = mutils.Attribute(dstNode.name(), attr)
isConnected = dstAttribute.isConnected()
if (ignoreConnected and isConnected) or (onlyConnected and not isConnected):
continue
type_ = self.attrType(srcName, attr)
value = self.attrValue(srcName, attr)
srcMirrorValue = self.mirrorValue(mirrorObject, attr, mirrorAxis=mirrorAxis)
srcAttribute = mutils.Attribute(dstNode.name(), attr, value=value, type=type_)
dstAttribute.update()
self._cache.append((srcAttribute, dstAttribute, srcMirrorValue))
def loadCache(self, blend=100, key=False, mirror=False, additive=False):
"""
Load the pose from the current cache.
:type blend: float
:type key: bool
:type mirror: bool
:rtype: None
"""
cache = self.cache()
for i in range(0, len(cache)):
srcAttribute, dstAttribute, srcMirrorValue = cache[i]
if srcAttribute and dstAttribute:
if mirror and srcMirrorValue is not None:
value = srcMirrorValue
else:
value = srcAttribute.value()
try:
dstAttribute.set(value, blend=blend, key=key,
additive=additive)
except (ValueError, RuntimeError):
cache[i] = (None, None)
logger.debug('Ignoring %s', dstAttribute.fullname())

View File

@@ -0,0 +1,38 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
import traceback
try:
import maya.cmds
except ImportError:
traceback.print_exc()
class ScriptJob(object):
"""
self._scriptJob = mutils.ScriptJob(e=['SelectionChanged', self.selectionChanged])
"""
def __init__(self, *args, **kwargs):
self.id = maya.cmds.scriptJob(*args, **kwargs)
def kill(self):
if self.id:
maya.cmds.scriptJob(kill=self.id, force=True)
self.id = None
def __enter__(self):
return self
def __exit__(self, t, v, tb):
if t is not None:
self.kill()

View File

@@ -0,0 +1,111 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
import logging
import mutils
try:
import maya.cmds
except Exception:
import traceback
traceback.print_exc()
logger = logging.getLogger(__name__)
def saveSelectionSet(path, objects, metadata=None):
"""
Convenience function for saving a selection set to the given disc location.
:type path: str
:type objects: list[str]
:type metadata: dict or None
:type args: list
:type kwargs: dict
:rtype: SelectionSet
"""
selectionSet = SelectionSet.fromObjects(objects)
if metadata:
selectionSet.updateMetadata(metadata)
selectionSet.save(path)
return selectionSet
class SelectionSet(mutils.TransferObject):
def load(self, objects=None, namespaces=None, **kwargs):
"""
Load/Select the transfer objects to the given objects or namespaces.
:type objects: list[str] or None
:type namespaces: list[str] or None
:type kwargs:
"""
validNodes = []
dstObjects = objects
srcObjects = self.objects()
self.validate(namespaces=namespaces)
matches = mutils.matchNames(
srcObjects,
dstObjects=dstObjects,
dstNamespaces=namespaces
)
for srcNode, dstNode in matches:
# Support for wild cards eg: ['*_control'].
if "*" in dstNode.name():
validNodes.append(dstNode.name())
else:
# Remove the first pipe in-case the object has a parent.
dstNode.stripFirstPipe()
# Try to get the short name. Much faster than the long
# name when selecting objects.
try:
dstNode = dstNode.toShortName()
except mutils.NoObjectFoundError as error:
logger.debug(error)
continue
except mutils.MoreThanOneObjectFoundError as error:
logger.debug(error)
validNodes.append(dstNode.name())
if validNodes:
maya.cmds.select(validNodes, **kwargs)
# Return the focus to the Maya window
maya.cmds.setFocus("MayaWindow")
else:
text = "No objects match when loading data. " \
"Turn on debug mode to see more details."
raise mutils.NoMatchFoundError(text)
def select(self, objects=None, namespaces=None, **kwargs):
"""
Convenience method for any classes inheriting SelectionSet.
:type objects: str
:type namespaces: list[str]
:rtype: None
"""
SelectionSet.load(self, objects=objects, namespaces=namespaces, **kwargs)

View File

@@ -0,0 +1,40 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
from mutils.tests.run import run

View File

@@ -0,0 +1,84 @@
//Maya ASCII 2013 scene
//Name: anim.ma
//Last modified: Wed, Aug 20, 2014 07:33:27 PM
//Codeset: UTF-8
requires maya "2013";
requires "stereoCamera" "10.0";
currentUnit -l centimeter -a degree -t film;
fileInfo "application" "maya";
fileInfo "product" "Maya batch mode";
fileInfo "version" "2013 Service Pack 2P12 x64";
fileInfo "cutIdentifier" "201304120319-868747";
fileInfo "osv" "Linux 3.5.4-2.10-desktop #1 SMP PREEMPT Fri Oct 5 14:56:49 CEST 2012 x86_64";
createNode animCurveTA -n "CURVE1";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 45 10 30.81018202226841;
createNode animCurveTU -n "CURVE2";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTL -n "CURVE3";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 0;
createNode animCurveTL -n "CURVE4";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 8 10 8;
createNode animCurveTL -n "CURVE5";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 -12 10 11.214436147065292;
createNode animCurveTU -n "CURVE6";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.666 10 0.666;
createNode animCurveTU -n "CURVE7";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 10;
createNode animCurveTU -n "CURVE8";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.25 10 0.42958527814637792;
createNode animCurveTU -n "CURVE9";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTU -n "CURVE10";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.2 10 0.2;
createNode animCurveTU -n "CURVE11";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1.4 10 1.4;
createNode animCurveTA -n "CURVE12";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 90 10 149.70880463068096;
createNode animCurveTU -n "CURVE13";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 2.6 10 2.6;
createNode animCurveTU -n "CURVE14";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.5 10 0.85917055629275585;
createNode animCurveTU -n "CURVE15";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 5 10 5;
createNode animCurveTU -n "CURVE16";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTL -n "CURVE18";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 15;
// End

View File

@@ -0,0 +1,166 @@
{
"metadata": {
"angularUnit": "deg",
"description": "test shot",
"user": "testuser",
"startTime": 1,
"mayaSceneFile": "/norman/work/krathjen/git/sandbox/site-packages/mutils/tests/data/test_anim.ma",
"timeUnit": "film",
"cTime": 646464451,
"mayaVersion": "2013 Service Pack 2P12 x64",
"linearUnit": "cm",
"version": "1.0.0",
"endTime": 48
}
,
"objects": {
"srcSphere:offset": {
"attrs": {}
},
"srcSphere:sphere": {
"attrs": {
"rotateX": {
"curve": "CURVE1",
"type": "doubleAngle",
"value": 45.0
},
"testEnum": {
"curve": "CURVE2",
"type": "enum",
"value": 1
},
"translateX": {
"curve": "CURVE3",
"type": "doubleLinear",
"value": 0.0
},
"translateY": {
"curve": "CURVE4",
"type": "doubleLinear",
"value": 8.0
},
"translateZ": {
"curve": "CURVE5",
"type": "doubleLinear",
"value": -12.0
},
"rotateY": {
"type": "doubleAngle",
"value": 50.0
},
"testFloat": {
"curve": "CURVE6",
"type": "double",
"value": 0.66600000000000004
},
"testAnimated": {
"curve": "CURVE7",
"type": "double",
"value": 0.0
},
"scaleX": {
"curve": "CURVE8",
"type": "double",
"value": 0.25
},
"scaleY": {
"type": "double",
"value": 4.6600000000000001
},
"visibility": {
"curve": "CURVE9",
"type": "bool",
"value": true
},
"testString": {
"type": "string",
"value": "Hello world"
},
"testVectorX": {
"curve": "CURVE10",
"type": "double",
"value": 0.20000000000000001
},
"testVectorY": {
"curve": "CURVE11",
"type": "double",
"value": 1.3999999999999999
},
"rotateZ": {
"curve": "CURVE12",
"type": "doubleAngle",
"value": 90.0
},
"testVectorZ": {
"curve": "CURVE13",
"type": "double",
"value": 2.6000000000000001
},
"scaleZ": {
"curve": "CURVE14",
"type": "double",
"value": 0.5
},
"testInteger": {
"curve": "CURVE15",
"type": "long",
"value": 5
},
"testBoolean": {
"curve": "CURVE16",
"type": "bool",
"value": true
},
"testConnect": {
"type": "double",
"value": 8.0
}
}
},
"srcSphere:lockedNode": {
"attrs": {
"translateX": {
"type": "doubleLinear",
"value": 0.0
},
"translateY": {
"type": "doubleLinear",
"value": 5.0
},
"translateZ": {
"curve": "CURVE18",
"type": "doubleLinear",
"value": 0.0
},
"scaleX": {
"type": "double",
"value": 1.0
},
"scaleY": {
"type": "double",
"value": 1.0
},
"visibility": {
"type": "bool",
"value": true
},
"rotateX": {
"type": "doubleAngle",
"value": 0.0
},
"rotateY": {
"type": "doubleAngle",
"value": 0.0
},
"rotateZ": {
"type": "doubleAngle",
"value": 0.0
},
"scaleZ": {
"type": "double",
"value": 1.0
}
}
}
}
}

View File

@@ -0,0 +1,354 @@
//Maya ASCII 2017 scene
//Name: sphere.ma
//Last modified: Sun, Feb 11, 2018 03:47:35 AM
//Codeset: 1252
requires maya "2017";
requires "stereoCamera" "10.0";
currentUnit -l centimeter -a degree -t film;
fileInfo "application" "maya";
fileInfo "product" "Maya 2017";
fileInfo "version" "2017";
fileInfo "cutIdentifier" "201606150345-997974";
fileInfo "osv" "Microsoft Windows 8 Business Edition, 64-bit (Build 9200)\n";
createNode transform -s -n "persp";
rename -uid "E076660C-4F85-B186-64D1-46849E688491";
setAttr ".v" no;
setAttr ".t" -type "double3" 133.3110926639115 16.134754006216241 19.317795622267052 ;
setAttr ".r" -type "double3" -8.7383527296081347 79.400000000001739 0 ;
createNode camera -s -n "perspShape" -p "persp";
rename -uid "00E21AC0-4731-C2C0-2E71-409F5D47F930";
setAttr -k off ".v" no;
setAttr ".fl" 34.999999999999993;
setAttr ".coi" 114.68216434604706;
setAttr ".imn" -type "string" "persp";
setAttr ".den" -type "string" "persp_depth";
setAttr ".man" -type "string" "persp_mask";
setAttr ".hc" -type "string" "viewSet -p %camera";
createNode transform -s -n "top";
rename -uid "882E7E2C-450F-3325-2BB3-E09C8E2DEA5D";
setAttr ".v" no;
setAttr ".t" -type "double3" 0 100.1 0 ;
setAttr ".r" -type "double3" -89.999999999999986 0 0 ;
createNode camera -s -n "topShape" -p "top";
rename -uid "12B4F816-4EEE-299F-7183-A58F890C1FD5";
setAttr -k off ".v" no;
setAttr ".rnd" no;
setAttr ".coi" 100.1;
setAttr ".ow" 30;
setAttr ".imn" -type "string" "top";
setAttr ".den" -type "string" "top_depth";
setAttr ".man" -type "string" "top_mask";
setAttr ".hc" -type "string" "viewSet -t %camera";
setAttr ".o" yes;
createNode transform -s -n "front";
rename -uid "FD0E4029-44A6-7FDE-9CFF-FDBF36FCE708";
setAttr ".v" no;
setAttr ".t" -type "double3" 2.0350096678112575 0.39361762628711539 100.1 ;
createNode camera -s -n "frontShape" -p "front";
rename -uid "8997F15C-4C97-598E-A50F-DA88CA1063E6";
setAttr -k off ".v" no;
setAttr ".rnd" no;
setAttr ".coi" 100.1;
setAttr ".ow" 61.766282942468983;
setAttr ".imn" -type "string" "front";
setAttr ".den" -type "string" "front_depth";
setAttr ".man" -type "string" "front_mask";
setAttr ".hc" -type "string" "viewSet -f %camera";
setAttr ".o" yes;
createNode transform -s -n "side";
rename -uid "CC57D42B-44BD-C01F-AB99-E6B928031F2B";
setAttr ".v" no;
setAttr ".t" -type "double3" 100.1 0 0 ;
setAttr ".r" -type "double3" 0 89.999999999999986 0 ;
createNode camera -s -n "sideShape" -p "side";
rename -uid "B98CA35F-4DFD-36DE-7461-189C98891637";
setAttr -k off ".v" no;
setAttr ".rnd" no;
setAttr ".coi" 100.1;
setAttr ".ow" 30;
setAttr ".imn" -type "string" "side";
setAttr ".den" -type "string" "side_depth";
setAttr ".man" -type "string" "side_mask";
setAttr ".hc" -type "string" "viewSet -s %camera";
setAttr ".o" yes;
createNode transform -n "group";
rename -uid "BECCB461-41D0-BD8A-CC79-3591B57B0D18";
addAttr -s false -ci true -sn "testMessage" -ln "testMessage" -at "message";
createNode transform -n "offset" -p "group";
rename -uid "16BDF72C-4277-8CD9-B837-22ACC6FF5F01";
setAttr -l on ".v";
setAttr -l on ".tx";
setAttr -l on ".ty";
setAttr -l on ".tz";
setAttr -l on ".rx";
setAttr -l on ".ry";
setAttr -l on ".rz";
setAttr -l on ".sx";
setAttr -l on ".sy";
setAttr -l on ".sz";
createNode transform -n "lockedNode" -p "offset";
rename -uid "C7E5AB1E-4BA2-E4D0-551E-FCA465DB50D6";
lockNode -l 1 ;
createNode transform -n "sphere" -p "lockedNode";
rename -uid "6D95DBB5-4D74-05BF-A95F-59887E9E743D";
addAttr -ci true -sn "testVector" -ln "testVector" -at "double3" -nc 3;
addAttr -ci true -sn "testVectorX" -ln "testVectorX" -at "double" -p "testVector";
addAttr -ci true -sn "testVectorY" -ln "testVectorY" -at "double" -p "testVector";
addAttr -ci true -sn "testVectorZ" -ln "testVectorZ" -at "double" -p "testVector";
addAttr -ci true -uac -sn "testColor" -ln "testColor" -at "float3" -nc 3;
addAttr -ci true -sn "testRed" -ln "testRed" -at "float" -p "testColor";
addAttr -ci true -sn "testGreen" -ln "testGreen" -at "float" -p "testColor";
addAttr -ci true -sn "testRed" -ln "testRed" -at "float" -p "testColor";
addAttr -ci true -sn "testString" -ln "testString" -dt "string";
addAttr -ci true -sn "testEnum" -ln "testEnum" -min 0 -max 2 -en "Apple:Lemon:Banana"
-at "enum";
addAttr -ci true -sn "testFloat" -ln "testFloat" -min 0 -max 10 -at "double";
addAttr -ci true -sn "testBoolean" -ln "testBoolean" -min 0 -max 1 -at "bool";
addAttr -ci true -sn "testInteger" -ln "testInteger" -min 0 -max 10 -at "long";
addAttr -ci true -sn "testLocked" -ln "testLocked" -min 0 -max 10 -at "double";
addAttr -ci true -sn "testHidden" -ln "testHidden" -min 0 -max 10 -at "double";
addAttr -ci true -sn "testConnect" -ln "testConnect" -at "double";
addAttr -ci true -sn "testAnimated" -ln "testAnimated" -at "double";
addAttr -s false -ci true -sn "testMessage" -ln "testMessage" -at "message";
addAttr -ci true -sn "testLimit" -ln "testLimit" -dv 5 -min -10 -max 10 -at "double";
addAttr -ci true -sn "testNonKeyable" -ln "testNonKeyable" -at "double";
addAttr -uap -ci true -k true -sn "testProxy" -ln "testProxy" -dv 1 -at "double";
setAttr -k on ".testVector";
setAttr -k on ".testVectorX";
setAttr -k on ".testVectorY";
setAttr -k on ".testVectorZ";
setAttr -k on ".testString";
setAttr -k on ".testEnum" 2;
setAttr -k on ".testFloat";
setAttr -k on ".testBoolean";
setAttr -k on ".testInteger";
setAttr -l on -k on ".testLocked";
setAttr -k on ".testConnect";
setAttr -k on ".testAnimated";
setAttr -k on ".testLimit" 10;
setAttr -cb on ".testNonKeyable";
createNode mesh -n "sphereShape" -p "sphere";
rename -uid "A54E9E87-47A6-32A9-85C4-AFBAA8C21840";
setAttr -k off ".v";
setAttr ".vir" yes;
setAttr ".vif" yes;
setAttr ".uvst[0].uvsn" -type "string" "map1";
setAttr ".cuvs" -type "string" "map1";
setAttr ".dcc" -type "string" "Ambient+Diffuse";
setAttr ".covm[0]" 0 1 1;
setAttr ".cdvm[0]" 0 1 1;
setAttr ".ugsdt" no;
setAttr ".vnm" 0;
createNode transform -n "pCube1";
rename -uid "EB3530D0-4207-A5AE-6925-9D94CBDDD1F9";
setAttr ".t" -type "double3" 0 0 -29.719509228177799 ;
createNode mesh -n "pCubeShape1" -p "pCube1";
rename -uid "7E4B2133-4E80-F102-7998-A9B732FEACD1";
setAttr -k off ".v";
setAttr ".vir" yes;
setAttr ".vif" yes;
setAttr ".uvst[0].uvsn" -type "string" "map1";
setAttr ".cuvs" -type "string" "map1";
setAttr ".dcc" -type "string" "Ambient+Diffuse";
setAttr ".covm[0]" 0 1 1;
setAttr ".cdvm[0]" 0 1 1;
createNode lightLinker -s -n "lightLinker1";
rename -uid "BB27B0F0-4683-C766-9E0B-D2AFAEB1AFF6";
setAttr -s 2 ".lnk";
setAttr -s 2 ".slnk";
createNode displayLayerManager -n "layerManager";
rename -uid "1270B817-40F6-0E8E-D20B-FD9B9195A9EE";
createNode displayLayer -n "defaultLayer";
rename -uid "23B6DA10-4D2D-10C6-9FAF-749F161B9716";
createNode renderLayerManager -n "renderLayerManager";
rename -uid "1308789F-439F-925D-3094-0B8AA9FBE17D";
createNode renderLayer -n "defaultRenderLayer";
rename -uid "7827EACA-45F4-FC44-3C4C-368439DEC2B0";
setAttr ".g" yes;
createNode polySphere -n "srcPolySphere";
rename -uid "1B369F70-4317-2F4F-4C28-E18C566DC198";
setAttr ".r" 4.1417806816985845;
createNode script -n "sceneConfigurationScriptNode";
rename -uid "B0BF38E3-48B8-4929-20D7-45BD7DF0B488";
setAttr ".b" -type "string" "playbackOptions -min 1 -max 24 -ast 1 -aet 48 ";
setAttr ".st" 6;
createNode animCurveTU -n "sphere_testAnimated";
rename -uid "3A08FC92-43C1-C2D8-F4D3-98813CAFADB9";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 10;
createNode shapeEditorManager -n "shapeEditorManager";
rename -uid "76FE07E3-4101-0D2E-BA83-308EDB6BAFB5";
createNode poseInterpolatorManager -n "poseInterpolatorManager";
rename -uid "E4F59164-433D-3B5A-9EB0-858BC8193BA6";
createNode polyCube -n "polyCube1";
rename -uid "440FB0CB-44F5-D535-6B4E-6088139890E3";
setAttr ".cuv" 4;
createNode objectSet -n "lockedSet";
rename -uid "452516C3-40E5-8508-BCB2-8A8F6B2C0F4C";
setAttr ".ihi" 0;
setAttr -l on ".dsm";
createNode script -n "uiConfigurationScriptNode";
rename -uid "5F07C60B-437F-3FFF-82B2-9ABBA913F194";
setAttr ".b" -type "string" (
"// Maya Mel UI Configuration File.\n//\n// This script is machine generated. Edit at your own risk.\n//\n//\n\nglobal string $gMainPane;\nif (`paneLayout -exists $gMainPane`) {\n\n\tglobal int $gUseScenePanelConfig;\n\tint $useSceneConfig = $gUseScenePanelConfig;\n\tint $menusOkayInPanels = `optionVar -q allowMenusInPanels`;\tint $nVisPanes = `paneLayout -q -nvp $gMainPane`;\n\tint $nPanes = 0;\n\tstring $editorName;\n\tstring $panelName;\n\tstring $itemFilterName;\n\tstring $panelConfig;\n\n\t//\n\t// get current state of the UI\n\t//\n\tsceneUIReplacement -update $gMainPane;\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"outlinerPanel\" (localizedPanelLabel(\"Outliner\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `outlinerPanel -unParent -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n outlinerEditor -e \n -showShapes 0\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n"
+ " -showReferenceMembers 0\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n"
+ " -alwaysToggleSelect 0\n -directSelect 0\n -isSet 0\n -isSetMember 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n -renderFilterIndex 0\n -selectionOrder \"chronological\" \n -expandAttribute 0\n $editorName;\n\t\t}\n\t} else {\n"
+ "\t\t$label = `panel -q -label $panelName`;\n\t\toutlinerPanel -edit -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n outlinerEditor -e \n -showShapes 0\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n"
+ " -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -isSet 0\n -isSetMember 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n -renderFilterIndex 0\n -selectionOrder \"chronological\" \n"
+ " -expandAttribute 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Top View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Top View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"top\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n"
+ " -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n"
+ " -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n"
+ " -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Top View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"top\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n"
+ " -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n"
+ " -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n"
+ " -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Side View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Side View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"side\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n"
+ " -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n"
+ " -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n"
+ " -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n"
+ "\t\tmodelPanel -edit -l (localizedPanelLabel(\"Side View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"side\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n"
+ " -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n"
+ " -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Front View\")) `;\n"
+ "\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Front View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"front\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n"
+ " -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n"
+ " -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n"
+ " -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Front View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"front\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n"
+ " -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n"
+ " -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n"
+ " -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Persp View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n"
+ " -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n"
+ " -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n"
+ " -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1531\n -height 1022\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n"
+ " modelEditor -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n"
+ " -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n"
+ " -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1531\n -height 1022\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"outlinerPanel\" (localizedPanelLabel(\"Outliner\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n"
+ "\t\t\t$panelName = `outlinerPanel -unParent -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n outlinerEditor -e \n -docTag \"isolOutln_fromSeln\" \n -showShapes 0\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 0\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n"
+ " -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n"
+ " -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\toutlinerPanel -edit -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n outlinerEditor -e \n -docTag \"isolOutln_fromSeln\" \n -showShapes 0\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 0\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n"
+ " -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n"
+ " -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"graphEditor\" (localizedPanelLabel(\"Graph Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"graphEditor\" -l (localizedPanelLabel(\"Graph Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n"
+ " -autoExpand 1\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 1\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 1\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n"
+ " -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 1\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"GraphEd\");\n animCurveEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 1\n -displayInfinities 0\n -displayValues 0\n -autoFit 1\n -snapTime \"integer\" \n -snapValue \"none\" \n -showResults \"off\" \n -showBufferCurves \"off\" \n -smoothness \"fine\" \n"
+ " -resultSamples 0.96\n -resultScreenSamples 0\n -resultUpdate \"delayed\" \n -showUpstreamCurves 1\n -showCurveNames 0\n -showActiveCurveNames 0\n -stackedCurves 0\n -stackedCurvesMin -1\n -stackedCurvesMax 1\n -stackedCurvesSpace 0.2\n -displayNormalized 0\n -preSelectionHighlight 0\n -constrainDrag 0\n -classicMode 1\n -valueLinesToggle 1\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Graph Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n"
+ " -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 1\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 1\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 1\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n"
+ " -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 1\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"GraphEd\");\n animCurveEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 1\n -displayInfinities 0\n"
+ " -displayValues 0\n -autoFit 1\n -snapTime \"integer\" \n -snapValue \"none\" \n -showResults \"off\" \n -showBufferCurves \"off\" \n -smoothness \"fine\" \n -resultSamples 0.96\n -resultScreenSamples 0\n -resultUpdate \"delayed\" \n -showUpstreamCurves 1\n -showCurveNames 0\n -showActiveCurveNames 0\n -stackedCurves 0\n -stackedCurvesMin -1\n -stackedCurvesMax 1\n -stackedCurvesSpace 0.2\n -displayNormalized 0\n -preSelectionHighlight 0\n -constrainDrag 0\n -classicMode 1\n -valueLinesToggle 1\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dopeSheetPanel\" (localizedPanelLabel(\"Dope Sheet\")) `;\n\tif (\"\" == $panelName) {\n"
+ "\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dopeSheetPanel\" -l (localizedPanelLabel(\"Dope Sheet\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 0\n"
+ " -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 1\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n"
+ " -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"DopeSheetEd\");\n dopeSheetEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -outliner \"dopeSheetPanel1OutlineEd\" \n -showSummary 1\n -showScene 0\n -hierarchyBelow 0\n -showTicks 1\n -selectionWindow 0 0 0 0 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dope Sheet\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n"
+ " -showShapes 1\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 0\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 1\n -dropIsParent 1\n"
+ " -transmitFilters 0\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"DopeSheetEd\");\n dopeSheetEditor -e \n"
+ " -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -outliner \"dopeSheetPanel1OutlineEd\" \n -showSummary 1\n -showScene 0\n -hierarchyBelow 0\n -showTicks 1\n -selectionWindow 0 0 0 0 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"timeEditorPanel\" (localizedPanelLabel(\"Time Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"timeEditorPanel\" -l (localizedPanelLabel(\"Time Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Time Editor\")) -mbv $menusOkayInPanels $panelName;\n"
+ "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"clipEditorPanel\" (localizedPanelLabel(\"Trax Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"clipEditorPanel\" -l (localizedPanelLabel(\"Trax Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = clipEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 0 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Trax Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = clipEditorNameFromPanel($panelName);\n"
+ " clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 0 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"sequenceEditorPanel\" (localizedPanelLabel(\"Camera Sequencer\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"sequenceEditorPanel\" -l (localizedPanelLabel(\"Camera Sequencer\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = sequenceEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n"
+ " -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Camera Sequencer\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = sequenceEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperGraphPanel\" (localizedPanelLabel(\"Hypergraph Hierarchy\")) `;\n"
+ "\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"hyperGraphPanel\" -l (localizedPanelLabel(\"Hypergraph Hierarchy\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"HyperGraphEd\");\n hyperGraph -e \n -graphLayoutStyle \"hierarchicalLayout\" \n -orientation \"horiz\" \n -mergeConnections 0\n -zoom 1\n -animateTransition 0\n -showRelationships 1\n -showShapes 0\n -showDeformers 0\n -showExpressions 0\n -showConstraints 0\n -showConnectionFromSelected 0\n -showConnectionToSelected 0\n -showConstraintLabels 0\n -showUnderworld 0\n -showInvisible 0\n -transitionFrames 1\n -opaqueContainers 0\n -freeform 0\n -imagePosition 0 0 \n -imageScale 1\n -imageEnabled 0\n -graphType \"DAG\" \n"
+ " -heatMapDisplay 0\n -updateSelection 1\n -updateNodeAdded 1\n -useDrawOverrideColor 0\n -limitGraphTraversal -1\n -range 0 0 \n -iconSize \"smallIcons\" \n -showCachedConnections 0\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypergraph Hierarchy\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"HyperGraphEd\");\n hyperGraph -e \n -graphLayoutStyle \"hierarchicalLayout\" \n -orientation \"horiz\" \n -mergeConnections 0\n -zoom 1\n -animateTransition 0\n -showRelationships 1\n -showShapes 0\n -showDeformers 0\n -showExpressions 0\n -showConstraints 0\n -showConnectionFromSelected 0\n -showConnectionToSelected 0\n -showConstraintLabels 0\n"
+ " -showUnderworld 0\n -showInvisible 0\n -transitionFrames 1\n -opaqueContainers 0\n -freeform 0\n -imagePosition 0 0 \n -imageScale 1\n -imageEnabled 0\n -graphType \"DAG\" \n -heatMapDisplay 0\n -updateSelection 1\n -updateNodeAdded 1\n -useDrawOverrideColor 0\n -limitGraphTraversal -1\n -range 0 0 \n -iconSize \"smallIcons\" \n -showCachedConnections 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"visorPanel\" (localizedPanelLabel(\"Visor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"visorPanel\" -l (localizedPanelLabel(\"Visor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Visor\")) -mbv $menusOkayInPanels $panelName;\n"
+ "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"createNodePanel\" (localizedPanelLabel(\"Create Node\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"createNodePanel\" -l (localizedPanelLabel(\"Create Node\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Create Node\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"polyTexturePlacementPanel\" (localizedPanelLabel(\"UV Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"polyTexturePlacementPanel\" -l (localizedPanelLabel(\"UV Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"UV Editor\")) -mbv $menusOkayInPanels $panelName;\n"
+ "\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"renderWindowPanel\" (localizedPanelLabel(\"Render View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"renderWindowPanel\" -l (localizedPanelLabel(\"Render View\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Render View\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"shapePanel\" (localizedPanelLabel(\"Shape Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\tshapePanel -unParent -l (localizedPanelLabel(\"Shape Editor\")) -mbv $menusOkayInPanels ;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tshapePanel -edit -l (localizedPanelLabel(\"Shape Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n"
+ "\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"posePanel\" (localizedPanelLabel(\"Pose Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\tposePanel -unParent -l (localizedPanelLabel(\"Pose Editor\")) -mbv $menusOkayInPanels ;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tposePanel -edit -l (localizedPanelLabel(\"Pose Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynRelEdPanel\" (localizedPanelLabel(\"Dynamic Relationships\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dynRelEdPanel\" -l (localizedPanelLabel(\"Dynamic Relationships\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dynamic Relationships\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"relationshipPanel\" (localizedPanelLabel(\"Relationship Editor\")) `;\n"
+ "\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"relationshipPanel\" -l (localizedPanelLabel(\"Relationship Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Relationship Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"referenceEditorPanel\" (localizedPanelLabel(\"Reference Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"referenceEditorPanel\" -l (localizedPanelLabel(\"Reference Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Reference Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"componentEditorPanel\" (localizedPanelLabel(\"Component Editor\")) `;\n"
+ "\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"componentEditorPanel\" -l (localizedPanelLabel(\"Component Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Component Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynPaintScriptedPanelType\" (localizedPanelLabel(\"Paint Effects\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dynPaintScriptedPanelType\" -l (localizedPanelLabel(\"Paint Effects\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Paint Effects\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"scriptEditorPanel\" (localizedPanelLabel(\"Script Editor\")) `;\n"
+ "\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"scriptEditorPanel\" -l (localizedPanelLabel(\"Script Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Script Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\tif ($useSceneConfig) {\n\t\tscriptedPanel -e -to $panelName;\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"profilerPanel\" (localizedPanelLabel(\"Profiler Tool\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"profilerPanel\" -l (localizedPanelLabel(\"Profiler Tool\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Profiler Tool\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"contentBrowserPanel\" (localizedPanelLabel(\"Content Browser\")) `;\n"
+ "\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"contentBrowserPanel\" -l (localizedPanelLabel(\"Content Browser\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Content Browser\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"outlinerPanel\" (localizedPanelLabel(\"ToggledOutliner\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `outlinerPanel -unParent -l (localizedPanelLabel(\"ToggledOutliner\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n outlinerEditor -e \n -showShapes 0\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n"
+ " -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -isSet 0\n -isSetMember 0\n"
+ " -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n -renderFilterIndex 0\n -selectionOrder \"chronological\" \n -expandAttribute 0\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\toutlinerPanel -edit -l (localizedPanelLabel(\"ToggledOutliner\")) -mbv $menusOkayInPanels $panelName;\n"
+ "\t\t$editorName = $panelName;\n outlinerEditor -e \n -showShapes 0\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n"
+ " -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -isSet 0\n -isSetMember 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n -renderFilterIndex 0\n -selectionOrder \"chronological\" \n -expandAttribute 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n"
+ "\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"Stereo\" (localizedPanelLabel(\"Stereo\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"Stereo\" -l (localizedPanelLabel(\"Stereo\")) -mbv $menusOkayInPanels `;\nstring $editorName = ($panelName+\"Editor\");\n stereoCameraView -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n"
+ " -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 4 4 \n -bumpResolution 4 4 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 0\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n"
+ " -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n"
+ " -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 0\n -height 0\n -sceneRenderFilter 0\n -displayMode \"centerEye\" \n -viewColor 0 0 0 1 \n -useCustomBackground 1\n $editorName;\n stereoCameraView -e -viewSelected 0 $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Stereo\")) -mbv $menusOkayInPanels $panelName;\nstring $editorName = ($panelName+\"Editor\");\n stereoCameraView -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n"
+ " -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 4 4 \n"
+ " -bumpResolution 4 4 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 0\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n"
+ " -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 0\n -height 0\n -sceneRenderFilter 0\n -displayMode \"centerEye\" \n -viewColor 0 0 0 1 \n -useCustomBackground 1\n $editorName;\n stereoCameraView -e -viewSelected 0 $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n"
+ "\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperShadePanel\" (localizedPanelLabel(\"Hypershade\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"hyperShadePanel\" -l (localizedPanelLabel(\"Hypershade\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypershade\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"nodeEditorPanel\" (localizedPanelLabel(\"Node Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"nodeEditorPanel\" -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n -consistentNameSize 1\n"
+ " -createNodeCommand \"nodeEdCreateNodeCommand\" \n -defaultPinnedState 0\n -additiveGraphingMode 0\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -showNamespace 1\n -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -useAssets 1\n -syncedSelection 1\n -extendToShapes 1\n -activeTab -1\n -editorMode \"default\" \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n"
+ " -allNodes 0\n -autoSizeNodes 1\n -consistentNameSize 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n -defaultPinnedState 0\n -additiveGraphingMode 0\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -showNamespace 1\n -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -useAssets 1\n -syncedSelection 1\n -extendToShapes 1\n -activeTab -1\n -editorMode \"default\" \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\tif ($useSceneConfig) {\n string $configName = `getPanel -cwl (localizedPanelLabel(\"Current Layout\"))`;\n"
+ " if (\"\" != $configName) {\n\t\t\tpanelConfiguration -edit -label (localizedPanelLabel(\"Current Layout\")) \n\t\t\t\t-userCreated false\n\t\t\t\t-defaultImage \"vacantCell.xP:/\"\n\t\t\t\t-image \"\"\n\t\t\t\t-sc false\n\t\t\t\t-configString \"global string $gMainPane; paneLayout -e -cn \\\"single\\\" -ps 1 100 100 $gMainPane;\"\n\t\t\t\t-removeAllPanels\n\t\t\t\t-ap false\n\t\t\t\t\t(localizedPanelLabel(\"Persp View\")) \n\t\t\t\t\t\"modelPanel\"\n"
+ "\t\t\t\t\t\"$panelName = `modelPanel -unParent -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels `;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"default\\\" \\n -displayAppearance \\\"smoothShaded\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -holdOuts 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 0\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 0\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 16384\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -depthOfFieldPreview 1\\n -maxConstantTransparency 1\\n -rendererName \\\"vp2Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 1\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -particleInstancers 1\\n -fluids 1\\n -hairSystems 1\\n -follicles 1\\n -nCloths 1\\n -nParticles 1\\n -nRigids 1\\n -dynamicConstraints 1\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 1\\n -greasePencils 1\\n -shadows 0\\n -captureSequenceNumber -1\\n -width 1531\\n -height 1022\\n -sceneRenderFilter 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName\"\n"
+ "\t\t\t\t\t\"modelPanel -edit -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels $panelName;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"default\\\" \\n -displayAppearance \\\"smoothShaded\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -holdOuts 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 0\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 0\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 16384\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -depthOfFieldPreview 1\\n -maxConstantTransparency 1\\n -rendererName \\\"vp2Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 1\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -particleInstancers 1\\n -fluids 1\\n -hairSystems 1\\n -follicles 1\\n -nCloths 1\\n -nParticles 1\\n -nRigids 1\\n -dynamicConstraints 1\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 1\\n -greasePencils 1\\n -shadows 0\\n -captureSequenceNumber -1\\n -width 1531\\n -height 1022\\n -sceneRenderFilter 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName\"\n"
+ "\t\t\t\t$configName;\n\n setNamedPanelLayout (localizedPanelLabel(\"Current Layout\"));\n }\n\n panelHistory -e -clear mainPanelHistory;\n setFocus `paneLayout -q -p1 $gMainPane`;\n sceneUIReplacement -deleteRemaining;\n sceneUIReplacement -clear;\n\t}\n\n\ngrid -spacing 5 -size 12 -divisions 5 -displayAxes yes -displayGridLines yes -displayDivisionLines yes -displayPerspectiveLabels no -displayOrthographicLabels no -displayAxesBold yes -perspectiveLabelPosition axis -orthographicLabelPosition edge;\nviewManip -drawCompass 0 -compassAngle 0 -frontParameters \"\" -homeParameters \"\" -selectionLockParameters \"\";\n}\n");
setAttr ".st" 3;
select -ne :time1;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr ".o" 1;
setAttr ".unw" 1;
select -ne :hardwareRenderingGlobals;
setAttr ".otfna" -type "stringArray" 18 "NURBS Curves" "NURBS Surfaces" "Polygons" "Subdiv Surfaces" "Particles" "Fluids" "Image Planes" "UI:" "Lights" "Cameras" "Locators" "Joints" "IK Handles" "Deformers" "Motion Trails" "Components" "Misc. UI" "Ornaments" ;
setAttr ".otfva" -type "Int32Array" 18 0 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 ;
setAttr ".vac" 2;
select -ne :renderPartition;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -s 2 ".st";
select -ne :renderGlobalsList1;
setAttr -k on ".cch";
setAttr -k on ".nds";
select -ne :defaultShaderList1;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -s 4 ".s";
select -ne :postProcessList1;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -s 2 ".p";
select -ne :defaultRenderingList1;
select -ne :initialShadingGroup;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -s 2 ".dsm";
setAttr -k on ".mwc";
setAttr ".ro" yes;
select -ne :initialParticleSE;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -k on ".mwc";
setAttr ".ro" yes;
select -ne :defaultRenderGlobals;
setAttr ".ep" 1;
select -ne :defaultResolution;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -av ".w" 640;
setAttr -av ".h" 480;
setAttr -k on ".pa" 1;
setAttr -k on ".al";
setAttr -av ".dar" 1.3333332538604736;
setAttr -k on ".ldar";
setAttr -k on ".off";
setAttr -k on ".fld";
setAttr -k on ".zsl";
select -ne :defaultLightSet;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -k on ".mwc";
setAttr ".ro" yes;
select -ne :defaultColorMgtGlobals;
setAttr ".cme" no;
select -ne :hardwareRenderGlobals;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr ".ctrs" 256;
setAttr ".btrs" 512;
connectAttr "sphere.msg" "group.testMessage" -l on;
connectAttr "sphere.ty" "sphere.testConnect";
connectAttr "sphere_testAnimated.o" "sphere.testAnimated";
connectAttr "group.msg" "sphere.testMessage" -l on;
connectAttr "pCube1.sz" "sphere.testProxy";
connectAttr "srcPolySphere.out" "sphereShape.i";
connectAttr "polyCube1.out" "pCubeShape1.i";
relationship "link" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message";
relationship "link" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message";
relationship "shadowLink" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message";
relationship "shadowLink" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message";
connectAttr "layerManager.dli[0]" "defaultLayer.id";
connectAttr "renderLayerManager.rlmi[0]" "defaultRenderLayer.rlid";
connectAttr "sphere.iog" "lockedSet.dsm" -l on -na;
connectAttr "defaultRenderLayer.msg" ":defaultRenderingList1.r" -na;
connectAttr "sphereShape.iog" ":initialShadingGroup.dsm" -na;
connectAttr "pCubeShape1.iog" ":initialShadingGroup.dsm" -na;
// End of sphere.ma

View File

@@ -0,0 +1,187 @@
//Maya ASCII 2013 scene
//Name: test.ma
//Last modified: Thu, Jun 26, 2014 01:46:47 PM
//Codeset: UTF-8
requires maya "2013";
currentUnit -l centimeter -a degree -t film;
fileInfo "application" "maya";
fileInfo "product" "Maya 2013";
fileInfo "version" "2013 Service Pack 2P12 x64";
fileInfo "cutIdentifier" "201304120319-868747";
fileInfo "osv" "Linux 3.5.4-2.10-desktop #1 SMP PREEMPT Fri Oct 5 14:56:49 CEST 2012 x86_64";
createNode animCurveTA -n "DELETE_NODE_rotateX";
addAttr -ci true -sn "fullname" -ln "fullname" -dt "string";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 45 10 30.81018202226841;
setAttr -k on ".fullname" -type "string" "srcSphere:sphere.rotateX";
createNode animCurveTU -n "DELETE_NODE_testEnum";
addAttr -ci true -sn "fullname" -ln "fullname" -dt "string";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
setAttr -k on ".fullname" -type "string" "srcSphere:sphere.testEnum";
createNode animCurveTL -n "DELETE_NODE_translateX";
addAttr -ci true -sn "fullname" -ln "fullname" -dt "string";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 0;
setAttr -k on ".fullname" -type "string" "srcSphere:sphere.translateX";
createNode animCurveTL -n "DELETE_NODE_translateY";
addAttr -ci true -sn "fullname" -ln "fullname" -dt "string";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 8 10 8;
setAttr -k on ".fullname" -type "string" "srcSphere:sphere.translateY";
createNode animCurveTL -n "DELETE_NODE_translateZ";
addAttr -ci true -sn "fullname" -ln "fullname" -dt "string";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 -12 10 11.214436147065292;
setAttr -k on ".fullname" -type "string" "srcSphere:sphere.translateZ";
createNode animCurveTA -n "DELETE_NODE_rotateY";
addAttr -ci true -sn "fullname" -ln "fullname" -dt "string";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 25 10 -82.269409864294204;
setAttr -k on ".fullname" -type "string" "srcSphere:sphere.rotateY";
createNode animCurveTU -n "DELETE_NODE_testFloat";
addAttr -ci true -sn "fullname" -ln "fullname" -dt "string";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.666 10 0.666;
setAttr -k on ".fullname" -type "string" "srcSphere:sphere.testFloat";
createNode animCurveTU -n "DELETE_NODE_testAnimated";
addAttr -ci true -sn "fullname" -ln "fullname" -dt "string";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 10;
setAttr -k on ".fullname" -type "string" "srcSphere:sphere.testAnimated";
createNode animCurveTU -n "DELETE_NODE_scaleX";
addAttr -ci true -sn "fullname" -ln "fullname" -dt "string";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.25 10 0.42958527814637792;
setAttr -k on ".fullname" -type "string" "srcSphere:sphere.scaleX";
createNode animCurveTU -n "DELETE_NODE_scaleY";
addAttr -ci true -sn "fullname" -ln "fullname" -dt "string";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1.5 10 2.5775116688782669;
setAttr -k on ".fullname" -type "string" "srcSphere:sphere.scaleY";
createNode animCurveTU -n "DELETE_NODE_visibility";
addAttr -ci true -sn "fullname" -ln "fullname" -dt "string";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
setAttr -k on ".fullname" -type "string" "srcSphere:sphere.visibility";
createNode animCurveTU -n "DELETE_NODE_testVectorX";
addAttr -ci true -sn "fullname" -ln "fullname" -dt "string";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.2 10 0.2;
setAttr -k on ".fullname" -type "string" "srcSphere:sphere.testVectorX";
createNode animCurveTU -n "DELETE_NODE_testVectorY";
addAttr -ci true -sn "fullname" -ln "fullname" -dt "string";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1.4 10 1.4;
setAttr -k on ".fullname" -type "string" "srcSphere:sphere.testVectorY";
createNode animCurveTA -n "DELETE_NODE_rotateZ";
addAttr -ci true -sn "fullname" -ln "fullname" -dt "string";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 90 10 149.70880463068096;
setAttr -k on ".fullname" -type "string" "srcSphere:sphere.rotateZ";
createNode animCurveTU -n "DELETE_NODE_testVectorZ";
addAttr -ci true -sn "fullname" -ln "fullname" -dt "string";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 2.6 10 2.6;
setAttr -k on ".fullname" -type "string" "srcSphere:sphere.testVectorZ";
createNode animCurveTU -n "DELETE_NODE_scaleZ";
addAttr -ci true -sn "fullname" -ln "fullname" -dt "string";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.5 10 0.85917055629275585;
setAttr -k on ".fullname" -type "string" "srcSphere:sphere.scaleZ";
createNode animCurveTU -n "DELETE_NODE_testInteger";
addAttr -ci true -sn "fullname" -ln "fullname" -dt "string";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 5 10 5;
setAttr -k on ".fullname" -type "string" "srcSphere:sphere.testInteger";
createNode animCurveTU -n "DELETE_NODE_testBoolean";
addAttr -ci true -sn "fullname" -ln "fullname" -dt "string";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
setAttr -k on ".fullname" -type "string" "srcSphere:sphere.testBoolean";
select -ne :time1;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr ".o" 10;
setAttr ".unw" 10;
select -ne :renderPartition;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -s 2 ".st";
select -ne :initialShadingGroup;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -s 2 ".dsm";
setAttr -k on ".mwc";
setAttr ".ro" yes;
select -ne :initialParticleSE;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -k on ".mwc";
setAttr ".ro" yes;
select -ne :defaultShaderList1;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -s 2 ".s";
select -ne :postProcessList1;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -s 2 ".p";
select -ne :defaultRenderingList1;
setAttr -s 3 ".r";
select -ne :renderGlobalsList1;
setAttr -k on ".cch";
setAttr -k on ".nds";
select -ne :defaultResolution;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -av ".w";
setAttr -av ".h";
setAttr -k on ".pa" 1;
setAttr -k on ".al";
setAttr -av ".dar";
setAttr -k on ".ldar";
setAttr -k on ".off";
setAttr -k on ".fld";
setAttr -k on ".zsl";
select -ne :defaultLightSet;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -k on ".mwc";
setAttr ".ro" yes;
select -ne :hardwareRenderGlobals;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr ".ctrs" 256;
setAttr ".btrs" 512;
select -ne :hardwareRenderingGlobals;
setAttr ".otfna" -type "stringArray" 18 "NURBS Curves" "NURBS Surfaces" "Polygons" "Subdiv Surfaces" "Particles" "Fluids" "Image Planes" "UI:" "Lights" "Cameras" "Locators" "Joints" "IK Handles" "Deformers" "Motion Trails" "Components" "Misc. UI" "Ornaments" ;
setAttr ".otfva" -type "Int32Array" 18 0 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 ;
select -ne :defaultHardwareRenderGlobals;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr ".fn" -type "string" "im";
setAttr ".res" -type "string" "ntsc_4d 646 485 1.333";
// End of test.ma

View File

@@ -0,0 +1,429 @@
//Maya ASCII 2014 scene
//Name: test_anim.ma
//Last modified: Sat, Mar 14, 2015 04:31:24 AM
//Codeset: 1252
file -rdi 1 -ns "srcSphere" -rfn "srcSphereRN" "C:/Users/hovel/Dropbox/packages/python/Lib/site-packages/studioLibrary/site-packages/mutils/tests/data/sphere.ma";
file -rdi 1 -ns "dstSphere" -rfn "dstSphereRN" "C:/Users/hovel/Dropbox/packages/python/Lib/site-packages/studioLibrary/site-packages/mutils/tests/data/sphere.ma";
file -r -ns "srcSphere" -dr 1 -rfn "srcSphereRN" "C:/Users/hovel/Dropbox/packages/python/Lib/site-packages/studioLibrary/site-packages/mutils/tests/data/sphere.ma";
file -r -ns "dstSphere" -dr 1 -rfn "dstSphereRN" "C:/Users/hovel/Dropbox/packages/python/Lib/site-packages/studioLibrary/site-packages/mutils/tests/data/sphere.ma";
requires maya "2014";
currentUnit -l centimeter -a degree -t film;
fileInfo "application" "maya";
fileInfo "product" "Maya 2014";
fileInfo "version" "2014 x64";
fileInfo "cutIdentifier" "201303010241-864206";
fileInfo "osv" "Microsoft Windows 7 Ultimate Edition, 64-bit Windows 7 Service Pack 1 (Build 7601)\n";
createNode transform -s -n "persp";
setAttr ".v" no;
setAttr ".t" -type "double3" -123.17900131274617 74.628663135067598 32.661032572240735 ;
setAttr ".r" -type "double3" -30.338352727390017 -72.599999999996271 0 ;
createNode camera -s -n "perspShape" -p "persp";
setAttr -k off ".v" no;
setAttr ".fl" 34.999999999999993;
setAttr ".coi" 150.42418693917088;
setAttr ".imn" -type "string" "persp";
setAttr ".den" -type "string" "persp_depth";
setAttr ".man" -type "string" "persp_mask";
setAttr ".hc" -type "string" "viewSet -p %camera";
createNode transform -s -n "top";
setAttr ".v" no;
setAttr ".t" -type "double3" 0 100.1 0 ;
setAttr ".r" -type "double3" -89.999999999999986 0 0 ;
createNode camera -s -n "topShape" -p "top";
setAttr -k off ".v" no;
setAttr ".rnd" no;
setAttr ".coi" 100.1;
setAttr ".ow" 30;
setAttr ".imn" -type "string" "top";
setAttr ".den" -type "string" "top_depth";
setAttr ".man" -type "string" "top_mask";
setAttr ".hc" -type "string" "viewSet -t %camera";
setAttr ".o" yes;
createNode transform -s -n "front";
setAttr ".v" no;
setAttr ".t" -type "double3" 2.0350096678112575 0.39361762628711539 100.1 ;
createNode camera -s -n "frontShape" -p "front";
setAttr -k off ".v" no;
setAttr ".rnd" no;
setAttr ".coi" 100.1;
setAttr ".ow" 61.766282942468983;
setAttr ".imn" -type "string" "front";
setAttr ".den" -type "string" "front_depth";
setAttr ".man" -type "string" "front_mask";
setAttr ".hc" -type "string" "viewSet -f %camera";
setAttr ".o" yes;
createNode transform -s -n "side";
setAttr ".v" no;
setAttr ".t" -type "double3" 100.1 0 0 ;
setAttr ".r" -type "double3" 0 89.999999999999986 0 ;
createNode camera -s -n "sideShape" -p "side";
setAttr -k off ".v" no;
setAttr ".rnd" no;
setAttr ".coi" 100.1;
setAttr ".ow" 30;
setAttr ".imn" -type "string" "side";
setAttr ".den" -type "string" "side_depth";
setAttr ".man" -type "string" "side_mask";
setAttr ".hc" -type "string" "viewSet -s %camera";
setAttr ".o" yes;
createNode lightLinker -s -n "lightLinker1";
setAttr -s 2 ".lnk";
setAttr -s 2 ".slnk";
createNode displayLayerManager -n "layerManager";
createNode displayLayer -n "defaultLayer";
createNode renderLayerManager -n "renderLayerManager";
createNode renderLayer -n "defaultRenderLayer";
setAttr ".g" yes;
createNode script -n "sceneConfigurationScriptNode";
setAttr ".b" -type "string" "playbackOptions -min 1 -max 24 -ast 1 -aet 48 ";
setAttr ".st" 6;
createNode reference -n "srcSphereRN";
setAttr -s 16 ".phl";
setAttr ".phl[1]" 0;
setAttr ".phl[2]" 0;
setAttr ".phl[3]" 0;
setAttr ".phl[4]" 0;
setAttr ".phl[5]" 0;
setAttr ".phl[6]" 0;
setAttr ".phl[7]" 0;
setAttr ".phl[8]" 0;
setAttr ".phl[9]" 0;
setAttr ".phl[10]" 0;
setAttr ".phl[11]" 0;
setAttr ".phl[12]" 0;
setAttr ".phl[13]" 0;
setAttr ".phl[14]" 0;
setAttr ".phl[15]" 0;
setAttr ".phl[16]" 0;
setAttr ".ed" -type "dataReferenceEdits"
"srcSphereRN"
"srcSphereRN" 0
"srcSphereRN" 45
1 |srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere
"testStatic" "testStatic" " -ci 1 -at \"double\""
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "visibility" " 1"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "translate" " -type \"double3\" 0 5 0"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "translateX" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "translateY" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "translateZ" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "rotate" " -type \"double3\" 0 0 0"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "rotateX" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "rotateY" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "rotateZ" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "scale" " -type \"double3\" 1 1 1"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"translate" " -type \"double3\" 0 8 -12"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"translateZ" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"rotate" " -type \"double3\" 45 50 90"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"rotateX" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"rotateY" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"rotateZ" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"scale" " -type \"double3\" 0.25 4.66 0.5"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"scaleX" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"scaleY" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"scaleZ" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testVector" " -k 1 -type \"double3\" 0.2 1.4 2.6"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testVector" " -k 1"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testVectorX" " -k 1"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testVectorY" " -av -k 1"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testVectorZ" " -k 1"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testColor" " -type \"float3\" 0.18 0.6 0.18"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testString" " -k 1 -type \"string\" \"Hello world\""
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testStatic" " -k 1 0"
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode.translateZ"
"srcSphereRN.placeHolderList[1]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testVectorX"
"srcSphereRN.placeHolderList[2]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testVectorY"
"srcSphereRN.placeHolderList[3]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testVectorZ"
"srcSphereRN.placeHolderList[4]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testEnum"
"srcSphereRN.placeHolderList[5]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testFloat"
"srcSphereRN.placeHolderList[6]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testBoolean"
"srcSphereRN.placeHolderList[7]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testInteger"
"srcSphereRN.placeHolderList[8]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.translateY"
"srcSphereRN.placeHolderList[9]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.translateX"
"srcSphereRN.placeHolderList[10]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.translateZ"
"srcSphereRN.placeHolderList[11]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.rotateX"
"srcSphereRN.placeHolderList[12]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.rotateZ"
"srcSphereRN.placeHolderList[13]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.scaleX"
"srcSphereRN.placeHolderList[14]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.scaleZ"
"srcSphereRN.placeHolderList[15]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.visibility"
"srcSphereRN.placeHolderList[16]" "";
setAttr ".ptag" -type "string" "";
lockNode -l 1 ;
createNode reference -n "dstSphereRN";
setAttr ".ed" -type "dataReferenceEdits"
"dstSphereRN"
"dstSphereRN" 0;
setAttr ".ptag" -type "string" "";
lockNode -l 1 ;
createNode animCurveTU -n "srcSphere:sphere_visibility";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTL -n "srcSphere:sphere_translateX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 0;
createNode animCurveTL -n "srcSphere:sphere_translateY";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 8 10 8;
createNode animCurveTL -n "srcSphere:sphere_translateZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 -12 10 11.214436147065292;
createNode animCurveTA -n "srcSphere:sphere_rotateX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 45 10 30.81018202226841;
createNode animCurveTA -n "srcSphere:sphere_rotateZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 90 10 149.70880463068096;
createNode animCurveTU -n "srcSphere:sphere_scaleX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.25 10 0.42958527814637792;
createNode animCurveTU -n "srcSphere:sphere_scaleZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.5 10 0.85917055629275585;
createNode animCurveTU -n "srcSphere:sphere_testVectorX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.2 10 0.2;
createNode animCurveTU -n "srcSphere:sphere_testVectorY";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1.4 10 1.4;
createNode animCurveTU -n "srcSphere:sphere_testVectorZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 2.6 10 2.6;
createNode animCurveTU -n "srcSphere:sphere_testEnum";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTU -n "srcSphere:sphere_testFloat";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.666 10 0.666;
createNode animCurveTU -n "srcSphere:sphere_testBoolean";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTU -n "srcSphere:sphere_testInteger";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 5 10 5;
createNode animCurveTL -n "dstSphere:sphere_translateY";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 8 10 8;
createNode animCurveTL -n "lockedNode_translateZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 15;
createNode animCurveTU -n "sphere_testInteger";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 5 10 5;
createNode animCurveTU -n "sphere_testEnum";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTL -n "sphere_translateX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 0;
createNode animCurveTL -n "sphere_translateZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 -12 10 11.214436147065292;
createNode animCurveTU -n "sphere_testFloat";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.666 10 0.666;
createNode animCurveTU -n "sphere_scaleX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.25 10 0.42958527814637792;
createNode animCurveTU -n "sphere_testVectorZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 2.6 10 2.6;
createNode animCurveTU -n "sphere_scaleZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.5 10 0.85917055629275585;
createNode animCurveTA -n "sphere_rotateX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 45 10 30.81018202226841;
createNode animCurveTU -n "sphere_testVectorY";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1.4 10 1.4;
createNode animCurveTA -n "sphere_rotateZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 90 10 149.70880463068096;
createNode animCurveTU -n "sphere_visibility";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTU -n "sphere_testVectorX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.2 10 0.2;
createNode animCurveTU -n "sphere_testBoolean";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTL -n "lockedNode_translateZ1";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 15;
createNode reference -n "sharedReferenceNode";
setAttr ".ed" -type "dataReferenceEdits"
"sharedReferenceNode";
select -ne :time1;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr ".o" 1;
setAttr ".unw" 1;
select -ne :renderPartition;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -s 2 ".st";
select -ne :initialShadingGroup;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -s 2 ".dsm";
setAttr -k on ".mwc";
setAttr ".ro" yes;
select -ne :initialParticleSE;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -k on ".mwc";
setAttr ".ro" yes;
select -ne :defaultShaderList1;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -s 2 ".s";
select -ne :postProcessList1;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -s 2 ".p";
select -ne :defaultRenderingList1;
setAttr -s 6 ".r";
select -ne :renderGlobalsList1;
setAttr -k on ".cch";
setAttr -k on ".nds";
select -ne :defaultRenderGlobals;
setAttr ".ep" 1;
select -ne :defaultResolution;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -av ".w" 640;
setAttr -av ".h" 480;
setAttr -k on ".pa" 1;
setAttr -k on ".al";
setAttr -av ".dar" 1.3333332538604736;
setAttr -k on ".ldar";
setAttr -k on ".off";
setAttr -k on ".fld";
setAttr -k on ".zsl";
select -ne :defaultLightSet;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -k on ".mwc";
setAttr ".ro" yes;
select -ne :hardwareRenderGlobals;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr ".ctrs" 256;
setAttr ".btrs" 512;
select -ne :hardwareRenderingGlobals;
setAttr ".otfna" -type "stringArray" 18 "NURBS Curves" "NURBS Surfaces" "Polygons" "Subdiv Surfaces" "Particles" "Fluids" "Image Planes" "UI:" "Lights" "Cameras" "Locators" "Joints" "IK Handles" "Deformers" "Motion Trails" "Components" "Misc. UI" "Ornaments" ;
setAttr ".otfva" -type "Int32Array" 18 0 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 ;
select -ne :defaultHardwareRenderGlobals;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr ".fn" -type "string" "im";
setAttr ".res" -type "string" "ntsc_4d 646 485 1.333";
select -ne :ikSystem;
setAttr -s 4 ".sol";
connectAttr "lockedNode_translateZ.o" "srcSphereRN.phl[1]";
connectAttr "srcSphere:sphere_testVectorX.o" "srcSphereRN.phl[2]";
connectAttr "srcSphere:sphere_testVectorY.o" "srcSphereRN.phl[3]";
connectAttr "srcSphere:sphere_testVectorZ.o" "srcSphereRN.phl[4]";
connectAttr "srcSphere:sphere_testEnum.o" "srcSphereRN.phl[5]";
connectAttr "srcSphere:sphere_testFloat.o" "srcSphereRN.phl[6]";
connectAttr "srcSphere:sphere_testBoolean.o" "srcSphereRN.phl[7]";
connectAttr "srcSphere:sphere_testInteger.o" "srcSphereRN.phl[8]";
connectAttr "srcSphere:sphere_translateY.o" "srcSphereRN.phl[9]";
connectAttr "srcSphere:sphere_translateX.o" "srcSphereRN.phl[10]";
connectAttr "srcSphere:sphere_translateZ.o" "srcSphereRN.phl[11]";
connectAttr "srcSphere:sphere_rotateX.o" "srcSphereRN.phl[12]";
connectAttr "srcSphere:sphere_rotateZ.o" "srcSphereRN.phl[13]";
connectAttr "srcSphere:sphere_scaleX.o" "srcSphereRN.phl[14]";
connectAttr "srcSphere:sphere_scaleZ.o" "srcSphereRN.phl[15]";
connectAttr "srcSphere:sphere_visibility.o" "srcSphereRN.phl[16]";
relationship "link" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message";
relationship "link" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message";
relationship "shadowLink" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message";
relationship "shadowLink" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message";
connectAttr "layerManager.dli[0]" "defaultLayer.id";
connectAttr "renderLayerManager.rlmi[0]" "defaultRenderLayer.rlid";
connectAttr "sharedReferenceNode.sr" "dstSphereRN.sr";
connectAttr "defaultRenderLayer.msg" ":defaultRenderingList1.r" -na;
// End of test_anim.ma

View File

@@ -0,0 +1,29 @@
//Maya ASCII 2016 scene
//Name: animation.ma
//Last modified: Tue, Aug 09, 2016 08:47:07 AM
//Codeset: 1252
requires maya "2016";
currentUnit -l centimeter -a degree -t film;
fileInfo "application" "maya";
fileInfo "product" "Maya 2016";
fileInfo "version" "2016";
fileInfo "cutIdentifier" "201502261600-953408";
fileInfo "osv" "Microsoft Windows 8 Business Edition, 64-bit (Build 9200)\n";
createNode animCurveTU -n "CURVE1";
rename -uid "B3A2D98C-465C-F630-EA7F-7A960B6B0B4D";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 10;
createNode animCurveTU -n "CURVE2";
rename -uid "3A3C753F-43CD-18A5-3E19-E9B3F445D832";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 10 ".ktv[0:9]" 1 8 2 8 3 8 4 8 5 8 6 8 7 8 8 8 9 8 10 8;
setAttr -s 10 ".kit[9]" 1;
setAttr -s 10 ".kot[0:9]" 1 18 18 18 18 18 18 18
18 18;
setAttr -s 10 ".kix[9]" 1;
setAttr -s 10 ".kiy[9]" 0;
setAttr -s 10 ".kox[0:9]" 1 1 1 1 1 1 1 1 1 1;
setAttr -s 10 ".koy[0:9]" 0 0 0 0 0 0 0 0 0 0;
// End

View File

@@ -0,0 +1,224 @@
{
"metadata": {
"mayaSceneFile": "C:/Users/hovel/Dropbox/git/site-packages/studiolibrary/packages/mutils/tests/data/test_bake_connected.ma",
"angularUnit": "deg",
"ctime": "1518341545",
"endFrame": 10,
"linearUnit": "cm",
"version": "1.0.0",
"user": "Hovel",
"startFrame": 1,
"timeUnit": "film",
"mayaVersion": "2017"
}
,
"objects": {
"srcSphere:offset": {
"attrs": {}
},
"srcSphere:group": {
"attrs": {
"translateX": {
"curve": "CURVE1",
"type": "doubleLinear",
"value": 0.0
},
"translateY": {
"curve": "CURVE2",
"type": "doubleLinear",
"value": 0.0
},
"translateZ": {
"curve": "CURVE3",
"type": "doubleLinear",
"value": 18.1320010846965
},
"scaleX": {
"type": "double",
"value": 1.0
},
"scaleY": {
"type": "double",
"value": 1.0
},
"visibility": {
"type": "bool",
"value": true
},
"rotateX": {
"type": "doubleAngle",
"value": 0.0
},
"rotateY": {
"type": "doubleAngle",
"value": 0.0
},
"rotateZ": {
"type": "doubleAngle",
"value": 0.0
},
"scaleZ": {
"type": "double",
"value": 1.0
}
}
},
"srcSphere:sphere": {
"attrs": {
"testInteger": {
"curve": "CURVE5",
"type": "long",
"value": 5
},
"testProxy": {
"type": "double",
"value": 1.0
},
"scaleY": {
"type": "double",
"value": 4.66
},
"testLimit": {
"type": "double",
"value": 10.0
},
"testConnect": {
"curve": "CURVE6",
"type": "double",
"value": 8.0
},
"testEnum": {
"curve": "CURVE7",
"type": "enum",
"value": 1
},
"scaleX": {
"curve": "CURVE8",
"type": "double",
"value": 0.4295852781463779
},
"testString": {
"type": "string",
"value": "Hello world"
},
"scaleZ": {
"curve": "CURVE9",
"type": "double",
"value": 0.8591705562927558
},
"rotateX": {
"curve": "CURVE10",
"type": "doubleAngle",
"value": 30.81018202226841
},
"rotateY": {
"type": "doubleAngle",
"value": 50.0
},
"rotateZ": {
"curve": "CURVE11",
"type": "doubleAngle",
"value": 149.70880463068096
},
"translateX": {
"curve": "CURVE12",
"type": "doubleLinear",
"value": 0.0
},
"translateY": {
"curve": "CURVE13",
"type": "doubleLinear",
"value": 8.0
},
"translateZ": {
"curve": "CURVE14",
"type": "doubleLinear",
"value": 11.214436147065292
},
"visibility": {
"curve": "CURVE15",
"type": "bool",
"value": true
},
"testFloat": {
"curve": "CURVE16",
"type": "double",
"value": 0.666
},
"testAnimated": {
"curve": "CURVE17",
"type": "double",
"value": 10.0
},
"testVectorX": {
"curve": "CURVE18",
"type": "double",
"value": 0.2
},
"testVectorY": {
"curve": "CURVE19",
"type": "double",
"value": 1.4
},
"testVectorZ": {
"curve": "CURVE20",
"type": "double",
"value": 2.6
},
"testBoolean": {
"curve": "CURVE21",
"type": "bool",
"value": true
}
}
},
"srcSphere:lockedNode": {
"attrs": {
"translateX": {
"type": "doubleLinear",
"value": 0.0
},
"translateY": {
"type": "doubleLinear",
"value": 5.0
},
"translateZ": {
"curve": "CURVE23",
"type": "doubleLinear",
"value": 15.0
},
"scaleX": {
"type": "double",
"value": 1.0
},
"scaleY": {
"type": "double",
"value": 1.0
},
"visibility": {
"type": "bool",
"value": true
},
"rotateX": {
"curve": "CURVE24",
"type": "doubleAngle",
"value": 0.0
},
"rotateY": {
"curve": "CURVE25",
"type": "doubleAngle",
"value": -69.84190849889626
},
"rotateZ": {
"curve": "CURVE26",
"type": "doubleAngle",
"value": 0.0
},
"scaleZ": {
"type": "double",
"value": 1.0
}
}
}
}
}

View File

@@ -0,0 +1,636 @@
//Maya ASCII 2013 scene
//Name: test_bake_connections.ma
//Last modified: Wed, Aug 20, 2014 02:40:58 PM
//Codeset: UTF-8
file -rdi 1 -ns "srcSphere" -rfn "srcSphereRN" "C:/Users/hovel/Dropbox/packages/python/Lib/site-packages/studioLibrary/site-packages/mutils/tests/data/sphere.ma";
file -rdi 1 -ns "dstSphere" -rfn "dstSphereRN" "C:/Users/hovel/Dropbox/packages/python/Lib/site-packages/studioLibrary/site-packages/mutils/tests/data/sphere.ma";
file -r -ns "srcSphere" -dr 1 -rfn "srcSphereRN" "C:/Users/hovel/Dropbox/packages/python/Lib/site-packages/studioLibrary/site-packages/mutils/tests/data/sphere.ma";
file -r -ns "dstSphere" -dr 1 -rfn "dstSphereRN" "C:/Users/hovel/Dropbox/packages/python/Lib/site-packages/studioLibrary/site-packages/mutils/tests/data/sphere.ma";
requires maya "2013";
requires "stereoCamera" "10.0";
currentUnit -l centimeter -a degree -t film;
fileInfo "application" "maya";
fileInfo "product" "Maya 2013";
fileInfo "version" "2013 Service Pack 2P12 x64";
fileInfo "cutIdentifier" "201304120319-868747";
fileInfo "osv" "Linux 3.5.4-2.10-desktop #1 SMP PREEMPT Fri Oct 5 14:56:49 CEST 2012 x86_64";
createNode transform -s -n "persp";
setAttr ".v" no;
setAttr ".t" -type "double3" 7.1985912106548611 102.16300347609724 -144.90732864886502 ;
setAttr ".r" -type "double3" -30.938352727397543 -178.19999999999578 0 ;
createNode camera -s -n "perspShape" -p "persp";
setAttr -k off ".v" no;
setAttr ".fl" 34.999999999999993;
setAttr ".coi" 163.53638497594133;
setAttr ".imn" -type "string" "persp";
setAttr ".den" -type "string" "persp_depth";
setAttr ".man" -type "string" "persp_mask";
setAttr ".hc" -type "string" "viewSet -p %camera";
createNode transform -s -n "top";
setAttr ".v" no;
setAttr ".t" -type "double3" 0 100.1 0 ;
setAttr ".r" -type "double3" -89.999999999999986 0 0 ;
createNode camera -s -n "topShape" -p "top";
setAttr -k off ".v" no;
setAttr ".rnd" no;
setAttr ".coi" 100.1;
setAttr ".ow" 30;
setAttr ".imn" -type "string" "top";
setAttr ".den" -type "string" "top_depth";
setAttr ".man" -type "string" "top_mask";
setAttr ".hc" -type "string" "viewSet -t %camera";
setAttr ".o" yes;
createNode transform -s -n "front";
setAttr ".v" no;
setAttr ".t" -type "double3" 2.0350096678112575 0.39361762628711539 100.1 ;
createNode camera -s -n "frontShape" -p "front";
setAttr -k off ".v" no;
setAttr ".rnd" no;
setAttr ".coi" 100.1;
setAttr ".ow" 61.766282942468983;
setAttr ".imn" -type "string" "front";
setAttr ".den" -type "string" "front_depth";
setAttr ".man" -type "string" "front_mask";
setAttr ".hc" -type "string" "viewSet -f %camera";
setAttr ".o" yes;
createNode transform -s -n "side";
setAttr ".v" no;
setAttr ".t" -type "double3" 100.1 0 0 ;
setAttr ".r" -type "double3" 0 89.999999999999986 0 ;
createNode camera -s -n "sideShape" -p "side";
setAttr -k off ".v" no;
setAttr ".rnd" no;
setAttr ".coi" 100.1;
setAttr ".ow" 30;
setAttr ".imn" -type "string" "side";
setAttr ".den" -type "string" "side_depth";
setAttr ".man" -type "string" "side_mask";
setAttr ".hc" -type "string" "viewSet -s %camera";
setAttr ".o" yes;
createNode transform -n "locator1";
createNode locator -n "locatorShape1" -p "locator1";
setAttr -k off ".v";
createNode transform -n "locator2";
setAttr ".t" -type "double3" 0 0 18.132001084696501 ;
setAttr ".s" -type "double3" 4.1257198596207596 4.1257198596207596 4.1257198596207596 ;
createNode locator -n "locatorShape2" -p "locator2";
setAttr -k off ".v";
createNode transform -n "srcSphereRNfosterParent1";
createNode orientConstraint -n "lockedNode_orientConstraint1" -p "srcSphereRNfosterParent1";
addAttr -ci true -k true -sn "w0" -ln "locator1W0" -dv 1 -min 0 -at "double";
setAttr -k on ".nds";
setAttr -k off ".v";
setAttr -k off ".tx";
setAttr -k off ".ty";
setAttr -k off ".tz";
setAttr -k off ".rx";
setAttr -k off ".ry";
setAttr -k off ".rz";
setAttr -k off ".sx";
setAttr -k off ".sy";
setAttr -k off ".sz";
setAttr ".erp" yes;
setAttr ".lr" -type "double3" 0 -69.84190849889626 0 ;
setAttr -k on ".w0";
createNode lightLinker -s -n "lightLinker1";
setAttr -s 2 ".lnk";
setAttr -s 2 ".slnk";
createNode displayLayerManager -n "layerManager";
createNode displayLayer -n "defaultLayer";
createNode renderLayerManager -n "renderLayerManager";
createNode renderLayer -n "defaultRenderLayer";
setAttr ".g" yes;
createNode script -n "sceneConfigurationScriptNode";
setAttr ".b" -type "string" "playbackOptions -min 1 -max 24 -ast 1 -aet 48 ";
setAttr ".st" 6;
createNode reference -n "srcSphereRN";
setAttr -s 22 ".phl";
setAttr ".phl[1]" 0;
setAttr ".phl[2]" 0;
setAttr ".phl[3]" 0;
setAttr ".phl[4]" 0;
setAttr ".phl[5]" 0;
setAttr ".phl[6]" 0;
setAttr ".phl[7]" 0;
setAttr ".phl[8]" 0;
setAttr ".phl[9]" 0;
setAttr ".phl[10]" 0;
setAttr ".phl[11]" 0;
setAttr ".phl[12]" 0;
setAttr ".phl[13]" 0;
setAttr ".phl[14]" 0;
setAttr ".phl[15]" 0;
setAttr ".phl[16]" 0;
setAttr ".phl[17]" 0;
setAttr ".phl[18]" 0;
setAttr ".phl[19]" 0;
setAttr ".phl[20]" 0;
setAttr ".phl[21]" 0;
setAttr ".phl[22]" 0;
setAttr ".ed" -type "dataReferenceEdits"
"srcSphereRN"
"srcSphereRN" 0
"srcSphereRN" 50
0 "|srcSphereRNfosterParent1|lockedNode_orientConstraint1" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode"
"-s -r "
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "visibility" " 1"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "translate" " -type \"double3\" 0 5 15"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "translateX" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "translateY" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "translateZ" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "rotate" " -type \"double3\" 0 -69.841908 0"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "rotateX" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "rotateY" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "rotateZ" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "scale" " -type \"double3\" 1 1 1"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"translate" " -type \"double3\" 0 8 11.214436"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"translateZ" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"rotate" " -type \"double3\" 30.810182 50 149.708805"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"rotateX" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"rotateY" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"rotateZ" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"scale" " -type \"double3\" 0.429585 4.66 0.859171"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"scaleX" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"scaleY" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"scaleZ" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testVector" " -k 1 -type \"double3\" 0.2 1.4 2.6"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testVector" " -k 1"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testVectorX" " -k 1"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testVectorY" " -av -k 1"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testVectorZ" " -k 1"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testColor" " -type \"float3\" 0.18 0.6 0.18"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testString" " -k 1 -type \"string\" \"Hello world\""
5 4 "srcSphereRN" "|srcSphere:group.translate" "srcSphereRN.placeHolderList[1]"
""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode.translateZ"
"srcSphereRN.placeHolderList[2]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode.rotateX"
"srcSphereRN.placeHolderList[3]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode.rotateY"
"srcSphereRN.placeHolderList[4]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode.rotateZ"
"srcSphereRN.placeHolderList[5]" ""
5 3 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode.rotateOrder"
"srcSphereRN.placeHolderList[6]" ""
5 3 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode.parentInverseMatrix"
"srcSphereRN.placeHolderList[7]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testVectorX"
"srcSphereRN.placeHolderList[8]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testVectorY"
"srcSphereRN.placeHolderList[9]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testVectorZ"
"srcSphereRN.placeHolderList[10]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testEnum"
"srcSphereRN.placeHolderList[11]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testFloat"
"srcSphereRN.placeHolderList[12]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testBoolean"
"srcSphereRN.placeHolderList[13]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testInteger"
"srcSphereRN.placeHolderList[14]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.translateY"
"srcSphereRN.placeHolderList[15]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.translateX"
"srcSphereRN.placeHolderList[16]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.translateZ"
"srcSphereRN.placeHolderList[17]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.rotateX"
"srcSphereRN.placeHolderList[18]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.rotateZ"
"srcSphereRN.placeHolderList[19]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.scaleX"
"srcSphereRN.placeHolderList[20]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.scaleZ"
"srcSphereRN.placeHolderList[21]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.visibility"
"srcSphereRN.placeHolderList[22]" "";
setAttr ".ptag" -type "string" "";
lockNode -l 1 ;
createNode reference -n "dstSphereRN";
setAttr ".ed" -type "dataReferenceEdits"
"dstSphereRN"
"dstSphereRN" 0;
setAttr ".ptag" -type "string" "";
lockNode -l 1 ;
createNode animCurveTU -n "srcSphere:sphere_visibility";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTL -n "srcSphere:sphere_translateX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 0;
createNode animCurveTL -n "srcSphere:sphere_translateY";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 8 10 8;
createNode animCurveTL -n "srcSphere:sphere_translateZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 -12 10 11.214436147065292;
createNode animCurveTA -n "srcSphere:sphere_rotateX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 45 10 30.81018202226841;
createNode animCurveTA -n "srcSphere:sphere_rotateZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 90 10 149.70880463068096;
createNode animCurveTU -n "srcSphere:sphere_scaleX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.25 10 0.42958527814637792;
createNode animCurveTU -n "srcSphere:sphere_scaleZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.5 10 0.85917055629275585;
createNode animCurveTU -n "srcSphere:sphere_testVectorX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.2 10 0.2;
createNode animCurveTU -n "srcSphere:sphere_testVectorY";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1.4 10 1.4;
createNode animCurveTU -n "srcSphere:sphere_testVectorZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 2.6 10 2.6;
createNode animCurveTU -n "srcSphere:sphere_testEnum";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTU -n "srcSphere:sphere_testFloat";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.666 10 0.666;
createNode animCurveTU -n "srcSphere:sphere_testBoolean";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTU -n "srcSphere:sphere_testInteger";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 5 10 5;
createNode animCurveTL -n "dstSphere:sphere_translateY";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 8 10 8;
createNode animCurveTL -n "lockedNode_translateZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 15;
createNode animCurveTU -n "sphere_testInteger";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 5 10 5;
createNode animCurveTU -n "sphere_testEnum";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTL -n "sphere_translateX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 0;
createNode animCurveTL -n "sphere_translateZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 -12 10 11.214436147065292;
createNode animCurveTU -n "sphere_testFloat";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.666 10 0.666;
createNode animCurveTU -n "sphere_scaleX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.25 10 0.42958527814637792;
createNode animCurveTU -n "sphere_testVectorZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 2.6 10 2.6;
createNode animCurveTU -n "sphere_scaleZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.5 10 0.85917055629275585;
createNode animCurveTA -n "sphere_rotateX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 45 10 30.81018202226841;
createNode animCurveTU -n "sphere_testVectorY";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1.4 10 1.4;
createNode animCurveTA -n "sphere_rotateZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 90 10 149.70880463068096;
createNode animCurveTU -n "sphere_visibility";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTU -n "sphere_testVectorX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.2 10 0.2;
createNode animCurveTU -n "sphere_testBoolean";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTL -n "lockedNode_translateZ1";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 15;
createNode reference -n "sharedReferenceNode";
setAttr ".ed" -type "dataReferenceEdits"
"sharedReferenceNode";
createNode animCurveTU -n "locator1_visibility";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 5 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTL -n "locator1_translateX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 5 11.661339872825151 10 11.661339872825151;
createNode animCurveTL -n "locator1_translateY";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 5 13.237957579056641 10 13.237957579056641;
createNode animCurveTL -n "locator1_translateZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 5 11.944644232286457 10 11.944644232286457;
createNode animCurveTA -n "locator1_rotateX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 5 0 10 0;
createNode animCurveTA -n "locator1_rotateY";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 5 0 10 -69.84190849889626;
createNode animCurveTA -n "locator1_rotateZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 5 0 10 0;
createNode animCurveTU -n "locator1_scaleX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 5 4.0680107858594825 10 4.0680107858594825;
createNode animCurveTU -n "locator1_scaleY";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 5 4.0680107858594825 10 4.0680107858594825;
createNode animCurveTU -n "locator1_scaleZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 5 4.0680107858594825 10 4.0680107858594825;
select -ne :time1;
setAttr -av -k on ".cch";
setAttr -cb on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
setAttr -k on ".o" 13;
setAttr -k on ".unw" 13;
setAttr -k on ".etw";
setAttr -k on ".tps";
setAttr -k on ".tms";
lockNode -l 1 ;
select -ne :renderPartition;
setAttr -k on ".cch";
setAttr -cb on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
setAttr -s 2 ".st";
setAttr -cb on ".an";
setAttr -cb on ".pt";
lockNode -l 1 ;
select -ne :initialShadingGroup;
setAttr -k on ".cch";
setAttr -cb on ".ihi";
setAttr -av -k on ".nds";
setAttr -cb on ".bnm";
setAttr -s 2 ".dsm";
setAttr -k on ".mwc";
setAttr -cb on ".an";
setAttr -cb on ".il";
setAttr -cb on ".vo";
setAttr -cb on ".eo";
setAttr -cb on ".fo";
setAttr -cb on ".epo";
setAttr -k on ".ro" yes;
lockNode -l 1 ;
select -ne :initialParticleSE;
setAttr -av -k on ".cch";
setAttr -cb on ".ihi";
setAttr -av -k on ".nds";
setAttr -cb on ".bnm";
setAttr -k on ".mwc";
setAttr -cb on ".an";
setAttr -cb on ".il";
setAttr -cb on ".vo";
setAttr -cb on ".eo";
setAttr -cb on ".fo";
setAttr -cb on ".epo";
setAttr -k on ".ro" yes;
select -ne :defaultShaderList1;
setAttr -k on ".cch";
setAttr -cb on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
setAttr -s 2 ".s";
select -ne :postProcessList1;
setAttr -k on ".cch";
setAttr -cb on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
setAttr -s 2 ".p";
select -ne :defaultRenderingList1;
setAttr -s 6 ".r";
select -ne :renderGlobalsList1;
setAttr -k on ".cch";
setAttr -cb on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
select -ne :defaultResolution;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -av ".w";
setAttr -av ".h";
setAttr -k on ".pa" 1;
setAttr -k on ".al";
setAttr -av ".dar";
setAttr -k on ".ldar";
setAttr -k on ".off";
setAttr -k on ".fld";
setAttr -k on ".zsl";
select -ne :defaultLightSet;
setAttr -k on ".cch";
setAttr -k on ".ihi";
setAttr -av -k on ".nds";
setAttr -k on ".bnm";
setAttr -k on ".mwc";
setAttr -k on ".an";
setAttr -k on ".il";
setAttr -k on ".vo";
setAttr -k on ".eo";
setAttr -k on ".fo";
setAttr -k on ".epo";
setAttr -k on ".ro" yes;
select -ne :defaultObjectSet;
setAttr ".ro" yes;
lockNode -l 1 ;
select -ne :hardwareRenderGlobals;
setAttr -k on ".cch";
setAttr -cb on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
setAttr ".ctrs" 256;
setAttr ".btrs" 512;
setAttr -k off ".fbfm";
setAttr -k off -cb on ".ehql";
setAttr -k off -cb on ".eams";
setAttr -k off -cb on ".eeaa";
setAttr -k off -cb on ".engm";
setAttr -k off -cb on ".mes";
setAttr -k off -cb on ".emb";
setAttr -av -k off -cb on ".mbbf";
setAttr -k off -cb on ".mbs";
setAttr -k off -cb on ".trm";
setAttr -k off -cb on ".tshc";
setAttr -k off ".enpt";
setAttr -k off -cb on ".clmt";
setAttr -k off -cb on ".tcov";
setAttr -k off -cb on ".lith";
setAttr -k off -cb on ".sobc";
setAttr -k off -cb on ".cuth";
setAttr -k off -cb on ".hgcd";
setAttr -k off -cb on ".hgci";
setAttr -k off -cb on ".mgcs";
setAttr -k off -cb on ".twa";
setAttr -k off -cb on ".twz";
setAttr -k on ".hwcc";
setAttr -k on ".hwdp";
setAttr -k on ".hwql";
setAttr -k on ".hwfr";
select -ne :hardwareRenderingGlobals;
setAttr ".otfna" -type "stringArray" 18 "NURBS Curves" "NURBS Surfaces" "Polygons" "Subdiv Surfaces" "Particles" "Fluids" "Image Planes" "UI:" "Lights" "Cameras" "Locators" "Joints" "IK Handles" "Deformers" "Motion Trails" "Components" "Misc. UI" "Ornaments" ;
setAttr ".otfva" -type "Int32Array" 18 0 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 ;
select -ne :defaultHardwareRenderGlobals;
setAttr -k on ".cch";
setAttr -cb on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
setAttr -av -k on ".rp";
setAttr -k on ".cai";
setAttr -k on ".coi";
setAttr -cb on ".bc";
setAttr -av -k on ".bcb";
setAttr -av -k on ".bcg";
setAttr -av -k on ".bcr";
setAttr -k on ".ei";
setAttr -k on ".ex";
setAttr -av -k on ".es";
setAttr -av -k on ".ef";
setAttr -av -k on ".bf";
setAttr -k on ".fii";
setAttr -av -k on ".sf";
setAttr -k on ".gr";
setAttr -k on ".li";
setAttr -k on ".ls";
setAttr -k on ".mb";
setAttr -k on ".ti";
setAttr -k on ".txt";
setAttr -k on ".mpr";
setAttr -k on ".wzd";
setAttr ".fn" -type "string" "im";
setAttr -k on ".if";
setAttr ".res" -type "string" "ntsc_4d 646 485 1.333";
setAttr -k on ".as";
setAttr -k on ".ds";
setAttr -k on ".lm";
setAttr -k on ".fir";
setAttr -k on ".aap";
setAttr -k on ".gh";
setAttr -cb on ".sd";
lockNode -l 1 ;
connectAttr "locator2.t" "srcSphereRN.phl[1]";
connectAttr "lockedNode_translateZ.o" "srcSphereRN.phl[2]";
connectAttr "lockedNode_orientConstraint1.crx" "srcSphereRN.phl[3]";
connectAttr "lockedNode_orientConstraint1.cry" "srcSphereRN.phl[4]";
connectAttr "lockedNode_orientConstraint1.crz" "srcSphereRN.phl[5]";
connectAttr "srcSphereRN.phl[6]" "lockedNode_orientConstraint1.cro";
connectAttr "srcSphereRN.phl[7]" "lockedNode_orientConstraint1.cpim";
connectAttr "srcSphere:sphere_testVectorX.o" "srcSphereRN.phl[8]";
connectAttr "srcSphere:sphere_testVectorY.o" "srcSphereRN.phl[9]";
connectAttr "srcSphere:sphere_testVectorZ.o" "srcSphereRN.phl[10]";
connectAttr "srcSphere:sphere_testEnum.o" "srcSphereRN.phl[11]";
connectAttr "srcSphere:sphere_testFloat.o" "srcSphereRN.phl[12]";
connectAttr "srcSphere:sphere_testBoolean.o" "srcSphereRN.phl[13]";
connectAttr "srcSphere:sphere_testInteger.o" "srcSphereRN.phl[14]";
connectAttr "srcSphere:sphere_translateY.o" "srcSphereRN.phl[15]";
connectAttr "srcSphere:sphere_translateX.o" "srcSphereRN.phl[16]";
connectAttr "srcSphere:sphere_translateZ.o" "srcSphereRN.phl[17]";
connectAttr "srcSphere:sphere_rotateX.o" "srcSphereRN.phl[18]";
connectAttr "srcSphere:sphere_rotateZ.o" "srcSphereRN.phl[19]";
connectAttr "srcSphere:sphere_scaleX.o" "srcSphereRN.phl[20]";
connectAttr "srcSphere:sphere_scaleZ.o" "srcSphereRN.phl[21]";
connectAttr "srcSphere:sphere_visibility.o" "srcSphereRN.phl[22]";
connectAttr "locator1_rotateX.o" "locator1.rx";
connectAttr "locator1_rotateY.o" "locator1.ry";
connectAttr "locator1_rotateZ.o" "locator1.rz";
connectAttr "locator1_visibility.o" "locator1.v";
connectAttr "locator1_translateX.o" "locator1.tx";
connectAttr "locator1_translateY.o" "locator1.ty";
connectAttr "locator1_translateZ.o" "locator1.tz";
connectAttr "locator1_scaleX.o" "locator1.sx";
connectAttr "locator1_scaleY.o" "locator1.sy";
connectAttr "locator1_scaleZ.o" "locator1.sz";
connectAttr "locator1.r" "lockedNode_orientConstraint1.tg[0].tr";
connectAttr "locator1.ro" "lockedNode_orientConstraint1.tg[0].tro";
connectAttr "locator1.pm" "lockedNode_orientConstraint1.tg[0].tpm";
connectAttr "lockedNode_orientConstraint1.w0" "lockedNode_orientConstraint1.tg[0].tw"
;
relationship "link" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message";
relationship "link" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message";
relationship "shadowLink" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message";
relationship "shadowLink" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message";
connectAttr "layerManager.dli[0]" "defaultLayer.id";
connectAttr "renderLayerManager.rlmi[0]" "defaultRenderLayer.rlid";
connectAttr "srcSphereRNfosterParent1.msg" "srcSphereRN.fp";
connectAttr "sharedReferenceNode.sr" "dstSphereRN.sr";
connectAttr "defaultRenderLayer.msg" ":defaultRenderingList1.r" -na;
// End of test_bake_connections.ma

View File

@@ -0,0 +1,100 @@
//Maya ASCII 2016 scene
//Name: animation.ma
//Last modified: Tue, Aug 09, 2016 08:47:07 AM
//Codeset: 1252
requires maya "2016";
currentUnit -l centimeter -a degree -t film;
fileInfo "application" "maya";
fileInfo "product" "Maya 2016";
fileInfo "version" "2016";
fileInfo "cutIdentifier" "201502261600-953408";
fileInfo "osv" "Microsoft Windows 8 Business Edition, 64-bit (Build 9200)\n";
createNode animCurveTU -n "CURVE1";
rename -uid "B4FA69EE-4158-445F-5AB5-769D92B60EE3";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 5 10 5;
createNode animCurveTU -n "CURVE2";
rename -uid "CA0863B5-4680-36D0-E9A3-83A0A33EC51B";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTU -n "CURVE3";
rename -uid "436929BD-4536-FD91-F836-FA9961D739F5";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.25 10 0.42958527814637792;
createNode animCurveTU -n "CURVE4";
rename -uid "9E217B7B-4585-8318-49F7-249A1ACBA95B";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.5 10 0.85917055629275585;
createNode animCurveTA -n "CURVE5";
rename -uid "5649AD20-440E-7866-8CAB-B08834F07905";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 45 10 30.81018202226841;
createNode animCurveTA -n "CURVE6";
rename -uid "19E0B15E-449C-F085-5151-10BFD6772FE1";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 90 10 149.70880463068096;
createNode animCurveTL -n "CURVE7";
rename -uid "1FE3DC07-4819-A244-0BC3-B8A3B3EF1275";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 0;
createNode animCurveTL -n "CURVE8";
rename -uid "00984994-4BA2-5907-9C38-D1BE8279B667";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 8 10 8;
createNode animCurveTL -n "CURVE9";
rename -uid "40524ED9-44E0-043B-4F9E-00ABB81FF2FA";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 -12 10 11.214436147065292;
createNode animCurveTU -n "CURVE10";
rename -uid "240A5025-4AA3-D27B-CBD9-3D98E97E7B2A";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTU -n "CURVE11";
rename -uid "4541CB45-4FD7-656E-2626-0394702423B3";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.666 10 0.666;
createNode animCurveTU -n "CURVE12";
rename -uid "55FC02E9-4D2D-FF69-A838-978CC1CA83B4";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 10;
createNode animCurveTU -n "CURVE13";
rename -uid "CBF4DD9D-4839-361A-70F2-6990E98D9C30";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.2 10 0.2;
createNode animCurveTU -n "CURVE14";
rename -uid "1A7FD955-44FC-DA80-17C8-F8B2936C2A64";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1.4 10 1.4;
createNode animCurveTU -n "CURVE15";
rename -uid "3F957170-4D7E-FD98-8F3E-6086609AB97F";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 2.6 10 2.6;
createNode animCurveTU -n "CURVE16";
rename -uid "2EC19608-4057-B2F8-7796-27BB84CC1532";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTL -n "CURVE18";
rename -uid "75AC48FC-4740-40A9-B0B6-AFB0FB0FAD85";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 15;
// End

View File

@@ -0,0 +1,177 @@
{
"metadata": {
"mayaSceneFile": "C:/Users/hovel/Dropbox/git/site-packages/studiolibrary/packages/mutils/tests/data/test_anim.ma",
"angularUnit": "deg",
"ctime": "1518341545",
"endFrame": 10,
"linearUnit": "cm",
"version": "1.0.0",
"user": "Hovel",
"startFrame": 1,
"timeUnit": "film",
"mayaVersion": "2017"
}
,
"objects": {
"srcSphere:offset": {
"attrs": {}
},
"srcSphere:sphere": {
"attrs": {
"testInteger": {
"curve": "CURVE1",
"type": "long",
"value": 5
},
"testProxy": {
"type": "double",
"value": 1.0
},
"scaleY": {
"type": "double",
"value": 4.66
},
"testLimit": {
"type": "double",
"value": 10.0
},
"testConnect": {
"type": "double",
"value": 8.0
},
"testEnum": {
"curve": "CURVE2",
"type": "enum",
"value": 1
},
"scaleX": {
"curve": "CURVE3",
"type": "double",
"value": 0.25
},
"testString": {
"type": "string",
"value": "Hello world"
},
"scaleZ": {
"curve": "CURVE4",
"type": "double",
"value": 0.5
},
"rotateX": {
"curve": "CURVE5",
"type": "doubleAngle",
"value": 45.0
},
"rotateY": {
"type": "doubleAngle",
"value": 50.0
},
"rotateZ": {
"curve": "CURVE6",
"type": "doubleAngle",
"value": 90.0
},
"testStatic": {
"type": "double",
"value": 0.0
},
"translateX": {
"curve": "CURVE7",
"type": "doubleLinear",
"value": 0.0
},
"translateY": {
"curve": "CURVE8",
"type": "doubleLinear",
"value": 8.0
},
"translateZ": {
"curve": "CURVE9",
"type": "doubleLinear",
"value": -12.0
},
"visibility": {
"curve": "CURVE10",
"type": "bool",
"value": true
},
"testFloat": {
"curve": "CURVE11",
"type": "double",
"value": 0.666
},
"testAnimated": {
"curve": "CURVE12",
"type": "double",
"value": 0.0
},
"testVectorX": {
"curve": "CURVE13",
"type": "double",
"value": 0.2
},
"testVectorY": {
"curve": "CURVE14",
"type": "double",
"value": 1.4
},
"testVectorZ": {
"curve": "CURVE15",
"type": "double",
"value": 2.6
},
"testBoolean": {
"curve": "CURVE16",
"type": "bool",
"value": true
}
}
},
"srcSphere:lockedNode": {
"attrs": {
"translateX": {
"type": "doubleLinear",
"value": 0.0
},
"translateY": {
"type": "doubleLinear",
"value": 5.0
},
"translateZ": {
"curve": "CURVE18",
"type": "doubleLinear",
"value": 0.0
},
"scaleX": {
"type": "double",
"value": 1.0
},
"scaleY": {
"type": "double",
"value": 1.0
},
"visibility": {
"type": "bool",
"value": true
},
"rotateX": {
"type": "doubleAngle",
"value": 0.0
},
"rotateY": {
"type": "doubleAngle",
"value": 0.0
},
"rotateZ": {
"type": "doubleAngle",
"value": 0.0
},
"scaleZ": {
"type": "double",
"value": 1.0
}
}
}
}
}

View File

@@ -0,0 +1,100 @@
//Maya ASCII 2016 scene
//Name: animation.ma
//Last modified: Tue, Aug 09, 2016 08:47:07 AM
//Codeset: 1252
requires maya "2016";
currentUnit -l centimeter -a degree -t film;
fileInfo "application" "maya";
fileInfo "product" "Maya 2016";
fileInfo "version" "2016";
fileInfo "cutIdentifier" "201502261600-953408";
fileInfo "osv" "Microsoft Windows 8 Business Edition, 64-bit (Build 9200)\n";
createNode animCurveTU -n "CURVE1";
rename -uid "44F21FB5-4121-8FAA-4E5A-2795D8DB1C98";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 5 10 5;
createNode animCurveTU -n "CURVE2";
rename -uid "89D65122-4A81-C08C-8F60-A8A69D8BDDFF";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTU -n "CURVE3";
rename -uid "394F9F8B-44A0-7AEE-3FF8-43BE62C0DDC8";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.25 10 0.42958527814637792;
createNode animCurveTU -n "CURVE4";
rename -uid "CF90746B-43BD-0210-E0FC-05A5368FC36F";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.5 10 0.85917055629275585;
createNode animCurveTA -n "CURVE5";
rename -uid "C88B0183-4A49-7472-1F9B-75861AB915A8";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 45 10 30.81018202226841;
createNode animCurveTA -n "CURVE6";
rename -uid "70CBACAA-40C4-7C42-B9F5-0BB67E97595D";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 90 10 149.70880463068096;
createNode animCurveTL -n "CURVE7";
rename -uid "9A9A4A91-42EF-2651-3696-91ACC6F098B6";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 0;
createNode animCurveTL -n "CURVE8";
rename -uid "CBDCAEFF-4D9E-5162-0CAC-7C8CE46E91F2";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 8 10 8;
createNode animCurveTL -n "CURVE9";
rename -uid "B745DFCE-4739-96FC-C827-1494F35ED50D";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 -12 10 11.214436147065292;
createNode animCurveTU -n "CURVE10";
rename -uid "0A53795D-45F0-B3C3-E5F2-AAB7665A9E8E";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTU -n "CURVE11";
rename -uid "7DC24CA9-48A1-3B3A-8278-5A81D70CA4E9";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.666 10 0.666;
createNode animCurveTU -n "CURVE12";
rename -uid "400DED74-4D52-543D-91D4-0881D938C5C9";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 10;
createNode animCurveTU -n "CURVE13";
rename -uid "5527A666-49BE-9277-3936-12B07312A901";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.2 10 0.2;
createNode animCurveTU -n "CURVE14";
rename -uid "DF0B2F0E-49A4-61C0-521D-0A8497BF2753";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1.4 10 1.4;
createNode animCurveTU -n "CURVE15";
rename -uid "20CAFE14-4EBD-6A5D-458C-5B82383EC0F2";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 2.6 10 2.6;
createNode animCurveTU -n "CURVE16";
rename -uid "7996F54C-49E2-85E5-D444-CBB553D75344";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTL -n "CURVE18";
rename -uid "C516D5DD-4FA0-4AEC-8E33-0ABF26EF9D60";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 15;
// End

View File

@@ -0,0 +1,177 @@
{
"metadata": {
"mayaSceneFile": "C:/Users/hovel/Dropbox/git/site-packages/studiolibrary/packages/mutils/tests/data/test_anim.ma",
"angularUnit": "deg",
"ctime": "1518341546",
"endFrame": 10,
"linearUnit": "cm",
"version": "1.0.0",
"user": "Hovel",
"startFrame": 1,
"timeUnit": "film",
"mayaVersion": "2017"
}
,
"objects": {
"srcSphere:offset": {
"attrs": {}
},
"srcSphere:sphere": {
"attrs": {
"testInteger": {
"curve": "CURVE1",
"type": "long",
"value": 5
},
"testProxy": {
"type": "double",
"value": 1.0
},
"scaleY": {
"type": "double",
"value": 4.66
},
"testLimit": {
"type": "double",
"value": 10.0
},
"testConnect": {
"type": "double",
"value": 8.0
},
"testEnum": {
"curve": "CURVE2",
"type": "enum",
"value": 1
},
"scaleX": {
"curve": "CURVE3",
"type": "double",
"value": 0.25
},
"testString": {
"type": "string",
"value": "Hello world"
},
"scaleZ": {
"curve": "CURVE4",
"type": "double",
"value": 0.5
},
"rotateX": {
"curve": "CURVE5",
"type": "doubleAngle",
"value": 45.0
},
"rotateY": {
"type": "doubleAngle",
"value": 50.0
},
"rotateZ": {
"curve": "CURVE6",
"type": "doubleAngle",
"value": 90.0
},
"testStatic": {
"type": "double",
"value": 0.0
},
"translateX": {
"curve": "CURVE7",
"type": "doubleLinear",
"value": 0.0
},
"translateY": {
"curve": "CURVE8",
"type": "doubleLinear",
"value": 8.0
},
"translateZ": {
"curve": "CURVE9",
"type": "doubleLinear",
"value": -12.0
},
"visibility": {
"curve": "CURVE10",
"type": "bool",
"value": true
},
"testFloat": {
"curve": "CURVE11",
"type": "double",
"value": 0.666
},
"testAnimated": {
"curve": "CURVE12",
"type": "double",
"value": 0.0
},
"testVectorX": {
"curve": "CURVE13",
"type": "double",
"value": 0.2
},
"testVectorY": {
"curve": "CURVE14",
"type": "double",
"value": 1.4
},
"testVectorZ": {
"curve": "CURVE15",
"type": "double",
"value": 2.6
},
"testBoolean": {
"curve": "CURVE16",
"type": "bool",
"value": true
}
}
},
"srcSphere:lockedNode": {
"attrs": {
"translateX": {
"type": "doubleLinear",
"value": 0.0
},
"translateY": {
"type": "doubleLinear",
"value": 5.0
},
"translateZ": {
"curve": "CURVE18",
"type": "doubleLinear",
"value": 0.0
},
"scaleX": {
"type": "double",
"value": 1.0
},
"scaleY": {
"type": "double",
"value": 1.0
},
"visibility": {
"type": "bool",
"value": true
},
"rotateX": {
"type": "doubleAngle",
"value": 0.0
},
"rotateY": {
"type": "doubleAngle",
"value": 0.0
},
"rotateZ": {
"type": "doubleAngle",
"value": 0.0
},
"scaleZ": {
"type": "double",
"value": 1.0
}
}
}
}
}

View File

@@ -0,0 +1,100 @@
//Maya ASCII 2016 scene
//Name: animation.ma
//Last modified: Tue, Aug 09, 2016 08:47:08 AM
//Codeset: 1252
requires maya "2016";
currentUnit -l centimeter -a degree -t film;
fileInfo "application" "maya";
fileInfo "product" "Maya 2016";
fileInfo "version" "2016";
fileInfo "cutIdentifier" "201502261600-953408";
fileInfo "osv" "Microsoft Windows 8 Business Edition, 64-bit (Build 9200)\n";
createNode animCurveTU -n "CURVE1";
rename -uid "07400D46-41EF-56B5-ABE2-FCB3FDC705F2";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 5 10 5;
createNode animCurveTU -n "CURVE2";
rename -uid "E2B997BA-4A97-2EF7-C65E-E7BD483688D6";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTU -n "CURVE3";
rename -uid "2AF61E8F-4817-A910-3417-6B9823CED36D";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.25 10 0.42958527814637792;
createNode animCurveTU -n "CURVE4";
rename -uid "61ED901E-4BFA-A417-6F1A-A89854BAE1F9";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.5 10 0.85917055629275585;
createNode animCurveTA -n "CURVE5";
rename -uid "25E543E0-4233-B654-6DC2-C980CC9ED600";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 45 10 30.81018202226841;
createNode animCurveTA -n "CURVE6";
rename -uid "3921DD56-44E6-E6D7-DB1B-C28209F3157E";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 90 10 149.70880463068096;
createNode animCurveTL -n "CURVE7";
rename -uid "5EE5D458-498D-AD10-196B-0F99DE4A9F97";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 0;
createNode animCurveTL -n "CURVE8";
rename -uid "81FBC4EF-479F-58C1-D24D-859C16E01BA1";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 8 10 8;
createNode animCurveTL -n "CURVE9";
rename -uid "898B5C26-448D-366F-0E63-5082268110FB";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 -12 10 11.214436147065292;
createNode animCurveTU -n "CURVE10";
rename -uid "139725A4-4C9A-C99F-2E9F-AF91BC3F67E9";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTU -n "CURVE11";
rename -uid "1A5281F1-4252-087B-1631-9998C170D33B";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.666 10 0.666;
createNode animCurveTU -n "CURVE12";
rename -uid "3B543491-429F-763A-0075-4EB85B2E50AB";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 10;
createNode animCurveTU -n "CURVE13";
rename -uid "8532CE01-49F8-571C-2D65-A98F3427EBF0";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.2 10 0.2;
createNode animCurveTU -n "CURVE14";
rename -uid "D9767D2E-4DFC-F089-183D-789D8B697CF1";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1.4 10 1.4;
createNode animCurveTU -n "CURVE15";
rename -uid "73706920-4309-DAEE-AE70-CAAF4C1D68FB";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 2.6 10 2.6;
createNode animCurveTU -n "CURVE16";
rename -uid "70D851D4-43F8-72F5-0327-E28AEB0F174C";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTL -n "CURVE18";
rename -uid "716232B6-4903-7906-472A-569BBA3146DA";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 15;
// End

View File

@@ -0,0 +1,177 @@
{
"metadata": {
"mayaSceneFile": "C:/Users/hovel/Dropbox/git/site-packages/studiolibrary/packages/mutils/tests/data/test_anim.ma",
"angularUnit": "deg",
"ctime": "1518341546",
"endFrame": 10,
"linearUnit": "cm",
"version": "1.0.0",
"user": "Hovel",
"startFrame": 1,
"timeUnit": "film",
"mayaVersion": "2017"
}
,
"objects": {
"srcSphere:offset": {
"attrs": {}
},
"srcSphere:sphere": {
"attrs": {
"testInteger": {
"curve": "CURVE1",
"type": "long",
"value": 5
},
"testProxy": {
"type": "double",
"value": 1.0
},
"scaleY": {
"type": "double",
"value": 4.66
},
"testLimit": {
"type": "double",
"value": 10.0
},
"testConnect": {
"type": "double",
"value": 8.0
},
"testEnum": {
"curve": "CURVE2",
"type": "enum",
"value": 1
},
"scaleX": {
"curve": "CURVE3",
"type": "double",
"value": 0.25
},
"testString": {
"type": "string",
"value": "Hello world"
},
"scaleZ": {
"curve": "CURVE4",
"type": "double",
"value": 0.5
},
"rotateX": {
"curve": "CURVE5",
"type": "doubleAngle",
"value": 45.0
},
"rotateY": {
"type": "doubleAngle",
"value": 50.0
},
"rotateZ": {
"curve": "CURVE6",
"type": "doubleAngle",
"value": 90.0
},
"testStatic": {
"type": "double",
"value": 0.0
},
"translateX": {
"curve": "CURVE7",
"type": "doubleLinear",
"value": 0.0
},
"translateY": {
"curve": "CURVE8",
"type": "doubleLinear",
"value": 8.0
},
"translateZ": {
"curve": "CURVE9",
"type": "doubleLinear",
"value": -12.0
},
"visibility": {
"curve": "CURVE10",
"type": "bool",
"value": true
},
"testFloat": {
"curve": "CURVE11",
"type": "double",
"value": 0.666
},
"testAnimated": {
"curve": "CURVE12",
"type": "double",
"value": 0.0
},
"testVectorX": {
"curve": "CURVE13",
"type": "double",
"value": 0.2
},
"testVectorY": {
"curve": "CURVE14",
"type": "double",
"value": 1.4
},
"testVectorZ": {
"curve": "CURVE15",
"type": "double",
"value": 2.6
},
"testBoolean": {
"curve": "CURVE16",
"type": "bool",
"value": true
}
}
},
"srcSphere:lockedNode": {
"attrs": {
"translateX": {
"type": "doubleLinear",
"value": 0.0
},
"translateY": {
"type": "doubleLinear",
"value": 5.0
},
"translateZ": {
"curve": "CURVE18",
"type": "doubleLinear",
"value": 0.0
},
"scaleX": {
"type": "double",
"value": 1.0
},
"scaleY": {
"type": "double",
"value": 1.0
},
"visibility": {
"type": "bool",
"value": true
},
"rotateX": {
"type": "doubleAngle",
"value": 0.0
},
"rotateY": {
"type": "doubleAngle",
"value": 0.0
},
"rotateZ": {
"type": "doubleAngle",
"value": 0.0
},
"scaleZ": {
"type": "double",
"value": 1.0
}
}
}
}
}

View File

@@ -0,0 +1,748 @@
//Maya ASCII 2014 scene
//Name: test_mirror_tables.ma
//Last modified: Thu, Sep 11, 2014 08:35:27 PM
//Codeset: 1252
requires maya "2014";
requires -nodeType "mentalrayFramebuffer" -nodeType "mentalrayOutputPass" -nodeType "mentalrayRenderPass"
-nodeType "mentalrayUserBuffer" -nodeType "mentalraySubdivApprox" -nodeType "mentalrayCurveApprox"
-nodeType "mentalraySurfaceApprox" -nodeType "mentalrayDisplaceApprox" -nodeType "mentalrayOptions"
-nodeType "mentalrayGlobals" -nodeType "mentalrayItemsList" -nodeType "mentalrayShader"
-nodeType "mentalrayUserData" -nodeType "mentalrayText" -nodeType "mentalrayTessellation"
-nodeType "mentalrayPhenomenon" -nodeType "mentalrayLightProfile" -nodeType "mentalrayVertexColors"
-nodeType "mentalrayIblShape" -nodeType "mapVizShape" -nodeType "mentalrayCCMeshProxy"
-nodeType "cylindricalLightLocator" -nodeType "discLightLocator" -nodeType "rectangularLightLocator"
-nodeType "sphericalLightLocator" -nodeType "abcimport" -nodeType "mia_physicalsun"
-nodeType "mia_physicalsky" -nodeType "mia_material" -nodeType "mia_material_x" -nodeType "mia_roundcorners"
-nodeType "mia_exposure_simple" -nodeType "mia_portal_light" -nodeType "mia_light_surface"
-nodeType "mia_exposure_photographic" -nodeType "mia_exposure_photographic_rev" -nodeType "mia_lens_bokeh"
-nodeType "mia_envblur" -nodeType "mia_ciesky" -nodeType "mia_photometric_light"
-nodeType "mib_texture_vector" -nodeType "mib_texture_remap" -nodeType "mib_texture_rotate"
-nodeType "mib_bump_basis" -nodeType "mib_bump_map" -nodeType "mib_passthrough_bump_map"
-nodeType "mib_bump_map2" -nodeType "mib_lookup_spherical" -nodeType "mib_lookup_cube1"
-nodeType "mib_lookup_cube6" -nodeType "mib_lookup_background" -nodeType "mib_lookup_cylindrical"
-nodeType "mib_texture_lookup" -nodeType "mib_texture_lookup2" -nodeType "mib_texture_filter_lookup"
-nodeType "mib_texture_checkerboard" -nodeType "mib_texture_polkadot" -nodeType "mib_texture_polkasphere"
-nodeType "mib_texture_turbulence" -nodeType "mib_texture_wave" -nodeType "mib_reflect"
-nodeType "mib_refract" -nodeType "mib_transparency" -nodeType "mib_continue" -nodeType "mib_opacity"
-nodeType "mib_twosided" -nodeType "mib_refraction_index" -nodeType "mib_dielectric"
-nodeType "mib_ray_marcher" -nodeType "mib_illum_lambert" -nodeType "mib_illum_phong"
-nodeType "mib_illum_ward" -nodeType "mib_illum_ward_deriv" -nodeType "mib_illum_blinn"
-nodeType "mib_illum_cooktorr" -nodeType "mib_illum_hair" -nodeType "mib_volume"
-nodeType "mib_color_alpha" -nodeType "mib_color_average" -nodeType "mib_color_intensity"
-nodeType "mib_color_interpolate" -nodeType "mib_color_mix" -nodeType "mib_color_spread"
-nodeType "mib_geo_cube" -nodeType "mib_geo_torus" -nodeType "mib_geo_sphere" -nodeType "mib_geo_cone"
-nodeType "mib_geo_cylinder" -nodeType "mib_geo_square" -nodeType "mib_geo_instance"
-nodeType "mib_geo_instance_mlist" -nodeType "mib_geo_add_uv_texsurf" -nodeType "mib_photon_basic"
-nodeType "mib_light_infinite" -nodeType "mib_light_point" -nodeType "mib_light_spot"
-nodeType "mib_light_photometric" -nodeType "mib_cie_d" -nodeType "mib_blackbody"
-nodeType "mib_shadow_transparency" -nodeType "mib_lens_stencil" -nodeType "mib_lens_clamp"
-nodeType "mib_lightmap_write" -nodeType "mib_lightmap_sample" -nodeType "mib_amb_occlusion"
-nodeType "mib_fast_occlusion" -nodeType "mib_map_get_scalar" -nodeType "mib_map_get_integer"
-nodeType "mib_map_get_vector" -nodeType "mib_map_get_color" -nodeType "mib_map_get_transform"
-nodeType "mib_map_get_scalar_array" -nodeType "mib_map_get_integer_array" -nodeType "mib_fg_occlusion"
-nodeType "mib_bent_normal_env" -nodeType "mib_glossy_reflection" -nodeType "mib_glossy_refraction"
-nodeType "builtin_bsdf_architectural" -nodeType "builtin_bsdf_architectural_comp"
-nodeType "builtin_bsdf_carpaint" -nodeType "builtin_bsdf_ashikhmin" -nodeType "builtin_bsdf_lambert"
-nodeType "builtin_bsdf_mirror" -nodeType "builtin_bsdf_phong" -nodeType "contour_store_function"
-nodeType "contour_store_function_simple" -nodeType "contour_contrast_function_levels"
-nodeType "contour_contrast_function_simple" -nodeType "contour_shader_simple" -nodeType "contour_shader_silhouette"
-nodeType "contour_shader_maxcolor" -nodeType "contour_shader_curvature" -nodeType "contour_shader_factorcolor"
-nodeType "contour_shader_depthfade" -nodeType "contour_shader_framefade" -nodeType "contour_shader_layerthinner"
-nodeType "contour_shader_widthfromcolor" -nodeType "contour_shader_widthfromlightdir"
-nodeType "contour_shader_widthfromlight" -nodeType "contour_shader_combi" -nodeType "contour_only"
-nodeType "contour_composite" -nodeType "contour_ps" -nodeType "mi_metallic_paint"
-nodeType "mi_metallic_paint_x" -nodeType "mi_bump_flakes" -nodeType "mi_car_paint_phen"
-nodeType "mi_metallic_paint_output_mixer" -nodeType "mi_car_paint_phen_x" -nodeType "physical_lens_dof"
-nodeType "physical_light" -nodeType "dgs_material" -nodeType "dgs_material_photon"
-nodeType "dielectric_material" -nodeType "dielectric_material_photon" -nodeType "oversampling_lens"
-nodeType "path_material" -nodeType "parti_volume" -nodeType "parti_volume_photon"
-nodeType "transmat" -nodeType "transmat_photon" -nodeType "mip_rayswitch" -nodeType "mip_rayswitch_advanced"
-nodeType "mip_rayswitch_environment" -nodeType "mip_card_opacity" -nodeType "mip_motionblur"
-nodeType "mip_motion_vector" -nodeType "mip_matteshadow" -nodeType "mip_cameramap"
-nodeType "mip_mirrorball" -nodeType "mip_grayball" -nodeType "mip_gamma_gain" -nodeType "mip_render_subset"
-nodeType "mip_matteshadow_mtl" -nodeType "mip_binaryproxy" -nodeType "mip_rayswitch_stage"
-nodeType "mip_fgshooter" -nodeType "mib_ptex_lookup" -nodeType "misss_physical"
-nodeType "misss_physical_phen" -nodeType "misss_fast_shader" -nodeType "misss_fast_shader_x"
-nodeType "misss_fast_shader2" -nodeType "misss_fast_shader2_x" -nodeType "misss_skin_specular"
-nodeType "misss_lightmap_write" -nodeType "misss_lambert_gamma" -nodeType "misss_call_shader"
-nodeType "misss_set_normal" -nodeType "misss_fast_lmap_maya" -nodeType "misss_fast_simple_maya"
-nodeType "misss_fast_skin_maya" -nodeType "misss_fast_skin_phen" -nodeType "misss_fast_skin_phen_d"
-nodeType "misss_mia_skin2_phen" -nodeType "misss_mia_skin2_phen_d" -nodeType "misss_lightmap_phen"
-nodeType "misss_mia_skin2_surface_phen" -nodeType "surfaceSampler" -nodeType "mib_data_bool"
-nodeType "mib_data_int" -nodeType "mib_data_scalar" -nodeType "mib_data_vector"
-nodeType "mib_data_color" -nodeType "mib_data_string" -nodeType "mib_data_texture"
-nodeType "mib_data_shader" -nodeType "mib_data_bool_array" -nodeType "mib_data_int_array"
-nodeType "mib_data_scalar_array" -nodeType "mib_data_vector_array" -nodeType "mib_data_color_array"
-nodeType "mib_data_string_array" -nodeType "mib_data_texture_array" -nodeType "mib_data_shader_array"
-nodeType "mib_data_get_bool" -nodeType "mib_data_get_int" -nodeType "mib_data_get_scalar"
-nodeType "mib_data_get_vector" -nodeType "mib_data_get_color" -nodeType "mib_data_get_string"
-nodeType "mib_data_get_texture" -nodeType "mib_data_get_shader" -nodeType "mib_data_get_shader_bool"
-nodeType "mib_data_get_shader_int" -nodeType "mib_data_get_shader_scalar" -nodeType "mib_data_get_shader_vector"
-nodeType "mib_data_get_shader_color" -nodeType "user_ibl_env" -nodeType "user_ibl_rect"
-nodeType "mia_material_x_passes" -nodeType "mi_metallic_paint_x_passes" -nodeType "mi_car_paint_phen_x_passes"
-nodeType "misss_fast_shader_x_passes" -dataType "byteArray" "Mayatomr" "2014.0 - 3.11.1.4 ";
currentUnit -l centimeter -a degree -t film;
fileInfo "application" "maya";
fileInfo "product" "Maya 2014";
fileInfo "version" "2014 x64";
fileInfo "cutIdentifier" "201303010241-864206";
fileInfo "osv" "Microsoft Windows 7 Ultimate Edition, 64-bit Windows 7 Service Pack 1 (Build 7601)\n";
createNode transform -s -n "persp";
setAttr ".v" no;
setAttr ".t" -type "double3" 22.248422999787756 12.500732575524742 10.391306855519792 ;
setAttr ".r" -type "double3" -28.538352729610519 64.599999999998701 -3.7075007778321079e-015 ;
createNode camera -s -n "perspShape" -p "persp";
setAttr -k off ".v" no;
setAttr ".fl" 34.999999999999993;
setAttr ".coi" 27.199165290100083;
setAttr ".imn" -type "string" "persp";
setAttr ".den" -type "string" "persp_depth";
setAttr ".man" -type "string" "persp_mask";
setAttr ".hc" -type "string" "viewSet -p %camera";
createNode transform -s -n "top";
setAttr ".v" no;
setAttr ".t" -type "double3" 0 100.1 0 ;
setAttr ".r" -type "double3" -89.999999999999986 0 0 ;
createNode camera -s -n "topShape" -p "top";
setAttr -k off ".v" no;
setAttr ".rnd" no;
setAttr ".coi" 100.1;
setAttr ".ow" 30;
setAttr ".imn" -type "string" "top";
setAttr ".den" -type "string" "top_depth";
setAttr ".man" -type "string" "top_mask";
setAttr ".hc" -type "string" "viewSet -t %camera";
setAttr ".o" yes;
createNode transform -s -n "front";
setAttr ".v" no;
setAttr ".t" -type "double3" 0 0 100.1 ;
createNode camera -s -n "frontShape" -p "front";
setAttr -k off ".v" no;
setAttr ".rnd" no;
setAttr ".coi" 100.1;
setAttr ".ow" 30;
setAttr ".imn" -type "string" "front";
setAttr ".den" -type "string" "front_depth";
setAttr ".man" -type "string" "front_mask";
setAttr ".hc" -type "string" "viewSet -f %camera";
setAttr ".o" yes;
createNode transform -s -n "side";
setAttr ".v" no;
setAttr ".t" -type "double3" 100.1 0 0 ;
setAttr ".r" -type "double3" 0 89.999999999999986 0 ;
createNode camera -s -n "sideShape" -p "side";
setAttr -k off ".v" no;
setAttr ".rnd" no;
setAttr ".coi" 100.1;
setAttr ".ow" 30;
setAttr ".imn" -type "string" "side";
setAttr ".den" -type "string" "side_depth";
setAttr ".man" -type "string" "side_mask";
setAttr ".hc" -type "string" "viewSet -s %camera";
setAttr ".o" yes;
createNode transform -n "Group";
createNode transform -n "Group2" -p "Group";
createNode transform -n "cubeR" -p "Group2";
setAttr ".t" -type "double3" -5 0 0 ;
createNode mesh -n "cubeRShape" -p "cubeR";
setAttr -k off ".v";
setAttr ".vir" yes;
setAttr ".vif" yes;
setAttr ".uvst[0].uvsn" -type "string" "map1";
setAttr ".cuvs" -type "string" "map1";
setAttr ".dcc" -type "string" "Ambient+Diffuse";
setAttr ".covm[0]" 0 1 1;
setAttr ".cdvm[0]" 0 1 1;
createNode transform -n "cubeL" -p "Group2";
setAttr ".t" -type "double3" 5 -1.7155814546566843 0 ;
createNode mesh -n "cubeLShape" -p "cubeL";
setAttr -k off ".v";
setAttr ".vir" yes;
setAttr ".vif" yes;
setAttr ".uvst[0].uvsn" -type "string" "map1";
setAttr -s 14 ".uvst[0].uvsp[0:13]" -type "float2" 0.375 0 0.625 0 0.375
0.25 0.625 0.25 0.375 0.5 0.625 0.5 0.375 0.75 0.625 0.75 0.375 1 0.625 1 0.875 0
0.875 0.25 0.125 0 0.125 0.25;
setAttr ".cuvs" -type "string" "map1";
setAttr ".dcc" -type "string" "Ambient+Diffuse";
setAttr ".covm[0]" 0 1 1;
setAttr ".cdvm[0]" 0 1 1;
setAttr -s 8 ".vt[0:7]" -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;
setAttr -s 12 ".ed[0:11]" 0 1 0 2 3 0 4 5 0 6 7 0 0 2 0 1 3 0 2 4 0
3 5 0 4 6 0 5 7 0 6 0 0 7 1 0;
setAttr -s 6 -ch 24 ".fc[0:5]" -type "polyFaces"
f 4 0 5 -2 -5
mu 0 4 0 1 3 2
f 4 1 7 -3 -7
mu 0 4 2 3 5 4
f 4 2 9 -4 -9
mu 0 4 4 5 7 6
f 4 3 11 -1 -11
mu 0 4 6 7 9 8
f 4 -12 -10 -8 -6
mu 0 4 1 10 11 3
f 4 10 4 6 8
mu 0 4 12 0 2 13;
setAttr ".cd" -type "dataPolyComponent" Index_Data Edge 0 ;
setAttr ".cvd" -type "dataPolyComponent" Index_Data Vertex 0 ;
setAttr ".hfd" -type "dataPolyComponent" Index_Data Face 0 ;
createNode transform -n "Group3" -p "Group";
setAttr ".t" -type "double3" 0 0 -2.8742420497365515 ;
createNode transform -n "R_cube" -p "Group3";
setAttr ".t" -type "double3" -5 -0.71903628511057072 0 ;
createNode mesh -n "R_cubeShape" -p "R_cube";
setAttr -k off ".v";
setAttr ".vir" yes;
setAttr ".vif" yes;
setAttr ".uvst[0].uvsn" -type "string" "map1";
setAttr -s 14 ".uvst[0].uvsp[0:13]" -type "float2" 0.375 0 0.625 0 0.375
0.25 0.625 0.25 0.375 0.5 0.625 0.5 0.375 0.75 0.625 0.75 0.375 1 0.625 1 0.875 0
0.875 0.25 0.125 0 0.125 0.25;
setAttr ".cuvs" -type "string" "map1";
setAttr ".dcc" -type "string" "Ambient+Diffuse";
setAttr ".covm[0]" 0 1 1;
setAttr ".cdvm[0]" 0 1 1;
setAttr -s 8 ".vt[0:7]" -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;
setAttr -s 12 ".ed[0:11]" 0 1 0 2 3 0 4 5 0 6 7 0 0 2 0 1 3 0 2 4 0
3 5 0 4 6 0 5 7 0 6 0 0 7 1 0;
setAttr -s 6 -ch 24 ".fc[0:5]" -type "polyFaces"
f 4 0 5 -2 -5
mu 0 4 0 1 3 2
f 4 1 7 -3 -7
mu 0 4 2 3 5 4
f 4 2 9 -4 -9
mu 0 4 4 5 7 6
f 4 3 11 -1 -11
mu 0 4 6 7 9 8
f 4 -12 -10 -8 -6
mu 0 4 1 10 11 3
f 4 10 4 6 8
mu 0 4 12 0 2 13;
setAttr ".cd" -type "dataPolyComponent" Index_Data Edge 0 ;
setAttr ".cvd" -type "dataPolyComponent" Index_Data Vertex 0 ;
setAttr ".hfd" -type "dataPolyComponent" Index_Data Face 0 ;
createNode transform -n "L_cube" -p "Group3";
setAttr ".t" -type "double3" 2.1362195941342836 4.3031875715542744 0 ;
setAttr -av ".tx";
setAttr -av ".ty";
createNode mesh -n "L_cubeShape" -p "L_cube";
setAttr -k off ".v";
setAttr ".vir" yes;
setAttr ".vif" yes;
setAttr ".uvst[0].uvsn" -type "string" "map1";
setAttr -s 14 ".uvst[0].uvsp[0:13]" -type "float2" 0.375 0 0.625 0 0.375
0.25 0.625 0.25 0.375 0.5 0.625 0.5 0.375 0.75 0.625 0.75 0.375 1 0.625 1 0.875 0
0.875 0.25 0.125 0 0.125 0.25;
setAttr ".cuvs" -type "string" "map1";
setAttr ".dcc" -type "string" "Ambient+Diffuse";
setAttr ".covm[0]" 0 1 1;
setAttr ".cdvm[0]" 0 1 1;
setAttr -s 8 ".vt[0:7]" -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;
setAttr -s 12 ".ed[0:11]" 0 1 0 2 3 0 4 5 0 6 7 0 0 2 0 1 3 0 2 4 0
3 5 0 4 6 0 5 7 0 6 0 0 7 1 0;
setAttr -s 6 -ch 24 ".fc[0:5]" -type "polyFaces"
f 4 0 5 -2 -5
mu 0 4 0 1 3 2
f 4 1 7 -3 -7
mu 0 4 2 3 5 4
f 4 2 9 -4 -9
mu 0 4 4 5 7 6
f 4 3 11 -1 -11
mu 0 4 6 7 9 8
f 4 -12 -10 -8 -6
mu 0 4 1 10 11 3
f 4 10 4 6 8
mu 0 4 12 0 2 13;
setAttr ".cd" -type "dataPolyComponent" Index_Data Edge 0 ;
setAttr ".cvd" -type "dataPolyComponent" Index_Data Vertex 0 ;
setAttr ".hfd" -type "dataPolyComponent" Index_Data Face 0 ;
createNode mentalrayItemsList -s -n "mentalrayItemsList";
createNode mentalrayGlobals -s -n "mentalrayGlobals";
createNode mentalrayOptions -s -n "miDefaultOptions";
addAttr -ci true -m -sn "stringOptions" -ln "stringOptions" -at "compound" -nc
3;
addAttr -ci true -sn "name" -ln "name" -dt "string" -p "stringOptions";
addAttr -ci true -sn "value" -ln "value" -dt "string" -p "stringOptions";
addAttr -ci true -sn "type" -ln "type" -dt "string" -p "stringOptions";
addAttr -ci true -sn "miSamplesQualityR" -ln "miSamplesQualityR" -dv 0.25 -min 0.01
-max 9999999.9000000004 -smn 0.1 -smx 2 -at "double";
addAttr -ci true -sn "miSamplesQualityG" -ln "miSamplesQualityG" -dv 0.25 -min 0.01
-max 9999999.9000000004 -smn 0.1 -smx 2 -at "double";
addAttr -ci true -sn "miSamplesQualityB" -ln "miSamplesQualityB" -dv 0.25 -min 0.01
-max 9999999.9000000004 -smn 0.1 -smx 2 -at "double";
addAttr -ci true -sn "miSamplesQualityA" -ln "miSamplesQualityA" -dv 0.25 -min 0.01
-max 9999999.9000000004 -smn 0.1 -smx 2 -at "double";
addAttr -ci true -sn "miSamplesMin" -ln "miSamplesMin" -dv 1 -min 0.1 -at "double";
addAttr -ci true -sn "miSamplesMax" -ln "miSamplesMax" -dv 100 -min 0.1 -at "double";
addAttr -ci true -sn "miSamplesErrorCutoffR" -ln "miSamplesErrorCutoffR" -min 0
-max 1 -at "double";
addAttr -ci true -sn "miSamplesErrorCutoffG" -ln "miSamplesErrorCutoffG" -min 0
-max 1 -at "double";
addAttr -ci true -sn "miSamplesErrorCutoffB" -ln "miSamplesErrorCutoffB" -min 0
-max 1 -at "double";
addAttr -ci true -sn "miSamplesErrorCutoffA" -ln "miSamplesErrorCutoffA" -min 0
-max 1 -at "double";
addAttr -ci true -sn "miSamplesPerObject" -ln "miSamplesPerObject" -min 0 -max 1
-at "bool";
addAttr -ci true -sn "miRastShadingSamples" -ln "miRastShadingSamples" -dv 1 -min
0.25 -at "double";
addAttr -ci true -sn "miRastSamples" -ln "miRastSamples" -dv 3 -min 1 -at "long";
addAttr -ci true -sn "miContrastAsColor" -ln "miContrastAsColor" -min 0 -max 1 -at "bool";
addAttr -ci true -sn "miProgMaxTime" -ln "miProgMaxTime" -min 0 -at "long";
addAttr -ci true -sn "miProgSubsampleSize" -ln "miProgSubsampleSize" -dv 4 -min
1 -at "long";
addAttr -ci true -sn "miTraceCameraMotionVectors" -ln "miTraceCameraMotionVectors"
-min 0 -max 1 -at "bool";
addAttr -ci true -sn "miTraceCameraClip" -ln "miTraceCameraClip" -min 0 -max 1 -at "bool";
setAttr -s 45 ".stringOptions";
setAttr ".stringOptions[0].name" -type "string" "rast motion factor";
setAttr ".stringOptions[0].value" -type "string" "1.0";
setAttr ".stringOptions[0].type" -type "string" "scalar";
setAttr ".stringOptions[1].name" -type "string" "rast transparency depth";
setAttr ".stringOptions[1].value" -type "string" "8";
setAttr ".stringOptions[1].type" -type "string" "integer";
setAttr ".stringOptions[2].name" -type "string" "rast useopacity";
setAttr ".stringOptions[2].value" -type "string" "true";
setAttr ".stringOptions[2].type" -type "string" "boolean";
setAttr ".stringOptions[3].name" -type "string" "importon";
setAttr ".stringOptions[3].value" -type "string" "false";
setAttr ".stringOptions[3].type" -type "string" "boolean";
setAttr ".stringOptions[4].name" -type "string" "importon density";
setAttr ".stringOptions[4].value" -type "string" "1.0";
setAttr ".stringOptions[4].type" -type "string" "scalar";
setAttr ".stringOptions[5].name" -type "string" "importon merge";
setAttr ".stringOptions[5].value" -type "string" "0.0";
setAttr ".stringOptions[5].type" -type "string" "scalar";
setAttr ".stringOptions[6].name" -type "string" "importon trace depth";
setAttr ".stringOptions[6].value" -type "string" "0";
setAttr ".stringOptions[6].type" -type "string" "integer";
setAttr ".stringOptions[7].name" -type "string" "importon traverse";
setAttr ".stringOptions[7].value" -type "string" "true";
setAttr ".stringOptions[7].type" -type "string" "boolean";
setAttr ".stringOptions[8].name" -type "string" "shadowmap pixel samples";
setAttr ".stringOptions[8].value" -type "string" "3";
setAttr ".stringOptions[8].type" -type "string" "integer";
setAttr ".stringOptions[9].name" -type "string" "ambient occlusion";
setAttr ".stringOptions[9].value" -type "string" "false";
setAttr ".stringOptions[9].type" -type "string" "boolean";
setAttr ".stringOptions[10].name" -type "string" "ambient occlusion rays";
setAttr ".stringOptions[10].value" -type "string" "256";
setAttr ".stringOptions[10].type" -type "string" "integer";
setAttr ".stringOptions[11].name" -type "string" "ambient occlusion cache";
setAttr ".stringOptions[11].value" -type "string" "false";
setAttr ".stringOptions[11].type" -type "string" "boolean";
setAttr ".stringOptions[12].name" -type "string" "ambient occlusion cache density";
setAttr ".stringOptions[12].value" -type "string" "1.0";
setAttr ".stringOptions[12].type" -type "string" "scalar";
setAttr ".stringOptions[13].name" -type "string" "ambient occlusion cache points";
setAttr ".stringOptions[13].value" -type "string" "64";
setAttr ".stringOptions[13].type" -type "string" "integer";
setAttr ".stringOptions[14].name" -type "string" "irradiance particles";
setAttr ".stringOptions[14].value" -type "string" "false";
setAttr ".stringOptions[14].type" -type "string" "boolean";
setAttr ".stringOptions[15].name" -type "string" "irradiance particles rays";
setAttr ".stringOptions[15].value" -type "string" "256";
setAttr ".stringOptions[15].type" -type "string" "integer";
setAttr ".stringOptions[16].name" -type "string" "irradiance particles interpolate";
setAttr ".stringOptions[16].value" -type "string" "1";
setAttr ".stringOptions[16].type" -type "string" "integer";
setAttr ".stringOptions[17].name" -type "string" "irradiance particles interppoints";
setAttr ".stringOptions[17].value" -type "string" "64";
setAttr ".stringOptions[17].type" -type "string" "integer";
setAttr ".stringOptions[18].name" -type "string" "irradiance particles indirect passes";
setAttr ".stringOptions[18].value" -type "string" "0";
setAttr ".stringOptions[18].type" -type "string" "integer";
setAttr ".stringOptions[19].name" -type "string" "irradiance particles scale";
setAttr ".stringOptions[19].value" -type "string" "1.0";
setAttr ".stringOptions[19].type" -type "string" "scalar";
setAttr ".stringOptions[20].name" -type "string" "irradiance particles env";
setAttr ".stringOptions[20].value" -type "string" "true";
setAttr ".stringOptions[20].type" -type "string" "boolean";
setAttr ".stringOptions[21].name" -type "string" "irradiance particles env rays";
setAttr ".stringOptions[21].value" -type "string" "256";
setAttr ".stringOptions[21].type" -type "string" "integer";
setAttr ".stringOptions[22].name" -type "string" "irradiance particles env scale";
setAttr ".stringOptions[22].value" -type "string" "1";
setAttr ".stringOptions[22].type" -type "string" "integer";
setAttr ".stringOptions[23].name" -type "string" "irradiance particles rebuild";
setAttr ".stringOptions[23].value" -type "string" "true";
setAttr ".stringOptions[23].type" -type "string" "boolean";
setAttr ".stringOptions[24].name" -type "string" "irradiance particles file";
setAttr ".stringOptions[24].value" -type "string" "";
setAttr ".stringOptions[24].type" -type "string" "string";
setAttr ".stringOptions[25].name" -type "string" "geom displace motion factor";
setAttr ".stringOptions[25].value" -type "string" "1.0";
setAttr ".stringOptions[25].type" -type "string" "scalar";
setAttr ".stringOptions[26].name" -type "string" "contrast all buffers";
setAttr ".stringOptions[26].value" -type "string" "true";
setAttr ".stringOptions[26].type" -type "string" "boolean";
setAttr ".stringOptions[27].name" -type "string" "finalgather normal tolerance";
setAttr ".stringOptions[27].value" -type "string" "25.842";
setAttr ".stringOptions[27].type" -type "string" "scalar";
setAttr ".stringOptions[28].name" -type "string" "trace camera clip";
setAttr ".stringOptions[28].value" -type "string" "false";
setAttr ".stringOptions[28].type" -type "string" "boolean";
setAttr ".stringOptions[29].name" -type "string" "unified sampling";
setAttr ".stringOptions[29].value" -type "string" "true";
setAttr ".stringOptions[29].type" -type "string" "boolean";
setAttr ".stringOptions[30].name" -type "string" "samples quality";
setAttr ".stringOptions[30].value" -type "string" "0.5 0.5 0.5 0.5";
setAttr ".stringOptions[30].type" -type "string" "color";
setAttr ".stringOptions[31].name" -type "string" "samples min";
setAttr ".stringOptions[31].value" -type "string" "1.0";
setAttr ".stringOptions[31].type" -type "string" "scalar";
setAttr ".stringOptions[32].name" -type "string" "samples max";
setAttr ".stringOptions[32].value" -type "string" "100.0";
setAttr ".stringOptions[32].type" -type "string" "scalar";
setAttr ".stringOptions[33].name" -type "string" "samples error cutoff";
setAttr ".stringOptions[33].value" -type "string" "0.0 0.0 0.0 0.0";
setAttr ".stringOptions[33].type" -type "string" "color";
setAttr ".stringOptions[34].name" -type "string" "samples per object";
setAttr ".stringOptions[34].value" -type "string" "false";
setAttr ".stringOptions[34].type" -type "string" "boolean";
setAttr ".stringOptions[35].name" -type "string" "progressive";
setAttr ".stringOptions[35].value" -type "string" "false";
setAttr ".stringOptions[35].type" -type "string" "boolean";
setAttr ".stringOptions[36].name" -type "string" "progressive max time";
setAttr ".stringOptions[36].value" -type "string" "0";
setAttr ".stringOptions[36].type" -type "string" "integer";
setAttr ".stringOptions[37].name" -type "string" "progressive subsampling size";
setAttr ".stringOptions[37].value" -type "string" "1";
setAttr ".stringOptions[37].type" -type "string" "integer";
setAttr ".stringOptions[38].name" -type "string" "iray";
setAttr ".stringOptions[38].value" -type "string" "false";
setAttr ".stringOptions[38].type" -type "string" "boolean";
setAttr ".stringOptions[39].name" -type "string" "light relative scale";
setAttr ".stringOptions[39].value" -type "string" "0.31831";
setAttr ".stringOptions[39].type" -type "string" "scalar";
setAttr ".stringOptions[40].name" -type "string" "trace camera motion vectors";
setAttr ".stringOptions[40].value" -type "string" "false";
setAttr ".stringOptions[40].type" -type "string" "boolean";
setAttr ".stringOptions[41].name" -type "string" "ray differentials";
setAttr ".stringOptions[41].value" -type "string" "true";
setAttr ".stringOptions[41].type" -type "string" "boolean";
setAttr ".stringOptions[42].name" -type "string" "environment lighting mode";
setAttr ".stringOptions[42].value" -type "string" "off";
setAttr ".stringOptions[42].type" -type "string" "string";
setAttr ".stringOptions[43].name" -type "string" "environment lighting quality";
setAttr ".stringOptions[43].value" -type "string" "0.167";
setAttr ".stringOptions[43].type" -type "string" "scalar";
setAttr ".stringOptions[44].name" -type "string" "environment lighting shadow";
setAttr ".stringOptions[44].value" -type "string" "transparent";
setAttr ".stringOptions[44].type" -type "string" "string";
createNode mentalrayFramebuffer -s -n "miDefaultFramebuffer";
createNode lightLinker -s -n "lightLinker1";
setAttr -s 2 ".lnk";
setAttr -s 2 ".slnk";
createNode displayLayerManager -n "layerManager";
createNode displayLayer -n "defaultLayer";
createNode renderLayerManager -n "renderLayerManager";
createNode renderLayer -n "defaultRenderLayer";
setAttr ".g" yes;
createNode polyCube -n "polyCube1";
setAttr ".cuv" 4;
createNode script -n "uiConfigurationScriptNode";
setAttr ".b" -type "string" (
"// Maya Mel UI Configuration File.\n//\n// This script is machine generated. Edit at your own risk.\n//\n//\n\nglobal string $gMainPane;\nif (`paneLayout -exists $gMainPane`) {\n\n\tglobal int $gUseScenePanelConfig;\n\tint $useSceneConfig = $gUseScenePanelConfig;\n\tint $menusOkayInPanels = `optionVar -q allowMenusInPanels`;\tint $nVisPanes = `paneLayout -q -nvp $gMainPane`;\n\tint $nPanes = 0;\n\tstring $editorName;\n\tstring $panelName;\n\tstring $itemFilterName;\n\tstring $panelConfig;\n\n\t//\n\t// get current state of the UI\n\t//\n\tsceneUIReplacement -update $gMainPane;\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Top View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Top View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"top\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n"
+ " -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 8192\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -maxConstantTransparency 1\n -rendererName \"base_OpenGL_Renderer\" \n"
+ " -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n"
+ " -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Top View\")) -mbv $menusOkayInPanels $panelName;\n"
+ "\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"top\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 8192\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -maxConstantTransparency 1\n"
+ " -rendererName \"base_OpenGL_Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n"
+ " -ikHandles 1\n -deformers 1\n -dynamics 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Side View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Side View\")) -mbv $menusOkayInPanels `;\n"
+ "\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"side\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 8192\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n"
+ " -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -maxConstantTransparency 1\n -rendererName \"base_OpenGL_Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n"
+ " -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n"
+ " $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Side View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"side\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 8192\n -fogging 0\n -fogSource \"fragment\" \n"
+ " -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -maxConstantTransparency 1\n -rendererName \"base_OpenGL_Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n"
+ " -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Front View\")) `;\n"
+ "\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Front View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"front\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n"
+ " -textureMaxSize 8192\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -maxConstantTransparency 1\n -rendererName \"base_OpenGL_Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n"
+ " -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n"
+ " -shadows 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Front View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"front\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n"
+ " -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 8192\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -maxConstantTransparency 1\n -rendererName \"base_OpenGL_Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n"
+ " -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n"
+ " modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Persp View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n"
+ " -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 8192\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -maxConstantTransparency 1\n -rendererName \"base_OpenGL_Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n"
+ " -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n"
+ " -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n"
+ " -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 8192\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -maxConstantTransparency 1\n -rendererName \"base_OpenGL_Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n"
+ " -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n"
+ " -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"outlinerPanel\" (localizedPanelLabel(\"Outliner\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `outlinerPanel -unParent -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n outlinerEditor -e \n -docTag \"isolOutln_fromSeln\" \n -showShapes 0\n -showReferenceNodes 1\n -showReferenceMembers 1\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n"
+ " -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n"
+ " -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\toutlinerPanel -edit -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n outlinerEditor -e \n -docTag \"isolOutln_fromSeln\" \n -showShapes 0\n -showReferenceNodes 1\n -showReferenceMembers 1\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n"
+ " -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n"
+ " -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"graphEditor\" (localizedPanelLabel(\"Graph Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"graphEditor\" -l (localizedPanelLabel(\"Graph Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n"
+ " -autoExpandLayers 1\n -autoExpand 1\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 1\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 1\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n"
+ " -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 1\n -mapMotionTrails 1\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"GraphEd\");\n animCurveEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 1\n -displayInfinities 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -showResults \"off\" \n -showBufferCurves \"off\" \n -smoothness \"fine\" \n -resultSamples 1\n -resultScreenSamples 0\n -resultUpdate \"delayed\" \n"
+ " -showUpstreamCurves 1\n -stackedCurves 0\n -stackedCurvesMin -1\n -stackedCurvesMax 1\n -stackedCurvesSpace 0.2\n -displayNormalized 0\n -preSelectionHighlight 0\n -constrainDrag 0\n -classicMode 1\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Graph Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 1\n -showDagOnly 0\n -showAssets 1\n"
+ " -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 1\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 1\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n"
+ " -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 1\n -mapMotionTrails 1\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"GraphEd\");\n animCurveEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 1\n -displayInfinities 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -showResults \"off\" \n -showBufferCurves \"off\" \n -smoothness \"fine\" \n -resultSamples 1\n -resultScreenSamples 0\n -resultUpdate \"delayed\" \n -showUpstreamCurves 1\n -stackedCurves 0\n -stackedCurvesMin -1\n -stackedCurvesMax 1\n"
+ " -stackedCurvesSpace 0.2\n -displayNormalized 0\n -preSelectionHighlight 0\n -constrainDrag 0\n -classicMode 1\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dopeSheetPanel\" (localizedPanelLabel(\"Dope Sheet\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dopeSheetPanel\" -l (localizedPanelLabel(\"Dope Sheet\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n"
+ " -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 0\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 1\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n"
+ " -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 1\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"DopeSheetEd\");\n dopeSheetEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -outliner \"dopeSheetPanel1OutlineEd\" \n -showSummary 1\n -showScene 0\n -hierarchyBelow 0\n -showTicks 1\n -selectionWindow 0 0 0 0 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n"
+ "\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dope Sheet\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 0\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n"
+ " -autoSelectNewObjects 0\n -doNotSelectNewObjects 1\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 1\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"DopeSheetEd\");\n dopeSheetEditor -e \n"
+ " -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -outliner \"dopeSheetPanel1OutlineEd\" \n -showSummary 1\n -showScene 0\n -hierarchyBelow 0\n -showTicks 1\n -selectionWindow 0 0 0 0 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"clipEditorPanel\" (localizedPanelLabel(\"Trax Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"clipEditorPanel\" -l (localizedPanelLabel(\"Trax Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = clipEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n"
+ " -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -manageSequencer 0 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Trax Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = clipEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -manageSequencer 0 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"sequenceEditorPanel\" (localizedPanelLabel(\"Camera Sequencer\")) `;\n"
+ "\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"sequenceEditorPanel\" -l (localizedPanelLabel(\"Camera Sequencer\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = sequenceEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -manageSequencer 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Camera Sequencer\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = sequenceEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n"
+ " -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -manageSequencer 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperGraphPanel\" (localizedPanelLabel(\"Hypergraph Hierarchy\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"hyperGraphPanel\" -l (localizedPanelLabel(\"Hypergraph Hierarchy\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"HyperGraphEd\");\n hyperGraph -e \n -graphLayoutStyle \"hierarchicalLayout\" \n -orientation \"horiz\" \n -mergeConnections 0\n -zoom 1\n -animateTransition 0\n -showRelationships 1\n -showShapes 0\n -showDeformers 0\n -showExpressions 0\n -showConstraints 0\n -showConnectionFromSelected 0\n"
+ " -showConnectionToSelected 0\n -showUnderworld 0\n -showInvisible 0\n -transitionFrames 1\n -opaqueContainers 0\n -freeform 0\n -imagePosition 0 0 \n -imageScale 1\n -imageEnabled 0\n -graphType \"DAG\" \n -heatMapDisplay 0\n -updateSelection 1\n -updateNodeAdded 1\n -useDrawOverrideColor 0\n -limitGraphTraversal -1\n -range 0 0 \n -iconSize \"smallIcons\" \n -showCachedConnections 0\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypergraph Hierarchy\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"HyperGraphEd\");\n hyperGraph -e \n -graphLayoutStyle \"hierarchicalLayout\" \n -orientation \"horiz\" \n -mergeConnections 0\n"
+ " -zoom 1\n -animateTransition 0\n -showRelationships 1\n -showShapes 0\n -showDeformers 0\n -showExpressions 0\n -showConstraints 0\n -showConnectionFromSelected 0\n -showConnectionToSelected 0\n -showUnderworld 0\n -showInvisible 0\n -transitionFrames 1\n -opaqueContainers 0\n -freeform 0\n -imagePosition 0 0 \n -imageScale 1\n -imageEnabled 0\n -graphType \"DAG\" \n -heatMapDisplay 0\n -updateSelection 1\n -updateNodeAdded 1\n -useDrawOverrideColor 0\n -limitGraphTraversal -1\n -range 0 0 \n -iconSize \"smallIcons\" \n -showCachedConnections 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperShadePanel\" (localizedPanelLabel(\"Hypershade\")) `;\n"
+ "\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"hyperShadePanel\" -l (localizedPanelLabel(\"Hypershade\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypershade\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"visorPanel\" (localizedPanelLabel(\"Visor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"visorPanel\" -l (localizedPanelLabel(\"Visor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Visor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"nodeEditorPanel\" (localizedPanelLabel(\"Node Editor\")) `;\n\tif (\"\" == $panelName) {\n"
+ "\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"nodeEditorPanel\" -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n -defaultPinnedState 0\n -ignoreAssets 1\n -additiveGraphingMode 0\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -keyReleaseCommand \"nodeEdKeyReleaseCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -island 0\n -showNamespace 1\n -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n"
+ " -syncedSelection 1\n -extendToShapes 1\n $editorName;;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n -defaultPinnedState 0\n -ignoreAssets 1\n -additiveGraphingMode 0\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -keyReleaseCommand \"nodeEdKeyReleaseCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -island 0\n -showNamespace 1\n"
+ " -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -syncedSelection 1\n -extendToShapes 1\n $editorName;;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"createNodePanel\" (localizedPanelLabel(\"Create Node\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"createNodePanel\" -l (localizedPanelLabel(\"Create Node\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Create Node\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"polyTexturePlacementPanel\" (localizedPanelLabel(\"UV Texture Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"polyTexturePlacementPanel\" -l (localizedPanelLabel(\"UV Texture Editor\")) -mbv $menusOkayInPanels `;\n"
+ "\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"UV Texture Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"renderWindowPanel\" (localizedPanelLabel(\"Render View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"renderWindowPanel\" -l (localizedPanelLabel(\"Render View\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Render View\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"blendShapePanel\" (localizedPanelLabel(\"Blend Shape\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\tblendShapePanel -unParent -l (localizedPanelLabel(\"Blend Shape\")) -mbv $menusOkayInPanels ;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n"
+ "\t\tblendShapePanel -edit -l (localizedPanelLabel(\"Blend Shape\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynRelEdPanel\" (localizedPanelLabel(\"Dynamic Relationships\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dynRelEdPanel\" -l (localizedPanelLabel(\"Dynamic Relationships\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dynamic Relationships\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"relationshipPanel\" (localizedPanelLabel(\"Relationship Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"relationshipPanel\" -l (localizedPanelLabel(\"Relationship Editor\")) -mbv $menusOkayInPanels `;\n"
+ "\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Relationship Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"referenceEditorPanel\" (localizedPanelLabel(\"Reference Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"referenceEditorPanel\" -l (localizedPanelLabel(\"Reference Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Reference Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"componentEditorPanel\" (localizedPanelLabel(\"Component Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"componentEditorPanel\" -l (localizedPanelLabel(\"Component Editor\")) -mbv $menusOkayInPanels `;\n"
+ "\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Component Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynPaintScriptedPanelType\" (localizedPanelLabel(\"Paint Effects\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dynPaintScriptedPanelType\" -l (localizedPanelLabel(\"Paint Effects\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Paint Effects\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"scriptEditorPanel\" (localizedPanelLabel(\"Script Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"scriptEditorPanel\" -l (localizedPanelLabel(\"Script Editor\")) -mbv $menusOkayInPanels `;\n"
+ "\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Script Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\tif ($useSceneConfig) {\n\t\tscriptedPanel -e -to $panelName;\n\t}\n\n\n\tif ($useSceneConfig) {\n string $configName = `getPanel -cwl (localizedPanelLabel(\"Current Layout\"))`;\n if (\"\" != $configName) {\n\t\t\tpanelConfiguration -edit -label (localizedPanelLabel(\"Current Layout\")) \n\t\t\t\t-defaultImage \"vacantCell.xP:/\"\n\t\t\t\t-image \"\"\n\t\t\t\t-sc false\n\t\t\t\t-configString \"global string $gMainPane; paneLayout -e -cn \\\"single\\\" -ps 1 100 100 $gMainPane;\"\n\t\t\t\t-removeAllPanels\n\t\t\t\t-ap false\n\t\t\t\t\t(localizedPanelLabel(\"Persp View\")) \n\t\t\t\t\t\"modelPanel\"\n"
+ "\t\t\t\t\t\"$panelName = `modelPanel -unParent -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels `;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"default\\\" \\n -displayAppearance \\\"smoothShaded\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 1\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 0\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 8192\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -maxConstantTransparency 1\\n -rendererName \\\"base_OpenGL_Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 1\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -fluids 1\\n -hairSystems 1\\n -follicles 1\\n -nCloths 1\\n -nParticles 1\\n -nRigids 1\\n -dynamicConstraints 1\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 1\\n -greasePencils 1\\n -shadows 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName;\\nmodelEditor -e \\n -pluginObjects \\\"gpuCacheDisplayFilter\\\" 1 \\n $editorName\"\n"
+ "\t\t\t\t\t\"modelPanel -edit -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels $panelName;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"default\\\" \\n -displayAppearance \\\"smoothShaded\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 1\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 0\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 8192\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -maxConstantTransparency 1\\n -rendererName \\\"base_OpenGL_Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 1\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -fluids 1\\n -hairSystems 1\\n -follicles 1\\n -nCloths 1\\n -nParticles 1\\n -nRigids 1\\n -dynamicConstraints 1\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 1\\n -greasePencils 1\\n -shadows 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName;\\nmodelEditor -e \\n -pluginObjects \\\"gpuCacheDisplayFilter\\\" 1 \\n $editorName\"\n"
+ "\t\t\t\t$configName;\n\n setNamedPanelLayout (localizedPanelLabel(\"Current Layout\"));\n }\n\n panelHistory -e -clear mainPanelHistory;\n setFocus `paneLayout -q -p1 $gMainPane`;\n sceneUIReplacement -deleteRemaining;\n sceneUIReplacement -clear;\n\t}\n\n\ngrid -spacing 5 -size 12 -divisions 5 -displayAxes yes -displayGridLines yes -displayDivisionLines yes -displayPerspectiveLabels no -displayOrthographicLabels no -displayAxesBold yes -perspectiveLabelPosition axis -orthographicLabelPosition edge;\nviewManip -drawCompass 0 -compassAngle 0 -frontParameters \"\" -homeParameters \"\" -selectionLockParameters \"\";\n}\n");
setAttr ".st" 3;
createNode script -n "sceneConfigurationScriptNode";
setAttr ".b" -type "string" "playbackOptions -min 1 -max 24 -ast 1 -aet 48 ";
setAttr ".st" 6;
createNode animCurveTU -n "L_cube_visibility";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr ".ktv[0]" 3 1;
setAttr ".kot[0]" 5;
createNode animCurveTL -n "L_cube_translateX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr ".ktv[0]" 3 5;
createNode animCurveTL -n "L_cube_translateY";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr ".ktv[0]" 3 2.3775028017191246;
createNode animCurveTL -n "L_cube_translateZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr ".ktv[0]" 3 0;
createNode animCurveTA -n "L_cube_rotateX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr ".ktv[0]" 3 0;
createNode animCurveTA -n "L_cube_rotateY";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr ".ktv[0]" 3 0;
createNode animCurveTA -n "L_cube_rotateZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr ".ktv[0]" 3 0;
createNode animCurveTU -n "L_cube_scaleX";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr ".ktv[0]" 3 1;
createNode animCurveTU -n "L_cube_scaleY";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr ".ktv[0]" 3 1;
createNode animCurveTU -n "L_cube_scaleZ";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr ".ktv[0]" 3 1;
select -ne :time1;
setAttr -av -k on ".cch";
setAttr -k on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
setAttr -k on ".o" 12;
setAttr ".unw" 12;
select -ne :renderPartition;
setAttr -k on ".cch";
setAttr -k on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
setAttr -s 2 ".st";
setAttr -k on ".an";
setAttr -k on ".pt";
select -ne :initialShadingGroup;
setAttr -k on ".cch";
setAttr -k on ".ihi";
setAttr -av -k on ".nds";
setAttr -cb on ".bnm";
setAttr -s 4 ".dsm";
setAttr -k on ".mwc";
setAttr -k on ".an";
setAttr -k on ".il";
setAttr -k on ".vo";
setAttr -k on ".eo";
setAttr -k on ".fo";
setAttr -k on ".epo";
setAttr ".ro" yes;
setAttr -cb on ".mimt";
setAttr -cb on ".miop";
setAttr -cb on ".mise";
setAttr -cb on ".mism";
setAttr -cb on ".mice";
setAttr -av -cb on ".micc";
setAttr -cb on ".mica";
setAttr -cb on ".micw";
setAttr -cb on ".mirw";
select -ne :initialParticleSE;
setAttr -k on ".cch";
setAttr -k on ".ihi";
setAttr -av -k on ".nds";
setAttr -cb on ".bnm";
setAttr -k on ".mwc";
setAttr -k on ".an";
setAttr -k on ".il";
setAttr -k on ".vo";
setAttr -k on ".eo";
setAttr -k on ".fo";
setAttr -k on ".epo";
setAttr ".ro" yes;
setAttr -cb on ".mimt";
setAttr -cb on ".miop";
setAttr -cb on ".mise";
setAttr -cb on ".mism";
setAttr -cb on ".mice";
setAttr -av -cb on ".micc";
setAttr -cb on ".mica";
setAttr -av -cb on ".micw";
setAttr -cb on ".mirw";
select -ne :defaultShaderList1;
setAttr -k on ".cch";
setAttr -k on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
setAttr -s 2 ".s";
select -ne :postProcessList1;
setAttr -k on ".cch";
setAttr -k on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
setAttr -s 2 ".p";
select -ne :defaultRenderingList1;
select -ne :renderGlobalsList1;
setAttr -k on ".cch";
setAttr -k on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
select -ne :defaultResolution;
setAttr ".pa" 1;
select -ne :defaultLightSet;
setAttr -k on ".cch";
setAttr -k on ".ihi";
setAttr -k on ".nds";
setAttr -k on ".bnm";
setAttr -k on ".mwc";
setAttr -k on ".an";
setAttr -k on ".il";
setAttr -k on ".vo";
setAttr -k on ".eo";
setAttr -k on ".fo";
setAttr -k on ".epo";
setAttr -k on ".ro" yes;
select -ne :defaultObjectSet;
setAttr ".ro" yes;
select -ne :hardwareRenderGlobals;
setAttr -k on ".cch";
setAttr -cb on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
setAttr ".ctrs" 256;
setAttr ".btrs" 512;
setAttr -k off ".fbfm";
setAttr -k off -cb on ".ehql";
setAttr -k off -cb on ".eams";
setAttr -k off -cb on ".eeaa";
setAttr -k off -cb on ".engm";
setAttr -k off -cb on ".mes";
setAttr -k off -cb on ".emb";
setAttr -av -k off -cb on ".mbbf";
setAttr -k off -cb on ".mbs";
setAttr -k off -cb on ".trm";
setAttr -k off -cb on ".tshc";
setAttr -k off ".enpt";
setAttr -k off -cb on ".clmt";
setAttr -k off -cb on ".tcov";
setAttr -k off -cb on ".lith";
setAttr -k off -cb on ".sobc";
setAttr -k off -cb on ".cuth";
setAttr -k off -cb on ".hgcd";
setAttr -k off -cb on ".hgci";
setAttr -k off -cb on ".mgcs";
setAttr -k off -cb on ".twa";
setAttr -k off -cb on ".twz";
setAttr -k on ".hwcc";
setAttr -k on ".hwdp";
setAttr -k on ".hwql";
setAttr -k on ".hwfr";
select -ne :hardwareRenderingGlobals;
setAttr ".otfna" -type "stringArray" 18 "NURBS Curves" "NURBS Surfaces" "Polygons" "Subdiv Surfaces" "Particles" "Fluids" "Image Planes" "UI:" "Lights" "Cameras" "Locators" "Joints" "IK Handles" "Deformers" "Motion Trails" "Components" "Misc. UI" "Ornaments" ;
setAttr ".otfva" -type "Int32Array" 18 0 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 ;
select -ne :defaultHardwareRenderGlobals;
setAttr -k on ".cch";
setAttr -cb on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
setAttr -k on ".rp";
setAttr -k on ".cai";
setAttr -k on ".coi";
setAttr -cb on ".bc";
setAttr -av -k on ".bcb";
setAttr -av -k on ".bcg";
setAttr -av -k on ".bcr";
setAttr -k on ".ei";
setAttr -k on ".ex";
setAttr -av -k on ".es";
setAttr -av -k on ".ef";
setAttr -av -k on ".bf";
setAttr -k on ".fii";
setAttr -av -k on ".sf";
setAttr -k on ".gr";
setAttr -k on ".li";
setAttr -k on ".ls";
setAttr -k on ".mb";
setAttr -k on ".ti";
setAttr -k on ".txt";
setAttr -k on ".mpr";
setAttr -k on ".wzd";
setAttr ".fn" -type "string" "im";
setAttr -k on ".if";
setAttr ".res" -type "string" "ntsc_4d 646 485 1.333";
setAttr -k on ".as";
setAttr -k on ".ds";
setAttr -k on ".lm";
setAttr -k on ".fir";
setAttr -k on ".aap";
setAttr -k on ".gh";
setAttr -cb on ".sd";
connectAttr "polyCube1.out" "cubeRShape.i";
connectAttr "L_cube_visibility.o" "L_cube.v";
connectAttr "L_cube_translateX.o" "L_cube.tx";
connectAttr "L_cube_translateY.o" "L_cube.ty";
connectAttr "L_cube_translateZ.o" "L_cube.tz";
connectAttr "L_cube_rotateX.o" "L_cube.rx";
connectAttr "L_cube_rotateY.o" "L_cube.ry";
connectAttr "L_cube_rotateZ.o" "L_cube.rz";
connectAttr "L_cube_scaleX.o" "L_cube.sx";
connectAttr "L_cube_scaleY.o" "L_cube.sy";
connectAttr "L_cube_scaleZ.o" "L_cube.sz";
connectAttr ":mentalrayGlobals.msg" ":mentalrayItemsList.glb";
connectAttr ":miDefaultOptions.msg" ":mentalrayItemsList.opt" -na;
connectAttr ":miDefaultFramebuffer.msg" ":mentalrayItemsList.fb" -na;
connectAttr ":miDefaultOptions.msg" ":mentalrayGlobals.opt";
connectAttr ":miDefaultFramebuffer.msg" ":mentalrayGlobals.fb";
relationship "link" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message";
relationship "link" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message";
relationship "shadowLink" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message";
relationship "shadowLink" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message";
connectAttr "layerManager.dli[0]" "defaultLayer.id";
connectAttr "renderLayerManager.rlmi[0]" "defaultRenderLayer.rlid";
connectAttr "cubeRShape.iog" ":initialShadingGroup.dsm" -na;
connectAttr "cubeLShape.iog" ":initialShadingGroup.dsm" -na;
connectAttr "R_cubeShape.iog" ":initialShadingGroup.dsm" -na;
connectAttr "L_cubeShape.iog" ":initialShadingGroup.dsm" -na;
connectAttr "defaultRenderLayer.msg" ":defaultRenderingList1.r" -na;
// End of test_mirror_tables.ma

View File

@@ -0,0 +1,797 @@
//Maya ASCII 2017 scene
//Name: test_non_unique_names.ma
//Last modified: Sat, Feb 04, 2017 11:58:36 PM
//Codeset: 1252
file -rdi 1 -ns "srcSphere" -rfn "srcSphereRN" -typ "mayaAscii" "C:/Users/hovel/Dropbox/packages/python/Lib/site-packages/studioLibrary/site-packages/mutils/tests/data/sphere.ma";
file -r -ns "srcSphere" -dr 1 -rfn "srcSphereRN" -typ "mayaAscii" "C:/Users/hovel/Dropbox/packages/python/Lib/site-packages/studioLibrary/site-packages/mutils/tests/data/sphere.ma";
requires maya "2017";
requires "stereoCamera" "10.0";
currentUnit -l centimeter -a degree -t film;
fileInfo "application" "maya";
fileInfo "product" "Maya 2017";
fileInfo "version" "2017";
fileInfo "cutIdentifier" "201606150345-997974";
fileInfo "osv" "Microsoft Windows 8 Business Edition, 64-bit (Build 9200)\n";
createNode transform -s -n "persp";
rename -uid "DDAA8254-4753-78D5-6AAE-159C81EDC3F9";
setAttr ".v" no;
setAttr ".t" -type "double3" -123.17900131274617 74.628663135067598 32.661032572240735 ;
setAttr ".r" -type "double3" -30.338352727390017 -72.599999999996271 0 ;
createNode camera -s -n "perspShape" -p "persp";
rename -uid "27F094E9-49EE-F1D7-052F-24B6AD29870D";
setAttr -k off ".v" no;
setAttr ".fl" 34.999999999999993;
setAttr ".coi" 150.42418693917088;
setAttr ".imn" -type "string" "persp";
setAttr ".den" -type "string" "persp_depth";
setAttr ".man" -type "string" "persp_mask";
setAttr ".hc" -type "string" "viewSet -p %camera";
createNode transform -s -n "top";
rename -uid "E6DDBE5E-414D-598C-1652-DDA9896B2C18";
setAttr ".v" no;
setAttr ".t" -type "double3" 0 100.1 0 ;
setAttr ".r" -type "double3" -89.999999999999986 0 0 ;
createNode camera -s -n "topShape" -p "top";
rename -uid "BA963D24-4FDB-8DA9-9320-68A3D19A3033";
setAttr -k off ".v" no;
setAttr ".rnd" no;
setAttr ".coi" 100.1;
setAttr ".ow" 30;
setAttr ".imn" -type "string" "top";
setAttr ".den" -type "string" "top_depth";
setAttr ".man" -type "string" "top_mask";
setAttr ".hc" -type "string" "viewSet -t %camera";
setAttr ".o" yes;
createNode transform -s -n "front";
rename -uid "56938C00-4FC9-9BB5-7BA8-22B2465F51AC";
setAttr ".v" no;
setAttr ".t" -type "double3" 2.0350096678112575 0.39361762628711539 100.1 ;
createNode camera -s -n "frontShape" -p "front";
rename -uid "25B2B187-477B-D3AA-AC82-5C9C5B6BD4DA";
setAttr -k off ".v" no;
setAttr ".rnd" no;
setAttr ".coi" 100.1;
setAttr ".ow" 61.766282942468983;
setAttr ".imn" -type "string" "front";
setAttr ".den" -type "string" "front_depth";
setAttr ".man" -type "string" "front_mask";
setAttr ".hc" -type "string" "viewSet -f %camera";
setAttr ".o" yes;
createNode transform -s -n "side";
rename -uid "D0276B16-4FEE-5998-5D3D-E7AA9047C23C";
setAttr ".v" no;
setAttr ".t" -type "double3" 100.1 0 0 ;
setAttr ".r" -type "double3" 0 89.999999999999986 0 ;
createNode camera -s -n "sideShape" -p "side";
rename -uid "52D7FE6B-4C52-8DC6-B4BD-73870EB09DB0";
setAttr -k off ".v" no;
setAttr ".rnd" no;
setAttr ".coi" 100.1;
setAttr ".ow" 30;
setAttr ".imn" -type "string" "side";
setAttr ".den" -type "string" "side_depth";
setAttr ".man" -type "string" "side_mask";
setAttr ".hc" -type "string" "viewSet -s %camera";
setAttr ".o" yes;
createNode transform -n "group";
rename -uid "E0D02B96-4B6D-0116-B834-3A8B17F2574B";
addAttr -s false -ci true -sn "testMessage" -ln "testMessage" -at "message";
createNode transform -n "offset" -p "group";
rename -uid "53E00748-4BAE-DC3E-72DA-C39AC1FABCA1";
setAttr -l on ".v";
setAttr -l on ".tx";
setAttr -l on ".ty";
setAttr -l on ".tz";
setAttr -l on ".rx";
setAttr -l on ".ry";
setAttr -l on ".rz";
setAttr -l on ".sx";
setAttr -l on ".sy";
setAttr -l on ".sz";
createNode transform -n "lockedNode" -p "|group|offset";
rename -uid "C77C5FBF-4DA8-7E08-F3BE-AC9D0D00D0FC";
createNode transform -n "sphere" -p "|group|offset|lockedNode";
rename -uid "8066C85B-4E94-344B-173A-698197FBAF5E";
addAttr -ci true -sn "testVector" -ln "testVector" -at "double3" -nc 3;
addAttr -ci true -sn "testVectorX" -ln "testVectorX" -at "double" -p "testVector";
addAttr -ci true -sn "testVectorY" -ln "testVectorY" -at "double" -p "testVector";
addAttr -ci true -sn "testVectorZ" -ln "testVectorZ" -at "double" -p "testVector";
addAttr -ci true -uac -sn "testColor" -ln "testColor" -at "float3" -nc 3;
addAttr -ci true -sn "testRed" -ln "testRed" -at "float" -p "testColor";
addAttr -ci true -sn "testGreen" -ln "testGreen" -at "float" -p "testColor";
addAttr -ci true -sn "testRed" -ln "testRed" -at "float" -p "testColor";
addAttr -ci true -sn "testString" -ln "testString" -dt "string";
addAttr -ci true -sn "testEnum" -ln "testEnum" -min 0 -max 2 -en "Apple:Lemon:Banana"
-at "enum";
addAttr -ci true -sn "testFloat" -ln "testFloat" -min 0 -max 10 -at "double";
addAttr -ci true -sn "testBoolean" -ln "testBoolean" -min 0 -max 1 -at "bool";
addAttr -ci true -sn "testInteger" -ln "testInteger" -min 0 -max 10 -at "long";
addAttr -ci true -sn "testLocked" -ln "testLocked" -min 0 -max 10 -at "double";
addAttr -ci true -sn "testHidden" -ln "testHidden" -min 0 -max 10 -at "double";
addAttr -ci true -sn "testConnect" -ln "testConnect" -at "double";
addAttr -ci true -sn "testAnimated" -ln "testAnimated" -at "double";
addAttr -s false -ci true -sn "testMessage" -ln "testMessage" -at "message";
addAttr -ci true -sn "testLimit" -ln "testLimit" -min -10 -max 10 -at "double";
addAttr -ci true -sn "testNonKeyable" -ln "testNonKeyable" -at "double";
setAttr -k on ".testVector";
setAttr -k on ".testVectorX";
setAttr -k on ".testVectorY";
setAttr -k on ".testVectorZ";
setAttr -k on ".testString";
setAttr -k on ".testEnum" 2;
setAttr -k on ".testFloat";
setAttr -k on ".testBoolean";
setAttr -k on ".testInteger";
setAttr -l on -k on ".testLocked";
setAttr -k on ".testConnect";
setAttr -k on ".testAnimated";
setAttr -k on ".testLimit";
setAttr -cb on ".testNonKeyable";
createNode mesh -n "sphereShape" -p "|group|offset|lockedNode|sphere";
rename -uid "31DEDCCA-419C-842A-2745-C2BADE15FAD3";
setAttr -k off ".v";
setAttr ".vir" yes;
setAttr ".vif" yes;
setAttr ".uvst[0].uvsn" -type "string" "map1";
setAttr ".cuvs" -type "string" "map1";
setAttr ".dcc" -type "string" "Ambient+Diffuse";
setAttr ".covm[0]" 0 1 1;
setAttr ".cdvm[0]" 0 1 1;
setAttr ".ugsdt" no;
setAttr ".vnm" 0;
createNode transform -n "group1";
rename -uid "3BD55A1F-4D3B-0600-E76E-A3B8DDB90A9E";
addAttr -s false -ci true -sn "testMessage" -ln "testMessage" -at "message";
createNode transform -n "offset" -p "group1";
rename -uid "DB0A4EF6-440F-3E67-85E1-F6A0FC8B3359";
setAttr -l on ".v";
setAttr -l on ".tx";
setAttr -l on ".ty";
setAttr -l on ".tz";
setAttr -l on ".rx";
setAttr -l on ".ry";
setAttr -l on ".rz";
setAttr -l on ".sx";
setAttr -l on ".sy";
setAttr -l on ".sz";
createNode transform -n "lockedNode" -p "|group1|offset";
rename -uid "425F552C-4C6B-094E-065C-43BF75DE749F";
createNode transform -n "sphere" -p "|group1|offset|lockedNode";
rename -uid "D9F1C1EE-4A3B-CC6C-E2F6-D0AD5B44CB13";
addAttr -ci true -sn "testVector" -ln "testVector" -at "double3" -nc 3;
addAttr -ci true -sn "testVectorX" -ln "testVectorX" -at "double" -p "testVector";
addAttr -ci true -sn "testVectorY" -ln "testVectorY" -at "double" -p "testVector";
addAttr -ci true -sn "testVectorZ" -ln "testVectorZ" -at "double" -p "testVector";
addAttr -ci true -uac -sn "testColor" -ln "testColor" -at "float3" -nc 3;
addAttr -ci true -sn "testRed" -ln "testRed" -at "float" -p "testColor";
addAttr -ci true -sn "testGreen" -ln "testGreen" -at "float" -p "testColor";
addAttr -ci true -sn "testRed" -ln "testRed" -at "float" -p "testColor";
addAttr -ci true -sn "testString" -ln "testString" -dt "string";
addAttr -ci true -sn "testEnum" -ln "testEnum" -min 0 -max 2 -en "Apple:Lemon:Banana"
-at "enum";
addAttr -ci true -sn "testFloat" -ln "testFloat" -min 0 -max 10 -at "double";
addAttr -ci true -sn "testBoolean" -ln "testBoolean" -min 0 -max 1 -at "bool";
addAttr -ci true -sn "testInteger" -ln "testInteger" -min 0 -max 10 -at "long";
addAttr -ci true -sn "testLocked" -ln "testLocked" -min 0 -max 10 -at "double";
addAttr -ci true -sn "testHidden" -ln "testHidden" -min 0 -max 10 -at "double";
addAttr -ci true -sn "testConnect" -ln "testConnect" -at "double";
addAttr -ci true -sn "testAnimated" -ln "testAnimated" -at "double";
addAttr -s false -ci true -sn "testMessage" -ln "testMessage" -at "message";
setAttr -k on ".testVector";
setAttr -k on ".testVectorX";
setAttr -k on ".testVectorY";
setAttr -k on ".testVectorZ";
setAttr -k on ".testString";
setAttr -k on ".testEnum" 2;
setAttr -k on ".testFloat";
setAttr -k on ".testBoolean";
setAttr -k on ".testInteger";
setAttr -l on -k on ".testLocked";
setAttr -k on ".testConnect";
setAttr -k on ".testAnimated";
createNode mesh -n "sphereShape" -p "|group1|offset|lockedNode|sphere";
rename -uid "4D2BA5B2-42B9-056B-13C8-D285A9FBD044";
setAttr -k off ".v";
setAttr ".vir" yes;
setAttr ".vif" yes;
setAttr ".uvst[0].uvsn" -type "string" "map1";
setAttr ".cuvs" -type "string" "map1";
setAttr ".dcc" -type "string" "Ambient+Diffuse";
setAttr ".covm[0]" 0 1 1;
setAttr ".cdvm[0]" 0 1 1;
setAttr ".ugsdt" no;
setAttr ".vnm" 0;
createNode lightLinker -s -n "lightLinker1";
rename -uid "548C9C33-497A-C6D1-8D06-98B89D3D62D8";
setAttr -s 2 ".lnk";
setAttr -s 2 ".slnk";
createNode displayLayerManager -n "layerManager";
rename -uid "82379A41-4D50-EE15-B9ED-688E288FD51B";
createNode displayLayer -n "defaultLayer";
rename -uid "3283B76B-49A2-D9EB-14C2-4C827D163B8F";
createNode renderLayerManager -n "renderLayerManager";
rename -uid "72986805-4CFF-9FD5-4A52-5F9D8DBB9B59";
createNode renderLayer -n "defaultRenderLayer";
rename -uid "F62FFC33-4D56-2BEB-B85F-A6A272377F4C";
setAttr ".g" yes;
createNode script -n "sceneConfigurationScriptNode";
rename -uid "7FD6986F-4794-3763-3E36-59852AA535BF";
setAttr ".b" -type "string" "playbackOptions -min 1 -max 24 -ast 1 -aet 48 ";
setAttr ".st" 6;
createNode reference -n "srcSphereRN";
rename -uid "236A7996-4E4A-8901-858E-DDBE7FC55F9A";
setAttr -s 16 ".phl";
setAttr ".phl[1]" 0;
setAttr ".phl[2]" 0;
setAttr ".phl[3]" 0;
setAttr ".phl[4]" 0;
setAttr ".phl[5]" 0;
setAttr ".phl[6]" 0;
setAttr ".phl[7]" 0;
setAttr ".phl[8]" 0;
setAttr ".phl[9]" 0;
setAttr ".phl[10]" 0;
setAttr ".phl[11]" 0;
setAttr ".phl[12]" 0;
setAttr ".phl[13]" 0;
setAttr ".phl[14]" 0;
setAttr ".phl[15]" 0;
setAttr ".phl[16]" 0;
setAttr ".ed" -type "dataReferenceEdits"
"srcSphereRN"
"srcSphereRN" 0
"srcSphereRN" 43
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "visibility" " 1"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "translate" " -type \"double3\" 0 5 0"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "translateX" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "translateY" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "translateZ" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "rotate" " -type \"double3\" 0 0 0"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "rotateX" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "rotateY" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "rotateZ" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode" "scale" " -type \"double3\" 1 1 1"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"translate" " -type \"double3\" 0 8 -12"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"translateZ" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"rotate" " -type \"double3\" 45 50 90"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"rotateX" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"rotateY" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"rotateZ" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"scale" " -type \"double3\" 0.25 4.66 0.5"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"scaleX" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"scaleY" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"scaleZ" " -av"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testVector" " -k 1 -type \"double3\" 0.2 1.4 2.6"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testVector" " -k 1"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testVectorX" " -k 1"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testVectorY" " -av -k 1"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testVectorZ" " -k 1"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testColor" " -type \"float3\" 0.18000000999999999 0.60000001999999997 0.18000000999999999"
2 "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere"
"testString" " -k 1 -type \"string\" \"Hello world\""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode.translateZ"
"srcSphereRN.placeHolderList[1]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testVectorX"
"srcSphereRN.placeHolderList[2]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testVectorY"
"srcSphereRN.placeHolderList[3]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testVectorZ"
"srcSphereRN.placeHolderList[4]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testEnum"
"srcSphereRN.placeHolderList[5]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testFloat"
"srcSphereRN.placeHolderList[6]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testBoolean"
"srcSphereRN.placeHolderList[7]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.testInteger"
"srcSphereRN.placeHolderList[8]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.translateY"
"srcSphereRN.placeHolderList[9]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.translateX"
"srcSphereRN.placeHolderList[10]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.translateZ"
"srcSphereRN.placeHolderList[11]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.rotateX"
"srcSphereRN.placeHolderList[12]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.rotateZ"
"srcSphereRN.placeHolderList[13]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.scaleX"
"srcSphereRN.placeHolderList[14]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.scaleZ"
"srcSphereRN.placeHolderList[15]" ""
5 4 "srcSphereRN" "|srcSphere:group|srcSphere:offset|srcSphere:lockedNode|srcSphere:sphere.visibility"
"srcSphereRN.placeHolderList[16]" "";
setAttr ".ptag" -type "string" "";
lockNode -l 1 ;
createNode animCurveTU -n "srcSphere:sphere_visibility";
rename -uid "25B7A44D-46CB-EE48-EBD0-1E9ADC4681DE";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTL -n "srcSphere:sphere_translateX";
rename -uid "D13498C8-4E35-AB33-9DA8-D0B1AB09A06C";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 0;
createNode animCurveTL -n "srcSphere:sphere_translateY";
rename -uid "30A68F0C-473D-C3BD-68EE-1A97C506CB8A";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 8 10 8;
createNode animCurveTL -n "srcSphere:sphere_translateZ";
rename -uid "591EE7E4-471A-2A88-0F1D-48A0CA2F575E";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 -12 10 11.214436147065292;
createNode animCurveTA -n "srcSphere:sphere_rotateX";
rename -uid "7DAF1ACE-4BF1-C12E-BD6B-A5A56B35773F";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 45 10 30.81018202226841;
createNode animCurveTA -n "srcSphere:sphere_rotateZ";
rename -uid "86BF49D8-4C94-99EC-28F6-2EA727F428F4";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 90 10 149.70880463068096;
createNode animCurveTU -n "srcSphere:sphere_scaleX";
rename -uid "9C679B5C-4862-3674-978A-D484AEE966E3";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.25 10 0.42958527814637792;
createNode animCurveTU -n "srcSphere:sphere_scaleZ";
rename -uid "F8AEC957-4DD2-855F-9D56-69B153BA1F5C";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.5 10 0.85917055629275585;
createNode animCurveTU -n "srcSphere:sphere_testVectorX";
rename -uid "D3E850E5-45D3-3797-2452-828BC0F88BF5";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.2 10 0.2;
createNode animCurveTU -n "srcSphere:sphere_testVectorY";
rename -uid "411854EA-4881-2F52-8A0C-DCB3502416B8";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1.4 10 1.4;
createNode animCurveTU -n "srcSphere:sphere_testVectorZ";
rename -uid "502BF718-4050-BBE2-991E-77BE7C123CAA";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 2.6 10 2.6;
createNode animCurveTU -n "srcSphere:sphere_testEnum";
rename -uid "8CF62262-46FF-9062-6DED-C4AA2B2CCE2E";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTU -n "srcSphere:sphere_testFloat";
rename -uid "498C6886-4FDB-563B-723A-A8A9474E9570";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.666 10 0.666;
createNode animCurveTU -n "srcSphere:sphere_testBoolean";
rename -uid "143ED449-4120-35D8-6BC9-A98C802C5CA3";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTU -n "srcSphere:sphere_testInteger";
rename -uid "E96551ED-459B-4C0A-CDDA-44A263050285";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 5 10 5;
createNode animCurveTL -n "dstSphere:sphere_translateY";
rename -uid "20E5403E-4B3D-0674-161A-91A6924D0559";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 8 10 8;
createNode animCurveTL -n "lockedNode_translateZ";
rename -uid "B63F154D-4C27-9666-D375-138ED9037730";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 15;
createNode animCurveTU -n "sphere_testInteger";
rename -uid "97499943-4659-497E-3F90-61B92034A6C4";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 5 10 5;
createNode animCurveTU -n "sphere_testEnum";
rename -uid "B071F69A-4FC0-DA63-9FFE-4A94AA5979B4";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTL -n "sphere_translateX";
rename -uid "0768FFC8-4267-269E-B230-439D662AADFE";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 0;
createNode animCurveTL -n "sphere_translateZ";
rename -uid "4C1A73F4-461D-F4BA-D731-D4B281F14C48";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 -12 10 11.214436147065292;
createNode animCurveTU -n "sphere_testFloat";
rename -uid "4CE18D96-4C85-2A00-A762-A7A94AE1606A";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.666 10 0.666;
createNode animCurveTU -n "sphere_scaleX";
rename -uid "866CDCF6-4F4D-103D-63EC-729E61A6D480";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.25 10 0.42958527814637792;
createNode animCurveTU -n "sphere_testVectorZ";
rename -uid "AEBEFB59-4872-F7FD-CADC-EAA305119536";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 2.6 10 2.6;
createNode animCurveTU -n "sphere_scaleZ";
rename -uid "EFB25E16-44ED-32F9-943A-ED8A845F4D39";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.5 10 0.85917055629275585;
createNode animCurveTA -n "sphere_rotateX";
rename -uid "19C44183-45EF-1073-AE60-D0AC778E182D";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 45 10 30.81018202226841;
createNode animCurveTU -n "sphere_testVectorY";
rename -uid "B55F1B53-48D5-A874-A1E0-C0B71E545F06";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1.4 10 1.4;
createNode animCurveTA -n "sphere_rotateZ";
rename -uid "07252CD5-4363-F661-068A-66B3EF78D16A";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 90 10 149.70880463068096;
createNode animCurveTU -n "sphere_visibility";
rename -uid "F78C1BCC-435D-D057-01ED-D1B15A6BE60B";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTU -n "sphere_testVectorX";
rename -uid "9FAF8611-4755-AE77-1A60-4FA5FF5469C7";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0.2 10 0.2;
createNode animCurveTU -n "sphere_testBoolean";
rename -uid "55CCB691-471C-1916-5F57-D78DFC7CE524";
setAttr ".tan" 9;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 1 10 1;
setAttr -s 2 ".kot[0:1]" 5 5;
createNode animCurveTL -n "lockedNode_translateZ1";
rename -uid "12CDCBC7-41D0-13DA-F2E6-04B9FC31CE19";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 15;
createNode renderLayerManager -n "dstSphere:renderLayerManager";
rename -uid "88F08ACE-4F04-45CD-ED01-1DAC296CF287";
createNode renderLayer -n "dstSphere:defaultRenderLayer";
rename -uid "97E29F6D-495A-42D8-7A95-BDADCBE099F0";
setAttr ".g" yes;
createNode animCurveTU -n "sphere_testAnimated";
rename -uid "A38AFFD7-4BB6-7949-58F0-1DA330C26C51";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 10;
createNode polySphere -n "srcPolySphere";
rename -uid "9DC42CA0-4D9A-CAA0-B1D3-56A34DA33DDA";
setAttr ".r" 4.1417806816985845;
createNode animCurveTU -n "sphere_testAnimated1";
rename -uid "4785293F-43CF-7E0E-6273-0A9CE9B8C052";
setAttr ".tan" 18;
setAttr ".wgt" no;
setAttr -s 2 ".ktv[0:1]" 1 0 10 10;
createNode polySphere -n "srcPolySphere1";
rename -uid "22D3CF49-4D45-E0C1-99E9-98949F65BC37";
setAttr ".r" 4.1417806816985845;
createNode shapeEditorManager -n "shapeEditorManager";
rename -uid "4E61DE05-49DE-4ABA-D703-36AE442A88AD";
createNode poseInterpolatorManager -n "poseInterpolatorManager";
rename -uid "A2E4EC6B-4BE3-25B3-9E39-BCB3468204D9";
createNode script -n "uiConfigurationScriptNode";
rename -uid "5DFFAA9C-4881-F956-58D0-CE9DBC5970AC";
setAttr ".b" -type "string" (
"// Maya Mel UI Configuration File.\n//\n// This script is machine generated. Edit at your own risk.\n//\n//\n\nglobal string $gMainPane;\nif (`paneLayout -exists $gMainPane`) {\n\n\tglobal int $gUseScenePanelConfig;\n\tint $useSceneConfig = $gUseScenePanelConfig;\n\tint $menusOkayInPanels = `optionVar -q allowMenusInPanels`;\tint $nVisPanes = `paneLayout -q -nvp $gMainPane`;\n\tint $nPanes = 0;\n\tstring $editorName;\n\tstring $panelName;\n\tstring $itemFilterName;\n\tstring $panelConfig;\n\n\t//\n\t// get current state of the UI\n\t//\n\tsceneUIReplacement -update $gMainPane;\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Top View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Top View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"top\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n"
+ " -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n"
+ " -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n"
+ " -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n"
+ " -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Top View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"top\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n"
+ " -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n"
+ " -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n"
+ " modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Side View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Side View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"side\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n"
+ " -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n"
+ " -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n"
+ " -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Side View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"side\" \n -useInteractiveMode 0\n -displayLights \"default\" \n"
+ " -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n"
+ " -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n"
+ " -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Front View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Front View\")) -mbv $menusOkayInPanels `;\n"
+ "\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"front\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n"
+ " -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n"
+ " -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n"
+ " -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Front View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"front\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n"
+ " -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n"
+ " -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n"
+ " -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 1\n -height 1\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Persp View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n"
+ " -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n"
+ " -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n"
+ " -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 2058\n -height 1022\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n"
+ "\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"smoothShaded\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 0\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n"
+ " -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -rendererName \"vp2Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n"
+ " -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 2058\n -height 1022\n -sceneRenderFilter 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n"
+ " $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"outlinerPanel\" (localizedPanelLabel(\"ToggledOutliner\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `outlinerPanel -unParent -l (localizedPanelLabel(\"ToggledOutliner\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n outlinerEditor -e \n -showShapes 0\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n"
+ " -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -isSet 0\n -isSetMember 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n"
+ " -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n -renderFilterIndex 0\n -selectionOrder \"chronological\" \n -expandAttribute 0\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\toutlinerPanel -edit -l (localizedPanelLabel(\"ToggledOutliner\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n outlinerEditor -e \n -showShapes 0\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n"
+ " -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -isSet 0\n -isSetMember 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n"
+ " -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n -renderFilterIndex 0\n -selectionOrder \"chronological\" \n -expandAttribute 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"outlinerPanel\" (localizedPanelLabel(\"Outliner\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `outlinerPanel -unParent -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n outlinerEditor -e \n"
+ " -showShapes 0\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n"
+ " -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n"
+ "\t\toutlinerPanel -edit -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n outlinerEditor -e \n -showShapes 0\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n"
+ " -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"graphEditor\" (localizedPanelLabel(\"Graph Editor\")) `;\n"
+ "\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"graphEditor\" -l (localizedPanelLabel(\"Graph Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 1\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n"
+ " -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 1\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 1\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 1\n"
+ " -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"GraphEd\");\n animCurveEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 1\n -displayInfinities 0\n -displayValues 0\n -autoFit 1\n -snapTime \"integer\" \n -snapValue \"none\" \n -showResults \"off\" \n -showBufferCurves \"off\" \n -smoothness \"fine\" \n -resultSamples 0.96\n -resultScreenSamples 0\n -resultUpdate \"delayed\" \n -showUpstreamCurves 1\n -showCurveNames 0\n -showActiveCurveNames 0\n -stackedCurves 0\n -stackedCurvesMin -1\n -stackedCurvesMax 1\n -stackedCurvesSpace 0.2\n"
+ " -displayNormalized 0\n -preSelectionHighlight 0\n -constrainDrag 0\n -classicMode 1\n -valueLinesToggle 1\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Graph Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 1\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n"
+ " -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 1\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 1\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n"
+ " -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 1\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"GraphEd\");\n animCurveEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 1\n -displayInfinities 0\n -displayValues 0\n -autoFit 1\n -snapTime \"integer\" \n -snapValue \"none\" \n -showResults \"off\" \n -showBufferCurves \"off\" \n -smoothness \"fine\" \n -resultSamples 0.96\n -resultScreenSamples 0\n -resultUpdate \"delayed\" \n -showUpstreamCurves 1\n -showCurveNames 0\n"
+ " -showActiveCurveNames 0\n -stackedCurves 0\n -stackedCurvesMin -1\n -stackedCurvesMax 1\n -stackedCurvesSpace 0.2\n -displayNormalized 0\n -preSelectionHighlight 0\n -constrainDrag 0\n -classicMode 1\n -valueLinesToggle 1\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dopeSheetPanel\" (localizedPanelLabel(\"Dope Sheet\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dopeSheetPanel\" -l (localizedPanelLabel(\"Dope Sheet\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n"
+ " -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 0\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 1\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n"
+ " -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"DopeSheetEd\");\n dopeSheetEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n"
+ " -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -outliner \"dopeSheetPanel1OutlineEd\" \n -showSummary 1\n -showScene 0\n -hierarchyBelow 0\n -showTicks 1\n -selectionWindow 0 0 0 0 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dope Sheet\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n"
+ " -autoExpand 0\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 0\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 1\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n"
+ " -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 1\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"DopeSheetEd\");\n dopeSheetEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -outliner \"dopeSheetPanel1OutlineEd\" \n -showSummary 1\n"
+ " -showScene 0\n -hierarchyBelow 0\n -showTicks 1\n -selectionWindow 0 0 0 0 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"timeEditorPanel\" (localizedPanelLabel(\"Time Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"timeEditorPanel\" -l (localizedPanelLabel(\"Time Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Time Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"clipEditorPanel\" (localizedPanelLabel(\"Trax Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"clipEditorPanel\" -l (localizedPanelLabel(\"Trax Editor\")) -mbv $menusOkayInPanels `;\n"
+ "\n\t\t\t$editorName = clipEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 0 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Trax Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = clipEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n"
+ " -initialized 0\n -manageSequencer 0 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"sequenceEditorPanel\" (localizedPanelLabel(\"Camera Sequencer\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"sequenceEditorPanel\" -l (localizedPanelLabel(\"Camera Sequencer\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = sequenceEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n"
+ "\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Camera Sequencer\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = sequenceEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -displayValues 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -initialized 0\n -manageSequencer 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperGraphPanel\" (localizedPanelLabel(\"Hypergraph Hierarchy\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"hyperGraphPanel\" -l (localizedPanelLabel(\"Hypergraph Hierarchy\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"HyperGraphEd\");\n"
+ " hyperGraph -e \n -graphLayoutStyle \"hierarchicalLayout\" \n -orientation \"horiz\" \n -mergeConnections 0\n -zoom 1\n -animateTransition 0\n -showRelationships 1\n -showShapes 0\n -showDeformers 0\n -showExpressions 0\n -showConstraints 0\n -showConnectionFromSelected 0\n -showConnectionToSelected 0\n -showConstraintLabels 0\n -showUnderworld 0\n -showInvisible 0\n -transitionFrames 1\n -opaqueContainers 0\n -freeform 0\n -imagePosition 0 0 \n -imageScale 1\n -imageEnabled 0\n -graphType \"DAG\" \n -heatMapDisplay 0\n -updateSelection 1\n -updateNodeAdded 1\n -useDrawOverrideColor 0\n -limitGraphTraversal -1\n -range 0 0 \n"
+ " -iconSize \"smallIcons\" \n -showCachedConnections 0\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypergraph Hierarchy\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"HyperGraphEd\");\n hyperGraph -e \n -graphLayoutStyle \"hierarchicalLayout\" \n -orientation \"horiz\" \n -mergeConnections 0\n -zoom 1\n -animateTransition 0\n -showRelationships 1\n -showShapes 0\n -showDeformers 0\n -showExpressions 0\n -showConstraints 0\n -showConnectionFromSelected 0\n -showConnectionToSelected 0\n -showConstraintLabels 0\n -showUnderworld 0\n -showInvisible 0\n -transitionFrames 1\n -opaqueContainers 0\n -freeform 0\n -imagePosition 0 0 \n"
+ " -imageScale 1\n -imageEnabled 0\n -graphType \"DAG\" \n -heatMapDisplay 0\n -updateSelection 1\n -updateNodeAdded 1\n -useDrawOverrideColor 0\n -limitGraphTraversal -1\n -range 0 0 \n -iconSize \"smallIcons\" \n -showCachedConnections 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"visorPanel\" (localizedPanelLabel(\"Visor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"visorPanel\" -l (localizedPanelLabel(\"Visor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Visor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"createNodePanel\" (localizedPanelLabel(\"Create Node\")) `;\n"
+ "\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"createNodePanel\" -l (localizedPanelLabel(\"Create Node\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Create Node\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"polyTexturePlacementPanel\" (localizedPanelLabel(\"UV Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"polyTexturePlacementPanel\" -l (localizedPanelLabel(\"UV Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"UV Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"renderWindowPanel\" (localizedPanelLabel(\"Render View\")) `;\n"
+ "\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"renderWindowPanel\" -l (localizedPanelLabel(\"Render View\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Render View\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"shapePanel\" (localizedPanelLabel(\"Shape Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\tshapePanel -unParent -l (localizedPanelLabel(\"Shape Editor\")) -mbv $menusOkayInPanels ;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tshapePanel -edit -l (localizedPanelLabel(\"Shape Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"posePanel\" (localizedPanelLabel(\"Pose Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\tposePanel -unParent -l (localizedPanelLabel(\"Pose Editor\")) -mbv $menusOkayInPanels ;\n"
+ "\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tposePanel -edit -l (localizedPanelLabel(\"Pose Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynRelEdPanel\" (localizedPanelLabel(\"Dynamic Relationships\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dynRelEdPanel\" -l (localizedPanelLabel(\"Dynamic Relationships\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dynamic Relationships\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"relationshipPanel\" (localizedPanelLabel(\"Relationship Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"relationshipPanel\" -l (localizedPanelLabel(\"Relationship Editor\")) -mbv $menusOkayInPanels `;\n"
+ "\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Relationship Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"referenceEditorPanel\" (localizedPanelLabel(\"Reference Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"referenceEditorPanel\" -l (localizedPanelLabel(\"Reference Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Reference Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"componentEditorPanel\" (localizedPanelLabel(\"Component Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"componentEditorPanel\" -l (localizedPanelLabel(\"Component Editor\")) -mbv $menusOkayInPanels `;\n"
+ "\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Component Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynPaintScriptedPanelType\" (localizedPanelLabel(\"Paint Effects\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dynPaintScriptedPanelType\" -l (localizedPanelLabel(\"Paint Effects\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Paint Effects\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"scriptEditorPanel\" (localizedPanelLabel(\"Script Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"scriptEditorPanel\" -l (localizedPanelLabel(\"Script Editor\")) -mbv $menusOkayInPanels `;\n"
+ "\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Script Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"profilerPanel\" (localizedPanelLabel(\"Profiler Tool\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"profilerPanel\" -l (localizedPanelLabel(\"Profiler Tool\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Profiler Tool\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"contentBrowserPanel\" (localizedPanelLabel(\"Content Browser\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"contentBrowserPanel\" -l (localizedPanelLabel(\"Content Browser\")) -mbv $menusOkayInPanels `;\n"
+ "\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Content Browser\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"Stereo\" (localizedPanelLabel(\"Stereo\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"Stereo\" -l (localizedPanelLabel(\"Stereo\")) -mbv $menusOkayInPanels `;\nstring $editorName = ($panelName+\"Editor\");\n stereoCameraView -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n"
+ " -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 4 4 \n -bumpResolution 4 4 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n"
+ " -lowQualityLighting 0\n -maximumNumHardwareLights 0\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n"
+ " -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 0\n -height 0\n -sceneRenderFilter 0\n -displayMode \"centerEye\" \n -viewColor 0 0 0 1 \n -useCustomBackground 1\n $editorName;\n stereoCameraView -e -viewSelected 0 $editorName;\n stereoCameraView -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Stereo\")) -mbv $menusOkayInPanels $panelName;\nstring $editorName = ($panelName+\"Editor\");\n"
+ " stereoCameraView -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -holdOuts 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 16384\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n"
+ " -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -depthOfFieldPreview 1\n -maxConstantTransparency 1\n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 4 4 \n -bumpResolution 4 4 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 0\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n"
+ " -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -particleInstancers 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -captureSequenceNumber -1\n -width 0\n -height 0\n"
+ " -sceneRenderFilter 0\n -displayMode \"centerEye\" \n -viewColor 0 0 0 1 \n -useCustomBackground 1\n $editorName;\n stereoCameraView -e -viewSelected 0 $editorName;\n stereoCameraView -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"outlinerPanel\" (localizedPanelLabel(\"Outliner\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `outlinerPanel -unParent -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n outlinerEditor -e \n -showShapes 0\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n"
+ " -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -isSet 0\n -isSetMember 0\n"
+ " -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n -renderFilterIndex 0\n -selectionOrder \"chronological\" \n -expandAttribute 0\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\toutlinerPanel -edit -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels $panelName;\n"
+ "\t\t$editorName = $panelName;\n outlinerEditor -e \n -showShapes 0\n -showAssignedMaterials 0\n -showTimeEditor 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n"
+ " -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -isSet 0\n -isSetMember 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n -ignoreHiddenAttribute 0\n -ignoreOutlinerColor 0\n -renderFilterVisible 0\n -renderFilterIndex 0\n -selectionOrder \"chronological\" \n -expandAttribute 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n"
+ "\t\t}\n\t}\n\tif ($useSceneConfig) {\n\t\toutlinerPanel -e -to $panelName;\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperShadePanel\" (localizedPanelLabel(\"Hypershade\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"hyperShadePanel\" -l (localizedPanelLabel(\"Hypershade\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypershade\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"nodeEditorPanel\" (localizedPanelLabel(\"Node Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"nodeEditorPanel\" -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n"
+ " -consistentNameSize 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n -defaultPinnedState 0\n -additiveGraphingMode 0\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -showNamespace 1\n -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -useAssets 1\n -syncedSelection 1\n -extendToShapes 1\n -activeTab -1\n -editorMode \"default\" \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n"
+ " -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n -consistentNameSize 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n -defaultPinnedState 0\n -additiveGraphingMode 0\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -showNamespace 1\n -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -useAssets 1\n -syncedSelection 1\n -extendToShapes 1\n -activeTab -1\n -editorMode \"default\" \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\tif ($useSceneConfig) {\n string $configName = `getPanel -cwl (localizedPanelLabel(\"Current Layout\"))`;\n"
+ " if (\"\" != $configName) {\n\t\t\tpanelConfiguration -edit -label (localizedPanelLabel(\"Current Layout\")) \n\t\t\t\t-userCreated false\n\t\t\t\t-defaultImage \"vacantCell.xP:/\"\n\t\t\t\t-image \"\"\n\t\t\t\t-sc false\n\t\t\t\t-configString \"global string $gMainPane; paneLayout -e -cn \\\"single\\\" -ps 1 100 100 $gMainPane;\"\n\t\t\t\t-removeAllPanels\n\t\t\t\t-ap false\n\t\t\t\t\t(localizedPanelLabel(\"Persp View\")) \n\t\t\t\t\t\"modelPanel\"\n"
+ "\t\t\t\t\t\"$panelName = `modelPanel -unParent -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels `;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"default\\\" \\n -displayAppearance \\\"smoothShaded\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -holdOuts 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 0\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 0\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 16384\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -depthOfFieldPreview 1\\n -maxConstantTransparency 1\\n -rendererName \\\"vp2Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 1\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -particleInstancers 1\\n -fluids 1\\n -hairSystems 1\\n -follicles 1\\n -nCloths 1\\n -nParticles 1\\n -nRigids 1\\n -dynamicConstraints 1\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 1\\n -greasePencils 1\\n -shadows 0\\n -captureSequenceNumber -1\\n -width 2058\\n -height 1022\\n -sceneRenderFilter 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName;\\nmodelEditor -e \\n -pluginObjects \\\"gpuCacheDisplayFilter\\\" 1 \\n $editorName\"\n"
+ "\t\t\t\t\t\"modelPanel -edit -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels $panelName;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"default\\\" \\n -displayAppearance \\\"smoothShaded\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -holdOuts 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 0\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 0\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 16384\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -depthOfFieldPreview 1\\n -maxConstantTransparency 1\\n -rendererName \\\"vp2Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 1\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -particleInstancers 1\\n -fluids 1\\n -hairSystems 1\\n -follicles 1\\n -nCloths 1\\n -nParticles 1\\n -nRigids 1\\n -dynamicConstraints 1\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 1\\n -greasePencils 1\\n -shadows 0\\n -captureSequenceNumber -1\\n -width 2058\\n -height 1022\\n -sceneRenderFilter 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName;\\nmodelEditor -e \\n -pluginObjects \\\"gpuCacheDisplayFilter\\\" 1 \\n $editorName\"\n"
+ "\t\t\t\t$configName;\n\n setNamedPanelLayout (localizedPanelLabel(\"Current Layout\"));\n }\n\n panelHistory -e -clear mainPanelHistory;\n setFocus `paneLayout -q -p1 $gMainPane`;\n sceneUIReplacement -deleteRemaining;\n sceneUIReplacement -clear;\n\t}\n\n\ngrid -spacing 5 -size 12 -divisions 5 -displayAxes yes -displayGridLines yes -displayDivisionLines yes -displayPerspectiveLabels no -displayOrthographicLabels no -displayAxesBold yes -perspectiveLabelPosition axis -orthographicLabelPosition edge;\nviewManip -drawCompass 0 -compassAngle 0 -frontParameters \"\" -homeParameters \"\" -selectionLockParameters \"\";\n}\n");
setAttr ".st" 3;
select -ne :time1;
setAttr -av -k on ".cch";
setAttr -cb on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
setAttr -k on ".o" 1;
setAttr -k on ".unw" 1;
setAttr -k on ".etw";
setAttr -k on ".tps";
setAttr -k on ".tms";
lockNode -l 1 ;
select -ne :hardwareRenderingGlobals;
setAttr ".otfna" -type "stringArray" 18 "NURBS Curves" "NURBS Surfaces" "Polygons" "Subdiv Surfaces" "Particles" "Fluids" "Image Planes" "UI:" "Lights" "Cameras" "Locators" "Joints" "IK Handles" "Deformers" "Motion Trails" "Components" "Misc. UI" "Ornaments" ;
setAttr ".otfva" -type "Int32Array" 18 0 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 ;
select -ne :renderPartition;
setAttr -k on ".cch";
setAttr -cb on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
setAttr -s 2 ".st";
setAttr -cb on ".an";
setAttr -cb on ".pt";
lockNode -l 1 ;
select -ne :renderGlobalsList1;
setAttr -k on ".cch";
setAttr -cb on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
select -ne :defaultShaderList1;
setAttr -k on ".cch";
setAttr -cb on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
setAttr -s 4 ".s";
select -ne :postProcessList1;
setAttr -k on ".cch";
setAttr -cb on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
setAttr -s 2 ".p";
select -ne :defaultRenderingList1;
setAttr -s 3 ".r";
select -ne :initialShadingGroup;
setAttr -k on ".cch";
setAttr -cb on ".ihi";
setAttr -av -k on ".nds";
setAttr -cb on ".bnm";
setAttr -s 3 ".dsm";
setAttr -k on ".mwc";
setAttr -cb on ".an";
setAttr -cb on ".il";
setAttr -cb on ".vo";
setAttr -cb on ".eo";
setAttr -cb on ".fo";
setAttr -cb on ".epo";
setAttr -k on ".ro" yes;
lockNode -l 1 ;
select -ne :initialParticleSE;
setAttr -av -k on ".cch";
setAttr -cb on ".ihi";
setAttr -av -k on ".nds";
setAttr -cb on ".bnm";
setAttr -k on ".mwc";
setAttr -cb on ".an";
setAttr -cb on ".il";
setAttr -cb on ".vo";
setAttr -cb on ".eo";
setAttr -cb on ".fo";
setAttr -cb on ".epo";
setAttr -k on ".ro" yes;
select -ne :defaultRenderGlobals;
setAttr ".ep" 1;
select -ne :defaultResolution;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -av ".w" 640;
setAttr -av ".h" 480;
setAttr -k on ".pa" 1;
setAttr -k on ".al";
setAttr -av ".dar" 1.3333332538604736;
setAttr -k on ".ldar";
setAttr -k on ".off";
setAttr -k on ".fld";
setAttr -k on ".zsl";
select -ne :defaultLightSet;
setAttr -k on ".cch";
setAttr -k on ".ihi";
setAttr -av -k on ".nds";
setAttr -k on ".bnm";
setAttr -k on ".mwc";
setAttr -k on ".an";
setAttr -k on ".il";
setAttr -k on ".vo";
setAttr -k on ".eo";
setAttr -k on ".fo";
setAttr -k on ".epo";
setAttr -k on ".ro" yes;
select -ne :defaultObjectSet;
setAttr ".ro" yes;
lockNode -l 1 ;
select -ne :defaultColorMgtGlobals;
setAttr ".cme" no;
select -ne :hardwareRenderGlobals;
setAttr -k on ".cch";
setAttr -cb on ".ihi";
setAttr -k on ".nds";
setAttr -cb on ".bnm";
setAttr ".ctrs" 256;
setAttr ".btrs" 512;
setAttr -k off ".fbfm";
setAttr -k off -cb on ".ehql";
setAttr -k off -cb on ".eams";
setAttr -k off -cb on ".eeaa";
setAttr -k off -cb on ".engm";
setAttr -k off -cb on ".mes";
setAttr -k off -cb on ".emb";
setAttr -av -k off -cb on ".mbbf";
setAttr -k off -cb on ".mbs";
setAttr -k off -cb on ".trm";
setAttr -k off -cb on ".tshc";
setAttr -k off ".enpt";
setAttr -k off -cb on ".clmt";
setAttr -k off -cb on ".tcov";
setAttr -k off -cb on ".lith";
setAttr -k off -cb on ".sobc";
setAttr -k off -cb on ".cuth";
setAttr -k off -cb on ".hgcd";
setAttr -k off -cb on ".hgci";
setAttr -k off -cb on ".mgcs";
setAttr -k off -cb on ".twa";
setAttr -k off -cb on ".twz";
setAttr -k on ".hwcc";
setAttr -k on ".hwdp";
setAttr -k on ".hwql";
setAttr -k on ".hwfr";
select -ne :ikSystem;
setAttr -k on ".cch";
setAttr -k on ".ihi";
setAttr -k on ".nds";
setAttr -k on ".bnm";
setAttr -av ".gsn";
setAttr -k on ".gsv";
setAttr -s 4 ".sol";
connectAttr "lockedNode_translateZ.o" "srcSphereRN.phl[1]";
connectAttr "srcSphere:sphere_testVectorX.o" "srcSphereRN.phl[2]";
connectAttr "srcSphere:sphere_testVectorY.o" "srcSphereRN.phl[3]";
connectAttr "srcSphere:sphere_testVectorZ.o" "srcSphereRN.phl[4]";
connectAttr "srcSphere:sphere_testEnum.o" "srcSphereRN.phl[5]";
connectAttr "srcSphere:sphere_testFloat.o" "srcSphereRN.phl[6]";
connectAttr "srcSphere:sphere_testBoolean.o" "srcSphereRN.phl[7]";
connectAttr "srcSphere:sphere_testInteger.o" "srcSphereRN.phl[8]";
connectAttr "srcSphere:sphere_translateY.o" "srcSphereRN.phl[9]";
connectAttr "srcSphere:sphere_translateX.o" "srcSphereRN.phl[10]";
connectAttr "srcSphere:sphere_translateZ.o" "srcSphereRN.phl[11]";
connectAttr "srcSphere:sphere_rotateX.o" "srcSphereRN.phl[12]";
connectAttr "srcSphere:sphere_rotateZ.o" "srcSphereRN.phl[13]";
connectAttr "srcSphere:sphere_scaleX.o" "srcSphereRN.phl[14]";
connectAttr "srcSphere:sphere_scaleZ.o" "srcSphereRN.phl[15]";
connectAttr "srcSphere:sphere_visibility.o" "srcSphereRN.phl[16]";
connectAttr "|group|offset|lockedNode|sphere.msg" "group.testMessage" -l on;
connectAttr "|group|offset|lockedNode|sphere.ty" "|group|offset|lockedNode|sphere.testConnect"
;
connectAttr "sphere_testAnimated.o" "|group|offset|lockedNode|sphere.testAnimated"
;
connectAttr "group.msg" "|group|offset|lockedNode|sphere.testMessage" -l on;
connectAttr "srcPolySphere.out" "|group|offset|lockedNode|sphere|sphereShape.i";
connectAttr "|group1|offset|lockedNode|sphere.msg" "group1.testMessage" -l on;
connectAttr "|group1|offset|lockedNode|sphere.ty" "|group1|offset|lockedNode|sphere.testConnect"
;
connectAttr "sphere_testAnimated1.o" "|group1|offset|lockedNode|sphere.testAnimated"
;
connectAttr "group1.msg" "|group1|offset|lockedNode|sphere.testMessage" -l on;
connectAttr "srcPolySphere1.out" "|group1|offset|lockedNode|sphere|sphereShape.i"
;
relationship "link" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message";
relationship "link" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message";
relationship "shadowLink" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message";
relationship "shadowLink" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message";
connectAttr "layerManager.dli[0]" "defaultLayer.id";
connectAttr "renderLayerManager.rlmi[0]" "defaultRenderLayer.rlid";
connectAttr "dstSphere:renderLayerManager.rlmi[0]" "dstSphere:defaultRenderLayer.rlid"
;
connectAttr "defaultRenderLayer.msg" ":defaultRenderingList1.r" -na;
connectAttr "dstSphere:defaultRenderLayer.msg" ":defaultRenderingList1.r" -na;
connectAttr "|group|offset|lockedNode|sphere|sphereShape.iog" ":initialShadingGroup.dsm"
-na;
connectAttr "|group1|offset|lockedNode|sphere|sphereShape.iog" ":initialShadingGroup.dsm"
-na;
// End of test_non_unique_names.ma

View File

@@ -0,0 +1,151 @@
{
"metadata": {
"mayaSceneFile": "C:/Users/hovel/Dropbox/git/site-packages/studiolibrary/packages/mutils/tests/data/test_non_unique_names.ma",
"version": "1.0.0",
"user": "Hovel",
"mayaVersion": "2017",
"ctime": "1518341544"
}
,
"objects": {
"srcSphere:offset": {
"attrs": {}
},
"srcSphere:sphere": {
"attrs": {
"testInteger": {
"type": "long",
"value": 5
},
"testProxy": {
"type": "double",
"value": 1.0
},
"scaleY": {
"type": "double",
"value": 4.66
},
"testLimit": {
"type": "double",
"value": 10.0
},
"testConnect": {
"type": "double",
"value": 8.0
},
"testEnum": {
"type": "enum",
"value": 1
},
"scaleX": {
"type": "double",
"value": 0.25
},
"testString": {
"type": "string",
"value": "Hello world"
},
"scaleZ": {
"type": "double",
"value": 0.5
},
"rotateX": {
"type": "doubleAngle",
"value": 45.0
},
"rotateY": {
"type": "doubleAngle",
"value": 50.0
},
"rotateZ": {
"type": "doubleAngle",
"value": 90.0
},
"translateX": {
"type": "doubleLinear",
"value": 0.0
},
"translateY": {
"type": "doubleLinear",
"value": 8.0
},
"translateZ": {
"type": "doubleLinear",
"value": -12.0
},
"visibility": {
"type": "bool",
"value": true
},
"testFloat": {
"type": "double",
"value": 0.666
},
"testAnimated": {
"type": "double",
"value": 0.0
},
"testVectorX": {
"type": "double",
"value": 0.2
},
"testVectorY": {
"type": "double",
"value": 1.4
},
"testVectorZ": {
"type": "double",
"value": 2.6
},
"testBoolean": {
"type": "bool",
"value": true
}
}
},
"srcSphere:lockedNode": {
"attrs": {
"translateX": {
"type": "doubleLinear",
"value": 0.0
},
"translateY": {
"type": "doubleLinear",
"value": 5.0
},
"translateZ": {
"type": "doubleLinear",
"value": 0.0
},
"scaleX": {
"type": "double",
"value": 1.0
},
"scaleY": {
"type": "double",
"value": 1.0
},
"visibility": {
"type": "bool",
"value": true
},
"rotateX": {
"type": "doubleAngle",
"value": 0.0
},
"rotateY": {
"type": "doubleAngle",
"value": 0.0
},
"rotateZ": {
"type": "doubleAngle",
"value": 0.0
},
"scaleZ": {
"type": "double",
"value": 1.0
}
}
}
}
}

View File

@@ -0,0 +1 @@
{'end': 24, 'description': 'eded', 'scene': '', 'start': 1, 'mtime': '1391012417', 'owner': 'tlhomme', 'ctime': '1391012417'}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,34 @@
{'srcSphere:sphere': {
'rotateX': ('doubleAngle', 45.0),
'testEnum': ('enum', 1),
'translateX': ('doubleLinear', 0.0),
'translateY': ('doubleLinear', 8.0),
'translateZ': ('doubleLinear', -12.0),
'rotateY': ('doubleAngle', 50.0),
'testFloat': ('double', 0.66600000000000004),
'testAnimated': ('double', 0.0),
'scaleX': ('double', 0.25),
'scaleY': ('double', 4.6600000000000001),
'visibility': ('bool', True),
'testString': ('string', u'Hello world'),
'testVectorX': ('double', 0.20000000000000001),
'testVectorY': ('double', 1.3999999999999999),
'rotateZ': ('doubleAngle', 90.0),
'testVectorZ': ('double', 2.6000000000000001),
'scaleZ': ('double', 0.5),
'testInteger': ('long', 5),
'testBoolean': ('bool', True),
'testConnect': ('double', 8.0)
},
'srcSphere:lockedNode': {
'translateX': ('doubleLinear', 0.0),
'translateY': ('doubleLinear', 5.0),
'translateZ': ('doubleLinear', 0.0),
'scaleX': ('double', 1.0),
'scaleY': ('double', 1.0),
'visibility': ('bool', True),
'rotateX': ('doubleAngle', 0.0),
'rotateY': ('doubleAngle', 0.0),
'rotateZ': ('doubleAngle', 0.0),
'scaleZ': ('double', 1.0)
}}

View File

@@ -0,0 +1,269 @@
//Maya ASCII 2012 scene
//Name: test_pose_attributes.ma
//Last modified: Sun, May 11, 2014 11:20:29 AM
//Codeset: 1252
file -rdi 1 -ns "srcSphere" -rfn "srcSphereRN" "C:/Users/hovel/Dropbox/packages/python/Lib/site-packages/studioLibrary/site-packages/mutils/tests/data/sphere.ma";
file -rdi 1 -ns "dstSphere" -rfn "dstSphereRN" "C:/Users/hovel/Dropbox/packages/python/Lib/site-packages/studioLibrary/site-packages/mutils/tests/data/sphere.ma";
file -r -ns "srcSphere" -dr 1 -rfn "srcSphereRN" "C:/Users/hovel/Dropbox/packages/python/Lib/site-packages/studioLibrary/site-packages/mutils/tests/data/sphere.ma";
file -r -ns "dstSphere" -dr 1 -rfn "dstSphereRN" "C:/Users/hovel/Dropbox/packages/python/Lib/site-packages/studioLibrary/site-packages/mutils/tests/data/sphere.ma";
requires maya "2011";
currentUnit -l centimeter -a degree -t film;
fileInfo "application" "maya";
fileInfo "product" "Maya 2014";
fileInfo "version" "2014 x64";
fileInfo "cutIdentifier" "201303010241-864206";
fileInfo "osv" "Microsoft Windows 7 Ultimate Edition, 64-bit Windows 7 Service Pack 1 (Build 7601)\n";
createNode transform -s -n "persp";
setAttr ".v" no;
setAttr ".t" -type "double3" -28.491244113009635 26.169676127690515 68.655966560486604 ;
setAttr ".r" -type "double3" -16.538352729583153 -22.60000000001666 4.306379281917478e-016 ;
createNode camera -s -n "perspShape" -p "persp";
setAttr -k off ".v" no;
setAttr ".fl" 34.999999999999993;
setAttr ".coi" 76.176692107312178;
setAttr ".imn" -type "string" "persp";
setAttr ".den" -type "string" "persp_depth";
setAttr ".man" -type "string" "persp_mask";
setAttr ".hc" -type "string" "viewSet -p %camera";
createNode transform -s -n "top";
setAttr ".v" no;
setAttr ".t" -type "double3" 0 100.1 0 ;
setAttr ".r" -type "double3" -89.999999999999986 0 0 ;
createNode camera -s -n "topShape" -p "top";
setAttr -k off ".v" no;
setAttr ".rnd" no;
setAttr ".coi" 100.1;
setAttr ".ow" 30;
setAttr ".imn" -type "string" "top";
setAttr ".den" -type "string" "top_depth";
setAttr ".man" -type "string" "top_mask";
setAttr ".hc" -type "string" "viewSet -t %camera";
setAttr ".o" yes;
createNode transform -s -n "front";
setAttr ".v" no;
setAttr ".t" -type "double3" 2.0350096678112575 0.39361762628711539 100.1 ;
createNode camera -s -n "frontShape" -p "front";
setAttr -k off ".v" no;
setAttr ".rnd" no;
setAttr ".coi" 100.1;
setAttr ".ow" 61.766282942468983;
setAttr ".imn" -type "string" "front";
setAttr ".den" -type "string" "front_depth";
setAttr ".man" -type "string" "front_mask";
setAttr ".hc" -type "string" "viewSet -f %camera";
setAttr ".o" yes;
createNode transform -s -n "side";
setAttr ".v" no;
setAttr ".t" -type "double3" 100.1 0 0 ;
setAttr ".r" -type "double3" 0 89.999999999999986 0 ;
createNode camera -s -n "sideShape" -p "side";
setAttr -k off ".v" no;
setAttr ".rnd" no;
setAttr ".coi" 100.1;
setAttr ".ow" 30;
setAttr ".imn" -type "string" "side";
setAttr ".den" -type "string" "side_depth";
setAttr ".man" -type "string" "side_mask";
setAttr ".hc" -type "string" "viewSet -s %camera";
setAttr ".o" yes;
createNode lightLinker -s -n "lightLinker1";
setAttr -s 2 ".lnk";
setAttr -s 2 ".slnk";
createNode displayLayerManager -n "layerManager";
createNode displayLayer -n "defaultLayer";
createNode renderLayerManager -n "renderLayerManager";
createNode renderLayer -n "defaultRenderLayer";
setAttr ".g" yes;
createNode script -n "uiConfigurationScriptNode";
setAttr ".b" -type "string" (
"// Maya Mel UI Configuration File.\n//\n// This script is machine generated. Edit at your own risk.\n//\n//\n\nglobal string $gMainPane;\nif (`paneLayout -exists $gMainPane`) {\n\n\tglobal int $gUseScenePanelConfig;\n\tint $useSceneConfig = $gUseScenePanelConfig;\n\tint $menusOkayInPanels = `optionVar -q allowMenusInPanels`;\tint $nVisPanes = `paneLayout -q -nvp $gMainPane`;\n\tint $nPanes = 0;\n\tstring $editorName;\n\tstring $panelName;\n\tstring $itemFilterName;\n\tstring $panelConfig;\n\n\t//\n\t// get current state of the UI\n\t//\n\tsceneUIReplacement -update $gMainPane;\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Top View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Top View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"top\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n"
+ " -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 8192\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -maxConstantTransparency 1\n -rendererName \"base_OpenGL_Renderer\" \n"
+ " -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n"
+ " -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Top View\")) -mbv $menusOkayInPanels $panelName;\n"
+ "\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"top\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 8192\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -maxConstantTransparency 1\n"
+ " -rendererName \"base_OpenGL_Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n"
+ " -ikHandles 1\n -deformers 1\n -dynamics 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Side View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Side View\")) -mbv $menusOkayInPanels `;\n"
+ "\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"side\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 8192\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n"
+ " -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -maxConstantTransparency 1\n -rendererName \"base_OpenGL_Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n"
+ " -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n"
+ " $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Side View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"side\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 8192\n -fogging 0\n -fogSource \"fragment\" \n"
+ " -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -maxConstantTransparency 1\n -rendererName \"base_OpenGL_Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n"
+ " -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Front View\")) `;\n"
+ "\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Front View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"front\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n"
+ " -textureMaxSize 8192\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -maxConstantTransparency 1\n -rendererName \"base_OpenGL_Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n"
+ " -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n"
+ " -shadows 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Front View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"front\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n"
+ " -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 8192\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -maxConstantTransparency 1\n -rendererName \"base_OpenGL_Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n"
+ " -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n"
+ " modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"modelPanel\" (localizedPanelLabel(\"Persp View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n"
+ " -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 8192\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -maxConstantTransparency 1\n -rendererName \"base_OpenGL_Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n -occlusionCulling 0\n"
+ " -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 0\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -fluids 0\n -hairSystems 0\n -follicles 0\n -nCloths 0\n -nParticles 0\n -nRigids 0\n -dynamicConstraints 0\n -locators 1\n -manipulators 1\n -pluginShapes 1\n"
+ " -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 0\n -greasePencils 1\n -shadows 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tmodelPanel -edit -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n modelEditor -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n"
+ " -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 8192\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -maxConstantTransparency 1\n -rendererName \"base_OpenGL_Renderer\" \n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 256 256 \n -bumpResolution 512 512 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 1\n"
+ " -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 0\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -fluids 0\n -hairSystems 0\n -follicles 0\n -nCloths 0\n -nParticles 0\n -nRigids 0\n -dynamicConstraints 0\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n"
+ " -strokes 1\n -motionTrails 1\n -clipGhosts 0\n -greasePencils 1\n -shadows 0\n $editorName;\n modelEditor -e -viewSelected 0 $editorName;\n modelEditor -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"outlinerPanel\" (localizedPanelLabel(\"Outliner\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `outlinerPanel -unParent -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels `;\n\t\t\t$editorName = $panelName;\n outlinerEditor -e \n -docTag \"isolOutln_fromSeln\" \n -showShapes 1\n -showReferenceNodes 1\n -showReferenceMembers 0\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n"
+ " -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n"
+ " -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\toutlinerPanel -edit -l (localizedPanelLabel(\"Outliner\")) -mbv $menusOkayInPanels $panelName;\n\t\t$editorName = $panelName;\n outlinerEditor -e \n -docTag \"isolOutln_fromSeln\" \n -showShapes 1\n -showReferenceNodes 1\n -showReferenceMembers 0\n -showAttributes 0\n -showConnected 0\n -showAnimCurvesOnly 0\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n"
+ " -autoExpand 0\n -showDagOnly 1\n -showAssets 1\n -showContainedOnly 1\n -showPublishedAsConnected 0\n -showContainerContents 1\n -ignoreDagHierarchy 0\n -expandConnections 0\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 0\n -highlightActive 1\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"defaultSetFilter\" \n -showSetMembers 1\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n"
+ " -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\tif ($useSceneConfig) {\n\t\toutlinerPanel -e -to $panelName;\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"graphEditor\" (localizedPanelLabel(\"Graph Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"graphEditor\" -l (localizedPanelLabel(\"Graph Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showReferenceNodes 0\n -showReferenceMembers 1\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 1\n"
+ " -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 1\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 1\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 1\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n"
+ " -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 1\n -mapMotionTrails 1\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"GraphEd\");\n animCurveEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 1\n -displayInfinities 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -showResults \"off\" \n -showBufferCurves \"off\" \n -smoothness \"fine\" \n -resultSamples 1\n"
+ " -resultScreenSamples 0\n -resultUpdate \"delayed\" \n -showUpstreamCurves 1\n -stackedCurves 0\n -stackedCurvesMin -1\n -stackedCurvesMax 1\n -stackedCurvesSpace 0.2\n -displayNormalized 0\n -preSelectionHighlight 0\n -constrainDrag 0\n -classicMode 1\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Graph Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showReferenceNodes 0\n -showReferenceMembers 1\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 1\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 1\n"
+ " -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 1\n -showCompounds 0\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 1\n -doNotSelectNewObjects 0\n -dropIsParent 1\n -transmitFilters 1\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n"
+ " -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 1\n -mapMotionTrails 1\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"GraphEd\");\n animCurveEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 1\n -displayInfinities 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -showResults \"off\" \n -showBufferCurves \"off\" \n -smoothness \"fine\" \n -resultSamples 1\n -resultScreenSamples 0\n -resultUpdate \"delayed\" \n -showUpstreamCurves 1\n -stackedCurves 0\n"
+ " -stackedCurvesMin -1\n -stackedCurvesMax 1\n -stackedCurvesSpace 0.2\n -displayNormalized 0\n -preSelectionHighlight 0\n -constrainDrag 0\n -classicMode 1\n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dopeSheetPanel\" (localizedPanelLabel(\"Dope Sheet\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dopeSheetPanel\" -l (localizedPanelLabel(\"Dope Sheet\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n"
+ " -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 0\n -showCompounds 1\n -showLeafs 1\n -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 1\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n"
+ " -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 1\n $editorName;\n\n\t\t\t$editorName = ($panelName+\"DopeSheetEd\");\n dopeSheetEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -outliner \"dopeSheetPanel1OutlineEd\" \n -showSummary 1\n -showScene 0\n -hierarchyBelow 0\n -showTicks 0\n -selectionWindow 0 0 0 0 \n"
+ " $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dope Sheet\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"OutlineEd\");\n outlinerEditor -e \n -showShapes 1\n -showReferenceNodes 0\n -showReferenceMembers 0\n -showAttributes 1\n -showConnected 1\n -showAnimCurvesOnly 1\n -showMuteInfo 0\n -organizeByLayer 1\n -showAnimLayerWeight 1\n -autoExpandLayers 1\n -autoExpand 0\n -showDagOnly 0\n -showAssets 1\n -showContainedOnly 0\n -showPublishedAsConnected 0\n -showContainerContents 0\n -ignoreDagHierarchy 0\n -expandConnections 1\n -showUpstreamCurves 1\n -showUnitlessCurves 0\n -showCompounds 1\n -showLeafs 1\n"
+ " -showNumericAttrsOnly 1\n -highlightActive 0\n -autoSelectNewObjects 0\n -doNotSelectNewObjects 1\n -dropIsParent 1\n -transmitFilters 0\n -setFilter \"0\" \n -showSetMembers 0\n -allowMultiSelection 1\n -alwaysToggleSelect 0\n -directSelect 0\n -displayMode \"DAG\" \n -expandObjects 0\n -setsIgnoreFilters 1\n -containersIgnoreFilters 0\n -editAttrName 0\n -showAttrValues 0\n -highlightSecondary 0\n -showUVAttrsOnly 0\n -showTextureNodesOnly 0\n -attrAlphaOrder \"default\" \n -animLayerFilterOptions \"allAffecting\" \n -sortOrder \"none\" \n -longNames 0\n -niceNames 1\n -showNamespace 1\n -showPinIcons 0\n -mapMotionTrails 1\n $editorName;\n"
+ "\t\t\t$editorName = ($panelName+\"DopeSheetEd\");\n dopeSheetEditor -e \n -displayKeys 1\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -autoFit 0\n -snapTime \"integer\" \n -snapValue \"none\" \n -outliner \"dopeSheetPanel1OutlineEd\" \n -showSummary 1\n -showScene 0\n -hierarchyBelow 0\n -showTicks 0\n -selectionWindow 0 0 0 0 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"clipEditorPanel\" (localizedPanelLabel(\"Trax Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"clipEditorPanel\" -l (localizedPanelLabel(\"Trax Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = clipEditorNameFromPanel($panelName);\n"
+ " clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"integer\" \n -manageSequencer 0 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Trax Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = clipEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"integer\" \n -manageSequencer 0 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n"
+ "\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"sequenceEditorPanel\" (localizedPanelLabel(\"Camera Sequencer\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"sequenceEditorPanel\" -l (localizedPanelLabel(\"Camera Sequencer\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = sequenceEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -manageSequencer 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Camera Sequencer\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = sequenceEditorNameFromPanel($panelName);\n clipEditor -e \n -displayKeys 0\n -displayTangents 0\n"
+ " -displayActiveKeys 0\n -displayActiveKeyTangents 0\n -displayInfinities 0\n -autoFit 0\n -snapTime \"none\" \n -snapValue \"none\" \n -manageSequencer 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperGraphPanel\" (localizedPanelLabel(\"Hypergraph Hierarchy\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"hyperGraphPanel\" -l (localizedPanelLabel(\"Hypergraph Hierarchy\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"HyperGraphEd\");\n hyperGraph -e \n -graphLayoutStyle \"hierarchicalLayout\" \n -orientation \"horiz\" \n -mergeConnections 1\n -zoom 1\n -animateTransition 0\n -showRelationships 1\n -showShapes 0\n -showDeformers 0\n"
+ " -showExpressions 0\n -showConstraints 0\n -showConnectionFromSelected 0\n -showConnectionToSelected 0\n -showUnderworld 0\n -showInvisible 0\n -transitionFrames 1\n -opaqueContainers 0\n -freeform 0\n -imagePosition 0 0 \n -imageScale 1\n -imageEnabled 0\n -graphType \"DAG\" \n -heatMapDisplay 0\n -updateSelection 1\n -updateNodeAdded 1\n -useDrawOverrideColor 0\n -limitGraphTraversal -1\n -range 0 0 \n -iconSize \"smallIcons\" \n -showCachedConnections 0\n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypergraph Hierarchy\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"HyperGraphEd\");\n hyperGraph -e \n -graphLayoutStyle \"hierarchicalLayout\" \n"
+ " -orientation \"horiz\" \n -mergeConnections 1\n -zoom 1\n -animateTransition 0\n -showRelationships 1\n -showShapes 0\n -showDeformers 0\n -showExpressions 0\n -showConstraints 0\n -showConnectionFromSelected 0\n -showConnectionToSelected 0\n -showUnderworld 0\n -showInvisible 0\n -transitionFrames 1\n -opaqueContainers 0\n -freeform 0\n -imagePosition 0 0 \n -imageScale 1\n -imageEnabled 0\n -graphType \"DAG\" \n -heatMapDisplay 0\n -updateSelection 1\n -updateNodeAdded 1\n -useDrawOverrideColor 0\n -limitGraphTraversal -1\n -range 0 0 \n -iconSize \"smallIcons\" \n -showCachedConnections 0\n $editorName;\n\t\tif (!$useSceneConfig) {\n"
+ "\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"hyperShadePanel\" (localizedPanelLabel(\"Hypershade\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"hyperShadePanel\" -l (localizedPanelLabel(\"Hypershade\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Hypershade\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"visorPanel\" (localizedPanelLabel(\"Visor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"visorPanel\" -l (localizedPanelLabel(\"Visor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Visor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n"
+ "\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"nodeEditorPanel\" (localizedPanelLabel(\"Node Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"nodeEditorPanel\" -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels `;\n\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n -defaultPinnedState 0\n -ignoreAssets 1\n -additiveGraphingMode 0\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -keyReleaseCommand \"nodeEdKeyReleaseCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n -gridVisibility 1\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n"
+ " -island 0\n -showNamespace 1\n -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -syncedSelection 1\n -extendToShapes 1\n $editorName;;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Node Editor\")) -mbv $menusOkayInPanels $panelName;\n\n\t\t\t$editorName = ($panelName+\"NodeEditorEd\");\n nodeEditor -e \n -allAttributes 0\n -allNodes 0\n -autoSizeNodes 1\n -createNodeCommand \"nodeEdCreateNodeCommand\" \n -defaultPinnedState 0\n -ignoreAssets 1\n -additiveGraphingMode 0\n -settingsChangedCallback \"nodeEdSyncControls\" \n -traversalDepthLimit -1\n -keyPressCommand \"nodeEdKeyPressCommand\" \n -keyReleaseCommand \"nodeEdKeyReleaseCommand\" \n -nodeTitleMode \"name\" \n -gridSnap 0\n"
+ " -gridVisibility 1\n -popupMenuScript \"nodeEdBuildPanelMenus\" \n -island 0\n -showNamespace 1\n -showShapes 1\n -showSGShapes 0\n -showTransforms 1\n -syncedSelection 1\n -extendToShapes 1\n $editorName;;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"createNodePanel\" (localizedPanelLabel(\"Create Node\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"createNodePanel\" -l (localizedPanelLabel(\"Create Node\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Create Node\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"polyTexturePlacementPanel\" (localizedPanelLabel(\"UV Texture Editor\")) `;\n"
+ "\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"polyTexturePlacementPanel\" -l (localizedPanelLabel(\"UV Texture Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"UV Texture Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"renderWindowPanel\" (localizedPanelLabel(\"Render View\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"renderWindowPanel\" -l (localizedPanelLabel(\"Render View\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Render View\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextPanel \"blendShapePanel\" (localizedPanelLabel(\"Blend Shape\")) `;\n"
+ "\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\tblendShapePanel -unParent -l (localizedPanelLabel(\"Blend Shape\")) -mbv $menusOkayInPanels ;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tblendShapePanel -edit -l (localizedPanelLabel(\"Blend Shape\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynRelEdPanel\" (localizedPanelLabel(\"Dynamic Relationships\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dynRelEdPanel\" -l (localizedPanelLabel(\"Dynamic Relationships\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Dynamic Relationships\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"relationshipPanel\" (localizedPanelLabel(\"Relationship Editor\")) `;\n"
+ "\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"relationshipPanel\" -l (localizedPanelLabel(\"Relationship Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Relationship Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"referenceEditorPanel\" (localizedPanelLabel(\"Reference Editor\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"referenceEditorPanel\" -l (localizedPanelLabel(\"Reference Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Reference Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"componentEditorPanel\" (localizedPanelLabel(\"Component Editor\")) `;\n"
+ "\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"componentEditorPanel\" -l (localizedPanelLabel(\"Component Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Component Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"dynPaintScriptedPanelType\" (localizedPanelLabel(\"Paint Effects\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"dynPaintScriptedPanelType\" -l (localizedPanelLabel(\"Paint Effects\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Paint Effects\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"scriptEditorPanel\" (localizedPanelLabel(\"Script Editor\")) `;\n"
+ "\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"scriptEditorPanel\" -l (localizedPanelLabel(\"Script Editor\")) -mbv $menusOkayInPanels `;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Script Editor\")) -mbv $menusOkayInPanels $panelName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\tif ($useSceneConfig) {\n\t\tscriptedPanel -e -to $panelName;\n\t}\n\n\n\t$panelName = `sceneUIReplacement -getNextScriptedPanel \"Stereo\" (localizedPanelLabel(\"Stereo\")) `;\n\tif (\"\" == $panelName) {\n\t\tif ($useSceneConfig) {\n\t\t\t$panelName = `scriptedPanel -unParent -type \"Stereo\" -l (localizedPanelLabel(\"Stereo\")) -mbv $menusOkayInPanels `;\nstring $editorName = ($panelName+\"Editor\");\n stereoCameraView -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n"
+ " -wireframeOnShaded 0\n -headsUpDisplay 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 8192\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -maxConstantTransparency 1\n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 4 4 \n -bumpResolution 4 4 \n"
+ " -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 0\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n"
+ " -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -displayMode \"centerEye\" \n -viewColor 0 0 0 1 \n -useCustomBackground 1\n $editorName;\n stereoCameraView -e -viewSelected 0 $editorName;\n stereoCameraView -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\t}\n\t} else {\n\t\t$label = `panel -q -label $panelName`;\n\t\tscriptedPanel -edit -l (localizedPanelLabel(\"Stereo\")) -mbv $menusOkayInPanels $panelName;\n"
+ "string $editorName = ($panelName+\"Editor\");\n stereoCameraView -e \n -camera \"persp\" \n -useInteractiveMode 0\n -displayLights \"default\" \n -displayAppearance \"wireframe\" \n -activeOnly 0\n -ignorePanZoom 0\n -wireframeOnShaded 0\n -headsUpDisplay 1\n -selectionHiliteDisplay 1\n -useDefaultMaterial 0\n -bufferMode \"double\" \n -twoSidedLighting 1\n -backfaceCulling 0\n -xray 0\n -jointXray 0\n -activeComponentsXray 0\n -displayTextures 0\n -smoothWireframe 0\n -lineWidth 1\n -textureAnisotropic 0\n -textureHilight 1\n -textureSampling 2\n -textureDisplay \"modulate\" \n -textureMaxSize 8192\n -fogging 0\n -fogSource \"fragment\" \n -fogMode \"linear\" \n"
+ " -fogStart 0\n -fogEnd 100\n -fogDensity 0.1\n -fogColor 0.5 0.5 0.5 1 \n -maxConstantTransparency 1\n -objectFilterShowInHUD 1\n -isFiltered 0\n -colorResolution 4 4 \n -bumpResolution 4 4 \n -textureCompression 0\n -transparencyAlgorithm \"frontAndBackCull\" \n -transpInShadows 0\n -cullingOverride \"none\" \n -lowQualityLighting 0\n -maximumNumHardwareLights 0\n -occlusionCulling 0\n -shadingModel 0\n -useBaseRenderer 0\n -useReducedRenderer 0\n -smallObjectCulling 0\n -smallObjectThreshold -1 \n -interactiveDisableShadows 0\n -interactiveBackFaceCull 0\n -sortTransparent 1\n -nurbsCurves 1\n -nurbsSurfaces 1\n -polymeshes 1\n -subdivSurfaces 1\n"
+ " -planes 1\n -lights 1\n -cameras 1\n -controlVertices 1\n -hulls 1\n -grid 1\n -imagePlane 1\n -joints 1\n -ikHandles 1\n -deformers 1\n -dynamics 1\n -fluids 1\n -hairSystems 1\n -follicles 1\n -nCloths 1\n -nParticles 1\n -nRigids 1\n -dynamicConstraints 1\n -locators 1\n -manipulators 1\n -pluginShapes 1\n -dimensions 1\n -handles 1\n -pivots 1\n -textures 1\n -strokes 1\n -motionTrails 1\n -clipGhosts 1\n -greasePencils 1\n -shadows 0\n -displayMode \"centerEye\" \n -viewColor 0 0 0 1 \n -useCustomBackground 1\n $editorName;\n stereoCameraView -e -viewSelected 0 $editorName;\n"
+ " stereoCameraView -e \n -pluginObjects \"gpuCacheDisplayFilter\" 1 \n $editorName;\n\t\tif (!$useSceneConfig) {\n\t\t\tpanel -e -l $label $panelName;\n\t\t}\n\t}\n\n\n\tif ($useSceneConfig) {\n string $configName = `getPanel -cwl (localizedPanelLabel(\"Current Layout\"))`;\n if (\"\" != $configName) {\n\t\t\tpanelConfiguration -edit -label (localizedPanelLabel(\"Current Layout\")) \n\t\t\t\t-defaultImage \"vacantCell.xpm\"\n\t\t\t\t-image \"\"\n\t\t\t\t-sc false\n\t\t\t\t-configString \"global string $gMainPane; paneLayout -e -cn \\\"single\\\" -ps 1 100 100 $gMainPane;\"\n\t\t\t\t-removeAllPanels\n\t\t\t\t-ap false\n\t\t\t\t\t(localizedPanelLabel(\"Persp View\")) \n\t\t\t\t\t\"modelPanel\"\n"
+ "\t\t\t\t\t\"$panelName = `modelPanel -unParent -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels `;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"default\\\" \\n -displayAppearance \\\"wireframe\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 1\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 0\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 8192\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -maxConstantTransparency 1\\n -rendererName \\\"base_OpenGL_Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 0\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -fluids 0\\n -hairSystems 0\\n -follicles 0\\n -nCloths 0\\n -nParticles 0\\n -nRigids 0\\n -dynamicConstraints 0\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 0\\n -greasePencils 1\\n -shadows 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName;\\nmodelEditor -e \\n -pluginObjects \\\"gpuCacheDisplayFilter\\\" 1 \\n $editorName\"\n"
+ "\t\t\t\t\t\"modelPanel -edit -l (localizedPanelLabel(\\\"Persp View\\\")) -mbv $menusOkayInPanels $panelName;\\n$editorName = $panelName;\\nmodelEditor -e \\n -cam `findStartUpCamera persp` \\n -useInteractiveMode 0\\n -displayLights \\\"default\\\" \\n -displayAppearance \\\"wireframe\\\" \\n -activeOnly 0\\n -ignorePanZoom 0\\n -wireframeOnShaded 0\\n -headsUpDisplay 1\\n -selectionHiliteDisplay 1\\n -useDefaultMaterial 0\\n -bufferMode \\\"double\\\" \\n -twoSidedLighting 1\\n -backfaceCulling 0\\n -xray 0\\n -jointXray 0\\n -activeComponentsXray 0\\n -displayTextures 0\\n -smoothWireframe 0\\n -lineWidth 1\\n -textureAnisotropic 0\\n -textureHilight 1\\n -textureSampling 2\\n -textureDisplay \\\"modulate\\\" \\n -textureMaxSize 8192\\n -fogging 0\\n -fogSource \\\"fragment\\\" \\n -fogMode \\\"linear\\\" \\n -fogStart 0\\n -fogEnd 100\\n -fogDensity 0.1\\n -fogColor 0.5 0.5 0.5 1 \\n -maxConstantTransparency 1\\n -rendererName \\\"base_OpenGL_Renderer\\\" \\n -objectFilterShowInHUD 1\\n -isFiltered 0\\n -colorResolution 256 256 \\n -bumpResolution 512 512 \\n -textureCompression 0\\n -transparencyAlgorithm \\\"frontAndBackCull\\\" \\n -transpInShadows 0\\n -cullingOverride \\\"none\\\" \\n -lowQualityLighting 0\\n -maximumNumHardwareLights 1\\n -occlusionCulling 0\\n -shadingModel 0\\n -useBaseRenderer 0\\n -useReducedRenderer 0\\n -smallObjectCulling 0\\n -smallObjectThreshold -1 \\n -interactiveDisableShadows 0\\n -interactiveBackFaceCull 0\\n -sortTransparent 1\\n -nurbsCurves 1\\n -nurbsSurfaces 1\\n -polymeshes 1\\n -subdivSurfaces 1\\n -planes 1\\n -lights 1\\n -cameras 1\\n -controlVertices 1\\n -hulls 1\\n -grid 1\\n -imagePlane 0\\n -joints 1\\n -ikHandles 1\\n -deformers 1\\n -dynamics 1\\n -fluids 0\\n -hairSystems 0\\n -follicles 0\\n -nCloths 0\\n -nParticles 0\\n -nRigids 0\\n -dynamicConstraints 0\\n -locators 1\\n -manipulators 1\\n -pluginShapes 1\\n -dimensions 1\\n -handles 1\\n -pivots 1\\n -textures 1\\n -strokes 1\\n -motionTrails 1\\n -clipGhosts 0\\n -greasePencils 1\\n -shadows 0\\n $editorName;\\nmodelEditor -e -viewSelected 0 $editorName;\\nmodelEditor -e \\n -pluginObjects \\\"gpuCacheDisplayFilter\\\" 1 \\n $editorName\"\n"
+ "\t\t\t\t$configName;\n\n setNamedPanelLayout (localizedPanelLabel(\"Current Layout\"));\n }\n\n panelHistory -e -clear mainPanelHistory;\n setFocus `paneLayout -q -p1 $gMainPane`;\n sceneUIReplacement -deleteRemaining;\n sceneUIReplacement -clear;\n\t}\n\n\ngrid -spacing 5 -size 12 -divisions 5 -displayAxes yes -displayGridLines yes -displayDivisionLines yes -displayPerspectiveLabels no -displayOrthographicLabels no -displayAxesBold yes -perspectiveLabelPosition axis -orthographicLabelPosition edge;\nviewManip -drawCompass 1 -compassAngle 0 -frontParameters \"\" -homeParameters \"\" -selectionLockParameters \"\";\n}\n");
setAttr ".st" 3;
createNode script -n "sceneConfigurationScriptNode";
setAttr ".b" -type "string" "playbackOptions -min 1 -max 24 -ast 1 -aet 48 ";
setAttr ".st" 6;
createNode reference -n "srcSphereRN";
setAttr ".ed" -type "dataReferenceEdits"
"srcSphereRN"
"srcSphereRN" 0
"srcSphereRN" 14
2 "|srcSphere:group|srcSphere:sphere" "translate" " -type \"double3\" 0 8 -12"
2 "|srcSphere:group|srcSphere:sphere" "rotate" " -type \"double3\" 45 25 90"
2 "|srcSphere:group|srcSphere:sphere" "scale" " -type \"double3\" 0.25 1.5 0.5"
2 "|srcSphere:group|srcSphere:sphere" "testVector" " -k 1 -type \"double3\" 0.2 1.4 2.6"
2 "|srcSphere:group|srcSphere:sphere" "testVector" " -k 1"
2 "|srcSphere:group|srcSphere:sphere" "testVectorX" " -k 1"
2 "|srcSphere:group|srcSphere:sphere" "testVectorY" " -k 1"
2 "|srcSphere:group|srcSphere:sphere" "testVectorZ" " -k 1"
2 "|srcSphere:group|srcSphere:sphere" "testColor" " -type \"float3\" 0.18 0.6 0.18"
2 "|srcSphere:group|srcSphere:sphere" "testString" " -k 1 -type \"string\" \"Hello world\""
2 "|srcSphere:group|srcSphere:sphere" "testEnum" " -k 1 1"
2 "|srcSphere:group|srcSphere:sphere" "testFloat" " -k 1 0.666"
2 "|srcSphere:group|srcSphere:sphere" "testBoolean" " -k 1 1"
2 "|srcSphere:group|srcSphere:sphere" "testInteger" " -k 1 5";
setAttr ".ptag" -type "string" "";
lockNode -l 1 ;
createNode reference -n "dstSphereRN";
setAttr ".ed" -type "dataReferenceEdits"
"dstSphereRN"
"dstSphereRN" 0
"dstSphereRN" 13
2 "|dstSphere:group|dstSphere:sphere" "visibility" " 1"
2 "|dstSphere:group|dstSphere:sphere" "translate" " -type \"double3\" 0 0 0"
2 "|dstSphere:group|dstSphere:sphere" "rotate" " -type \"double3\" 0 0 0"
2 "|dstSphere:group|dstSphere:sphere" "scale" " -type \"double3\" 1 1 1"
2 "|dstSphere:group|dstSphere:sphere" "testVector" " -k 1 -type \"double3\" 0 0 0"
2 "|dstSphere:group|dstSphere:sphere" "testVector" " -k 1"
2 "|dstSphere:group|dstSphere:sphere" "testVectorX" " -k 1"
2 "|dstSphere:group|dstSphere:sphere" "testVectorY" " -k 1"
2 "|dstSphere:group|dstSphere:sphere" "testVectorZ" " -k 1"
2 "|dstSphere:group|dstSphere:sphere" "testEnum" " -k 1 2"
2 "|dstSphere:group|dstSphere:sphere" "testFloat" " -k 1 0"
2 "|dstSphere:group|dstSphere:sphere" "testBoolean" " -k 1 0"
2 "|dstSphere:group|dstSphere:sphere" "testInteger" " -k 1 0";
setAttr ".ptag" -type "string" "";
lockNode -l 1 ;
select -ne :time1;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr ".o" 1;
setAttr ".unw" 1;
select -ne :renderPartition;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -s 2 ".st";
select -ne :initialShadingGroup;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -s 2 ".dsm";
setAttr -k on ".mwc";
setAttr ".ro" yes;
select -ne :initialParticleSE;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -k on ".mwc";
setAttr ".ro" yes;
select -ne :defaultShaderList1;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -s 2 ".s";
select -ne :postProcessList1;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -s 2 ".p";
select -ne :defaultRenderingList1;
setAttr -s 3 ".r";
select -ne :renderGlobalsList1;
setAttr -k on ".cch";
setAttr -k on ".nds";
select -ne :defaultResolution;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -av ".w";
setAttr -av ".h";
setAttr -k on ".pa" 1;
setAttr -k on ".al";
setAttr -av ".dar";
setAttr -k on ".ldar";
setAttr -k on ".off";
setAttr -k on ".fld";
setAttr -k on ".zsl";
select -ne :defaultLightSet;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr -k on ".mwc";
setAttr ".ro" yes;
select -ne :hardwareRenderGlobals;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr ".ctrs" 256;
setAttr ".btrs" 512;
select -ne :hardwareRenderingGlobals;
setAttr ".otfna" -type "stringArray" 18 "NURBS Curves" "NURBS Surfaces" "Polygons" "Subdiv Surfaces" "Particles" "Fluids" "Image Planes" "UI:" "Lights" "Cameras" "Locators" "Joints" "IK Handles" "Deformers" "Motion Trails" "Components" "Misc. UI" "Ornaments" ;
setAttr ".otfva" -type "Int32Array" 18 0 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 ;
select -ne :defaultHardwareRenderGlobals;
setAttr -k on ".cch";
setAttr -k on ".nds";
setAttr ".fn" -type "string" "im";
setAttr ".res" -type "string" "ntsc_4d 646 485 1.333";
relationship "link" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message";
relationship "link" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message";
relationship "shadowLink" ":lightLinker1" ":initialShadingGroup.message" ":defaultLightSet.message";
relationship "shadowLink" ":lightLinker1" ":initialParticleSE.message" ":defaultLightSet.message";
connectAttr "layerManager.dli[0]" "defaultLayer.id";
connectAttr "renderLayerManager.rlmi[0]" "defaultRenderLayer.rlid";
connectAttr "defaultRenderLayer.msg" ":defaultRenderingList1.r" -na;
// End of test_pose_attributes.ma

View File

@@ -0,0 +1,151 @@
{
"metadata": {
"mayaSceneFile": "C:/Users/hovel/Dropbox/git/site-packages/studiolibrary/packages/mutils/tests/data/test_pose.ma",
"version": "1.0.0",
"user": "Hovel",
"mayaVersion": "2017",
"ctime": "1518341544"
}
,
"objects": {
"srcSphere:offset": {
"attrs": {}
},
"srcSphere:sphere": {
"attrs": {
"testInteger": {
"type": "long",
"value": 5
},
"testProxy": {
"type": "double",
"value": 1.0
},
"scaleY": {
"type": "double",
"value": 1.5
},
"testLimit": {
"type": "double",
"value": 10.0
},
"testConnect": {
"type": "double",
"value": 8.0
},
"testEnum": {
"type": "enum",
"value": 1
},
"scaleX": {
"type": "double",
"value": 0.25
},
"testString": {
"type": "string",
"value": "Hello world"
},
"scaleZ": {
"type": "double",
"value": 0.5
},
"rotateX": {
"type": "doubleAngle",
"value": 45.0
},
"rotateY": {
"type": "doubleAngle",
"value": 25.0
},
"rotateZ": {
"type": "doubleAngle",
"value": 90.0
},
"translateX": {
"type": "doubleLinear",
"value": 0.0
},
"translateY": {
"type": "doubleLinear",
"value": 8.0
},
"translateZ": {
"type": "doubleLinear",
"value": -12.0
},
"visibility": {
"type": "bool",
"value": true
},
"testFloat": {
"type": "double",
"value": 0.666
},
"testAnimated": {
"type": "double",
"value": 0.0
},
"testVectorX": {
"type": "double",
"value": 0.2
},
"testVectorY": {
"type": "double",
"value": 1.4
},
"testVectorZ": {
"type": "double",
"value": 2.6
},
"testBoolean": {
"type": "bool",
"value": true
}
}
},
"srcSphere:lockedNode": {
"attrs": {
"translateX": {
"type": "doubleLinear",
"value": 0.0
},
"translateY": {
"type": "doubleLinear",
"value": 0.0
},
"translateZ": {
"type": "doubleLinear",
"value": 0.0
},
"scaleX": {
"type": "double",
"value": 1.0
},
"scaleY": {
"type": "double",
"value": 1.0
},
"visibility": {
"type": "bool",
"value": true
},
"rotateX": {
"type": "doubleAngle",
"value": 0.0
},
"rotateY": {
"type": "doubleAngle",
"value": 0.0
},
"rotateZ": {
"type": "doubleAngle",
"value": 0.0
},
"scaleZ": {
"type": "double",
"value": 1.0
}
}
}
}
}

View File

@@ -0,0 +1 @@
{'owner': 'hovel', 'ctime': '1437148163', 'mtime': '1437148163'}

View File

@@ -0,0 +1,75 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
"""
# Example:
# RUN TEST SUITE
import mutils.tests
reload(mutils.tests)
mutils.tests.run()
"""
import unittest
import logging
logging.basicConfig(
filemode='w',
level=logging.DEBUG,
format='%(levelname)s: %(funcName)s: %(message)s',
)
def testSuite():
"""
Return a test suite containing all the tests.
:rtype: unittest.TestSuite
"""
import test_pose
import test_anim
import test_match
import test_utils
import test_attribute
import test_mirrortable
suite = unittest.TestSuite()
s = unittest.makeSuite(test_pose.TestPose, 'test')
suite.addTest(s)
s = unittest.makeSuite(test_anim.TestAnim, 'test')
suite.addTest(s)
s = unittest.makeSuite(test_utils.TestUtils, 'test')
suite.addTest(s)
s = unittest.makeSuite(test_match.TestMatch, 'test')
suite.addTest(s)
s = unittest.makeSuite(test_attribute.TestAttribute, 'test')
suite.addTest(s)
s = unittest.makeSuite(test_mirrortable.TestMirrorTable, 'test')
suite.addTest(s)
return suite
def run():
"""
Call from within Maya to run all valid tests.
"""
import mutils.animation
mutils.animation.FIX_SAVE_ANIM_REFERENCE_LOCKED_ERROR = True
tests = unittest.TextTestRunner()
tests.run(testSuite())

View File

@@ -0,0 +1,125 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
import unittest
import mutils
import test_base
class TestAnim(test_base.TestBase):
def setUp(self):
"""
"""
def save(self, bakeConnected=False):
"""
Test saving the animation to disc.
"""
self.open()
anim = mutils.Animation.fromObjects(self.srcObjects)
anim.save(self.dstPath, bakeConnected=bakeConnected)
# def test_older_version(self):
# """
# Test animation parser for an older animation format
# """
# srcPath = self.dataPath("test_older_version.anim")
# a = mutils.Animation.fromPath(srcPath)
def test_load_replace_completely(self):
"""
Test loading the animation with replace completely option.
"""
self.srcPath = self.dataPath("test_anim.ma")
self.dstPath = self.dataPath("test_load_replace_completely.anim")
self.save()
anim = mutils.Animation.fromPath(self.dstPath)
anim.load(self.dstObjects)
self.assertEqualAnimation()
def test_bake_connected(self):
"""
Test saving animation with the option bake connected.
"""
srcPath = self.dataPath("test_bake_connected.ma")
dstPath = self.dataPath("test_bake_connected.anim")
srcObjects = [
"srcSphere:group",
"srcSphere:lockedNode",
"srcSphere:offset",
"srcSphere:sphere"
]
dstObjects = [
"dstSphere:group",
"dstSphere:lockedNode",
"dstSphere:offset",
"dstSphere:sphere"
]
self.open(path=srcPath)
anim = mutils.Animation.fromObjects(srcObjects)
anim.save(dstPath, bakeConnected=True)
anim = mutils.Animation.fromPath(dstPath)
anim.load(dstObjects)
self.assertEqualAnimation()
def test_load_replace(self):
"""
Test loading the animation with the option Replace.
"""
self.srcPath = self.dataPath("test_anim.ma")
self.dstPath = self.dataPath("test_load_replace.anim")
self.save()
anim = mutils.Animation.fromPath(self.dstPath)
anim.load(self.dstObjects, option=mutils.PasteOption.Replace, startFrame=5)
def test_load_insert(self):
"""
Test loading the animation with the option Insert.
"""
self.srcPath = self.dataPath("test_anim.ma")
self.dstPath = self.dataPath("test_load_insert.anim")
self.save()
anim = mutils.Animation.fromPath(self.dstPath)
anim.load(self.dstObjects, option=mutils.PasteOption.Insert, startFrame=5)
def testSuite():
"""
Return the test suite for the test case.
:rtype: unittest.TestSuite
"""
suite = unittest.TestSuite()
s = unittest.makeSuite(TestAnim, 'test')
suite.addTest(s)
return suite
def run():
"""
Call from within Maya to run all valid tests.
"""
tests = unittest.TextTestRunner()
tests.run(testSuite())

View File

@@ -0,0 +1,168 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
"""
# Example:
import mutils.tests.test_attribute
reload(mutils.tests.test_attribute)
mutils.tests.test_attribute.run()
"""
import os
import unittest
import maya.cmds
import mutils
class TestAttribute(unittest.TestCase):
def setUp(self):
"""
Open an existing maya test scene for testing.
"""
dirname = os.path.dirname(mutils.__file__)
dirname = os.path.join(dirname, "tests", "data")
path = os.path.join(dirname, "sphere.ma")
maya.cmds.file(
path,
open=True,
force=True,
ignoreVersion=True,
executeScriptNodes=False,
)
def test_attribute_limit(self):
"""
Test the attribute limit when setting the attribute value.
"""
range_ = (-100, 100)
maya.cmds.cutKey("sphere", cl=True, time=range_, f=range_, at="testLimit")
attr = mutils.Attribute("sphere", "testLimit")
attr.set(200)
value = maya.cmds.getAttr("sphere.testLimit")
assert value == 10, "Maximum attibute limit was ignored when setting the attribute value"
def test_attribute_limit2(self):
"""
Test the maximum attribute limit when setting a keyframe.
"""
attr = mutils.Attribute("sphere", "testLimit")
attr.setKeyframe(200)
value = maya.cmds.keyframe("sphere.testLimit", query=True, eval=True)[0]
assert value == 10, "Maximum attibute limit was ignored when setting animation keyframe"
def test_attribute_limit3(self):
"""
Test the minimum attribute limit when setting a keyframe.
"""
attr = mutils.Attribute("sphere", "testLimit")
attr.setKeyframe(-200)
value = maya.cmds.keyframe("sphere.testLimit", query=True, eval=True)[0]
assert value == -10, "Minimum attibute limit was ignored when setting animation keyframe"
def test_non_keyable(self):
"""
Test if non-keyable attributes can be keyed.
"""
range_ = (-100, 100)
maya.cmds.cutKey("sphere", cl=True, time=range_, f=range_, at="testNonKeyable")
attr = mutils.Attribute("sphere", "testNonKeyable")
attr.setKeyframe(200)
value = maya.cmds.keyframe("sphere.testNonKeyable", query=True, eval=True)
assert value is None, "Non keyable attribute was keyed"
def test_anim_curve(self):
"""
Test if get anim curve returns the right value.
"""
msg = "Incorrect anim curve was returned when using attr.animCurve "
attr = mutils.Attribute("sphere", "testFloat")
curve = attr.animCurve()
assert curve is None, msg + "1"
attr = mutils.Attribute("sphere", "testConnected")
curve = attr.animCurve()
assert curve is None, msg + "2"
attr = mutils.Attribute("sphere", "testAnimated")
curve = attr.animCurve()
assert curve == "sphere_testAnimated", msg + "3"
def test_set_anim_curve(self):
"""
Test if set anim curve
"""
msg = "No anim curve was set"
attr = mutils.Attribute("sphere", "testAnimated")
srcCurve = attr.animCurve()
attr = mutils.Attribute("sphere", "testFloat")
attr.setAnimCurve(srcCurve, time=(1, 15), option="replace")
curve = attr.animCurve()
assert curve is not None, msg
attr = mutils.Attribute("sphere", "testFloat")
attr.setAnimCurve(srcCurve, time=(15, 15), option="replaceCompletely")
curve = attr.animCurve()
assert curve is not None, msg
def test_set_static_keyframe(self):
"""
Test set static keyframes
"""
msg = "The inserted static keys have different values"
attr = mutils.Attribute("sphere", "testAnimated", cache=False)
attr.setStaticKeyframe(value=2, time=(4, 6), option="replace")
maya.cmds.currentTime(4)
value1 = attr.value()
maya.cmds.currentTime(6)
value2 = attr.value()
assert value1 == value2, msg
def testSuite():
"""
Return the test suite for the TestAttribute.
:rtype: unittest.TestSuite
"""
suite = unittest.TestSuite()
s = unittest.makeSuite(TestAttribute, 'test')
suite.addTest(s)
return suite
def run():
"""
Call from within Maya to run all valid tests.
Example:
import mutils.tests.test_attribute
reload(mutils.tests.test_attribute)
mutils.tests.test_attribute.run()
"""
tests = unittest.TextTestRunner()
tests.run(testSuite())

View File

@@ -0,0 +1,143 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
import os
import unittest
import maya.cmds
import mutils
TEST_DATA_DIR = os.path.join(os.path.dirname(mutils.__file__), "tests", "data")
class TestBase(unittest.TestCase):
def __init__(self, *args):
"""
:type args: list
"""
unittest.TestCase.__init__(self, *args)
self.srcPath = os.path.join(TEST_DATA_DIR, "test_pose.ma")
self.dstPath = os.path.join(TEST_DATA_DIR, "test_pose.pose")
self.srcObjects = [
"srcSphere:lockedNode",
"srcSphere:offset",
"srcSphere:sphere",
]
self.dstObjects = [
"dstSphere:lockedNode",
"dstSphere:offset",
"dstSphere:sphere",
]
self.srcNamespaces = ["srcSphere"]
self.dstNamespaces = ["dstSphere"]
def dataDir(self):
"""
Return the location on disc to the test data.
:rtype: str
"""
return os.path.join(os.path.dirname(mutils.__file__), "tests", "data")
def dataPath(self, fileName):
"""
Return data location with the given fileName.
:rtype: str
"""
return os.path.join(self.dataDir(), fileName)
def open(self, path=None):
"""
Open the specified file in Maya.
:type path: str | None
"""
if path is None:
path = self.srcPath
maya.cmds.file(
path,
open=True,
force=True,
ignoreVersion=True,
executeScriptNodes=False,
)
def listAttr(self, srcObjects=None, dstObjects=None):
"""
Return the source & destination attributes for the given objects.
:rtype: list[(mutils.Attribute, mutils.Attribute)]
"""
attrs = []
srcObjects = srcObjects or self.srcObjects
dstObjects = dstObjects or self.dstObjects
for i, srcObj in enumerate(srcObjects):
srcObj = srcObjects[i]
dstObj = dstObjects[i]
srcAttrs = maya.cmds.listAttr(srcObj, keyable=True, unlocked=True, scalar=True) or []
for srcAttr in srcAttrs:
srcAttribute = mutils.Attribute(srcObj, srcAttr)
dstAttribute = mutils.Attribute(dstObj, srcAttr)
attrs.append((srcAttribute, dstAttribute))
return attrs
def assertEqualAnimation(
self,
srcObjects=None,
dstObjects=None,
):
"""
Test that the animation for the given objects is equal.
If the animation curves do not compare equal, the test will fail.
:type srcObjects: list[str] | None
:type dstObjects: list[str] | None
"""
for frame in [1, 10, 24]:
maya.cmds.currentTime(frame)
self.assertEqualAttributeValues(srcObjects, dstObjects)
def assertEqualAttributeValues(
self,
srcObjects=None,
dstObjects=None,
):
"""
Test that the attribute values for the given objects are equal.
If the values do not compare equal, the test will fail.
:type srcObjects: list[str] | None
:type dstObjects: list[str] | None
"""
for srcAttribute, dstAttribute in self.listAttr(srcObjects, dstObjects):
if not dstAttribute.exists():
continue
msg = "Attribute value is not equal! {0} != {1}"
msg = msg.format(srcAttribute.fullname(), dstAttribute.fullname())
self.assertEqual(srcAttribute.value(), dstAttribute.value(), msg)

View File

@@ -0,0 +1,230 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
import mutils
import test_base
class TestMatch(test_base.TestBase):
def setUp(self):
"""
"""
pass
def matchNames(self, expectedResult, srcObjects=None, dstObjects=None, dstNamespaces=None):
"""
"""
result = []
for srcNode, dstNode in mutils.matchNames(srcObjects, dstObjects=dstObjects, dstNamespaces=dstNamespaces):
result.append((srcNode.name(), dstNode.name()))
if result != expectedResult:
raise Exception("Result does not match the expected result: %s != %s" % (str(result), expectedResult))
def test_match0(self):
"""
Test no matches
"""
srcObjects = ["control2", "control1", "control3"]
dstObjects = ["control4", "control5", "control6"]
expectedResult = []
self.matchNames(expectedResult, srcObjects=srcObjects, dstObjects=dstObjects)
def test_match1(self):
"""
Test simple match
"""
srcObjects = ["control2", "control1", "control3"]
dstObjects = ["control1", "control2", "control3"]
expectedResult = [("control2", "control2"),
("control1", "control1"),
("control3", "control3")]
self.matchNames(expectedResult, srcObjects=srcObjects, dstObjects=dstObjects)
def test_match2(self):
"""
"""
srcObjects = ["control1"]
dstObjects = ["character1:control1", "character2:control1"]
expectedResult = [("control1", "character1:control1"),
("control1", "character2:control1")]
self.matchNames(expectedResult, srcObjects=srcObjects, dstObjects=dstObjects)
def test_match3(self):
"""
"""
srcObjects = ["control1"]
dstNamespaces = ["character1", "character2"]
expectedResult = [("control1", "character1:control1"),
("control1", "character2:control1")]
self.matchNames(expectedResult, srcObjects=srcObjects, dstNamespaces=dstNamespaces)
def test_match4(self):
"""
"""
srcObjects = ["character1:control1"]
dstNamespaces = [""]
expectedResult = [("character1:control1", "control1")]
self.matchNames(expectedResult, srcObjects=srcObjects, dstNamespaces=dstNamespaces)
def test_match5(self):
"""
Test namespace
Test short name
Test multiple namespaces in source objects
"""
srcObjects = ["character1:control1", "character1:control2"]
dstNamespaces = ["character2"]
expectedResult = [("character1:control1", "character2:control1"),
("character1:control2", "character2:control2")]
self.matchNames(expectedResult, srcObjects=srcObjects, dstNamespaces=dstNamespaces)
def test_match6(self):
"""
Test namespace
Test long name
Test namespace in source objects
Test namespace that is not in source objects
"""
srcObjects = ["character1:group1|character1:control1", "character1:group2|character1:control1"]
dstNamespaces = ["character2"]
expectedResult = [("character1:group1|character1:control1", "character2:group1|character2:control1"),
("character1:group2|character1:control1", "character2:group2|character2:control1")]
self.matchNames(expectedResult, srcObjects=srcObjects, dstNamespaces=dstNamespaces)
def test_match7(self):
"""
Test namespace
Test multiple namespaces in source objects
Test only one destination namespace
"""
srcObjects = ["character1:control1", "character2:control1"]
dstNamespaces = ["character2"]
expectedResult = [("character2:control1", "character2:control1")]
self.matchNames(expectedResult, srcObjects=srcObjects, dstNamespaces=dstNamespaces)
def test_match8(self):
"""
Test multiple namespaces in source objects
Test namespace that is not in source objects
"""
srcObjects = ["character1:control1", "character2:control1"]
dstNamespaces = ["character3"]
expectedResult = [("character1:control1", "character3:control1")]
self.matchNames(expectedResult, srcObjects=srcObjects, dstNamespaces=dstNamespaces)
def test_match9(self):
"""
"""
srcObjects = ["character1:group1|character1:control1",
"character1:group1|character1:control2"]
dstObjects = ["group1|control1",
"group1|control2"]
expectedResult = [("character1:group1|character1:control1", "group1|control1"),
("character1:group1|character1:control2", "group1|control2")]
self.matchNames(expectedResult, srcObjects=srcObjects, dstObjects=dstObjects)
def test_match10(self):
"""
WARNING: The expected result is a little strange.
It will always match source objects without a namespace first.
expectedResult = [("group1|control1", "character2:group1|character2:control1")]
NOT
expectedResult = [("character1:group1|character1:control1", "character2:group1|character2:control1")]
"""
srcObjects = ["character1:group1|character1:control1",
"group1|control1"]
dstNamespaces = ["character2"]
expectedResult = [("group1|control1", "character2:group1|character2:control1")]
self.matchNames(expectedResult, srcObjects=srcObjects, dstNamespaces=dstNamespaces)
def test_match11(self):
"""
Match long name to short name.
"""
srcObjects = ["|grpEyeAllLf|grpLidTpLf|ctlLidTpLf"]
dstObjects = ["ctlLidTpLf"]
expectedResult = [("|grpEyeAllLf|grpLidTpLf|ctlLidTpLf", "ctlLidTpLf")]
self.matchNames(expectedResult, srcObjects=srcObjects, dstObjects=dstObjects)
def test_match12(self):
"""
Match short name to long name.
"""
srcObjects = ["ctlLidTpLf"]
dstObjects = ["|grpEyeAllLf|grpLidTpLf|ctlLidTpLf"]
expectedResult = [("ctlLidTpLf", "|grpEyeAllLf|grpLidTpLf|ctlLidTpLf")]
self.matchNames(expectedResult, srcObjects=srcObjects, dstObjects=dstObjects)
def test_match13(self):
"""
Match short name to long name with namespace.
"""
srcObjects = ["ctlLidTpLf"]
dstObjects = ["|malcolm:grpEyeAllLf|malcolm:grpLidTpLf|malcolm:ctlLidTpLf"]
expectedResult = [("ctlLidTpLf", "|malcolm:grpEyeAllLf|malcolm:grpLidTpLf|malcolm:ctlLidTpLf")]
self.matchNames(expectedResult, srcObjects=srcObjects, dstObjects=dstObjects)
def test_match14(self):
"""
Match long name to short name with namespace.
"""
srcObjects = ["|malcolm:grpEyeAllLf|malcolm:grpLidTpLf|malcolm:ctlLidTpLf"]
dstObjects = ["ctlLidTpLf"]
expectedResult = [("|malcolm:grpEyeAllLf|malcolm:grpLidTpLf|malcolm:ctlLidTpLf", "ctlLidTpLf")]
self.matchNames(expectedResult, srcObjects=srcObjects, dstObjects=dstObjects)
def test_match15(self):
"""
Testing multiple source namespace to only one destination namespace. They should not merge.
"""
srcObjects = ["character1:group1|character1:control1",
"character2:group1|character2:control2"]
dstObjects = ["group1|control1",
"group1|control2"]
expectedResult = [("character1:group1|character1:control1", "group1|control1")]
self.matchNames(expectedResult, srcObjects=srcObjects, dstObjects=dstObjects)
def test_match16(self):
"""
Testing multiple source namespace and destination namespaces
"""
srcObjects = ["character1:group1|character1:control1",
"character2:group1|character2:control1",
"character3:group1|character3:control1"]
dstObjects = ["character3:group1|character3:control1",
"character1:group1|character1:control1",
"character2:group1|character2:control1"]
expectedResult = [('character1:group1|character1:control1', 'character1:group1|character1:control1'),
('character3:group1|character3:control1', 'character3:group1|character3:control1'),
('character2:group1|character2:control1', 'character2:group1|character2:control1')]
self.matchNames(expectedResult, srcObjects=srcObjects, dstObjects=dstObjects)
def test_match17(self):
"""
Testing multiple source namespace and destination namespaces.
"""
srcObjects = ["character1:group1|character1:control1",
"group1|control1",
"character3:group1|character3:control1"]
dstObjects = ["character3:group1|character3:control1",
"character1:group1|character1:control1",
"group1|control1"]
expectedResult = [('group1|control1', 'group1|control1'),
('character1:group1|character1:control1', 'character1:group1|character1:control1'),
('character3:group1|character3:control1', 'character3:group1|character3:control1')]
self.matchNames(expectedResult, srcObjects=srcObjects, dstObjects=dstObjects)

View File

@@ -0,0 +1,238 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
import unittest
from mutils.mirrortable import MirrorTable
class TestMirrorTable(unittest.TestCase):
def test_find_left_side(self):
"""
Test the clamp range command
"""
msg = "Cannot find the left side from the given objects"
objects = ["Character3_Ctrl_LeftForeArm"]
assert "Left" == MirrorTable.findLeftSide(objects), msg
objects = ["r_cool_ik", "l_arm_cool_l"]
assert "l_*" == MirrorTable.findLeftSide(objects), msg
objects = ["r_cool_ik", "Character:l_arm_cool_ik"]
assert "l_*" == MirrorTable.findLeftSide(objects), msg
objects = ["r_cool_ik", "Group|l_arm_cool_ik"]
assert "l_*" == MirrorTable.findLeftSide(objects), msg
objects = ["r_cool_ik", "Group|arm_cool_l"]
assert "*_l" == MirrorTable.findLeftSide(objects), msg
objects = ["leftArm1_ArmCon"]
assert "left*" == MirrorTable.findLeftSide(objects), msg
objects = ["LLegCON", "LhandCON"]
assert "L*" == MirrorTable.findLeftSide(objects), msg
objects = ["r_cool_ik", "Group|left_arm_cool_ik"]
assert "left*" == MirrorTable.findLeftSide(objects), msg
objects = ["r_cool_ik", "Group|ctlHandLf"]
assert "*Lf" == MirrorTable.findLeftSide(objects), msg
objects = ["r_cool_ik", "malcolm:ctlArmIkLf"]
assert "*Lf" == MirrorTable.findLeftSide(objects), msg
objects = ["r_cool_ik", "IKExtraLegFront_L|IKLegFront_L"]
assert "*_L" == MirrorTable.findLeftSide(objects), msg
def test_find_right_side(self):
"""
Test the clamp range command
"""
msg = "Cannot find the right side from the given objects"
objects = ["Character3_Ctrl_RightForeArm"]
assert "Right" == MirrorTable.findRightSide(objects), msg
objects = ["l_car_ik", "r_arm_car_r"]
assert "r_*" == MirrorTable.findRightSide(objects), msg
objects = ["l_car_ik", "Character:r_arm_car_r"]
assert "r_*" == MirrorTable.findRightSide(objects), msg
objects = ["l_car_ik", "Group|r_arm_car_r"]
assert "r_*" == MirrorTable.findRightSide(objects), msg
objects = ["l_car_ik", "arm_car_r"]
assert "*_r" == MirrorTable.findRightSide(objects), msg
objects = ["l_car_ik", "Group|right_arm_car_ik"]
assert "right*" == MirrorTable.findRightSide(objects), msg
objects = ["CHR1:RIG:RLegCON", "CHR1:RIG:RhandCON"]
assert "R*" == MirrorTable.findRightSide(objects), msg
objects = ["RLegCON", "RhandCON"]
assert "R*" == MirrorTable.findRightSide(objects), msg
objects = ["l_car_ik", "Group|ctlHandRt"]
assert "*Rt" == MirrorTable.findRightSide(objects), msg
objects = ["l_car_ik", "malcolm:ctlArmIkRt"]
assert "*Rt" == MirrorTable.findRightSide(objects), msg
objects = ["l_car_ik", "IKExtraLegFront_R|IKLegFront_R"]
assert "*_R" == MirrorTable.findRightSide(objects), msg
objects = ["Rig_v01_ref:Rig_v01:leftArm1_UpperArmControl"]
assert "" == MirrorTable.findRightSide(objects), msg
def test_match_side(self):
msg = "Incorrect result from match side"
result = MirrorTable.matchSide("ctlArmIkRt", "*Rt")
assert result is True, msg
result = MirrorTable.matchSide("ctlArmIkRt", "Rt")
assert result is True, msg
result = MirrorTable.matchSide("CHR1:RIG:LRollCON", "L*")
assert result is True, msg
# This is no longer supported!
# result = MirrorTable.matchSide("CHR1:RIG:LRollCON", "RIG:L*")
# assert result is True, msg
result = MirrorTable.matchSide("Group|right_arm_car_ik", "right*")
assert result is True, msg
result = MirrorTable.matchSide("Group|IKLegFront_R", "*_R")
assert result is True, msg
def test_mirror_object(self):
msg = "Incorrect mirror name for object"
result = MirrorTable._mirrorObject("malcolm:ctlArmIkRt", "Rt", "Lf")
assert "malcolm:ctlArmIkLf" == result, msg
result = MirrorTable._mirrorObject("malcolm:ctlArmIkRt", "*Rt", "*Lf")
assert "malcolm:ctlArmIkLf" == result, msg
result = MirrorTable._mirrorObject("IKLegFront_R", "*_R", "*_L")
assert "IKLegFront_L" == result, msg
result = MirrorTable._mirrorObject("CHR1:RIG:RLegCON", "R*", "L*")
assert "CHR1:RIG:LLegCON" == result, msg
result = MirrorTable._mirrorObject("CHR1:RIG:RRollCON", "R*", "L*")
assert "CHR1:RIG:LRollCON" == result, msg
result = MirrorTable._mirrorObject("leftArm1_ArmCon", "left*", "right*")
assert "rightArm1_ArmCon" == result, msg
result = MirrorTable._mirrorObject("Rig:RArm1_UpperArmControl", "R*", "L*")
assert "Rig:LArm1_UpperArmControl" == result, msg
result = MirrorTable._mirrorObject("Group|Ch1:RIG:Offset|Ch1:RIG:RRoll", "R*", "L*")
assert "Group|Ch1:RIG:Offset|Ch1:RIG:LRoll" == result, msg
# This is no longer supported!
# result = MirrorTable._mirrorObject("Group|Ch1:RIG:RExtra|Ch1:RIG:RRoll", "RIG:R", "RIG:L")
# assert "Group|Ch1:RIG:LExtra|Ch1:RIG:LRoll" == result, msg
result = MirrorTable._mirrorObject("Group|Ch1:RIG:RExtra|Ch1:RIG:RRoll", "R*", "L*")
assert "Group|Ch1:RIG:LExtra|Ch1:RIG:LRoll" == result, msg
result = MirrorTable._mirrorObject("hand_R0_ctl", "_R", "_L")
assert "hand_L0_ctl" == result, msg
result = MirrorTable._mirrorObject("Lyle_R001:hand_R0_ctl", "_R", "_L")
assert "Lyle_R001:hand_L0_ctl" == result, msg
result = MirrorTable._mirrorObject("Lyle_R001:other_R0_ctl|Lyle_R001:hand_R0_ctl", "_R", "_L")
assert "Lyle_R001:other_L0_ctl|Lyle_R001:hand_L0_ctl" == result, msg
result = MirrorTable._mirrorObject("Character1:LfootRoll", "L*", "R*")
assert "Character1:RfootRoll" == result, msg
result = MirrorTable._mirrorObject("Group|LyleCharacter1:LfootRollExtra|LyleCharacter1:LfootRoll", "R*", "L*")
assert "Group|LyleCharacter1:RfootRollExtra|LyleCharacter1:RfootRoll" == result, msg
result = MirrorTable._mirrorObject("Character3_Ctrl_RightForeArm", "Right", "Left")
assert "Character3_Ctrl_LeftForeArm" == result, msg
result = MirrorTable._mirrorObject("r_arm_car_r", "r_*", "l_*")
assert "l_arm_car_r" == result, msg
result = MirrorTable._mirrorObject("Character:r_arm_car_r", "r_*", "l_*")
assert "Character:l_arm_car_r" == result, msg
result = MirrorTable._mirrorObject("Group|r_arm_car_r", "r_*", "l_*")
assert "Group|l_arm_car_r" == result, msg
result = MirrorTable._mirrorObject("arm_car_r", "*_r", "*_l")
assert "arm_car_l" == result, msg
result = MirrorTable._mirrorObject("Group|right_arm_car_ik", "right*", "left*")
assert "Group|left_arm_car_ik" == result, msg
result = MirrorTable._mirrorObject("CHR1:RIG:RLegCON", "R*", "L*")
assert "CHR1:RIG:LLegCON" == result, msg
result = MirrorTable._mirrorObject("RhandCON", "R*", "L*")
assert "LhandCON" == result, msg
result = MirrorTable._mirrorObject("Group|ctlHandRt", "*Rt", "*Lt")
assert "Group|ctlHandLt" == result, msg
result = MirrorTable._mirrorObject("malcolm:ctlArmIkRt", "*Rt", "*Lt")
assert "malcolm:ctlArmIkLt" == result, msg
result = MirrorTable._mirrorObject("IKExtraLegFront_R|IKLegFront_R", "*_R", "*_L")
assert "IKExtraLegFront_L|IKLegFront_L" == result, msg
result = MirrorTable._mirrorObject("Rig_v01_ref:Rig_v01:leftArm1_UpperArmControl", "_R", "_L")
assert None == result, msg
def testSuite():
"""
Return the test suite for this module.
:rtype: unittest.TestSuite
"""
suite = unittest.TestSuite()
s = unittest.makeSuite(TestMirrorTable, 'test')
suite.addTest(s)
return suite
def run():
"""
Call from within Maya to run all valid tests.
Example:
import mutils.tests.test_attribute
reload(mutils.tests.test_attribute)
mutils.tests.test_attribute.run()
"""
tests = unittest.TextTestRunner()
tests.run(testSuite())
if __name__ == "__main__":
run()

View File

@@ -0,0 +1,157 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
"""
# Example:
import mutils.tests.test_pose
reload(mutils.tests.test_pose)
mutils.tests.test_pose.run()
"""
import unittest
import maya.cmds
import mutils
import test_base
class TestPose(test_base.TestBase):
def setUp(self):
"""
"""
self.srcPath = self.dataPath("test_pose.ma")
self.dstPath = self.dataPath("test_pose.pose")
def test_save(self):
"""
Test saving a pose to disc.
"""
self.open()
pose = mutils.Pose.fromObjects(self.srcObjects)
pose.save(self.dstPath)
def test_load(self):
"""
Test load the pose from disc.
"""
self.open()
pose = mutils.Pose.fromPath(self.dstPath)
pose.load(self.dstObjects)
self.assertEqualAttributeValues()
def test_older_version(self):
"""
Test parsing an older pose format
"""
srcPath = self.dataPath("test_older_version.dict")
pose = mutils.Pose.fromPath(srcPath)
print(pose.objects())
def test_non_unique_names(self):
"""
Test loading a pose to objects that do not have unique names.
"""
srcPath = self.dataPath("test_non_unique_names.ma")
dstPath = self.dataPath("test_non_unique_names.pose")
srcObjects = [
"srcSphere:offset",
"srcSphere:lockedNode",
"srcSphere:sphere",
]
dstObjects = [
'group|offset',
'group|offset|lockedNode',
'group|offset|lockedNode|sphere',
]
self.open(path=srcPath)
pose = mutils.Pose.fromObjects(srcObjects)
pose.save(dstPath)
pose = mutils.Pose.fromPath(dstPath)
pose.load(dstObjects)
self.assertEqualAttributeValues(srcObjects, dstObjects)
def test_blend(self):
"""
Test pose blending for float values when loading a pose.
"""
self.open()
for blend in [10, 30, 70, 90]:
dstObjects = {}
for srcAttribute, dstAttribute in self.listAttr():
if srcAttribute.type == "float":
values = (srcAttribute.value(), dstAttribute.value())
dstObjects[dstAttribute.fullname()] = values
pose = mutils.Pose.fromPath(self.dstPath)
pose.load(self.dstObjects, blend=blend)
for dstFullname in dstObjects.keys():
srcValue, dstValue = dstObjects[dstFullname]
value = (srcValue - dstValue) * (blend/100.00)
value = dstValue + value
dstValue = maya.cmds.getAttr(dstFullname)
msg = 'Incorrect value for {0} {1} != {2}'
msg = msg.format(dstFullname, value, dstValue)
self.assertEqual(value, maya.cmds.getAttr(dstFullname), msg)
def test_select(self):
"""
Test selecting the controls from the pose.
"""
self.open()
pose = mutils.Pose.fromPath(self.dstPath)
pose.select(namespaces=self.dstNamespaces)
selection = maya.cmds.ls(selection=True)
for dstName in self.dstObjects:
msg = "Did not select {0}".format(dstName)
self.assertIn(dstName, selection, msg)
def test_count(self):
"""
Test the object count within in pose.
"""
self.open()
pose = mutils.Pose.fromPath(self.dstPath)
self.assertEqual(pose.objectCount(), len(self.srcObjects))
def testSuite():
"""
Return the test suite for the test case.
:rtype: unittest.TestSuite
"""
suite = unittest.TestSuite()
s = unittest.makeSuite(TestPose, 'test')
suite.addTest(s)
return suite
def run():
"""
Call from within Maya to run all valid tests.
"""
tests = unittest.TextTestRunner()
tests.run(testSuite())

View File

@@ -0,0 +1,72 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
import unittest
import mutils.animation
class TestUtils(unittest.TestCase):
def test_clamp_range(self):
"""
Test the clamp range command
"""
msg = "Incorrect clamp range"
# Test clamp range on both min and max
clampRange = mutils.animation.clampRange((15, 35), (20, 30))
assert (20, 30) == clampRange, msg
# Test clamp range on min time
clampRange = mutils.animation.clampRange((10, 25), (20, 30))
assert (20, 25) == clampRange, msg
# Test clamp range on man time
clampRange = mutils.animation.clampRange((25, 40), (20, 30))
assert (25, 30) == clampRange, msg
# Test min out of bounds error
def test_exception():
clampRange = mutils.animation.clampRange((5, 15), (20, 30))
self.assertRaises(mutils.animation.OutOfBoundsError, test_exception)
# Test max out of bounds error
def test_exception():
clampRange = mutils.animation.clampRange((65, 95), (20, 30))
self.assertRaises(mutils.animation.OutOfBoundsError, test_exception)
def testSuite():
"""
Return the test suite for this module.
:rtype: unittest.TestSuite
"""
suite = unittest.TestSuite()
s = unittest.makeSuite(TestUtils, 'test')
suite.addTest(s)
return suite
def run():
"""
Call from within Maya to run all valid tests.
Example:
import mutils.tests.test_attribute
reload(mutils.tests.test_attribute)
mutils.tests.test_attribute.run()
"""
tests = unittest.TextTestRunner()
tests.run(testSuite())

View File

@@ -0,0 +1,403 @@
# Copyright 2020 by Kurt Rathjen. All Rights Reserved.
#
# This library is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. This library is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
"""
Base object for saving poses, animation, selection sets and mirror tables.
Example:
import mutils
t = mutils.TransferObject.fromPath("/tmp/pose.json")
t = mutils.TransferObject.fromObjects(["object1", "object2"])
t.load(selection=True)
t.load(objects=["obj1", "obj2"])
t.load(namespaces=["namespace1", "namespace2"])
t.save("/tmp/pose.json")
t.read("/tmp/pose.json")
"""
import os
import abc
import json
import time
import locale
import getpass
import logging
from studiovendor import six
import mutils
try:
import maya.cmds
except Exception:
import traceback
traceback.print_exc()
logger = logging.getLogger(__name__)
class TransferObject(object):
@classmethod
def fromPath(cls, path):
"""
Return a new transfer instance for the given path.
:type path: str
:rtype: TransferObject
"""
t = cls()
t.setPath(path)
t.read()
return t
@classmethod
def fromObjects(cls, objects, **kwargs):
"""
Return a new transfer instance for the given objects.
:type objects: list[str]
:rtype: TransferObject
"""
t = cls(**kwargs)
for obj in objects:
t.add(obj)
return t
@staticmethod
def readJson(path):
"""
Read the given json path
:type path: str
:rtype: dict
"""
with open(path, "r") as f:
data = f.read() or "{}"
data = json.loads(data)
return data
@staticmethod
def readList(path):
"""
Legacy method for reading older .list file type.
:rtype: dict
"""
with open(path, "r") as f:
data = f.read()
data = eval(data, {})
result = {}
for obj in data:
result.setdefault(obj, {})
return {"objects": result}
@staticmethod
def readDict(path):
"""
Legacy method for reading older .dict file type.
:rtype: dict
"""
with open(path, "r") as f:
data = f.read()
data = eval(data, {})
result = {}
for obj in data:
result.setdefault(obj, {"attrs": {}})
for attr in data[obj]:
typ, val = data[obj][attr]
result[obj]["attrs"][attr] = {"type": typ, "value": val}
return {"objects": result}
def __init__(self):
self._path = None
self._namespaces = None
self._data = {"metadata": {}, "objects": {}}
def path(self):
"""
Return the disc location for the transfer object.
:rtype: str
"""
return self._path
def setPath(self, path):
"""
Set the disc location for loading and saving the transfer object.
:type path: str
"""
dictPath = path.replace(".json", ".dict")
listPath = path.replace(".json", ".list")
if not os.path.exists(path):
if os.path.exists(dictPath):
path = dictPath
elif os.path.exists(listPath):
path = listPath
self._path = path
def validate(self, **kwargs):
"""
Validate the given kwargs for the current IO object.
:type kwargs: dict
"""
namespaces = kwargs.get("namespaces")
if namespaces is not None:
sceneNamespaces = mutils.namespace.getAll() + [":"]
for namespace in namespaces:
if namespace and namespace not in sceneNamespaces:
msg = 'The namespace "{0}" does not exist in the scene! ' \
"Please choose a namespace which exists."
msg = msg.format(namespace)
raise ValueError(msg)
def mtime(self):
"""
Return the modification datetime of self.path().
:rtype: float
"""
return os.path.getmtime(self.path())
def ctime(self):
"""
Return the creation datetime of self.path().
:rtype: float
"""
return os.path.getctime(self.path())
def data(self):
"""
Return all the data for the transfer object.
:rtype: dict
"""
return self._data
def setData(self, data):
"""
Set the data for the transfer object.
:type data:
"""
self._data = data
def owner(self):
"""
Return the user who created this item.
:rtype: str
"""
return self.metadata().get("user", "")
def description(self):
"""
Return the user description for this item.
:rtype: str
"""
return self.metadata().get("description", "")
def objects(self):
"""
Return all the object data.
:rtype: dict
"""
return self.data().get("objects", {})
def object(self, name):
"""
Return the data for the given object name.
:type name: str
:rtype: dict
"""
return self.objects().get(name, {})
def createObjectData(self, name):
"""
Create the object data for the given object name.
:type name: str
:rtype: dict
"""
return {}
def namespaces(self):
"""
Return the namespaces contained in the transfer object
:rtype: list[str]
"""
if self._namespaces is None:
group = mutils.groupObjects(self.objects())
self._namespaces = group.keys()
return self._namespaces
def objectCount(self):
"""
Return the number of objects in the transfer object.
:rtype: int
"""
return len(self.objects() or [])
def add(self, objects):
"""
Add the given objects to the transfer object.
:type objects: str | list[str]
"""
if isinstance(objects, six.string_types):
objects = [objects]
for name in objects:
self.objects()[name] = self.createObjectData(name)
def remove(self, objects):
"""
Remove the given objects to the transfer object.
:type objects: str | list[str]
"""
if isinstance(objects, six.string_types):
objects = [objects]
for obj in objects:
del self.objects()[obj]
def setMetadata(self, key, value):
"""
Set the given key and value in the metadata.
:type key: str
:type value: int | str | float | dict
"""
self.data()["metadata"][key] = value
def updateMetadata(self, metadata):
"""
Update the given key and value in the metadata.
:type metadata: dict
"""
self.data()["metadata"].update(metadata)
def metadata(self):
"""
Return the current metadata for the transfer object.
Example: print(self.metadata())
Result # {
"User": "",
"Scene": "",
"Reference": {"filename": "", "namespace": ""},
"Description": "",
}
:rtype: dict
"""
return self.data().get("metadata", {})
def read(self, path=""):
"""
Return the data from the path set on the Transfer object.
:type path: str
:rtype: dict
"""
path = path or self.path()
if path.endswith(".dict"):
data = self.readDict(path)
elif path.endswith(".list"):
data = self.readList(path)
else:
data = self.readJson(path)
self.setData(data)
@abc.abstractmethod
def load(self, *args, **kwargs):
pass
@mutils.showWaitCursor
def save(self, path):
"""
Save the current metadata and object data to the given path.
:type path: str
:rtype: None
"""
logger.info("Saving pose: %s" % path)
user = getpass.getuser()
if user:
user = six.text_type(user)
ctime = str(time.time()).split(".")[0]
references = mutils.getReferenceData(self.objects())
self.setMetadata("user", user)
self.setMetadata("ctime", ctime)
self.setMetadata("version", "1.0.0")
self.setMetadata("references", references)
self.setMetadata("mayaVersion", maya.cmds.about(v=True))
self.setMetadata("mayaSceneFile", maya.cmds.file(q=True, sn=True))
# Move the metadata information to the top of the file
metadata = {"metadata": self.metadata()}
data = self.dump(metadata)[:-1] + ","
# Move the objects information to after the metadata
objects = {"objects": self.objects()}
data += self.dump(objects)[1:]
# Create the given directory if it doesn't exist
dirname = os.path.dirname(path)
if not os.path.exists(dirname):
os.makedirs(dirname)
with open(path, "w") as f:
f.write(str(data))
logger.info("Saved pose: %s" % path)
def dump(self, data=None):
"""
:type data: str | dict
:rtype: str
"""
if data is None:
data = self.data()
return json.dumps(data, indent=2)