2013-11-24 3 views
1

Я пытаюсь написать сценарий для импорта нескольких файлов кеша для модели в Maya с использованием Python. До сих пор я получил следующее:Импорт нескольких файлов кеша в Maya с использованием Python

import maya.cmds as cmds 
cache_files_path = 'D:/Project/sfin/work/data/ram/geo' 

latest_look_file = 'D:/Project/chars/ram/look/maya/ram_clean_look_v002_t005.mb' 

# open the latest look file 
cmds.file(latest_look_file, f = True, op = "v=0;", typ = 'mayaBinary', o = True) 

cmds.select(all = True) 

Теперь мне нужно начать импортировать существующий кэш геометрии из «cache_files_path» к соответствующим объектам. Maya2013 имеет скрипт mel 'doImportCacheFile.mel', который делает задачу, я думаю. Но я не мог исходить отсюда.

+0

ли путь содержит многоэлементные файлы кеша? –

+0

@ hus787 yes внутри пути содержит папки для разных объектов, в свою очередь, внутри которых хранятся файлы кеша. – zingy

ответ

1

Скажем, файл, который вы открыли, имеет mesh с именем "foo_mesh", который можно проверить с помощью isinstance(pc.PyNode("foo_mesh"), pc.nt.Mesh. И есть кэш-файл для его имени "foo_mesh_cache.xml" (рассматривать это как метаданные кэша) и "foo_mesh_data.mc"

Чтобы применить этот кэш сетчатого что-то вроде следующего должно работать:

import pymel.core as pc 

mesh = "foo_mesh" 
xml = "foo_mesh_cache.xml" 
data = "foo_mesh_data.mc" 

pc.mel.doImportCacheFile(xml, "", [mesh], list()) 

И чтобы выяснить, кэш-файл уже был применен к сетке, перечислил его историю и посмотрел, содержит ли он узел типа pc.nt.CacheFile.

+0

Не могли бы вы объяснить последнюю строку? и может ли это быть сделано с помощью команд майя вместо pymel? почему используется список()? спасибо – zingy

+0

как насчет использования cmds.cacheFile()? – zingy

+0

Кэш-файл может содержать кеш точек нескольких объектов, и эта информация хранится под именем канала (* читать xml-файл *). Поэтому, если в кеше содержится несколько каналов, вам нужно будет указать, какой из них будет применяться, на какой сетке в случае, если несколько были предоставлены. Но так как вы сказали в комментарии к вопросу о том, что кеши являются объектами, поэтому список остается пустым (возьмите все это с солью и прочитайте файл кода, который содержит команду в 'whatis doImportCacheFile'). Кажется, что ваш pymel еще не исправлен, возврат к 'cmd.eval' и поставка его как mel string. –

Смежные вопросы