Tue, Jan 21, 11:50 PM CST

Renderosity Forums / Poser - OFFICIAL



Welcome to the Poser - OFFICIAL Forum

Forum Coordinators: RedPhantom

Poser - OFFICIAL F.A.Q (Last Updated: 2025 Jan 21 4:30 pm)



Subject: Loop-making script


Cage ( ) posted Mon, 07 March 2011 at 5:19 PM

file_466458.jpg

Well, good one, then!  :thumbupboth:  If I'd realized we had a tube-making program in Poserdom, I might not have bothered to make one that works within Poser.  :lol:

I'm still trying to work out a nice, flexible procedural rope shader.

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


Cage ( ) posted Mon, 07 March 2011 at 5:22 PM

file_466459.txt

Here's the .mt5 for the current shader, should anyone want to work with it.

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


odf ( ) posted Mon, 07 March 2011 at 5:26 PM
Online Now!

So, when will we see Wonderwoman and her lasso of truth?

-- I'm not mad at you, just Westphalian.


Cage ( ) posted Mon, 07 March 2011 at 5:48 PM · edited Mon, 07 March 2011 at 5:48 PM

Quote - So, when will we see Wonderwoman and her lasso of truth?

Erm.  :unsure:  I have to update WW for Antonia, which will be a complete re-build.  Before that I have to finish Zoe Heriot, and I have a few more characters queued up after her.  And right now I'm trying to figure out if the path functions from the extrusion script can help pose chains and/or generate a static chain prop along the defined path.  Which brings me to banging my head against walls over 3D rotations.  :lol:

 

So... maybe 2013.  :lol:  Assuming we're all still here.

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


jancory ( ) posted Mon, 07 March 2011 at 5:56 PM

funny you should mention chains on a path--i was just going to ask about that.


lost in the wilderness

Poser 13, Poser11,  Win7Pro 64, now with 24GB ram

ooh! i guess i can add my new render(only) machine!  Win11, I7, RTX 3060 12GB

 My Freebies



Cage ( ) posted Mon, 07 March 2011 at 6:04 PM

Quote - funny you should mention chains on a path--i was just going to ask about that.

Well, I have the path functions, I have the chain-builder.  Seems like they would fit together nicely.  :lol:

The question is whether I can get my head around 3D rotations well enough to swing it.  :scared:

3D rotations.  One of my oldest enemies!  Sigh.

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


odf ( ) posted Mon, 07 March 2011 at 6:06 PM
Online Now!

Quote - 3D rotations.  One of my oldest enemies!  Sigh.

I feel your pain.

-- I'm not mad at you, just Westphalian.


jancory ( ) posted Mon, 07 March 2011 at 6:18 PM

makes my head spin


lost in the wilderness

Poser 13, Poser11,  Win7Pro 64, now with 24GB ram

ooh! i guess i can add my new render(only) machine!  Win11, I7, RTX 3060 12GB

 My Freebies



Cage ( ) posted Mon, 07 March 2011 at 6:23 PM

Quote - I feel your pain.

It's no fun.

The problem, as far as I can tell, is the need for conversion to degrees before I can build the rotation matrices I need.  That goes through radians, and there's the whole problem with the 180 degree limitation.  If I could just figure out how to build the rotation matrices working directly from the directional vectors, problem solved.  Theoretically.  :unsure:  So I guess I should be looking into vectors into matrices, or something....

Quote - makes my head spin

If 3D Rotations ever team up with Tanglecord, my oldest and deadliest remaining enemy, I'm in for worlds of trouble.  :scared:

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


odf ( ) posted Mon, 07 March 2011 at 6:43 PM
Online Now!

Quote - If I could just figure out how to build the rotation matrices working directly from the directional vectors, problem solved.

I think I should be able to help you out there, if you give me some details.

-- I'm not mad at you, just Westphalian.


Cage ( ) posted Mon, 07 March 2011 at 7:07 PM · edited Mon, 07 March 2011 at 7:07 PM

Quote - I think I should be able to help you out there, if you give me some details.

Ooh!  :laugh:  I will not reject such an offer.

 

I have the vectors for the relative X,Y,Z axes at each point along the path.  I have a base geometry for a chain link.  I need to take the vectors for those relative axes and rotate the link geometry so it points properly along those axes.

Everything I can find for generating a rotation matrix, however, requires an angle in radians as input.  If a matrix can somehow be constructed directly from the vectors, Cage will be happier and have more hair.  :lol:

