[Closed] Conquering flipping when mixing biped and custom bones
Well for Sitting ducks years ago I have 350 characters per season that I setup.
I build them with the abillity to be resized easily with the use of like controllers. I have done if for a project that I’m on right now where I will create all other biped characters from one default rig. Just need to set the setup controller active and repurpose and realigna few things. I can do it in about half and hour at most.
I have generic character tools that allow me to make any rig usable with mocap data direct from TRC files and allow for mirroring of poses and pose capturing. Takes about an hour to setup the first character so the rest are all done as it doesn’t require much or any changes to the base rig.
Biped for me is never the better choice, it always has limitations and issues that cause me problems. I even tried CAT and that was worse, just one head ache after another. We tried to use it on a current project because the client asked for it. After a week of basing on it to get it to do what the client wanted I built a custom rig that did everything that we needed and more in about four days.
Custom rigs would be my preferred solution, and it is something that is being considered and experimented with. I just need to make sure that if Biped is kept then we can have the best possible rig with that as a base.
The extra bone idea on the hand is such a simple elegant solution.
I actually like the solution I came up with earlier for a different reason – it forced me to look hard at what the rig was actually doing and that’s when I also learned that I could use more complex script and conditional statements inside a wire parameter.
Tomorrow I’ll try to figure out why I can’t copy the rotation part of a transform matrix from one object to another.
You can multiply the matrix parts together.
((eulerAngles 90 0 0) as matrix3)*(transMatrix [10,100,10])
Is that the sort if thing that you are looking for?
I was looking to do this:
bone1.transform.rotation= bone2.transform.rotation
to copy the orientation.
bone1.transform= bone2.transform copies position too, which isn’t what I need.
I ended up with this messy code:
b1p = bone1.pos
bone1.transform= bone2.transform
bone1.pos= b1p
It works, but doesn’t seem very elegant.
You can’t set transform.rotation so you need .rotation only and you need to rotate it in the space of the object or it will move.
in coordsys (transMatrix bone01.pos) bone01.rotation=inverse bone02.rotation
Not sure the inverse is needed in there
Cheers for that! I really do appreciate the help.
I’ve found that I’m lacking in some of the underlying maxscript fundamentals since I’ve tended to solve a problem and leave it that (as you saw, I did manage to get the result I wanted, but knew it wasn’t very nice). Recently though we’ve not been in crunch at work and I’ve been revisiting a lot of my earlier work to spruce it up.
Anyway, today I got work to order me the CG academy maxscript fundamentals collection. Hopefully that will give me a better understanding of some of the more basic features – and stop me badgering our tools guys every few days.