Genete! Springy bones 3D rotation with one bone.
Moderators: Víctor Paredes, Belgarath, slowtiger
Here is the splitted versions of the 3Dgrid script.
One for menu and other for the embedded.
It seems to go a little faster. I don't know. It allow to make a morph only at frame 0.
It would be useful for people who don't want to change its model on the fly during animation.
http://darthfurby.com/genete/Scripting/ ... script.zip
Now to work on the limbs.
Hope it was useful.
-G
One for menu and other for the embedded.
It seems to go a little faster. I don't know. It allow to make a morph only at frame 0.
It would be useful for people who don't want to change its model on the fly during animation.
http://darthfurby.com/genete/Scripting/ ... script.zip
Now to work on the limbs.
Hope it was useful.
-G
I did it!!!!
I did it!!!!
Wooohoooo!!!
It is a little difficult to set properly but it worse the effort.
Simple steps:
a) Create the 3D front and side views as usual. Same points in two vector layers.
b) Manually add masterX, masterY and modelcenter at front view center and its clone at side view center. modelcenter can have its own name but must be the same for front and side views.
c) Run the menu script for 3D rig for front and side views as usual BUT only for some of the points. The points that belongs to the modelcenter bone rotation center.
d) One of the bones of the modelcenter grid would be the center of rotation of other grid of points. Let's call it othercenter.pt. You can leave its original name or rename it to have sense. If rename it remember to rename its corresponding .Rx and.Ry bones
e) Unlink othercenter.pt bone from modelcenter bone. (it should have been linked by the automatic 3D rig script). Create a clone of othercenter.pt bone but placed at the side view rotation center. It should have same Y coordinate.
f) Using othercenter.pt and its clone 3D rig the rest of points that belongs to othercenter.pt as rotation center. Remember that othercenter.pt from the front view have binded a point at its local 0,0 coordinates. Don't select it when run the automatic 3D rig.
g) Once rigged the secondary grid restore the link of the othercenter.pt for the front view. It would be linked to modelcenter bone of the front view. Rename the clone of othercenter.pt of the side view to something that don't have a dot in its name (it would confuse the embedded script if not)
h) Add two new bones called in the example othercenter.mX and othercenter.mY linked to masterX and masterY.
i) Repeat this process for every new sub grid as needed. The othercenter.mX and othercenter.mY should do the masterX and masterY job.
j) Embed the version 7 of the 3Dgrid script.
k) play with masterX and master Y to rotate the whole model included the sub grid and with othercenter.mX and othercenter.mY to locally rotate the secondary 3D grid.
That's all. Enjoy!
Please feed back.
Best
-G
http://ww.darthfurby.com/genete/Scripting/3Dgrid7.lua
http://ww.darthfurby.com/genete/Scripting/sample3.anme
http://ww.darthfurby.com/genete/Scripting/sample4.anme
I did it!!!!
Wooohoooo!!!
It is a little difficult to set properly but it worse the effort.
Simple steps:
a) Create the 3D front and side views as usual. Same points in two vector layers.
b) Manually add masterX, masterY and modelcenter at front view center and its clone at side view center. modelcenter can have its own name but must be the same for front and side views.
c) Run the menu script for 3D rig for front and side views as usual BUT only for some of the points. The points that belongs to the modelcenter bone rotation center.
d) One of the bones of the modelcenter grid would be the center of rotation of other grid of points. Let's call it othercenter.pt. You can leave its original name or rename it to have sense. If rename it remember to rename its corresponding .Rx and.Ry bones
e) Unlink othercenter.pt bone from modelcenter bone. (it should have been linked by the automatic 3D rig script). Create a clone of othercenter.pt bone but placed at the side view rotation center. It should have same Y coordinate.
f) Using othercenter.pt and its clone 3D rig the rest of points that belongs to othercenter.pt as rotation center. Remember that othercenter.pt from the front view have binded a point at its local 0,0 coordinates. Don't select it when run the automatic 3D rig.
g) Once rigged the secondary grid restore the link of the othercenter.pt for the front view. It would be linked to modelcenter bone of the front view. Rename the clone of othercenter.pt of the side view to something that don't have a dot in its name (it would confuse the embedded script if not)
h) Add two new bones called in the example othercenter.mX and othercenter.mY linked to masterX and masterY.
i) Repeat this process for every new sub grid as needed. The othercenter.mX and othercenter.mY should do the masterX and masterY job.
j) Embed the version 7 of the 3Dgrid script.
k) play with masterX and master Y to rotate the whole model included the sub grid and with othercenter.mX and othercenter.mY to locally rotate the secondary 3D grid.
That's all. Enjoy!
Please feed back.
Best
-G
http://ww.darthfurby.com/genete/Scripting/3Dgrid7.lua
http://ww.darthfurby.com/genete/Scripting/sample3.anme
http://ww.darthfurby.com/genete/Scripting/sample4.anme
Without yelling at me for being stupid... 
can I ask why all the extra work is better than the original two step version?
These extra steps (duplicating and moving the pt bones) are they for doing the limbs?
I got a bit lost half way through the instructions. I will have to do this for "real" to see how much more difficult it will be. But if there are a lot of bones it could get messy finding and duplicating and moving all those pt bones.
I will play around with it and give this some thought.
EDIT:
Never mind! I think I understand now!!
-vern