Basically it would be the same process being applied for each vertex ring along a loop or tube.  There, a circle of vertices is generated, properly rotated by code which takes the relative X and Z vectors as input.  I want to work the same trick with an entire chain link geometry, to avoid all the futzing about with angles.

Is that even possible?  😕  Or should I keep learning about math.atan2?

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


odf ( ) posted Mon, 07 March 2011 at 7:24 PM
Online Now!

Yep, that can be done. I don't have time right now to explain how, but I will later.

-- I'm not mad at you, just Westphalian.


Cage ( ) posted Mon, 07 March 2011 at 7:27 PM · edited Mon, 07 March 2011 at 7:42 PM

Quote - Yep, that can be done. I don't have time right now to explain how, but I will later.

You are my hero!  :woot:  Not only do you give me Antonia, but you help fight my enemy, 3D Rotations.  :lol:

Any assistance might go a long way toward helping create a nice chain-posing script.  :thumbupboth:

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


odf ( ) posted Mon, 07 March 2011 at 9:40 PM
Online Now!

Okay, my meeting's over now.

Just so that I explain things the right way: do your matrices operate from the left or the right? In other words, if you have a vector [x, y, z] and a matrix [[a, b, c], [d, e, f], [g, h, i]], is the result [xa+yd+zf, xb+ye+zh, xc+yf+zi], or is it [xa+yb+zc, xd+ye+zf, xg+yh+zi]?

-- I'm not mad at you, just Westphalian.


Cage ( ) posted Mon, 07 March 2011 at 11:46 PM

Ooh, the matrix handedness problem.  :lol:

It looks like the first of the options you present.  Here's the function:

 

def point_by_matrix(p, m):
  return [p[0] * m[0][0] + p[1] * m[1][0] + p[2] * m[2][0] + m[3][0],
          p[0] * m[0][1] + p[1] * m[1][1] + p[2] * m[2][1] + m[3][1],
          p[0] * m[0][2] + p[1] * m[1][2] + p[2] * m[2][2] + m[3][2]]

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


odf ( ) posted Tue, 08 March 2011 at 12:13 AM
Online Now!

Okay, that makes it a bit easier to explain. So you want to find a matrix, let's call it Rot, that maps the standard unit vectors onto three new vectors p, q and r that you specify. I'll write this down as follows, using some kind of bastardized Python notation:

1)  [1,0,0] * Rot = p

2)  [0,1,0] * Rot = q

and

3)  [0,0,1] * Rot = r

We can combine these into one equation that looks like this:

[[1,0,0],[0,1,0],[0,0,1]] * Rot = [p, q, r]

Now the first matrix on the left side is just the identity, so we can ignore it and get

Rot = [p, q, r]

or in other words

Rot = [[p[0], p[1], p[2]], [q[0], q[1], q[2]], [r[0], r[1], r[2]]]

So in fact you don't have to construct anything. You just use your three vectors p, q and r as the rows of your rotation matrix, and that's it. Just be careful that they all have length 1 and are at 90 degree angles with each other, so that you get a proper rotation and don't deform your chain links.

-- I'm not mad at you, just Westphalian.


Cage ( ) posted Tue, 08 March 2011 at 12:18 AM · edited Tue, 08 March 2011 at 12:19 AM

file_466474.txt

Here's a script which can be useful with the loop and extrusion scripts.  This will merge several specified props into one single actor.  This can be useful for trimming down a scene and/or simplifying setting materials.  Simply exporting and importing the actors will result in a merged prop with separate material listings for each of the original actors, at least in P7 and P8.  (I'm pretty sure P5 didn't do this.)

The script uses pre-existing functions from the chain maker script and the subdivide quads script I posted to the Python forum.

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


Cage ( ) posted Tue, 08 March 2011 at 12:21 AM

Quote - So in fact you don't have to construct anything. You just use your three vectors p, q and r as the rows of your rotation matrix, and that's it. Just be careful that they all have length 1 and are at 90 degree angles with each other, so that you get a proper rotation and don't deform your chain links.

Ooh.  Simple and elegant!  :laugh:  I would have expected it to be far more complicated, or even impossible.  But then I'm superstitious about rotations.  :lol:

I'll see what I can do with this information.  Thanks, odf!  :thumbupboth:

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


odf ( ) posted Tue, 08 March 2011 at 12:25 AM
Online Now!

It's one of the first things I learned in first semester Linear Algebra, 27 years ago. Sometimes being a former Mathematician comes in handy. :laugh:

-- I'm not mad at you, just Westphalian.


Cage ( ) posted Tue, 08 March 2011 at 12:30 AM · edited Tue, 08 March 2011 at 12:33 AM

Quote - It's one of the first things I learned in first semester Linear Algebra, 27 years ago. Sometimes being a former Mathematician comes in handy.

Jeepers.  A mathematician, even?  I maxxed out with second year geometry, in my math education.  I took trigonometry, but as soon as sine and cosine came up, I was lost.  I failed a test creatively, at least.  When I was expected to draw a plane defined by a problem, I drew a nice picture of an old-timey aeroplane.  :lol:  Sadly, I got no credit for that.  :unsure:  (I did something similar for a philosophy exam, writing a little story which used the Marx Brothers to illustrate the concept of metaphysical solipsism.  That wasn't appreciated, either.)

This is useful knowledge, indeed.  In Googling the topic, I found several people asking how it could be done, but no answers.  :blink:

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


Cage ( ) posted Tue, 08 March 2011 at 9:07 PM · edited Tue, 08 March 2011 at 9:12 PM

file_466511.jpg

Still some bugs to work out, but the results of a static chain script are looking pretty good, so far.  Here are the results of some initial tests.  The chain is built along the path very nicely.  :laugh:

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


Cage ( ) posted Wed, 09 March 2011 at 12:12 AM · edited Wed, 09 March 2011 at 12:15 AM

file_466514.jpg

Okay.  It's getting there.  :laugh:

I've made options to trim a path to the submitted chain length by number of links, extend the chain to the end of the path, or scale the path to the submitted chain length.  All working nicely.  (And all thanks to the magic of odf's revelation about matric construction from a set of orthogonal vectors.  :woot:)

The main problem now is that the links can slip out of their proper places at sharp transition points.  You can see a bit of that on the linear chain on the left, in the attached image.  I'm going to see what I can do to correct that.

Aside from that, I just need to finish the Tkinter GUI for P7 and below, and the static-chain-prop-along-a-path script will be ready.

A script to pose a chain figure from the path is more daunting, at least to me.  :scared:  There would seem to be no avoiding angle conversions there, as Poser parameter dials will only accept euler angles as input.  (A pity there's no option to set rotations using quaternions, as in Blender.  Poser supposedly uses quats internally, but there's no Python access, if that's the case.)

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


GeneralNutt ( ) posted Wed, 09 March 2011 at 1:13 AM

That's looking great cage!



EnglishBob ( ) posted Wed, 09 March 2011 at 3:34 AM

This has promise. Well done Cage, and thanks to odf for clearing the mental block.

Quote - The main problem now is that the links can slip out of their proper places at sharp transition points.

That is a problem with chains, however you "pose" them. The rotation centre needs to be in a different place depending on the axis of rotation. I guess a picture would help enormously here, but that will have to wait for another time. :)

I'm sure there's a whole body of knowledge relating to chain rigging that could be folded into this script, if it's thought necessary. I'll have a surf through the Poser Technical forum later on.

Quote - A script to pose a chain figure from the path is more daunting, at least to me.

Do you even need that? It seems to me that the ability to create an ad hoc chain to follow the specificed path is enough - or have I missed something?


jancory ( ) posted Wed, 09 March 2011 at 6:05 AM

great work, Cage!


lost in the wilderness

Poser 13, Poser11,  Win7Pro 64, now with 24GB ram

ooh! i guess i can add my new render(only) machine!  Win11, I7, RTX 3060 12GB

 My Freebies



Cage ( ) posted Wed, 09 March 2011 at 12:43 PM · edited Wed, 09 March 2011 at 12:55 PM

Thanks, folks.  :laugh:  I really am surprised it's going so well, and so easily (fingers crossed, knock wood, etc.).  Odf's revelation is a wonderful boon.  :thumbupboth:  I told my grandfather, a retired engineering professor, about what odf had taught me.  His response was, basically, "But of course!  You didn't know that?"  Apparently the approach is taken for granted by those who know and is never, ever explained anywhere in any online discussion of vector math, as far as I can tell.  So I sort of hope odf hasn't broken some unspoken rule.  The league of vector math insiders might go after him.  :scared:  Be careful, odf!  :lol:

 

Quote - That is a problem with chains, however you "pose" them. The rotation centre needs to be in a different place depending on the axis of rotation. I guess a picture would help enormously here, but that will have to wait for another time. :)

