Post by thyme on Oct 15, 2004 17:56:11 GMT
Hi Seamless Friends
Very sorry I have not been on the forum for the last few days. Thanks barphe for filling in
2.057 ready for download
www4.tpg.com.au/users/gperrett/seamless3d/index.html
New Features for 2.057
Sampling a Pose for Interpolators
Barphe suggested Interpolators be able to record the pose of an av. Because I could see this would not be hard to implement if the ROUTEs from the interpolators to parts were reversed and because I much like keeping in with the spirit of trying to utilise the 3d window to assist programming I decided to add such a feature for 2.057.
This feature is relatively straight forward to use.
Set the freezeTime's time field to the time you want for the recorded pose.
Pose the avatar
Right click on the TimeSensor that is the source of the Interpolator's time and select samplePose.
Note:
You must not have any ROUTEs going to parts you want to pose that are active when posing the model or they will compete with any of your efforts to pose the model manually. Currently in Seamless3d when time is frozen using the freezeTime feature ROUTEs are sent in each frame so it is essential all ROUTEs going to parts you want to pose be first disabled if the timeSensor is active. This can be done by unchecking a TimeSensors enabled field.
Each part can be easily selected in the 3d window in wire frame mode by holding down control and clicking on a vertex belonging from the part you want to select.
Once a part is selected it can be oriented by holding down shift and right dragging with the mouse. Be careful not to hold down shift and left drag unless you want to change the position of the part.
The samplePose command causes only elements in the interpolators to be modified that are set to the same time (in the key field) as freezeTime's time.
samplePose can be used for both Orientation and Position Interpolators.
Using Interpolators this way make me see Interpolators in a new light. Interpolators used by taking many samples for a second makes me think of how Wallace and Grommet and clay animated effects are achieved. The animation may be jerky compared to what you would expect from RotAccelerators but I think when many frames are taken for a second this jerky kind of animation has a charm of its own. Though this is an art form that's I am sure would take time to develop the beaughty to this simple technique is there should be little more to it than creating the art.
Calculating a Pose for a RotAccelerator
Previous versions of seamless had a command "calculate acceleration for return" for RotAcclerators that calculates the amount of acceleration needed to return an animated sequence back to where it began. This command is used in the worm animation tutorial. For 2.057 I have added a simular feature to this but one where you can specify to what ever orientation you set the part it is connected to via a ROUTE. Thinking this might want to be used frequently and that it is in context to what element is selected (by the index) I have added a push button named calcForPose to trigger this command. Keeping things uniform I have also added a calcForReturn button which has the same functionality as the "calculate acceleration for return" command that could be selected from the scene tree menu.
calcForPose calculates the acceleration needed for the orientation to end at the sampled pose at the end of the decay phase. calcForPose is not affected by the freezeTime's time.
Reducing the Time to Setup an Animation Sequence.
Adding all the animation nodes needed to animate all the parts in a model and name them and set up all the ROUTEs from the time sensor to the interpolators has to takes up a good bit of time. To take out the drudgery here I added a new feature, setupAnimation. To use this feature right click on the Seamless node that owns the parts you want to animate and select setupAnimation. Then fill out all the fields to the names and types of nodes you want to use and press doIt. doIt should create a RotAcclerator or a OrientationInterpolator for each part in the skeleton, each one containing the name of the part concatenated with other characters specified in the setupAnimimation's control panel. A time sensor node is also created with ROUTEs going from it to all the RotAcclerators/OrientationInterpolators.
Because StaticParts should never be directly animated the setupAnimimation feature will not create any animation Nodes or ROUTEs for StaicParts.
Any unwanted animation nodes created can be deleted to avoid unwanted bloat. Deleting a node that has a ROUTE connected to it automatically results in the ROUTE being deleted with it.
Inserting and Deleting Elements
Though it was possible to insert or delete elements in any multiple field using only Seamless3d's GUI it was probably easier to do this sort of thing using a text editor if the element was not the last in the array. Because of this fact I have added a feature for the sole task of allowing elements to be deleted or inserted. To use this new feature right click on the name of a field belonging to multiple field and select element. When this feature is used for multiple fields belonging to a group (multiple fields that share the same background colour) all elements that share the same index will be dealt with simultaneously for a single operation.
Copying and pasting should only be attempted for identical types of fields. I have not yet made it so the user is prevented from attempting to copy and paste from different types and I have not yet tested it out well so please treat it with kids gloves
New enabled field added to ExitBuild
I have not written any where about ExitBuild nodes yet but they are straight forward to use. Place one any where in the build field and execution will stop at this node during a build cycle. ExitBuild nodes are useful for going back in time to edit build nodes earlier in the cycle.
I have wondered from time to time if there would be any value in an ExitBuild node being able to be turned off without deleting it. Bumpy recently suggested that he thought it would be good if it could so I have added an enabled field to the ExitBuild for 2.057.
New slope field added to RadialTug
Bumpy said the RadialTug can be more versatile when it has the option of being able to do sharper pointy tugs which I can see could have advantages and comes at very little cost speed wise. This option has been added by adding a slope field to the RadialTug. When left to the default setting of 1 tugs are smooth but when set to .5 sharp pointy tugs are possible. Values between .5 and 1 may be worth experimenting and may be values outside this range too. Values 0 or 2 will cease to work. The RadialTug is one of many nodes that has not been documented in any detail yet but it should be relatively easy to use. Its a lot like a SineTug node and like this node it is used in a SurfaceGenerator.
Bugs fixed
Paste ownership of part from the F10 menu worked before but after using it would temporally show the copied part's name on the pasted part's name and would show a warning message causing confusion to anyone not use to this bug. This is an old bug, one I have forgotten about for a number of months. I rediscovered it recently and got rid of it swiftly
There was a bug in previous versions that prevented a CopyPart node from using the same part for the source and destination. This has now been fixed.
Barphe brought my attention to a bug that existed since 2.049 that prevented the user from seeing the visual aid cylinder for the TransferBCyl build node. This has now been fixed.
Anyone is more than welcome to comment if they think a feature is awkward to use in seamless. I can not promise anything but it is likely I may be able to think a neater alternative. Seamless has got to a point where there are many possible ways it can be used many which are not written about yet.
Many thanks to barphe, bumpy, cush, griff, X and others who have given seamless feedback over the last few weeks.
kind regards to all
thyme
Very sorry I have not been on the forum for the last few days. Thanks barphe for filling in
2.057 ready for download
www4.tpg.com.au/users/gperrett/seamless3d/index.html
New Features for 2.057
Sampling a Pose for Interpolators
Barphe suggested Interpolators be able to record the pose of an av. Because I could see this would not be hard to implement if the ROUTEs from the interpolators to parts were reversed and because I much like keeping in with the spirit of trying to utilise the 3d window to assist programming I decided to add such a feature for 2.057.
This feature is relatively straight forward to use.
Set the freezeTime's time field to the time you want for the recorded pose.
Pose the avatar
Right click on the TimeSensor that is the source of the Interpolator's time and select samplePose.
Note:
You must not have any ROUTEs going to parts you want to pose that are active when posing the model or they will compete with any of your efforts to pose the model manually. Currently in Seamless3d when time is frozen using the freezeTime feature ROUTEs are sent in each frame so it is essential all ROUTEs going to parts you want to pose be first disabled if the timeSensor is active. This can be done by unchecking a TimeSensors enabled field.
Each part can be easily selected in the 3d window in wire frame mode by holding down control and clicking on a vertex belonging from the part you want to select.
Once a part is selected it can be oriented by holding down shift and right dragging with the mouse. Be careful not to hold down shift and left drag unless you want to change the position of the part.
The samplePose command causes only elements in the interpolators to be modified that are set to the same time (in the key field) as freezeTime's time.
samplePose can be used for both Orientation and Position Interpolators.
Using Interpolators this way make me see Interpolators in a new light. Interpolators used by taking many samples for a second makes me think of how Wallace and Grommet and clay animated effects are achieved. The animation may be jerky compared to what you would expect from RotAccelerators but I think when many frames are taken for a second this jerky kind of animation has a charm of its own. Though this is an art form that's I am sure would take time to develop the beaughty to this simple technique is there should be little more to it than creating the art.
Calculating a Pose for a RotAccelerator
Previous versions of seamless had a command "calculate acceleration for return" for RotAcclerators that calculates the amount of acceleration needed to return an animated sequence back to where it began. This command is used in the worm animation tutorial. For 2.057 I have added a simular feature to this but one where you can specify to what ever orientation you set the part it is connected to via a ROUTE. Thinking this might want to be used frequently and that it is in context to what element is selected (by the index) I have added a push button named calcForPose to trigger this command. Keeping things uniform I have also added a calcForReturn button which has the same functionality as the "calculate acceleration for return" command that could be selected from the scene tree menu.
calcForPose calculates the acceleration needed for the orientation to end at the sampled pose at the end of the decay phase. calcForPose is not affected by the freezeTime's time.
Reducing the Time to Setup an Animation Sequence.
Adding all the animation nodes needed to animate all the parts in a model and name them and set up all the ROUTEs from the time sensor to the interpolators has to takes up a good bit of time. To take out the drudgery here I added a new feature, setupAnimation. To use this feature right click on the Seamless node that owns the parts you want to animate and select setupAnimation. Then fill out all the fields to the names and types of nodes you want to use and press doIt. doIt should create a RotAcclerator or a OrientationInterpolator for each part in the skeleton, each one containing the name of the part concatenated with other characters specified in the setupAnimimation's control panel. A time sensor node is also created with ROUTEs going from it to all the RotAcclerators/OrientationInterpolators.
Because StaticParts should never be directly animated the setupAnimimation feature will not create any animation Nodes or ROUTEs for StaicParts.
Any unwanted animation nodes created can be deleted to avoid unwanted bloat. Deleting a node that has a ROUTE connected to it automatically results in the ROUTE being deleted with it.
Inserting and Deleting Elements
Though it was possible to insert or delete elements in any multiple field using only Seamless3d's GUI it was probably easier to do this sort of thing using a text editor if the element was not the last in the array. Because of this fact I have added a feature for the sole task of allowing elements to be deleted or inserted. To use this new feature right click on the name of a field belonging to multiple field and select element. When this feature is used for multiple fields belonging to a group (multiple fields that share the same background colour) all elements that share the same index will be dealt with simultaneously for a single operation.
Copying and pasting should only be attempted for identical types of fields. I have not yet made it so the user is prevented from attempting to copy and paste from different types and I have not yet tested it out well so please treat it with kids gloves
New enabled field added to ExitBuild
I have not written any where about ExitBuild nodes yet but they are straight forward to use. Place one any where in the build field and execution will stop at this node during a build cycle. ExitBuild nodes are useful for going back in time to edit build nodes earlier in the cycle.
I have wondered from time to time if there would be any value in an ExitBuild node being able to be turned off without deleting it. Bumpy recently suggested that he thought it would be good if it could so I have added an enabled field to the ExitBuild for 2.057.
New slope field added to RadialTug
Bumpy said the RadialTug can be more versatile when it has the option of being able to do sharper pointy tugs which I can see could have advantages and comes at very little cost speed wise. This option has been added by adding a slope field to the RadialTug. When left to the default setting of 1 tugs are smooth but when set to .5 sharp pointy tugs are possible. Values between .5 and 1 may be worth experimenting and may be values outside this range too. Values 0 or 2 will cease to work. The RadialTug is one of many nodes that has not been documented in any detail yet but it should be relatively easy to use. Its a lot like a SineTug node and like this node it is used in a SurfaceGenerator.
Bugs fixed
Paste ownership of part from the F10 menu worked before but after using it would temporally show the copied part's name on the pasted part's name and would show a warning message causing confusion to anyone not use to this bug. This is an old bug, one I have forgotten about for a number of months. I rediscovered it recently and got rid of it swiftly
There was a bug in previous versions that prevented a CopyPart node from using the same part for the source and destination. This has now been fixed.
Barphe brought my attention to a bug that existed since 2.049 that prevented the user from seeing the visual aid cylinder for the TransferBCyl build node. This has now been fixed.
Anyone is more than welcome to comment if they think a feature is awkward to use in seamless. I can not promise anything but it is likely I may be able to think a neater alternative. Seamless has got to a point where there are many possible ways it can be used many which are not written about yet.
Many thanks to barphe, bumpy, cush, griff, X and others who have given seamless feedback over the last few weeks.
kind regards to all
thyme