can I ask why all the extra work is better than the original two step version?
These extra steps (duplicating and moving the pt bones) are they for doing the limbs?
I got a bit lost half way through the instructions. I will have to do this for "real" to see how much more difficult it will be. But if there are a lot of bones it could get messy finding and duplicating and moving all those pt bones.
I will play around with it and give this some thought.
EDIT:
Never mind! I think I understand now!!
-vern
-
- Posts: 39
- Joined: Tue May 22, 2007 6:18 am
It is somethig I have in mind. But first let me understand it deeper! I have just created it! And have to make different trials to be sure what are the weak and strong points of the scripts. In fact normal users would not need to know anything about the guts of the scripts. Tehy would only need to know how to use the tool externally and not how it works internally.animationkolhapur wrote:Its an amazing work ...but Genete for a newbie like me its bit difficult to understand ... will you be able to put a step by step tutorial for the same? That would be a very great help for all the new users who are not so good with scripting and all. .. ( A sincere request ..)
Once completely digested by my self (and by Vern - who is the one that made the first hard work and the one from whom I need the main feedback) be sure a written tutorial and/or a video tutorial will be done!
Thanks for try to watch / listen. Keep your eyes on this thread, and be patient!. My free time is limited!

Best
-G
-
- Posts: 39
- Joined: Tue May 22, 2007 6:18 am
Thanks Genete for the reply .. will surely keep eye on the forum but impatiently ... coz won't feel comfortable till the time i understand how you guys do it .... would be great thing to study.. anyways .. i can understand the constraint of the time.. you take your time ... but fire it at the earliest (Am being selfish ) 

I will tell you this which is very encouraging...
Those "automated scripts" Genete created are AMAZING.
I don't... completely understand everything he is doing, all I know is I drew a front view on one layer, duplicated that layer and adjusted the points to create a side view, created a couple of bones, ran the script on each layer... and BINGO!
I had a bone rig that would have taken HOURS to create by hand!
You need to have a bit of an idea of how to create bones and some idea of the front and side views needed but in the end a lot of the really hard stuff is automated with those scripts.
That wheel I created? I never would have even tried to do that without those scripts. As a result I did end up with 500 bones! This is not good of course, but what is good is that the rig just plain worked! Exactly as expected. I didn't have to know what was going on, or how the bones related to each other.
The scripts should make instructions much simpler.
-vern
Those "automated scripts" Genete created are AMAZING.
I don't... completely understand everything he is doing, all I know is I drew a front view on one layer, duplicated that layer and adjusted the points to create a side view, created a couple of bones, ran the script on each layer... and BINGO!
I had a bone rig that would have taken HOURS to create by hand!
You need to have a bit of an idea of how to create bones and some idea of the front and side views needed but in the end a lot of the really hard stuff is automated with those scripts.
That wheel I created? I never would have even tried to do that without those scripts. As a result I did end up with 500 bones! This is not good of course, but what is good is that the rig just plain worked! Exactly as expected. I didn't have to know what was going on, or how the bones related to each other.
The scripts should make instructions much simpler.
-vern
Thanks Vern. That comment (specially coming from you) really encourages me. I'm a person who need that kind of backing to continue working on this complex stuff.heyvern wrote:Those "automated scripts" Genete created are AMAZING.
My target is that people learn how to create easily their own models and use it and wouldn't understand how I did the script or the maths concepts that are involved.I don't... completely understand everything he is doing, all I know is I drew a front view on one layer, duplicated that layer and adjusted the points to create a side view, created a couple of bones, ran the script on each layer... and BINGO!
If someone (maybe you, animationkolhapur) want to understand the maths and the guts of the script I will be glad to explain it. But hey! dont ask me to show you all the math basics from the concept of a real number or a circular function. I need a minimum knowledge to make the explanation.
--------------
Speaking about the model I have been thinking about the problem of shapes ordering. If I maintain all the model inside a single vector layer I finally would need an automatic shape order script. But if I make submodels in separated layers (switch layers) the submodels can be ordered using Z depth and also the submodel can have its own masterX and masterY bones.
For example: imagine to Elsa the giraffe. She would have the ears in two separated layers. The ears layers movements would be governed by the whole head movement but the ear rotation would be governed only by its internal masterX and masterY bones. The ears of an animal is something that can be locally rotated and placed independent of the parent model (the head).
That cannot be said to a human body. For instance the arms normally turns with the body turn and that's the reason I made the previous global rotation model for limbs.
What I think is that every situation needs a different solution. The solution of encapsulate the limbs into layers can be useful sometimes and sometimes not. But anyway if you have the tools you can use them or not.
It would be better explained with some examples. Sorry for this storm of ideas placed here with non defined order.
Meanwhile, be good boys!

-G
3D tail.
http://www.darthfurby.com/genete/Other/tail3.swf
http://www.darthfurby.com/genete/Other/tail3.anme
The last 3Dgrid7.lua needed to be embedded in the switch layer file.
-G
PS: It needs duplicate the shape and reorder it to proper work in all quadrants.
http://www.darthfurby.com/genete/Other/tail3.swf
http://www.darthfurby.com/genete/Other/tail3.anme
The last 3Dgrid7.lua needed to be embedded in the switch layer file.
-G
PS: It needs duplicate the shape and reorder it to proper work in all quadrants.
Your anme file hard-codes the literal path of the script on your hard drive.Genete wrote:3D tail.
http://www.darthfurby.com/genete/Other/tail3.swf
http://www.darthfurby.com/genete/Other/tail3.anme
The last 3Dgrid7.lua needed to be embedded in the switch layer file.
Can you (or I) change this to a relative pathname?
You just need to reload the embedded script from where you have it in your computer.human wrote:Your anme file hard-codes the literal path of the script on your hard drive.Genete wrote:3D tail.
http://www.darthfurby.com/genete/Other/tail3.swf
http://www.darthfurby.com/genete/Other/tail3.anme
The last 3Dgrid7.lua needed to be embedded in the switch layer file.
Can you (or I) change this to a relative pathname?
Be sure that you embedded this script in the bone or switch layer:
http://ww.darthfurby.com/genete/Scripting/3Dgrid7.lua
Sorry if it was an problem. Did it work?
-G
Hi!
If you don't mind I'll put here my thoughts to rescue them later when have time to write the script.
During the 3Dgrid script there are two main loops:
One to find the bones that makes the rig and other to link the pt bones to its corresponding 3D position. What I have realized is that you (Vern) have stored in TbonesSet one times the bone itself (pt bone, Balpha and Bbeta) and other times the angle value or the scaled value of the bones (Rx, Ry and alpha0). What I want to change is that you store the bones itself always in TbonesSet. It is better to do that becasue you can avoid to call the first part of the script everytime you run the script. If you run once (by menu script) then you can store the TbonesSet to an external object and retrieve it from the internal code of the embedded script. Accesing the bones you access to its current values so the mesh is always up to date (on the fly morph is still being possible).
Thinking about the shape Z sort, I think it will do it following those main guidelines:
As well as TbonesSet is now accesible to any embedded script (becasue I have taken it apart inside an global object) the embedded script for shape sort will be embedded into the vector layer that need it. It is responsability of the designer to select a vector layer that have associated a valid TbonesSet table.
So from the vector layer I can access directly to the pt bones of the parent layer and subsequently to its binded point. If the binded point belongs to a shape then the binded point Z value (calculated by the associated bones) will be added to the Z value of the shape.
In other words:
for every point in the vector layer
retrieve the bone that is its parent
if no parent continue
extract the parent bone name (without extension)
access to TbonesSet[parentbonename] if it is nil continue (not a part of the 3D grid)
if TbonesSet[parentboneanme] is not nil then calculate the Z vlaue of the point.
attach the Z value of the point to the point object (to be used later)
end
for every shape in the vector layer
for every point in the shape
ask for the Z value of the point
if nil then break
make the average of the Z's of the shape and assing that Z average to the shape
end
end
The last step is perform a Z order of the shapes using that average Z value.
-G
If you don't mind I'll put here my thoughts to rescue them later when have time to write the script.
During the 3Dgrid script there are two main loops:
One to find the bones that makes the rig and other to link the pt bones to its corresponding 3D position. What I have realized is that you (Vern) have stored in TbonesSet one times the bone itself (pt bone, Balpha and Bbeta) and other times the angle value or the scaled value of the bones (Rx, Ry and alpha0). What I want to change is that you store the bones itself always in TbonesSet. It is better to do that becasue you can avoid to call the first part of the script everytime you run the script. If you run once (by menu script) then you can store the TbonesSet to an external object and retrieve it from the internal code of the embedded script. Accesing the bones you access to its current values so the mesh is always up to date (on the fly morph is still being possible).
Thinking about the shape Z sort, I think it will do it following those main guidelines:
As well as TbonesSet is now accesible to any embedded script (becasue I have taken it apart inside an global object) the embedded script for shape sort will be embedded into the vector layer that need it. It is responsability of the designer to select a vector layer that have associated a valid TbonesSet table.
So from the vector layer I can access directly to the pt bones of the parent layer and subsequently to its binded point. If the binded point belongs to a shape then the binded point Z value (calculated by the associated bones) will be added to the Z value of the shape.
In other words:
for every point in the vector layer
retrieve the bone that is its parent
if no parent continue
extract the parent bone name (without extension)
access to TbonesSet[parentbonename] if it is nil continue (not a part of the 3D grid)
if TbonesSet[parentboneanme] is not nil then calculate the Z vlaue of the point.
attach the Z value of the point to the point object (to be used later)
end
for every shape in the vector layer
for every point in the shape
ask for the Z value of the point
if nil then break
make the average of the Z's of the shape and assing that Z average to the shape
end
end
The last step is perform a Z order of the shapes using that average Z value.
-G
Thanks for the sincere encouragement.
It seems there are lot of people following the thread but nobody said nothing about it. Perhaps they don't understand what is underlying and don't want to disturb our researches with simply "how do I" questions.
Once I finish the last script I'll concentrate into a good video tutorial to explain how to use this powerful tool.
Thanks for your interest.
BTW, did you test the tail anme file by your self?. Did it worked? Maybe you have to reload the embedded script file.
We need some feed back from normal users.
Thanks again.
-G
It seems there are lot of people following the thread but nobody said nothing about it. Perhaps they don't understand what is underlying and don't want to disturb our researches with simply "how do I" questions.
Once I finish the last script I'll concentrate into a good video tutorial to explain how to use this powerful tool.
Thanks for your interest.
BTW, did you test the tail anme file by your self?. Did it worked? Maybe you have to reload the embedded script file.
We need some feed back from normal users.
Thanks again.
-G