A process which just pulls the stray path point toward the average of its two neighbors' positions seemed to fix the trouble here, in some quick tests.  I'm sure a proper solution can't be as simple as that, but this might remove the worst of the problem if I can't come up with something better.

Have you tested the chains built with the Chain Maker script?  Les did a good job with the rigging, creating centers of rotation which move as a link is rotated.  Assuming I've implemented it properly, his rigging is applied to any chain figure created with the script.

 

Quote - Do you even need that? It seems to me that the ability to create an ad hoc chain to follow the specificed path is enough - or have I missed something?

Well, a poseable chain can be animated, and a user can easily make small adjustments to the positioning of each individual link, if needed.  I'm thinking about trying to add animation capability to this, using keyframed morphs, but I have no idea whether that will look great or terrible.  :lol:  I could allow more user adjustment by creating the chain as a series of separate props, all parented to one (hidden?) main prop, perhaps.  :unsure:

I'd love to avoid having to work with chain figure posing, however.  My tests so far are not encouraging, which seems mainly down to really bad euler angle conversions.

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


EnglishBob ( ) posted Wed, 09 March 2011 at 4:18 PM

Quote - A process which just pulls the stray path point toward the average of its two neighbors' positions seemed to fix the trouble here, in some quick tests.  I'm sure a proper solution can't be as simple as that, but this might remove the worst of the problem if I can't come up with something better.

As the Oblique Strategy says, "Don't be afraid of things because they're easy to do". Most of the time, small inaccuracies in the link positioning aren't going to matter.

Quote - Have you tested the chains built with the Chain Maker script?  Les did a good job with the rigging, creating centers of rotation which move as a link is rotated.

No, but I should. (Off Topic) I decided that the DAZ Handcuffs had annoyed me for one last time, and I rebuilt them. The chain rigging has a single fixed joint centre which is fine for most situations, for the same reasons as I suggested above. It would be nice if it was accurate even for extreme close-ups too; there's no penalty for adding ERC apart from a slightly larger CR2, as far as I know.

Quote - Well, a poseable chain can be animated...

Ah, I had missed something - animation, the elephant in the room. I see that I posted before coffee. I must remember never to do that again. :)

Quote - I'm thinking about trying to add animation capability to this, using keyframed morphs, but I have no idea whether that will look great or terrible.

Doing rotations with morphs don't sound like a great idea - well, you know that, I'm sure. Or maybe I need another dose of caffeine. ;)

Quote - I could allow more user adjustment by creating the chain as a series of separate props, all parented to one (hidden?) main prop, perhaps.

How about parenting the links to a transparent carrier band which can be simulated in the cloth room? Et voilà, dynamic chain... Ooh, shiny... Not always accurate, again, but think of the possibilities. There's a thread somewhere which covers some experiments that were done a while back.


Cage ( ) posted Wed, 09 March 2011 at 5:37 PM · edited Wed, 09 March 2011 at 5:39 PM

Quote - Doing rotations with morphs don't sound like a great idea - well, you know that, I'm sure. Or maybe I need another dose of caffeine. ;)

I was thinking it could be like the clothroom, or a morph-deformation driven animated file format like Quake .md2, or .mdd.  VK has shown how linear morph deformations can be used to simulate rotation.  So the basic idea can work, particularly if each frame in the animation is separately morphed.

But chains made with this script probably wouldn't represent links rotating relative to one another in any way which would look natural in animation, so the results might not be great.  Unfortunately, that possible flaw would also affect any approach which tried to use the clothroom for dynamics, as well.

 

Quote - How about parenting the links to a transparent carrier band which can be simulated in the cloth room? Et voilà, dynamic chain... Ooh, shiny... Not always accurate, again, but think of the possibilities. There's a thread somewhere which covers some experiments that were done a while back.

Standard parenting works on the actor level, so it wouldn't respond to vertex deformations, as I understand it.  But I've been thinking along similar lines to your suggestion, since my last post.  A script could create a polygon strip to be used in the cloth room.  The strip would be specially-structured in such a way that the positions of certain vertices could be used as the path points for creation of a chain or tube.  Theoretically, this could work.  I do something similar with the two-sided cape cloth script used by my Batgirl character.  But It would still leave open the question of whether the script-generated chains would look any good when moving.

Anyway, I'll try something, animation-wise, once I'm done tinkering with the badly-aligned links.

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


Cage ( ) posted Wed, 09 March 2011 at 11:19 PM · edited Wed, 09 March 2011 at 11:20 PM

