2017-07-28 24 views
0

我有基於特定頂點位置創建的多維數據集,但我需要知道如何通過python腳本將這些多維數據集變成紅色,而無需選擇多維數據集Maya並手動將它們變成紅色。如何使用python代碼爲Maya製作多維數據集的特定顏色

+1

通常的做法是,包括至少在工作的一些代碼刺:https://stackoverflow.com/help/mcve – theodox

+0

哦,雖然你在它如果你清楚你想如何讓它們着色,你會得到更好的答案......你想要一個紅色的_material_?紅色_vert color_?大綱中的紅色?線框顏色? – theodox

+0

DEF位置(點): inside_of_mesh = [] outside_of_mesh = [] 對於i在範圍(0,LEN(分)): cmds.spaceLocator(p值=點[1]) 打印test_if_inside_mesh(點=點[1]) 如果test_if_inside_mesh(點=點[1]): inside_of_mesh.append(點[1]) cmds.polyCube(SX = 1,SY = 1,SZ = 1) CMDS。 xform(t = points [i]) cmds.polyColorPerVertex(rgb =(0.8,0.0,0.0)) – Lynn

回答

1

要在Maya中分配材質,您需要獲取關聯材質的着色組,這在Maya中是一個shadingEngine節點。他們使用sets命令作爲參數。

import maya.cmds as cmds 

# assign shader to objects. objects can be a single object or a list of objects 
def assign_shader(shader, objects): 
    # get the shadingGroup with listConnections 
    shading_group = cmds.listConnections(shader, type='shadingEngine')[-1] 
    # use `sets` to force the objects into the shading group 
    cmds.sets(objects, fe=shading_group) 

# examples 
# assign_shader('lambert1', 'pCube1') 
# assign_shader('lambert1', ['pCube1', 'pCube2']) 

您可以手動紅色材料,並調用它任何你想要的,然後分配給它這種方式。如果你想通過程序生成着色器,它是:

new_shader = cmds.shadingNode('lambert', asShader=True, name='yournamehere') 
new_sg = cmds.sets(renderable=True, noSurfaceShader=True, empty=True) 
cmds.connectAttr(new_shader + '.outColor', new_sg + ".surfaceShader", force=True) 

你會再喂new_shaderassign_shader

如果所有你關心的是一個簡單的顏色,你應該使用lambert着色如上。要設置朗伯的顏色,它只是

cmds.setAttr('your_lambert_here' + ".color", 1,0,0) 
相關問題