Jump to content

Challenge : Rubix Cube


Recommended Posts

Yeah, you have to model a hand and the collision between the hand and the cube has to cause the pieces to move.

And while you're in there you might as well run a muscle sim on the hand with surface area preservation for the skin.

stu

Link to comment
Share on other sites

  • Replies 43
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

I got mine working! I guess you could say I "rigged" it, it's using a super-simple capture+deform that continuously locks the geometry and recaptures it, depending on which side of the cube you're turning, Arctor and I had similar ideas about this... Had to do some really cheesy stuff to get around recursion errors, like scripted locking, forced-cooking of geometry. Jumped through a few other stupid hoops to make the interactive feedback a little nicer, but it seems to work OK... check it out!

JS_Rubiks_Cube.zip

Link to comment
Share on other sites

nice one jason...

one thing that doesn't seem to work is rotating 2 'faces' 45 deg...selecting a second face resets the first....

I had some ideas about getting around the recusion but it's not panning out...

I have a crappy brute force idea that I'll try to get done tomorrow...

Link to comment
Share on other sites

nice one jason...

one thing that doesn't seem to work is rotating 2 'faces' 45 deg...selecting a second face resets the first....

17733[/snapback]

Yeah, that was by design actually, but it's not supposed to "reset" the first face, it should be snapping to the nearest 90 degree increment before you could rotate another face, it's part of the script that's run whenever you select a control...kind of a safety check so you can't mangle the puzzle too badly...

...Ed, I had to keep the HDA unlocked because the scripts are modifying the contents of the OTL by locking+unlocking nodes... p'raps I coulda written out to an external file instead and kept the OTL sync'd?

Link to comment
Share on other sites

Is it an op per rotation? Kinda like e.d.w.a.r.d.'s solution?

17721[/snapback]

This question already was set few years ago in russian-speaking community.

I only have a little changed my previous approach in the decision. (expression vs keys)

>>Does the user need to be careful to not overlap the frame ranges?

It is not necessary for user to track it because he (she)

can use expression in each subsequent operator for "Start Frame" parameter

detail("../"+opinput(".",0),"start",0)+3

detail("../"+opinput(".",0),"start",0)+4

detail("../"+opinput(".",0),"start",0)+6

detail("../"+opinput(".",0),"start",0)+1

detail("../"+opinput(".",0),"start",0)+7

where 3,4,6,1,7 is just a small delay.

Link to comment
Share on other sites

...Ed, I had to keep the HDA unlocked because the scripts are modifying the contents of the OTL by locking+unlocking nodes... p'raps I coulda written out to an external file instead and kept the OTL sync'd?

17738[/snapback]

Maybe you could use a hidden string parameter?

Link to comment
Share on other sites

It is not necessary for user to track it because he (she)

can use expression in each subsequent operator for "Start Frame" parameter

17740[/snapback]

That's what I thought. Wouldn't it be easier for the use if the parameter was simply be a "Delay" parameter from the last rotation? I don't see any reason why someone would want overlapping frame ranges?

Link to comment
Share on other sites

That's what I thought. Wouldn't it be easier for the use if the parameter was simply be a "Delay" parameter from the last rotation? I don't see any reason why someone would want overlapping frame ranges?

17751[/snapback]

You might want over lapping frame ranges to turn multiple rows in the same plane simultaneously. It makes for a much more interesting looking animation to rotate multiple rows at different rates simultaneously than turning a single row at a time.

I'm working on doing this in a single locked OTL. I'm still stuck on a few points, but it's real easy to check which rows are currently being rotated using !(ch("pathtoanimationchannel1")%90) && !(ch("pathtoanimationchannel2")%90)... you put an expression like this in a hidden parameter in the OTL (one parameter for each of the 9 rows comparing against it's 6 opposing rows) and use the result to enable/disable animation controls at the top level of the OTL.

Link to comment
Share on other sites

That's what I thought. Wouldn't it be easier for the use if the parameter was simply be a "Delay" parameter from the last rotation? I don't see any reason why someone would want overlapping frame ranges?

17751[/snapback]

B) You are right :rolleyes:

It will be much better.

Already done :P

Link to comment
Share on other sites

I got mine working!  ... check it out!

17728[/snapback]

ACK, I forgot to mention I did mine in Houdini 7, it doesn't appear to work in v6.x ... also need to turn "select entire subnet" OFF in the viewport... BAH.

Link to comment
Share on other sites

B) You are right  :rolleyes:

It will be much better.

Already done :P

17766[/snapback]

Mike had a good point though. But a Delay parameter is probably still more artist friendly. To introduce overlap, we can just allow negative delay values.

Link to comment
Share on other sites

  • 3 weeks later...

hmmm...

what build did you make it in?...it fails here in 6.x

anyway....

I'm going to have to concede defeat over here....this battle anyway, not the war :mad:

the solutions that most people have come up with are, IMO, not successful...

either a new OTL per rotation or an unlocked OTL with locked nodes or writing to disk...

I had a bit of something working with straight rotations and dynamic parents but it got way too complex really fast....

there must be a way to do this without anyone getting hurt.......

Link to comment
Share on other sites

I like Franks solution so simple, definately gets my vote. Very smart. B)

And it works with the asset locked too. Arctor I think you spoke too soon. :P

Do you know if there is a way to include the custom expressions into the otl?

I always end up avoiding them because they are specific to the hip file, I know you can save them out to a file but in a case like this how much nicer would it be if they were in the otl like a callback script. Is that possible already, does anyone know?

Maybe if the exread function could be used to source them from an otl, then you could include it in the "before first create" event to read them in, Ed?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...