Last active
July 28, 2020 07:22
-
-
Save ryusas/268ee6f65f1a50d8041e5eec57a4dd8c to your computer and use it in GitHub Desktop.
A test of mode switching for Maya 2019 cache evaluation.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding: utf-8 | |
u""" | |
Maya 2019 キャッシュのテスト。 | |
キャッシュ機能は Parallel Evaluation の Custom Evaluator の仕組みで実装されており、 | |
それは cacheEvaluator プラグインによって提供されている。 | |
""" | |
import sys | |
from collections import Callable | |
import maya.cmds as cmds | |
import maya.plugin.evaluator.CacheEvaluatorManager as mgr | |
BASESTR = basestring if sys.version_info[0] <= 2 else str | |
#------------------------------------------------------------------------------ | |
def _initModeList(): | |
res = dict([(k[20:], getattr(mgr, k)) for k in dir(mgr) if k.startswith('CACHE_STANDARD_MODE_')]) | |
return res | |
_CACHE_MODE_DICT = _initModeList() | |
def showStatus(log=True): | |
u""" | |
cache evaluator の状態の情報を得る。 | |
""" | |
info = cmds.evaluator(n='cache', q=True, i=True) | |
if not log: | |
return info | |
if isinstance(log, Callable): | |
log(info) | |
else: | |
print(info) | |
def listModes(detail=False): | |
u""" | |
モード設定キーのリスト、または詳細設定内容も含む辞書を得る。 | |
""" | |
if detail: | |
return dict(_CACHE_MODE_DICT) | |
return list(_CACHE_MODE_DICT) | |
def getMode(key): | |
u""" | |
モード設定キーから設定内容を得る。 | |
""" | |
return _CACHE_MODE_DICT.get(key) | |
def setCurrentMode(mode): | |
u""" | |
カレントモードを切り替える。 | |
:param mode: モード設定キーか、設定内容そのもの。 | |
""" | |
if isinstance(mode, BASESTR): | |
x = _CACHE_MODE_DICT.get(mode) | |
if not x: | |
raise RuntimeError('key does not exist: ' + mode) | |
mode = x | |
if True: | |
mgr.CacheEvaluatorManager().cache_mode = mode | |
else: | |
# 同じことをコマンドでやるとこうなる。 | |
cmds.cacheEvaluator(resetRules=True) | |
for opts in mode: | |
cmds.cacheEvaluator(**opts) | |
def currentMode(detail=False): | |
u""" | |
カレントモードを得る。 | |
:returns: モード設定キー。未知の設定なら設定内容そのもの。 | |
""" | |
mode = mgr.CacheEvaluatorManager().cache_mode | |
if not detail: | |
for k, v in _CACHE_MODE_DICT.items(): | |
if mode == v: | |
return k | |
return mode |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment