kuroyume0161 opened this issue on May 16, 2007 · 2 posts
kuroyume0161 posted Wed, 16 May 2007 at 3:56 PM
My understanding of Poser JP bulges is pretty much complete at this time. But there is one sticking point which will be difficult to determine:
Poser bases it bulge deformation on a simple translation in the direction of the midpoint of the blend zone (staticA/dynamicB=Left and dynamicD/staticC=Right). The general formulation is that for a bulge value of 1.0 and a rotation of 360d, the greatest weighted point (at the midpoint with 1.0 weight) translates 1.0 along the direction previously noted.
The question arises as to whether or not this 1.0 unit translation is from the body part origin (irregardless of the point's distance from it) or in addition to the point's distance from the body part origin. In most cases this probably will be insignificant, but it could play a great part otherwise - and it will definitely affect the weighting calculations that I'm updating. Obviously, this also determines how much bulge is applied (how big the bulge gets) for any given rotation.
Appreciate any insights!
Robert
C makes it easy to shoot yourself in the
foot. C++ makes it harder, but when you do, you blow your whole leg
off.
-- Bjarne
Stroustrup
Contact Me | Kuroyume's DevelopmentZone
kuroyume0161 posted Fri, 18 May 2007 at 11:45 AM
Okee-dokey.
Well, I've determined that the translation is additive/subtractive from the point's location. A simple test revealed this - set the bulge to 1.0, rotate 36d (1/10th), use a point near the midpoint of the joint angles involved. I exported an unbulged version of the figure and a bulged version. These had their origins set to the testing body part's and then it was just a matter of getting the point's value (I cheated so that when rotated 36d, the translation would be exactly along the Y axis). The expected value if from the body part origin would have been 100 or less (scaling of 1000 into check app). But it was 111. And the point was 20 from the origin. Since the point isn't exactly at the midpoint, this discrepancy is insignificant and fits the expectation - it is from the point not the origin.
But I'm still vague about the algorithm employed for bulges. Thought that I had it, but it appears to be different than expected. With a sufficient bulge setting, moving the joint angles around almost acts like a lensing effect on the vertices. It is apparent that the distance of the point from the joint angle planes imparts more or less weighting and that weighting follows a sinusoidal wave (trough to crest to through or 0 -1-0 curved).
C makes it easy to shoot yourself in the
foot. C++ makes it harder, but when you do, you blow your whole leg
off.
-- Bjarne
Stroustrup
Contact Me | Kuroyume's DevelopmentZone