Maya
  • Nyers
    #31501
    Sziasztok,
    ha már python elő jött, nekem is lenne egy kérdésem.

    Ki milyen módszert használ maya scripteknél a mátrixokkal kapcsolatos műveletekhez, illetve milyen módon kérdi le, és állítja be egy objektum transzformációs mátrixát?

    Sima mel esetén nem nagyon találtam tiszta, egyszerű megoldásokat, python jóval kézenfekvőbbnek tűnik. Többféle képen is sikerült lekérdezni és dolgozni a mátrixszal, viszont sehogy se tudom ezt a mátrixot alkalmazni mondjuk más objektum térbeli pozíciójának beállításához.

    legyen egy sima kocka, vhova bepozicionálva:
    cmds.polyCube( n='myCube', ch=1, w=5, h=5, d=5, sx=1, sy=1, sz=1 )
    cmds.setAttr('myCube.rotate', 0, 30, 45, type="double3")
    cmds.setAttr('myCube.translate', 4, 5, 7, type="double3")

    1) MScriptUtil-t használva:
    mUtil = OpenMaya.MScriptUtil()
    worldMatL = cmds.xform('myCube', q=True, ws=True, m=True)
    worldMatM = om.MMatrix()
    mUtil.createMatrixFromList(worldMatL, worldMatM)

    2) MFnTransform
    selList = om.MSelectionList()
    selList.add('myCube')
    mDagPath = om.MDagPath()
    selList.getDagPath(0, mDagPath)

    transformFunc = om.MFnTransform(mDagPath)
    mTransformMtx = transformFunc.transformation()

    Hogy tudnám beállítani a kapott, és mondjuk módosított új transzformációkat más objektumra rárakni?

    Első esetben xfrom-al kéne beállítani gondolom, de nem találtam meg a createMatrixFromList "inverzét", ami a belső reprezentációból visszaforgatja a 16 float tömbbe.

    Második megoldásnál meg egy másik DagNode-ra kéne alkalmazni a dolgot.