Please enable JavaScript to view the site
More Efficient
More Accurate
ME.PINECORE.TOP
MagicTabbyCat
MagicTabbyCat
Magic Tabby Cat
RenderingPipeline
RenderingPipeline
Rendering Pipeline
Violet Evergarden
Violet Evergarden
Violet Evergarden
Fix ADV foot rock issue
Fix ADV foot rock issue
When I was rigging with Advanced skeleton in Maya, I found that ADV will match the bottom of the foot exact with XZ plane. I guess it is for the convenience of riggers who won’t place the big toe and the pinky toe joint exactly on the floor. However, from time to time we needs to rig a character whose foot is not exactly locate at Y= plane, maybe it has more than one pair of foots, or wearing a pair of high heel shoes. When it comes, the rock function would not work well on your character.So this article helps you to solve this issue.Let’s see the source code first: //Pinky/index toe sideside rockingif (`objExists $toes` && `objExists $bigToe` && `objExists $pinkyToe`) &#; addAttr -k -ln rock -at double -dv ("IK"+$fitJointIK[$i]+$side); createNode -n ("IK"+$fitJointIK[$i]+"FootRockInnerPivot"+$side) -p $parent transform;// createNode -n ("IK"+$fitJointIK[$i]+"FootRockOuterPivot"+$side) -p $parent transform; setAttr ("IK"+$fitJointIK[$i]+"FootRockInnerPivot"+$side+".rotateOrder") ; asAlign ("IK"+$fitJointIK[$i]+"FootRockInnerPivot"+$side) ("Roll"+$toes+$side) ; $pos=`xform -q -ws -t $toes`; if (`objExists $bigToe`) $pos=`xform -q -ws -t $bigToe`; xform -ws -t ($pos[]*$b) $pos[] ("IK"+$fitJointIK[$i]+"FootRockInnerPivot"+$side); parent ("IK"+$fitJointIK[$i]+"FootRockInnerPivot"+$side) ("Roll"+$toes+$side); duplicate -n ("IK"+$fitJointIK[$i]+"FootRockOuterPivot"+$side) ("IK"+$fitJointIK[$i]+"FootRockInnerPivot"+$side); $pos=`xform -q -ws -t $toes`; if (`objExists $pinkyToe`) $pos=`xform -q -ws -t $pinkyToe`; xform -ws -t ($pos[]*$b) $pos[] ("IK"+$fitJointIK[$i]+"FootRockOuterPivot"+$side); parent ("IK"+$fitJointIK[$i]+"FootRockInnerPivot"+$side) ("IK"+$fitJointIK[$i]+"FootRockOuterPivot"+$side) $parent; Looks complex, but we only need to pay attention to the code that clarifies the position of the controller. So here it is. ...xform -ws -t ($pos[]*$b) $pos[] ...xform -ws -t ($pos[]*$b) $pos[] ... You see it ignores the Y value and forces it to zero. That is why our foot are always gennerated on the ground.Let’s modify it into this: ...xform -ws -t ($pos[]*$b) $pos[] $pos[] ...xform -ws -t ($pos[]*$b) $pos[] $pos[] ... We get its Y value back. Now restart ADV and try generate your ADV skeleton again, you can place your foot at any where you want and the rock function works well!
Houdini to Deadline submission bug analyze
Houdini to Deadline submission bug analyze
What happened?If you submit your karma ROP to deadline and happen to have some Fetch nodes (inevidablly) in your LOPs network, you will get a bunch of errors like this: File “Z:/repository/submission/Houdini/Main\SubmitDeadlineRop.py”, line , in _getInputNodes selectedInput = curNode.parm(“index”).eval() AttributeError: ‘NoneType’ object has no attribute ‘eval’ That means deadline refused to accept data from Houdini. And the error indicated that the bug locates at the submitter python file. Where is the bug?Let’s take a look at the source code. if not bypassed: #if this is not a rop or fetch we cannot render anything so do not submit a job to deadline if isFetch: #if thie node is a fetch and the node it points to exists then we want to prepare the node it points to for submission and have it;s chain be dependent on everything the fetch node is dependent on. fetchRop = self._getFetchedNode( curNode ) if fetchRop: ... This is where the error happens. The submitter trys to get the nodes in Fetch node. According to the annotations, it wants to know what kind of node the Fetch node grabs. However something out of expectation happens in the class function getFtechNode(). @staticmethoddef _getFetchedNode( curNode ): # In addition to the normal inputs fetch nodes point to an additional node which we can treat like other input nodes fetchedPath = curNode.parm( "source" ).eval() fetchedRop = curNode.node( fetchedPath ) return fetchedRop Here is where the bug start. It trys to get the “source” of the Fetch node, but failed to get anything. So we can see the error saying: ‘NoneType’ object has no attribute ‘eval’ How to fix it?Deadline user yongsoon provided his solution in Mar , , by adding lines of code in the getFtechedNode() function.yongsoon’s bug report @staticmethoddef _getFetchedNode( curNode ): # In addition to the normal inputs fetch nodes point to an additional node which we can treat like other input nodes try: fetchedPath = curNode.parm("source").eval() except: return None fetchedRop = curNode.node(fetchedPath) return fetchedRop By returning a None but not force the submitter to trace the source of the Fetch node to avoid the error.And there is another way to solve it. Why it happens?The root reason is that the Deadline is developed before Karma comes up to the stage, and the code serves for ROPs nodes. It works well on ROPs Fetch, but the LOPs Fetch has a different attribute name, that’s why curNode.parm(“source”).eval() will throw an error, for the name of the upper stream source is different.And that’s why we can return None. For deadline submitter only care about what happens in ROPs, but not LOPs.Further deeper, another user mois.moshev mentions that if realy needs to fix the logic, we should make change in the func isFetch(), or even more earlier, but not fix it where it is about to crash. isFetch = ( curNode.type().name() == "fetch" ) LOPs Fetch and ROPs Fetch are both called “fetch” and that leads to the issue.After I checked some documents, here is a more elegant patch. isFetch = ( curNode.type().name() == "fetch" and curNode.type().category().label() == "Outputs") RamblingThis bug actually has been mentioned in , (the fetch bug) but nobody solved it. Deadline has a very slow updating rate, we would never know when would they release their next version or if they would fix this problem.
Maya quick symmetry tool
Maya quick symmetry tool
Why?One of the most frustrating things for riggers is that the model is asymmetric (while it should be!). But when you try using Maya’s built-in symmetry tool, you will find that it is so troublesome to select ideal points in a model with an extremely large number of vertices! So here comes the Maya Quick Symmetry Tool (QST). It allows you to swiftly select the points on one side, and mirror another side in a none distructive way. Let’s see. How to install?Download the source code, unzip it. Maya QST Follow the steps in readme. How to use?Click the QST button to bring out UI. Select your model. Execute Bake transform. For it is based on object space. Then select your symmetry axis. By default it is X. Double click to select the whole middle line. Click Zero and sym. This will put the points (of the middle line) on the zero plane. Choose the section you want to preserve. Execute,Done. However sometimes the Execute do not work because some MEL bug. So there is a Bug Execute to fix it. After selected, click Bug Execute, Maya will indicate you to select a edge to mirror your model. Select an edge on the middle line(it will be highlighted). Done. That’s all. Bye.
MagicTabbyCat
RenderingPipeline
Violet Evergarden
ruhhood
Fix ADV foot rock issue
Houdini to Deadline submission bug analyze
Maya quick symmetry tool
How to install FFmpeg on Windows
Maya to Houdini USD pipeline
How to disable CPU in Karma XPU mode?
sayhello.morning
Avatar
David Shawn
Portfolio
Posts:
10
Runtime:
Last update: