Не знаю, что нужно, чтобы исправить скрипт Maya PythonPython

Программы на Python
Anonymous
Не знаю, что нужно, чтобы исправить скрипт Maya Python

Сообщение Anonymous »

Я использую сценарий, предоставленный Adobe Material Painter, который должен импортировать файл sbsar и превратить его в узел шейдера, а затем применить его к выбранному объекту, однако, когда я выполняю сценарий, он применяет его ко всем объектам в сцена. Я не разбираюсь в кодировании, поэтому помогите, пожалуйста.
импортируйте maya.cmds как cmds
def _connect_place2d(substance_node):
" "" Соединяет узел текстуры Place2d с узлом Substance """
place_node = cmds.shadingNode('place2dTexture', asUtility=True)

Код: Выделить всё

connect_attrs = [('outUV', 'uvCoord'), ('outUvFilterSize', 'uvFilterSize')]

for out_attr, in_attr in connect_attrs:
cmds.connectAttr('{}.{}'.format(place_node, out_attr),
'{}.{}'.format(substance_node, in_attr))
def _find_shading_group(node):
""" Обходит граф шейдера, чтобы найти группу шейдеров """
result = None

Код: Выделить всё

connections = cmds.listConnections(node, source=False)

if connections:
for connection in connections:
if cmds.nodeType(connection) == 'shadingEngine':
result = connection
else:
result = _find_shading_group(connection)
if result is not None:
break

return result
def _apply_substance_workflow_to_selected(substance_file, workflow):
""" Импортирует сетку в Maya и применяет к ней шейдер из
рабочего процесса Substance """
geometry = cmds.ls(geometry=True)

Код: Выделить всё

# Create the substance node and connect the place2d texture node
substance_node = cmds.shadingNode('substanceNode', asTexture=True)
_connect_place2d(substance_node)

# Load the Substance file
cmds.substanceNodeLoadSubstance(substance_node, substance_file)

# Apply the workflow
cmds.substanceNodeApplyWorkflow(substance_node, workflow=workflow)

# Acquire the shading group and apply it to the mesh
shading_group = _find_shading_group(substance_node)
def demo_load_sbsar_workflow():
""" Получает sbsar из диалогового окна файла, загружает и применяет его к
любой выбранной сетке """
file_filter = 'Вещество (*.sbsar);;'

Код: Выделить всё

files = cmds.fileDialog2(cap='Select a Substance file', fm=1, dialogStyle=2,
okc='Open', fileFilter=file_filter)

if files:
substance_file = files[0]
_apply_substance_workflow_to_selected(substance_file,
cmds.substanceGetWorkflow())
if name == 'main':
demo_load_sbsar_workflow()
Я был полностью уверен, что выбранная текстура будет применена сразу к выбранной мной сетке, а не к каждому объекту.


Подробнее здесь: https://stackoverflow.com/questions/782 ... hon-script

Вернуться в «Python»