file_466588.txt

Here's an initial release for the posed chainprop script.  I'm still trying to work out a decent way to fix the misplaced links at tight corners.  The current approach can help in some cases, but it worsens the situation in others.  

Most of the options for the script are the same as those for either the chain-making script or the extrusion script.  I'll try to type up basic instructions soon.

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


Rance01 ( ) posted Thu, 10 March 2011 at 3:59 AM

Quick test, and the thing seems to work pretty well to me.  Connected three points no problemo.

You are quickly filling up a whole set of buttons in my Pyhon library, Cage;)

Rªnce


Cage ( ) posted Thu, 10 March 2011 at 12:42 PM

Quote - Quick test, and the thing seems to work pretty well to me.  Connected three points no problemo.

Thanks.  :laugh:  I haven't seen any problems yet with the basic process of building the chain, or, for that matter with any result which doesn't use the linear path option.  So the script should be useable for most contexts, in its current form.

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


colorcurvature ( ) posted Thu, 10 March 2011 at 2:28 PM

Cage, you are rebuilding blender within Poser :D


Cage ( ) posted Thu, 10 March 2011 at 4:36 PM

Quote - Cage, you are rebuilding blender within Poser :D

What, does Blender do all this stuff?  😕  The Blender interface is such a tangle that I have no idea about its true range of capabilities.  :lol:

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


odf ( ) posted Thu, 10 March 2011 at 4:38 PM
Online Now!

Quote - > Quote - Cage, you are rebuilding blender within Poser :D

What, does Blender do all this stuff?  😕  The Blender interface is such a tangle that I have no idea about its true range of capabilities.  :lol:

I hear it also makes a reasonable espresso and darns your socks, if you can find the right buttons.

-- I'm not mad at you, just Westphalian.


Cage ( ) posted Thu, 10 March 2011 at 4:43 PM

But will it untie the knot in my shoelaces?  If it will, I'm really done with Poser, this time.  :lol:

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


colorcurvature ( ) posted Thu, 10 March 2011 at 4:44 PM

It even had Antonia built-in from the beginning, odf, you just didnt find the button  ;)


odf ( ) posted Thu, 10 March 2011 at 4:45 PM
Online Now!

Quote - It even had Antonia built-in from the beginning, odf, you just didnt find the button  ;)

Was it a morph for Suzanne?

-- I'm not mad at you, just Westphalian.


EnglishBob ( ) posted Thu, 10 March 2011 at 4:56 PM

file_466618.jpg

Erm - sorry to interrupt. :lol:

The chain maker seems to work nicely, at least on a casual, messing about with it level. It remains to be seen whether I can position those markers well enough to make something realistic. Whatever happens, the limitations would be mine, not the script's...

I hesitate to mention it, but presumably Mr. Looper could be combined with this to create a script which forms loops of chains defined by a plane intersecting a solid? Just saying, not a hint or nuthin'. :)


Cage ( ) posted Thu, 10 March 2011 at 5:24 PM

Quote - I hesitate to mention it, but presumably Mr. Looper could be combined with this to create a script which forms loops of chains defined by a plane intersecting a solid? Just saying, not a hint or nuthin'. :)

That hadn't even occurred to me.  I'll give it a try.  Shouldn't be a problem.  :thumbupboth:  I need to try to add the axis-flattening to the loop script, too.

I've updated the Loop Scripts page on my site with all of the new scripts, as well as updated versions of the skinner and looper scripts, which use the new two GUI system.

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


Cage ( ) posted Thu, 10 March 2011 at 7:53 PM · edited Thu, 10 March 2011 at 7:58 PM

There's a slight conceptual problem with creating a looped chain.  The loop path has a set length and the length of the divisions along the loop is set by the chain link length.  So there's a good chance that the ends won't meet up properly in any given loop.  In such a case, I can let the final link do what it wants, leave the loop open, or re-space the links either at the end or all along the chain.  Each approach has its own drawbacks.  :unsure:

I'll try setting up a series of options, then see what the results look like.

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


Cage ( ) posted Thu, 10 March 2011 at 9:23 PM

Content Advisory! This message contains nudity

file_466626.jpg

I've tested the chain-loop script by looping Antonia with some chains.  Here you can see the problem which comes up where the end of the loop path comes back around to the beginning.

 

Nudity flag because Antonia is wearing only chainloops.  :unsure:

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


