Update
BIN
2023/icons/studiolibrary.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
64
2023/scripts/animation_tools/studiolibrary/README.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# Studio Library
|
||||
|
||||
Studio Library 是一个免费的动画库工具,用于在 Autodesk Maya 中管理姿势和动画。
|
||||
|
||||
## 版本
|
||||
|
||||
Studio Library 2.20.2
|
||||
|
||||
## 官方信息
|
||||
|
||||
- **官网**: https://www.studiolibrary.com
|
||||
- **GitHub**: https://github.com/krathjen/studiolibrary
|
||||
- **作者**: Kurt Rathjen
|
||||
|
||||
## 功能特性
|
||||
|
||||
- 保存和加载动画姿势
|
||||
- 管理动画片段
|
||||
- 镜像姿势和动画
|
||||
- 选择集管理
|
||||
- 自定义缩略图
|
||||
- 支持多个库
|
||||
- 拖放操作
|
||||
- 搜索和过滤
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 在 Python 中启动
|
||||
|
||||
```python
|
||||
import sys
|
||||
import os
|
||||
|
||||
studiolibrary_path = r'h:\Workspace\Raw\Tools\Plugins\Maya\2023\scripts\animation_tools\studiolibrary'
|
||||
if studiolibrary_path not in sys.path:
|
||||
sys.path.insert(0, studiolibrary_path)
|
||||
|
||||
import studiolibrary
|
||||
studiolibrary.main()
|
||||
```
|
||||
|
||||
### 从工具架启动
|
||||
|
||||
点击动画工具架上的 **StudioLib** 按钮即可启动。
|
||||
|
||||
## 模块结构
|
||||
|
||||
此模块包含以下子模块:
|
||||
|
||||
- **studiolibrary**: 核心库模块
|
||||
- **studiolibrarymaya**: Maya 集成模块
|
||||
- **mutils**: Maya 工具函数
|
||||
- **studioqt**: Qt 界面组件
|
||||
- **studiovendor**: 第三方依赖
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 首次使用需要设置库路径
|
||||
- 支持 Maya 2017 及更高版本
|
||||
- 需要 PySide2 或 PySide6(Maya 自带)
|
||||
|
||||
## 许可证
|
||||
|
||||
GNU Lesser General Public License v3.0
|
||||
@@ -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
|
||||
@@ -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
|
||||
839
2023/scripts/animation_tools/studiolibrary/mutils/animation.py
Normal 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()))
|
||||
565
2023/scripts/animation_tools/studiolibrary/mutils/attribute.py
Normal 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
|
||||
425
2023/scripts/animation_tools/studiolibrary/mutils/cmds.py
Normal 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
|
||||
166
2023/scripts/animation_tools/studiolibrary/mutils/decorators.py
Normal 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
|
||||
@@ -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()
|
||||
@@ -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())
|
||||
@@ -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()
|
||||
@@ -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
|
||||
@@ -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())
|
||||
174
2023/scripts/animation_tools/studiolibrary/mutils/matchnames.py
Normal 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())
|
||||
918
2023/scripts/animation_tools/studiolibrary/mutils/mirrortable.py
Normal 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
|
||||
@@ -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
|
||||
178
2023/scripts/animation_tools/studiolibrary/mutils/node.py
Normal 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()
|
||||
107
2023/scripts/animation_tools/studiolibrary/mutils/playblast.py
Normal 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
|
||||
591
2023/scripts/animation_tools/studiolibrary/mutils/pose.py
Normal 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())
|
||||
@@ -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()
|
||||
@@ -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)
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{'end': 24, 'description': 'eded', 'scene': '', 'start': 1, 'mtime': '1391012417', 'owner': 'tlhomme', 'ctime': '1391012417'}
|
||||
@@ -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)
|
||||
}}
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{'owner': 'hovel', 'ctime': '1437148163', 'mtime': '1437148163'}
|
||||
@@ -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())
|
||||
@@ -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())
|
||||
@@ -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())
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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()
|
||||
@@ -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())
|
||||
@@ -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())
|
||||
@@ -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)
|
||||
@@ -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/>.
|
||||
|
||||
__version__ = "2.20.2"
|
||||
|
||||
|
||||
def version():
|
||||
"""
|
||||
Return the current version of the Studio Library
|
||||
|
||||
:rtype: str
|
||||
"""
|
||||
return __version__
|
||||
|
||||
|
||||
from studiolibrary import config
|
||||
from studiolibrary import resource
|
||||
from studiolibrary.utils import *
|
||||
from studiolibrary.library import Library
|
||||
from studiolibrary.libraryitem import LibraryItem
|
||||
from studiolibrary.main import main
|
||||
@@ -0,0 +1,94 @@
|
||||
# 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 json
|
||||
|
||||
|
||||
_config = None
|
||||
|
||||
|
||||
def get(*args):
|
||||
"""
|
||||
Get values from the config.
|
||||
|
||||
:rtype: str
|
||||
"""
|
||||
global _config
|
||||
|
||||
if not _config:
|
||||
_config = read(paths())
|
||||
|
||||
return _config.get(*args)
|
||||
|
||||
|
||||
def set(key, value):
|
||||
|
||||
global _config
|
||||
|
||||
if not _config:
|
||||
_config = read(paths())
|
||||
|
||||
_config[key] = value
|
||||
|
||||
|
||||
def paths():
|
||||
"""
|
||||
Return all possible config paths.
|
||||
|
||||
:rtype: list[str]
|
||||
"""
|
||||
cwd = os.path.dirname(__file__)
|
||||
paths_ = [os.path.join(cwd, "config", "default.json")]
|
||||
|
||||
path = os.environ.get("STUDIO_LIBRARY_CONFIG_PATH")
|
||||
path = path or os.path.join(cwd, "config", "config.json")
|
||||
|
||||
if not os.path.exists(path):
|
||||
cwd = os.path.dirname(os.path.dirname(cwd))
|
||||
path = os.path.join(cwd, "config", "config.json")
|
||||
|
||||
if os.path.exists(path):
|
||||
paths_.append(path)
|
||||
|
||||
return paths_
|
||||
|
||||
|
||||
def read(paths):
|
||||
"""
|
||||
Read all paths and overwrite the keys with each successive file.
|
||||
|
||||
A custom config parser for passing JSON files.
|
||||
|
||||
We use this instead of the standard ConfigParser as the JSON format
|
||||
can support list and dict types.
|
||||
|
||||
This parser can also support comments using the following style "//"
|
||||
|
||||
:type paths: list[str]
|
||||
:rtype: dict
|
||||
"""
|
||||
conf = {}
|
||||
|
||||
for path in paths:
|
||||
lines = []
|
||||
|
||||
with open(path) as f:
|
||||
for line in f.readlines():
|
||||
if not line.strip().startswith('//'):
|
||||
lines.append(line)
|
||||
|
||||
data = '\n'.join(lines)
|
||||
if data:
|
||||
conf.update(json.loads(data))
|
||||
|
||||
return conf
|
||||
@@ -0,0 +1,61 @@
|
||||
// This is the default config file and should NOT be changed.
|
||||
//
|
||||
// There are two ways to create a custom config.
|
||||
//
|
||||
// 1. You can create a "config.json" at repo/config/config.json.
|
||||
// This file will override any keys in this default.json file
|
||||
// and will be ignored by git.
|
||||
//
|
||||
// 2. The other way is to create an environment variable with the name
|
||||
// STUDIO_LIBRARY_CONFIG_PATH. The value of this variable should be the
|
||||
// full path to your config.json file.
|
||||
//
|
||||
// 3. Or you could use code to modify the config before loading the window.
|
||||
// import studiolibrary
|
||||
// studiolibrary.config.set("recursiveSearchDepth", 6)
|
||||
// studiolibrary.main()
|
||||
|
||||
{
|
||||
// The database path is used for caching the library items.
|
||||
// You can use environment variables within the path. eg: {HOME}
|
||||
"databasePath": "{root}/.studiolibrary/database.json",
|
||||
|
||||
// The temp location used for saving out items and thumbnails
|
||||
"tempPath": "{temp}/StudioLibrary/{user}",
|
||||
|
||||
// The metadata path used for each item. Used for tags, item color etc
|
||||
// eg: /library/data/animation/nemo/.metadata
|
||||
"metadataPath": "{path}/.studiolibrary/metadata.json",
|
||||
|
||||
// Used for saving persistent user data
|
||||
"settingsPath": "{local}/StudioLibrary/LibraryWidget.json",
|
||||
|
||||
// The maximum walking depth from the root directory
|
||||
"recursiveSearchDepth": 5,
|
||||
|
||||
// A list of paths to ignore when walking the root directory
|
||||
"ignorePaths": ["/."],
|
||||
|
||||
// The command used to show a path in the file explorer
|
||||
//"showInFolderCmd": "konqueror \"{path}\"&",
|
||||
|
||||
// Enables the scale factor option in the setting dialog
|
||||
// This might be useful when using high-DPI devices like a 4k monitor
|
||||
"scaleFactorEnabled": true,
|
||||
|
||||
// Check if there are any new versions available on start up
|
||||
"checkForUpdatesEnabled": true,
|
||||
|
||||
// A list of the default item plugins
|
||||
"itemRegistry": [
|
||||
// This is an example item for development
|
||||
// "studiolibrarymaya.exampleitem.ExampleItem",
|
||||
// The maya file item is in development
|
||||
// "studiolibrarymaya.mayafileitem.MayaFileItem",
|
||||
"studiolibrarymaya.poseitem.PoseItem",
|
||||
"studiolibrarymaya.animitem.AnimItem",
|
||||
"studiolibrarymaya.mirroritem.MirrorItem",
|
||||
"studiolibrarymaya.setsitem.SetsItem",
|
||||
"studiolibrary.folderitem.FolderItem"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,367 @@
|
||||
# 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
|
||||
from datetime import datetime
|
||||
|
||||
from studiovendor.Qt import QtGui
|
||||
from studiovendor.Qt import QtCore
|
||||
from studiovendor.Qt import QtWidgets
|
||||
|
||||
import studioqt
|
||||
import studiolibrary
|
||||
import studiolibrary.widgets
|
||||
|
||||
|
||||
class FolderItem(studiolibrary.LibraryItem):
|
||||
|
||||
NAME = "Folder"
|
||||
TYPE = "Folder"
|
||||
|
||||
MENU_ORDER = 0 # Show at the top of the menu
|
||||
SYNC_ORDER = 100 # Last item to run when syncing
|
||||
|
||||
LOAD_WIDGET_CLASS = studiolibrary.widgets.PreviewWidget
|
||||
ENABLE_NESTED_ITEMS = True
|
||||
|
||||
ICON_PATH = studiolibrary.resource.get("icons", "folder.svg")
|
||||
TYPE_ICON_PATH = "" # Don't show a type icon for the folder item
|
||||
THUMBNAIL_PATH = studiolibrary.resource.get("icons", "folder_item.png")
|
||||
|
||||
DEFAULT_ICON_COLOR = "rgba(150,150,150,100)"
|
||||
|
||||
DEFAULT_ICON_COLORS = [
|
||||
"rgb(239, 112, 99)",
|
||||
"rgb(239, 207, 103)",
|
||||
"rgb(136, 200, 101)",
|
||||
"rgb(111, 183, 239)",
|
||||
"rgb(199, 142, 220)",
|
||||
DEFAULT_ICON_COLOR,
|
||||
]
|
||||
|
||||
DEFAULT_ICONS = [
|
||||
"folder.svg",
|
||||
"user.svg",
|
||||
"character.svg",
|
||||
"users.svg",
|
||||
"inbox.svg",
|
||||
"favorite.svg",
|
||||
"shot.svg",
|
||||
"asset.svg",
|
||||
"assets.svg",
|
||||
"cloud.svg",
|
||||
"book.svg",
|
||||
"archive.svg",
|
||||
"circle.svg",
|
||||
"share.svg",
|
||||
"tree.svg",
|
||||
"environment.svg",
|
||||
"vehicle.svg",
|
||||
"trash.svg",
|
||||
"layers.svg",
|
||||
"database.svg",
|
||||
"video.svg",
|
||||
"face.svg",
|
||||
"hand.svg",
|
||||
"globe.svg",
|
||||
]
|
||||
|
||||
_THUMBNAIL_ICON_CACHE = {}
|
||||
|
||||
@classmethod
|
||||
def match(cls, path):
|
||||
"""
|
||||
Return True if the given path is supported by the item.
|
||||
|
||||
:type path: str
|
||||
:rtype: bool
|
||||
"""
|
||||
if os.path.isdir(path):
|
||||
return True
|
||||
|
||||
def itemData(self):
|
||||
"""
|
||||
Reimplementing this method to set a trash folder icon.
|
||||
|
||||
:rtype: dict
|
||||
"""
|
||||
data = super(FolderItem, self).itemData()
|
||||
|
||||
if self.path().endswith("Trash") and not data.get("icon"):
|
||||
data["icon"] = "trash.svg"
|
||||
|
||||
return data
|
||||
|
||||
def updatePermissionsEnabled(self):
|
||||
return True
|
||||
|
||||
def updateMetadata(self, metadata):
|
||||
"""
|
||||
Overriding this method to support updating the library widget directly.
|
||||
|
||||
:type metadata: dict
|
||||
"""
|
||||
super(FolderItem, self).updateMetadata(metadata)
|
||||
|
||||
if self.libraryWindow():
|
||||
self.libraryWindow().setFolderData(self.path(), self.itemData())
|
||||
self.updateIcon()
|
||||
|
||||
def doubleClicked(self):
|
||||
"""Overriding this method to show the items contained in the folder."""
|
||||
self.libraryWindow().selectFolderPath(self.path())
|
||||
|
||||
def createOverwriteMenu(self, menu):
|
||||
"""
|
||||
Overwriting this method to ignore/hide the overwrite menu action.
|
||||
|
||||
:type menu: QtWidgets.QMenu
|
||||
"""
|
||||
pass
|
||||
|
||||
def _showPreviewFromMenu(self):
|
||||
|
||||
self.libraryWindow().itemsWidget().clearSelection()
|
||||
self.showPreviewWidget(self.libraryWindow())
|
||||
|
||||
def contextEditMenu(self, menu, items=None):
|
||||
"""
|
||||
Called when creating the context menu for the item.
|
||||
|
||||
:type menu: QtWidgets.QMenu
|
||||
:type items: list[FolderItem] or None
|
||||
"""
|
||||
super(FolderItem, self).contextEditMenu(menu, items=items)
|
||||
|
||||
action = QtWidgets.QAction("Show in Preview", menu)
|
||||
|
||||
action.triggered.connect(self._showPreviewFromMenu)
|
||||
menu.addAction(action)
|
||||
menu.addSeparator()
|
||||
|
||||
action = studiolibrary.widgets.colorpicker.ColorPickerAction(menu)
|
||||
action.picker().setColors(self.DEFAULT_ICON_COLORS)
|
||||
action.picker().colorChanged.connect(self.setIconColor)
|
||||
action.picker().setCurrentColor(self.iconColor())
|
||||
action.picker().menuButton().hide()
|
||||
menu.addAction(action)
|
||||
|
||||
iconName = self.itemData().get("icon", "")
|
||||
|
||||
action = studiolibrary.widgets.iconpicker.IconPickerAction(menu)
|
||||
action.picker().setIcons(self.DEFAULT_ICONS)
|
||||
action.picker().setCurrentIcon(iconName)
|
||||
action.picker().iconChanged.connect(self.setCustomIcon)
|
||||
action.picker().menuButton().hide()
|
||||
|
||||
menu.addAction(action)
|
||||
|
||||
def iconColor(self):
|
||||
"""
|
||||
Get the icon color for the folder item.
|
||||
|
||||
:rtype: str
|
||||
"""
|
||||
return self.itemData().get("color", "")
|
||||
|
||||
def setIconColor(self, color):
|
||||
"""
|
||||
Set the icon color for the folder item.
|
||||
|
||||
:type color: str
|
||||
"""
|
||||
if color == self.DEFAULT_ICON_COLOR:
|
||||
color = ""
|
||||
|
||||
self.updateMetadata({"color": color})
|
||||
|
||||
def customIconPath(self):
|
||||
"""
|
||||
Get the icon for the folder item.
|
||||
|
||||
:rtype: str
|
||||
"""
|
||||
return self.itemData().get("icon", "")
|
||||
|
||||
def setCustomIcon(self, name):
|
||||
"""
|
||||
Set the icon for the folder item.
|
||||
|
||||
:type name: str
|
||||
"""
|
||||
if name == "folder.svg":
|
||||
name = ""
|
||||
|
||||
self.updateMetadata({"icon": name})
|
||||
|
||||
def thumbnailIcon(self):
|
||||
"""
|
||||
Overriding this method add support for dynamic icon colors.
|
||||
|
||||
:rtype: QtGui.QIcon
|
||||
"""
|
||||
customPath = self.customIconPath()
|
||||
|
||||
if customPath and "/" not in customPath and "\\" not in customPath:
|
||||
customPath = studiolibrary.resource.get("icons", customPath)
|
||||
|
||||
color = self.iconColor()
|
||||
if not color:
|
||||
color = self.DEFAULT_ICON_COLOR
|
||||
|
||||
key = customPath + color
|
||||
icon = self._THUMBNAIL_ICON_CACHE.get(key)
|
||||
|
||||
if not icon:
|
||||
color1 = studioqt.Color.fromString(color)
|
||||
pixmap1 = studioqt.Pixmap(self.THUMBNAIL_PATH)
|
||||
pixmap1.setColor(color1)
|
||||
pixmap1 = pixmap1.scaled(
|
||||
128,
|
||||
128,
|
||||
QtCore.Qt.KeepAspectRatio,
|
||||
QtCore.Qt.SmoothTransformation
|
||||
)
|
||||
|
||||
color2 = studioqt.Color.fromString("rgba(255,255,255,150)")
|
||||
pixmap2 = studioqt.Pixmap(customPath)
|
||||
pixmap2.setColor(color2)
|
||||
pixmap2 = pixmap2.scaled(
|
||||
64,
|
||||
64,
|
||||
QtCore.Qt.KeepAspectRatio,
|
||||
QtCore.Qt.SmoothTransformation
|
||||
)
|
||||
|
||||
x = (128 - pixmap2.width()) / 2
|
||||
y = (128 - pixmap2.height()) / 2
|
||||
|
||||
painter = QtGui.QPainter(pixmap1)
|
||||
painter.drawPixmap(x, y+5, pixmap2)
|
||||
painter.end()
|
||||
|
||||
icon = studioqt.Icon(pixmap1)
|
||||
|
||||
self._THUMBNAIL_ICON_CACHE[key] = icon
|
||||
|
||||
return self._THUMBNAIL_ICON_CACHE.get(key)
|
||||
|
||||
def loadValidator(self, **kwargs):
|
||||
"""
|
||||
The validator used for validating the load arguments.
|
||||
|
||||
:type kwargs: dict
|
||||
"""
|
||||
if kwargs.get("fieldChanged") == "color":
|
||||
self.setIconColor(kwargs.get("color"))
|
||||
|
||||
if kwargs.get("fieldChanged") == "icon":
|
||||
self.setCustomIcon(kwargs.get("icon"))
|
||||
|
||||
def loadSchema(self):
|
||||
"""
|
||||
Get the info to display to user.
|
||||
|
||||
:rtype: list[dict]
|
||||
"""
|
||||
created = os.stat(self.path()).st_ctime
|
||||
created = datetime.fromtimestamp(created).strftime("%Y-%m-%d %H:%M %p")
|
||||
|
||||
modified = os.stat(self.path()).st_mtime
|
||||
modified = datetime.fromtimestamp(modified).strftime("%Y-%m-%d %H:%M %p")
|
||||
|
||||
iconName = self.itemData().get("icon", "")
|
||||
|
||||
return [
|
||||
{
|
||||
"name": "infoGroup",
|
||||
"title": "Info",
|
||||
"value": True,
|
||||
"type": "group",
|
||||
"persistent": True,
|
||||
"persistentKey": "BaseItem",
|
||||
},
|
||||
{
|
||||
"name": "name",
|
||||
"value": self.name()
|
||||
},
|
||||
{
|
||||
"name": "path",
|
||||
"value": self.path()
|
||||
},
|
||||
{
|
||||
"name": "created",
|
||||
"value": created,
|
||||
},
|
||||
{
|
||||
"name": "modified",
|
||||
"value": modified,
|
||||
},
|
||||
{
|
||||
"name": "optionsGroup",
|
||||
"title": "Options",
|
||||
"type": "group",
|
||||
},
|
||||
|
||||
{
|
||||
"name": "color",
|
||||
"type": "color",
|
||||
"value": self.iconColor(),
|
||||
"layout": "vertical",
|
||||
"label": {"visible": False},
|
||||
"colors": self.DEFAULT_ICON_COLORS,
|
||||
},
|
||||
|
||||
{
|
||||
"name": "icon",
|
||||
"type": "iconPicker",
|
||||
"value": iconName,
|
||||
"layout": "vertical",
|
||||
"label": {"visible": False},
|
||||
"items": self.DEFAULT_ICONS,
|
||||
}
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def showSaveWidget(cls, libraryWindow):
|
||||
"""
|
||||
Show the dialog for creating a new folder.
|
||||
|
||||
:rtype: None
|
||||
"""
|
||||
path = libraryWindow.selectedFolderPath() or libraryWindow.path()
|
||||
|
||||
name, button = studiolibrary.widgets.MessageBox.input(
|
||||
libraryWindow,
|
||||
"Create folder",
|
||||
"Create a new folder with the name:",
|
||||
buttons=[
|
||||
("Create", QtWidgets.QDialogButtonBox.AcceptRole),
|
||||
("Cancel", QtWidgets.QDialogButtonBox.RejectRole)
|
||||
]
|
||||
)
|
||||
|
||||
name = name.strip()
|
||||
|
||||
if name and button == "Create":
|
||||
path = os.path.join(path, name)
|
||||
|
||||
item = cls(path, libraryWindow=libraryWindow)
|
||||
item.safeSave()
|
||||
|
||||
if libraryWindow:
|
||||
libraryWindow.refresh()
|
||||
libraryWindow.selectFolderPath(path)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
"""Adding this method to avoid NotImpementedError."""
|
||||
pass
|
||||
1081
2023/scripts/animation_tools/studiolibrary/studiolibrary/library.py
Normal file
@@ -0,0 +1,913 @@
|
||||
# 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 functools import partial
|
||||
|
||||
from studiovendor.Qt import QtGui
|
||||
from studiovendor.Qt import QtCore
|
||||
from studiovendor.Qt import QtWidgets
|
||||
|
||||
import studiolibrary
|
||||
import studiolibrary.widgets
|
||||
import studiolibrary.librarywindow
|
||||
|
||||
import studioqt
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ItemError(Exception):
|
||||
""""""
|
||||
|
||||
|
||||
class ItemSaveError(ItemError):
|
||||
""""""
|
||||
|
||||
|
||||
class ItemLoadError(ItemError):
|
||||
""""""
|
||||
|
||||
|
||||
class LibraryItemSignals(QtCore.QObject):
|
||||
""""""
|
||||
saved = QtCore.Signal(object)
|
||||
saving = QtCore.Signal(object)
|
||||
loaded = QtCore.Signal(object)
|
||||
copied = QtCore.Signal(object, object, object)
|
||||
deleted = QtCore.Signal(object)
|
||||
renamed = QtCore.Signal(object, object, object)
|
||||
dataChanged = QtCore.Signal(object)
|
||||
|
||||
# Note: We will be changing the base class in the near future
|
||||
class LibraryItem(studiolibrary.widgets.Item):
|
||||
|
||||
NAME = ""
|
||||
TYPE = ""
|
||||
THUMBNAIL_PATH = studiolibrary.resource.get("icons", "thumbnail.png")
|
||||
|
||||
EXTENSION = ""
|
||||
EXTENSIONS = []
|
||||
|
||||
ENABLE_DELETE = False
|
||||
ENABLE_NESTED_ITEMS = False
|
||||
|
||||
SYNC_ORDER = 10
|
||||
MENU_ORDER = 10
|
||||
|
||||
SAVE_WIDGET_CLASS = None
|
||||
LOAD_WIDGET_CLASS = None
|
||||
|
||||
_libraryItemSignals = LibraryItemSignals()
|
||||
|
||||
saved = _libraryItemSignals.saved
|
||||
saving = _libraryItemSignals.saving
|
||||
loaded = _libraryItemSignals.loaded
|
||||
copied = _libraryItemSignals.renamed
|
||||
renamed = _libraryItemSignals.renamed
|
||||
deleted = _libraryItemSignals.deleted
|
||||
dataChanged = _libraryItemSignals.dataChanged
|
||||
|
||||
def createItemData(self):
|
||||
"""
|
||||
Called when syncing the given path with the library cache.
|
||||
|
||||
:rtype: dict
|
||||
"""
|
||||
import studiolibrary.library
|
||||
|
||||
path = self.path()
|
||||
path = studiolibrary.latestVersionPath(path) or path
|
||||
|
||||
if studiolibrary.isVersionPath(path):
|
||||
dirname = os.path.dirname(path)
|
||||
name = os.path.basename(dirname)
|
||||
dirname, basename, extension = studiolibrary.splitPath(dirname)
|
||||
else:
|
||||
dirname, basename, extension = studiolibrary.splitPath(path)
|
||||
name = os.path.basename(path)
|
||||
|
||||
category = os.path.basename(dirname) or dirname
|
||||
modified = ""
|
||||
|
||||
if os.path.exists(path):
|
||||
modified = os.path.getmtime(path)
|
||||
|
||||
itemData = dict(self.readMetadata())
|
||||
|
||||
itemData.update({
|
||||
"name": name,
|
||||
"path": path,
|
||||
"type": self.TYPE or extension,
|
||||
"folder": dirname,
|
||||
"category": category,
|
||||
"modified": modified,
|
||||
"__class__": self.__class__.__module__ + "." + self.__class__.__name__
|
||||
})
|
||||
|
||||
return itemData
|
||||
|
||||
@classmethod
|
||||
def createAction(cls, menu, libraryWindow):
|
||||
"""
|
||||
Return the action to be displayed when the user
|
||||
ks the "plus" icon.
|
||||
|
||||
:type menu: QtWidgets.QMenu
|
||||
:type libraryWindow: studiolibrary.LibraryWindow
|
||||
:rtype: QtCore.QAction
|
||||
"""
|
||||
if cls.NAME:
|
||||
|
||||
icon = QtGui.QIcon(cls.ICON_PATH)
|
||||
callback = partial(cls.showSaveWidget, libraryWindow)
|
||||
|
||||
action = QtWidgets.QAction(icon, cls.NAME, menu)
|
||||
action.triggered.connect(callback)
|
||||
|
||||
return action
|
||||
|
||||
@classmethod
|
||||
def showSaveWidget(cls, libraryWindow, item=None):
|
||||
"""
|
||||
Show the create widget for creating a new item.
|
||||
|
||||
:type libraryWindow: studiolibrary.LibraryWindow
|
||||
:type item: studiolibrary.LibraryItem or None
|
||||
"""
|
||||
item = item or cls()
|
||||
widget = cls.SAVE_WIDGET_CLASS(item=item)
|
||||
libraryWindow.setCreateWidget(widget)
|
||||
|
||||
@classmethod
|
||||
def isValidPath(cls, path):
|
||||
"""
|
||||
This method has been deprecated.
|
||||
|
||||
Please use LibraryItem.match(cls, path)
|
||||
|
||||
:type path: str
|
||||
:rtype: bool
|
||||
"""
|
||||
return cls.match(path)
|
||||
|
||||
@classmethod
|
||||
def match(cls, path):
|
||||
"""
|
||||
Return True if the given path location is supported by the item.
|
||||
|
||||
:type path: str
|
||||
:rtype: bool
|
||||
"""
|
||||
extensions = cls.EXTENSIONS
|
||||
if not extensions and cls.EXTENSION:
|
||||
extensions = [cls.EXTENSION]
|
||||
|
||||
for ext in extensions:
|
||||
if path.endswith(ext):
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
path="",
|
||||
library=None,
|
||||
libraryWindow=None,
|
||||
):
|
||||
"""
|
||||
The LibraryItem class provides an item for use with the LibraryWindow.
|
||||
|
||||
:type path: str
|
||||
:type library: studiolibrary.Library or None
|
||||
:type libraryWindow: studiolibrary.LibraryWindow or None
|
||||
"""
|
||||
super(LibraryItem, self).__init__()
|
||||
|
||||
self._path = path
|
||||
self._modal = None
|
||||
self._library = None
|
||||
self._metadata = None
|
||||
self._libraryWindow = None
|
||||
|
||||
self._readOnly = False
|
||||
self._ignoreExistsDialog = False
|
||||
|
||||
if libraryWindow:
|
||||
self.setLibraryWindow(libraryWindow)
|
||||
|
||||
if library:
|
||||
self.setLibrary(library)
|
||||
|
||||
# if path:
|
||||
# self.setPath(path)
|
||||
|
||||
def updatePermissionsEnabled(self):
|
||||
return False
|
||||
|
||||
def setReadOnly(self, readOnly):
|
||||
"""
|
||||
Set the item to read only.
|
||||
|
||||
:type readOnly: bool
|
||||
"""
|
||||
self._readOnly = readOnly
|
||||
|
||||
def isReadOnly(self):
|
||||
"""
|
||||
Check if the item is read only.
|
||||
|
||||
:rtype: bool
|
||||
"""
|
||||
if self.isLocked():
|
||||
return True
|
||||
|
||||
return self._readOnly
|
||||
|
||||
def isLocked(self):
|
||||
"""
|
||||
Check if the item has been locked by the window.
|
||||
|
||||
:rtype: bool
|
||||
"""
|
||||
locked = False
|
||||
if self.libraryWindow():
|
||||
locked = self.libraryWindow().isLocked()
|
||||
return locked
|
||||
|
||||
def isDeletable(self):
|
||||
"""
|
||||
Check if the item is deletable.
|
||||
|
||||
:rtype: bool
|
||||
"""
|
||||
if self.isLocked():
|
||||
return False
|
||||
|
||||
return self.ENABLE_DELETE
|
||||
|
||||
def overwrite(self):
|
||||
"""
|
||||
Show the save widget with the input fields populated.
|
||||
"""
|
||||
self._ignoreExistsDialog = True
|
||||
widget = self.showSaveWidget(self.libraryWindow(), item=self)
|
||||
|
||||
def loadSchema(self):
|
||||
"""
|
||||
Get the options used to load the item.
|
||||
|
||||
:rtype: list[dict]
|
||||
"""
|
||||
return []
|
||||
|
||||
def loadValidator(self, **kwargs):
|
||||
"""
|
||||
Validate the current load options.
|
||||
|
||||
:type kwargs: dict
|
||||
:rtype: list[dict]
|
||||
"""
|
||||
return []
|
||||
|
||||
def load(self, *args, **kwargs):
|
||||
"""
|
||||
Reimplement this method for loading item data.
|
||||
|
||||
:type args: list
|
||||
:type kwargs: dict
|
||||
"""
|
||||
raise NotImplementedError("The load method has not been implemented!")
|
||||
|
||||
def id(self):
|
||||
"""
|
||||
Return the unique id for the item.
|
||||
|
||||
:rtype: str
|
||||
"""
|
||||
return self.path()
|
||||
|
||||
def showToastMessage(self, text):
|
||||
"""
|
||||
A convenience method for showing the toast widget with the given text.
|
||||
|
||||
:type text: str
|
||||
"""
|
||||
if self.libraryWindow():
|
||||
self.libraryWindow().showToastMessage(text)
|
||||
|
||||
def showErrorDialog(self, title, text):
|
||||
"""
|
||||
Convenience method for showing an error dialog to the user.
|
||||
|
||||
:type title: str
|
||||
:type text: str
|
||||
:rtype: QMessageBox.StandardButton or None
|
||||
"""
|
||||
if self.libraryWindow():
|
||||
self.libraryWindow().showErrorMessage(text)
|
||||
|
||||
button = None
|
||||
|
||||
if not self._modal:
|
||||
self._modal = True
|
||||
|
||||
try:
|
||||
button = studiolibrary.widgets.MessageBox.critical(self.libraryWindow(), title, text)
|
||||
finally:
|
||||
self._modal = False
|
||||
|
||||
return button
|
||||
|
||||
def showExceptionDialog(self, title, error):
|
||||
"""
|
||||
Convenience method for showing a question dialog to the user.
|
||||
|
||||
:type title: str
|
||||
:type error: Exception
|
||||
:rtype: QMessageBox.StandardButton
|
||||
"""
|
||||
logger.exception(error)
|
||||
return self.showErrorDialog(title, error)
|
||||
|
||||
def showQuestionDialog(self, title, text):
|
||||
"""
|
||||
Convenience method for showing a question dialog to the user.
|
||||
|
||||
:type title: str
|
||||
:type text: str
|
||||
:rtype: QMessageBox.StandardButton
|
||||
"""
|
||||
return studiolibrary.widgets.MessageBox.question(self.libraryWindow(), title, text)
|
||||
|
||||
def thumbnailPath(self):
|
||||
"""
|
||||
Return the thumbnail location on disc for this item.
|
||||
|
||||
:rtype: str
|
||||
"""
|
||||
thumbnailPath = self.path() + "/thumbnail.jpg"
|
||||
if os.path.exists(thumbnailPath):
|
||||
return thumbnailPath
|
||||
|
||||
thumbnailPath = thumbnailPath.replace(".jpg", ".png")
|
||||
if os.path.exists(thumbnailPath):
|
||||
return thumbnailPath
|
||||
|
||||
return self.THUMBNAIL_PATH
|
||||
|
||||
def isTHUMBNAIL_PATH(self):
|
||||
"""
|
||||
Check if the thumbnail path is the default path.
|
||||
|
||||
:rtype: bool
|
||||
"""
|
||||
return self.thumbnailPath() == self.THUMBNAIL_PATH
|
||||
|
||||
def showPreviewWidget(self, libraryWindow):
|
||||
"""
|
||||
Show the preview Widget for the item instance.
|
||||
|
||||
:type libraryWindow: studiolibrary.LibraryWindow
|
||||
"""
|
||||
widget = self.previewWidget(libraryWindow)
|
||||
libraryWindow.setPreviewWidget(widget)
|
||||
|
||||
def previewWidget(self, libraryWindow):
|
||||
"""
|
||||
Return the widget to be shown when the user clicks on the item.
|
||||
|
||||
:type libraryWindow: studiolibrary.LibraryWindow
|
||||
:rtype: QtWidgets.QWidget or None
|
||||
"""
|
||||
widget = None
|
||||
|
||||
if self.LOAD_WIDGET_CLASS:
|
||||
widget = self.LOAD_WIDGET_CLASS(item=self)
|
||||
|
||||
return widget
|
||||
|
||||
def isVersionPath(self):
|
||||
return studiolibrary.isVersionPath(self.path())
|
||||
|
||||
def contextEditMenu(self, menu, items=None):
|
||||
"""
|
||||
Called when the user would like to edit the item from the menu.
|
||||
|
||||
The given menu is shown as a submenu of the main context menu.
|
||||
|
||||
:type menu: QtWidgets.QMenu
|
||||
:type items: list[LibraryItem] or None
|
||||
"""
|
||||
# Adding a blank icon fixes the text alignment issue when using Qt 5.12.+
|
||||
icon = studiolibrary.resource.icon("blank")
|
||||
enabled = not self.isVersionPath()
|
||||
|
||||
action = QtWidgets.QAction("Rename", menu)
|
||||
action.setEnabled(enabled)
|
||||
action.setIcon(icon)
|
||||
action.triggered.connect(self.showRenameDialog)
|
||||
menu.addAction(action)
|
||||
|
||||
action = QtWidgets.QAction("Move to", menu)
|
||||
action.setEnabled(enabled)
|
||||
action.triggered.connect(self.showMoveDialog)
|
||||
menu.addAction(action)
|
||||
|
||||
action = QtWidgets.QAction("Copy Path", menu)
|
||||
action.triggered.connect(self.copyPathToClipboard)
|
||||
action.setEnabled(enabled)
|
||||
menu.addAction(action)
|
||||
|
||||
if self.libraryWindow():
|
||||
action = QtWidgets.QAction("Select Folder", menu)
|
||||
action.triggered.connect(self.selectFolder)
|
||||
menu.addAction(action)
|
||||
|
||||
action = QtWidgets.QAction("Show in Folder", menu)
|
||||
action.triggered.connect(self.showInFolder)
|
||||
menu.addAction(action)
|
||||
|
||||
if self.isDeletable():
|
||||
menu.addSeparator()
|
||||
action = QtWidgets.QAction("Delete", menu)
|
||||
action.setEnabled(enabled)
|
||||
action.triggered.connect(self.showDeleteDialog)
|
||||
menu.addAction(action)
|
||||
|
||||
self.createOverwriteMenu(menu)
|
||||
|
||||
def createOverwriteMenu(self, menu):
|
||||
"""
|
||||
Create a menu or action to trigger the overwrite method.
|
||||
|
||||
:type menu: QtWidgets.QMenu
|
||||
"""
|
||||
if not self.isReadOnly():
|
||||
enabled = not self.isVersionPath()
|
||||
menu.addSeparator()
|
||||
action = QtWidgets.QAction("Overwrite", menu)
|
||||
action.setEnabled(enabled)
|
||||
action.triggered.connect(self.overwrite)
|
||||
menu.addAction(action)
|
||||
|
||||
def copyPathToClipboard(self):
|
||||
"""Copy the item path to the system clipboard."""
|
||||
cb = QtWidgets.QApplication.clipboard()
|
||||
cb.clear(mode=cb.Clipboard)
|
||||
cb.setText(self.path(), mode=cb.Clipboard)
|
||||
|
||||
def contextMenu(self, menu, items=None):
|
||||
"""
|
||||
Called when the user right clicks on the item.
|
||||
|
||||
:type menu: QtWidgets.QMenu
|
||||
:type items: list[LibraryItem]
|
||||
:rtype: None
|
||||
"""
|
||||
pass
|
||||
|
||||
def showInFolder(self):
|
||||
"""Open the file explorer at the given path location."""
|
||||
path = self.path()
|
||||
studiolibrary.showInFolder(path)
|
||||
|
||||
def selectFolder(self):
|
||||
"""select the folder in the library widget"""
|
||||
if self.libraryWindow():
|
||||
path = '/'.join(studiolibrary.normPath(self.path()).split('/')[:-1])
|
||||
self.libraryWindow().selectFolderPath(path)
|
||||
|
||||
def url(self):
|
||||
"""Used by the mime data when dragging/dropping the item."""
|
||||
return QtCore.QUrl("file:///" + self.path())
|
||||
|
||||
def setLibraryWindow(self, libraryWindow):
|
||||
"""
|
||||
Set the library widget containing the item.
|
||||
|
||||
:rtype: studiolibrary.LibraryWindow or None
|
||||
"""
|
||||
self._libraryWindow = libraryWindow
|
||||
|
||||
def libraryWindow(self):
|
||||
"""
|
||||
Return the library widget containing the item.
|
||||
|
||||
:rtype: studiolibrary.LibraryWindow or None
|
||||
"""
|
||||
return self._libraryWindow
|
||||
|
||||
def setLibrary(self, library):
|
||||
"""
|
||||
Set the library model for the item.
|
||||
|
||||
:type library: studiolibrary.Library
|
||||
"""
|
||||
self._library = library
|
||||
|
||||
def library(self):
|
||||
"""
|
||||
Return the library model for the item.
|
||||
|
||||
:rtype: studiolibrary.Library or None
|
||||
"""
|
||||
if not self._library and self.libraryWindow():
|
||||
return self.libraryWindow().library()
|
||||
|
||||
return self._library
|
||||
|
||||
def setIconPath(self, path):
|
||||
"""
|
||||
Set the icon path for the current item.
|
||||
|
||||
:type path: str
|
||||
:rtype: None
|
||||
"""
|
||||
self._iconPath = path
|
||||
|
||||
def iconPath(self):
|
||||
"""
|
||||
Return the icon path for the current item.
|
||||
|
||||
:rtype: None
|
||||
"""
|
||||
return self._iconPath
|
||||
|
||||
def mimeText(self):
|
||||
"""
|
||||
:rtype: str
|
||||
"""
|
||||
return self.path()
|
||||
|
||||
def path(self):
|
||||
"""
|
||||
Get the path for the item.
|
||||
|
||||
:rtype: str
|
||||
"""
|
||||
return self._path
|
||||
|
||||
def setPath(self, path):
|
||||
"""
|
||||
Set the path for the item.
|
||||
|
||||
:rtype: str
|
||||
"""
|
||||
self._path = studiolibrary.normPath(path)
|
||||
|
||||
def setMetadata(self, metadata):
|
||||
"""
|
||||
Set the given metadata for the item.
|
||||
|
||||
:type metadata: dict
|
||||
"""
|
||||
self._metadata = metadata
|
||||
|
||||
def metadata(self):
|
||||
"""
|
||||
Get the metadata for the item from disc.
|
||||
|
||||
:rtype: dict
|
||||
"""
|
||||
return self._metadata
|
||||
|
||||
def updateMetadata(self, metadata):
|
||||
"""
|
||||
Update the current metadata from disc with the given metadata.
|
||||
|
||||
:type metadata: dict
|
||||
"""
|
||||
metadata_ = self.readMetadata()
|
||||
metadata_.update(metadata)
|
||||
self.saveMetadata(metadata_)
|
||||
|
||||
def saveMetadata(self, metadata):
|
||||
"""
|
||||
Save the given metadata to disc.
|
||||
|
||||
:type metadata: dict
|
||||
"""
|
||||
formatString = studiolibrary.config.get('metadataPath')
|
||||
path = studiolibrary.formatPath(formatString, self.path())
|
||||
studiolibrary.saveJson(path, metadata)
|
||||
|
||||
if self.updatePermissionsEnabled():
|
||||
self.library().updatePermissions(path)
|
||||
|
||||
self.setMetadata(metadata)
|
||||
self.syncItemData(emitDataChanged=False)
|
||||
self.dataChanged.emit(self)
|
||||
|
||||
def readMetadata(self):
|
||||
"""
|
||||
Read the metadata for the item from disc.
|
||||
|
||||
:rtype: dict
|
||||
"""
|
||||
if self._metadata is None:
|
||||
formatString = studiolibrary.config.get('metadataPath')
|
||||
path = studiolibrary.formatPath(formatString, self.path())
|
||||
|
||||
if os.path.exists(path):
|
||||
self._metadata = studiolibrary.readJson(path)
|
||||
else:
|
||||
self._metadata = {}
|
||||
|
||||
return self._metadata
|
||||
|
||||
def syncItemData(self, emitDataChanged=True):
|
||||
"""Sync the item data to the database."""
|
||||
data = self.createItemData()
|
||||
self.setItemData(data)
|
||||
|
||||
if self.library():
|
||||
self.library().saveItemData([self], emitDataChanged=emitDataChanged)
|
||||
|
||||
def saveSchema(self):
|
||||
"""
|
||||
Get the schema used for saving the item.
|
||||
|
||||
:rtype: list[dict]
|
||||
"""
|
||||
return []
|
||||
|
||||
def saveValidator(self, **fields):
|
||||
"""
|
||||
Validate the given save fields.
|
||||
|
||||
:type fields: dict
|
||||
:rtype: list[dict]
|
||||
"""
|
||||
return []
|
||||
|
||||
@studioqt.showWaitCursor
|
||||
def safeSave(self, *args, **kwargs):
|
||||
"""
|
||||
Safe save the item.
|
||||
"""
|
||||
dst = self.path()
|
||||
|
||||
if dst and not dst.endswith(self.EXTENSION):
|
||||
dst += self.EXTENSION
|
||||
|
||||
self.setPath(dst)
|
||||
|
||||
logger.debug(u'Item Saving: {0}'.format(dst))
|
||||
self.saving.emit(self)
|
||||
|
||||
if os.path.exists(dst):
|
||||
if studiolibrary.latestVersionPath(self.path()):
|
||||
raise NameError("You can only save items that were "
|
||||
"created using Studio Library version 2!")
|
||||
elif self._ignoreExistsDialog:
|
||||
self._moveToTrash()
|
||||
else:
|
||||
self.showAlreadyExistsDialog()
|
||||
|
||||
tmp = studiolibrary.createTempPath(self.__class__.__name__)
|
||||
|
||||
self.setPath(tmp)
|
||||
|
||||
self.save(*args, **kwargs)
|
||||
|
||||
shutil.move(tmp, dst)
|
||||
self.setPath(dst)
|
||||
|
||||
if self.updatePermissionsEnabled():
|
||||
self.library().updatePermissions(dst)
|
||||
|
||||
self.syncItemData()
|
||||
|
||||
if self.libraryWindow():
|
||||
self.libraryWindow().selectItems([self])
|
||||
|
||||
self.saved.emit(self)
|
||||
logger.debug(u'Item Saved: {0}'.format(dst))
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
"""
|
||||
Save the item io data to the given path.
|
||||
|
||||
:type args: list
|
||||
:type kwargs: dict
|
||||
"""
|
||||
raise NotImplementedError("The save method has not been implemented!")
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# Support for copy and rename
|
||||
# -----------------------------------------------------------------
|
||||
|
||||
def delete(self):
|
||||
"""
|
||||
Delete the item from disc and the library model.
|
||||
|
||||
:rtype: None
|
||||
"""
|
||||
studiolibrary.removePath(self.path())
|
||||
|
||||
if self.library():
|
||||
self.library().removePath(self.path())
|
||||
|
||||
self.deleted.emit(self)
|
||||
|
||||
def copy(self, dst):
|
||||
"""
|
||||
Make a copy/duplicate the current item to the given destination.
|
||||
|
||||
:type dst: str
|
||||
:rtype: None
|
||||
"""
|
||||
src = self.path()
|
||||
dst = studiolibrary.copyPath(src, dst)
|
||||
|
||||
if self.library():
|
||||
self.library().copyPath(src, dst)
|
||||
|
||||
self.copied.emit(self, src, dst)
|
||||
|
||||
if self.libraryWindow():
|
||||
self.libraryWindow().refresh()
|
||||
|
||||
def move(self, dst):
|
||||
"""
|
||||
Move the current item to the given destination.
|
||||
|
||||
:type dst: str
|
||||
:rtype: None
|
||||
"""
|
||||
self.rename(dst)
|
||||
|
||||
def rename(self, dst, extension=None):
|
||||
"""
|
||||
Rename the current path to the given destination path.
|
||||
|
||||
:type dst: str
|
||||
:type extension: bool or None
|
||||
:rtype: None
|
||||
"""
|
||||
extension = extension or self.EXTENSION
|
||||
if dst and extension not in dst:
|
||||
dst += extension
|
||||
|
||||
src = self.path()
|
||||
|
||||
# Rename the path on the filesystem
|
||||
dst = studiolibrary.renamePath(src, dst)
|
||||
|
||||
# Rename the path inside the library database
|
||||
if self.library():
|
||||
self.library().renamePath(src, dst)
|
||||
|
||||
self._path = dst
|
||||
|
||||
self.syncItemData()
|
||||
|
||||
self.renamed.emit(self, src, dst)
|
||||
|
||||
def showRenameDialog(self, parent=None):
|
||||
"""
|
||||
Show the rename dialog.
|
||||
|
||||
:type parent: QtWidgets.QWidget
|
||||
"""
|
||||
if self.isVersionPath():
|
||||
raise NameError("You can only rename items that were "
|
||||
"created using Studio Library version 2!")
|
||||
|
||||
select = False
|
||||
|
||||
if self.libraryWindow():
|
||||
parent = parent or self.libraryWindow()
|
||||
select = self.libraryWindow().selectedFolderPath() == self.path()
|
||||
|
||||
name, button = studiolibrary.widgets.MessageBox.input(
|
||||
parent,
|
||||
"Rename item",
|
||||
"Rename the current item to:",
|
||||
inputText=self.name(),
|
||||
buttons=[
|
||||
("Rename", QtWidgets.QDialogButtonBox.AcceptRole),
|
||||
("Cancel", QtWidgets.QDialogButtonBox.RejectRole)
|
||||
]
|
||||
)
|
||||
|
||||
if button == "Rename":
|
||||
try:
|
||||
self.rename(name)
|
||||
|
||||
if select:
|
||||
self.libraryWindow().selectFolderPath(self.path())
|
||||
|
||||
except Exception as error:
|
||||
self.showExceptionDialog("Rename Error", error)
|
||||
raise
|
||||
|
||||
return button
|
||||
|
||||
def showMoveDialog(self, parent=None):
|
||||
"""
|
||||
Show the move to browser dialog.
|
||||
|
||||
:type parent: QtWidgets.QWidget
|
||||
"""
|
||||
if self.isVersionPath():
|
||||
raise NameError("You can only move items that were "
|
||||
"created using Studio Library version 2!")
|
||||
|
||||
title = "Move To..."
|
||||
path = os.path.dirname(os.path.dirname(self.path()))
|
||||
|
||||
dst = QtWidgets.QFileDialog.getExistingDirectory(None, title, path)
|
||||
|
||||
if dst:
|
||||
dst = "{}/{}".format(dst, os.path.basename(self.path()))
|
||||
try:
|
||||
self.move(dst)
|
||||
except Exception as error:
|
||||
self.showExceptionDialog("Move Error", error)
|
||||
raise
|
||||
|
||||
def showDeleteDialog(self):
|
||||
"""
|
||||
Show the delete item dialog.
|
||||
|
||||
:rtype: None
|
||||
"""
|
||||
if self.isVersionPath():
|
||||
raise NameError("You can only delete items that were "
|
||||
"created using Studio Library version 2!")
|
||||
|
||||
text = 'Are you sure you want to delete this item?'
|
||||
|
||||
button = self.showQuestionDialog("Delete Item", text)
|
||||
|
||||
if button == QtWidgets.QDialogButtonBox.Yes:
|
||||
try:
|
||||
self.delete()
|
||||
except Exception as error:
|
||||
self.showExceptionDialog("Delete Error", error)
|
||||
raise
|
||||
|
||||
def showAlreadyExistsDialog(self):
|
||||
"""
|
||||
Show a warning dialog if the item already exists on save.
|
||||
|
||||
:rtype: None
|
||||
"""
|
||||
if self.isVersionPath():
|
||||
raise NameError("You can only override items that were "
|
||||
"created using Studio Library version 2!")
|
||||
|
||||
if not self.libraryWindow():
|
||||
raise ItemSaveError("Item already exists!")
|
||||
|
||||
title = "Item already exists"
|
||||
text = 'Would you like to move the existing item "{}" to the trash?'
|
||||
text = text.format(os.path.basename(self.path()))
|
||||
|
||||
buttons = [
|
||||
QtWidgets.QDialogButtonBox.Yes,
|
||||
QtWidgets.QDialogButtonBox.Cancel
|
||||
]
|
||||
|
||||
try:
|
||||
QtWidgets.QApplication.setOverrideCursor(QtCore.Qt.ArrowCursor)
|
||||
button = self.libraryWindow().showQuestionDialog(title, text, buttons)
|
||||
finally:
|
||||
QtWidgets.QApplication.restoreOverrideCursor()
|
||||
|
||||
if button == QtWidgets.QDialogButtonBox.Yes:
|
||||
self._moveToTrash()
|
||||
else:
|
||||
raise ItemSaveError("You cannot save over an existing item.")
|
||||
|
||||
return button
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# Support for painting the type icon
|
||||
# -----------------------------------------------------------------
|
||||
|
||||
def _moveToTrash(self):
|
||||
"""
|
||||
Move the current item to the trash.
|
||||
|
||||
This method should only be used when saving.
|
||||
"""
|
||||
path = self.path()
|
||||
library = self.library()
|
||||
item = studiolibrary.LibraryItem(path, library=library)
|
||||
self.libraryWindow().moveItemsToTrash([item])
|
||||
# self.setPath(path)
|
||||
@@ -0,0 +1,58 @@
|
||||
# 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 studioqt
|
||||
import studiolibrary
|
||||
|
||||
|
||||
def main(*args, **kwargs):
|
||||
"""
|
||||
Convenience method for creating/showing a library widget instance.
|
||||
|
||||
return studiolibrary.LibraryWindow.instance(
|
||||
name="",
|
||||
path="",
|
||||
show=True,
|
||||
lock=False,
|
||||
superusers=None,
|
||||
lockRegExp=None,
|
||||
unlockRegExp=None
|
||||
)
|
||||
|
||||
:rtype: studiolibrary.LibraryWindow
|
||||
"""
|
||||
# Reload all Studio Library modules when Shift is pressed.
|
||||
# This is for developers to test their changes in a DCC application.
|
||||
if studioqt.isShiftModifier():
|
||||
import studiolibrary
|
||||
studiolibrary.reload()
|
||||
|
||||
# Register all the items from the config file.
|
||||
import studiolibrary
|
||||
studiolibrary.registerItems()
|
||||
|
||||
if studiolibrary.isMaya():
|
||||
from studiolibrarymaya import mayalibrarywindow
|
||||
libraryWindow = mayalibrarywindow.MayaLibraryWindow.instance(*args, **kwargs)
|
||||
else:
|
||||
from studiolibrary import librarywindow
|
||||
libraryWindow = librarywindow.LibraryWindow.instance(*args, **kwargs)
|
||||
|
||||
return libraryWindow
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
# Run the Studio Library in a QApplication instance
|
||||
import studioqt
|
||||
with studioqt.app():
|
||||
studiolibrary.main()
|
||||
@@ -0,0 +1,74 @@
|
||||
# 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
|
||||
|
||||
from studioqt import Icon
|
||||
from studioqt import Pixmap
|
||||
|
||||
from . import utils
|
||||
|
||||
|
||||
PATH = os.path.abspath(__file__)
|
||||
DIRNAME = os.path.dirname(PATH)
|
||||
RESOURCE_DIRNAME = os.path.join(DIRNAME, "resource")
|
||||
|
||||
|
||||
def get(*args):
|
||||
"""
|
||||
This is a convenience function for returning the resource path.
|
||||
|
||||
:rtype: str
|
||||
"""
|
||||
path = os.path.join(RESOURCE_DIRNAME, *args)
|
||||
return utils.normPath(path)
|
||||
|
||||
|
||||
def icon(*args, **kwargs):
|
||||
"""
|
||||
Return an Icon object from the given resource name.
|
||||
|
||||
:rtype: str
|
||||
"""
|
||||
path = get("icons", *args)
|
||||
return Icon(pixmap(path, **kwargs))
|
||||
|
||||
|
||||
def pixmap(name, scope="icons", extension="png", color=None):
|
||||
"""
|
||||
Return a Pixmap object from the given resource name.
|
||||
|
||||
:type name: str
|
||||
:type scope: str
|
||||
:type extension: str
|
||||
:type color: str
|
||||
:rtype: QtWidgets.QPixmap
|
||||
"""
|
||||
if name.endswith(".svg"):
|
||||
extension = ""
|
||||
|
||||
path = ""
|
||||
|
||||
if os.path.exists(name):
|
||||
path = name
|
||||
|
||||
elif extension:
|
||||
path = get(scope, name + "." + extension)
|
||||
if not os.path.exists(path):
|
||||
path = get(scope, name + ".svg")
|
||||
|
||||
p = Pixmap(path)
|
||||
|
||||
if color:
|
||||
p.setColor(color)
|
||||
|
||||
return p
|
||||
@@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
After Width: | Height: | Size: 149 B |
|
After Width: | Height: | Size: 224 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z"/></svg>
|
||||
|
After Width: | Height: | Size: 344 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M69.4 210.6C89.8 126.5 165.6 64 256 64c71.1 0 133.1 38.6 166.3 96H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h80.7H464c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v60.6C408.8 75.5 337.5 32 256 32C149.6 32 60.5 106.2 37.7 205.6C35.5 215.2 43.1 224 53 224c7.9 0 14.6-5.7 16.5-13.4zm373.2 90.9C422.2 385.5 346.4 448 256 448c-71.1 0-133.1-38.6-166.3-96h54.5c8.8 0 16-7.2 16-16s-7.2-16-16-16H63.3 48.2c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V371.8C103.4 436.6 174.7 480 256 480c106.4 0 195.5-74.2 218.3-173.6c2.2-9.6-5.4-18.4-15.3-18.4c-7.9 0-14.6 5.7-16.5 13.4z"/></svg>
|
||||
|
After Width: | Height: | Size: 823 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z"/></svg>
|
||||
|
After Width: | Height: | Size: 374 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z"/></svg>
|
||||
|
After Width: | Height: | Size: 687 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M0 80c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H16C7.2 96 0 88.8 0 80zM0 240c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H16c-8.8 0-16-7.2-16-16zM448 400c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16s7.2-16 16-16H432c8.8 0 16 7.2 16 16z"/></svg>
|
||||
|
After Width: | Height: | Size: 505 B |
|
After Width: | Height: | Size: 570 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM272 160l26.66 53.33L352 240l-53.34 26.67L272 320l-26.66-53.33L192 240l53.34-26.67L272 160zM160 96l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16zm220.8 352H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z"/></svg>
|
||||
|
After Width: | Height: | Size: 479 B |
|
After Width: | Height: | Size: 318 B |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 324 B |
|
After Width: | Height: | Size: 705 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88zm-120 0c0-17.6 14.4-32 32-32 8.8 0 16-7.2 16-16s-7.2-16-16-16c-35.3 0-64 28.7-64 64 0 8.8 7.2 16 16 16s16-7.2 16-16z"/></svg>
|
||||
|
After Width: | Height: | Size: 538 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z"/></svg>
|
||||
|
After Width: | Height: | Size: 422 B |
|
After Width: | Height: | Size: 963 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"/></svg>
|
||||
|
After Width: | Height: | Size: 199 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 192 512"><path d="M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z"/></svg>
|
||||
|
After Width: | Height: | Size: 232 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z"/></svg>
|
||||
|
After Width: | Height: | Size: 787 B |