EnglishBob ( ) posted Fri, 11 March 2011 at 4:00 AM

Yes, I see the problem with closing the loop. As far as I'm concerned, if I could control where the join was, I could position that out of sight of the camera.


Cage ( ) posted Fri, 11 March 2011 at 2:29 PM

Since the Y rotation of the plane has no effect on the actual process of creating the loop path, I can use that to allow a user to rotate the join.  I'll set it up so the join will end up pointing along the direction in which the rotated Z axis of the plane points.

But I'm still hoping to work it out a bit better than seen above.  I need to tinker a bit.

The original chain-making script has a known RAM leak, which was discussed earlier in the thread.  That problem also affects the chain-along-path script Aand the chain-loop script on which I'm working.  It can end up crashing Poser, if you run the scripts repeatedly (I did it by creating stacks of 20 loops, 100 times or so) without re-starting Poser.

I think I've located the source of the leak, however.  Apparently Numeric arrays don't handle references the same way as regular Python lists.  I'll see if I can fix the problem, then update all of the chain scripts.  In the meantime, just be aware of the possible risk.  :blushing:

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


nruddock ( ) posted Fri, 11 March 2011 at 3:37 PM

Quote - Since the Y rotation of the plane has no effect on the actual process of creating the loop path ...

As this is the case, you could scale the path on the other two axes to make it an exact number of links long.
Obviously this will work better when the fraction of a link that needs to be added is small compared to the total length.


Cage ( ) posted Fri, 11 March 2011 at 3:49 PM

Quote - As this is the case, you could scale the path on the other two axes to make it an exact number of links long.
Obviously this will work better when the fraction of a link that needs to be added is small compared to the total length.

Any scaling of the path should have the effect of creating an offset between the surface being encircled by the loop and the loop itself.  😕  I assume I've misunderstood...?

If the size of a link can't change and the length of the path can't change, I can only work with the link count and the spacing between the links.

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


Cage ( ) posted Fri, 11 March 2011 at 10:11 PM

file_466653.txt

Okay.  This version of the chain loop prop script seems to be working well.

The problems at the loop join seem to have been remedied, in my tests.  Even so, the seam has been rotated to face on -Z by default (normally the convex hull sort places it on +X), and the seam should follow the plane's Y rotation to face in the same direction as the plane's relative negative Z axis points when the script is run.

There is still a RAM leak.  I haven't managed to locate it yet, unfortunately.  It has nothing to do with Numeric.  Somewhere I assume I'm passing around references when I think I'm not, and the refcount isn't reaching zero for something before the script ends.  The script is currently set up to use the Python gc module for some garbage collection, which seemed to consistently reduce the RAM loss by up to 60% in my tests, but it does still leak.  So if you plan to run this script over and over dozens of times without restarting Poser, be aware of your RAM levels.

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


SteveJax ( ) posted Fri, 11 March 2011 at 10:31 PM · edited Fri, 11 March 2011 at 10:32 PM

I think you're going to find that 90% of any image you need a closed loop for, you'll be able to just hide the loose ends behind whatever they're wrapped around unless it's an animation.


Cage ( ) posted Fri, 11 March 2011 at 10:41 PM · edited Fri, 11 March 2011 at 10:45 PM

file_466654.jpg

> Quote - I think you're going to find that 90% of any image you need a closed loop for, you'll be able to just hide the loose ends behind whatever they're wrapped around unless it's an animation.

Agreed.  I'd just like to have it creating proper loops, if possible.  I guess I'm odd that way.  :lol:

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


Cage ( ) posted Sat, 12 March 2011 at 12:20 AM · edited Sat, 12 March 2011 at 12:20 AM

file_466655.gif

Here's a test of an animated chain.  As can be (hopefully) seen, the links don't move naturally as the chain is animated.  I'm not sure whether it's worth pursuing animation options, but I'm also not sure how this compares to any results with animated chain figures.  :unsure:

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


EnglishBob ( ) posted Sat, 12 March 2011 at 12:50 PM

If that was done purely by animating the marker positions, then it has to be a lot easier to do than animating a chain character, even with the benefit of EasyPose. I'd be prepared to tolerate some inaccuracies in return for that simplicity of use.


Privacy Notice

This site uses cookies to deliver the best experience. Our own cookies make user accounts and other features possible. Third-party cookies are used to display relevant ads and to analyze how Renderosity is used. By using our site, you acknowledge that you have read and understood our Terms of Service, including our Cookie Policy and our Privacy Policy.