Skin modifier - OFusion Viewport problem

Ameno

25-04-2008 18:04:14

1 Object - Edit poly
Reset XForm
Collapse
Skin
All my bone is added to my skin
Animation keyframe
Enable OFusion viewport



And I got this ???



or maybe Ofusion pro will fixe that ? because we are about to make the move for buying somes licences... Just a question of time :wink:

But at this time I need to test the program first and learning the basic :D

Any solution?

p.s. the bone move correctly but the mesh in the ofusion viewport... is freaky :S

Edit: I forgot to tell, my bone got also somes animations constraints, like link constraints

Lioric

25-04-2008 23:26:40

Any bone animation type is supported

It might be that your object matrix is not 'clean' (even after a reset xform), or that you are using more than 4 bones assigned per vertex

You can use the box trick to clean the matrix if your object is already with a skin modifier assigned, see this videos for detailed instructions on this procedure (cleaning the matrix on skeletal animated objects with the 'box trick')

http://www.ofusiontechnologies.com/videos/mozzyCleanMatrix156.avi
*Mozzy model property of CNotifor, courtesy of CNotifor

http://www.ofusiontechnologies.com/videos/firemanVideo5.avi
*Fireman model property of Fraunhofer FIT , courtesy of Fraunhofer FIT

Or if you prefer send us the scene and we will take a look at it asap

Ameno

28-04-2008 21:32:06

I try the box tricks and thats doesn't change anything, my partner said its because my bone are not attach together, I create separate bone, we try if m y bone its in one piece like that.

Example:


When my bone is all together like the picture, I got no problem in the viewport but I need to animated separate bones ?

And each bone are assigned to specific vertex, for animated each part separatly.

In my mind I can't imagine also to animated exemple a building with different door and windows and boning all my building and all bone are attached together only for open or closed a windows or a doors. Keep in mind it's for a videogame.

But my programmer said he need bones and he need one piece object, I can't animated simply the object ? How in the big videogame industry do exactly for animated object, building element or others stuff like that ?

I don't know if all of you understand my point of view or what I need exactly. It's frustrating because I can't shoot the .max scene for confidentiality reason. Very difficult also to explain all stuff in English :wink:

But I am stuck to have one object and for boning I am in the obligation to boning with my bone attach together ?

What is the better way for animated building, station, object or others stuff like that, for after that export that with ofusion and shoot that to my programmer. Keep in mind its for a videogame. All the example or boning stuff in the internet it's always character boning or robot boning... any tutorials or tricks for environnement thinks ?

Lioric

29-04-2008 03:31:42

Skeletal animation is inherently a hierarchy of linked bones

There is no need to use skeletal (bone) animation for all your animations in your scene, you need to use the optimal system for each case

In video games, you are not using a single system or method for all in the scene (in this case for animations), but you use the most optimal system or method on a case by case basis (for performance reasons)

You can use rigid/node animation (know as object animation), skeletal animation, pose animation, morph animation, gpu shader animation, material animation, depending on what you need and what the optimal method is

In your case you need to move a complete object (the windows or doors), then you need to use rigid/node animation, if you use skeletal animation for this case then your are affecting the performance of your application (non optimal) because you are transforming all of the object vertices each frame (and those vertices dont vary in relation to each other), on the other side when using node animation only the node transform (think the visual object's axis in max) is updated each frame (this moves the complete object in the space) and this is efficient for the complete (rigid) object

Skeletal animation is only used when you need to animate an object but with different parts moving differently (a character, organic like objects)

For you case, if you need to animate the environment (and this is composed of rigid objects), just animate the objects as normal, using keyframes at specific frames with the object in the specific position

This animation when exported can be used from your application (played, looped), if you are using the oSceneLoader library all of the object animations will be automatically created when loaded, and you can access it in different ways, using its name, if you want to update all of the scene objects at the same time, you can use some similar to:



each frame {
Ogre::SceneManager::AnimationIterator animationIt = sceneMgr->getAnimationIterator();

while(animationIt.hasMoreElements()) {
Ogre::Animation* animation = animationIt.getNext();

const Ogre::Animation::NodeTrackList& trackList = animation->_getNodeTrackList();

Ogre::Animation::NodeTrackList::const_iterator it = trackList.begin();
Ogre::Animation::NodeTrackList::const_iterator iend = trackList.end();

for(; it != iend; ++it) {
const Ogre::NodeAnimationTrack* track = it->second;
track->getAssociatedNode()->resetToInitialState();
}

currentTime += evt.timeSinceLastFrame;
animation->apply(currentTime);
}
}

hotdot

29-04-2008 15:41:48

Programmer behind speaking :

Actually the only thing that is needed for us on a second degree is that, for example you got a game entity which is a giant folding cannon, not only we need to animate it but we need the bone to attach any weapon effects on the model's cannon, is there a clearer way of getting to that result ?

Lioric

29-04-2008 16:16:06

And why you need a bone to attach the effects to the cannon? (is there any special needs or contrains in your project that force you to use a bone in here)

Why cant you use a helper node (linked to the cannon model in the correct location, and animated if needed)?

A helper node is a non visible tag point that "tags" where an object must be attached to, when an object is attached to the helper node in your application it will be placed in the correct position and will move with the cannon model (it will animate with the parent object, and can contain its own animation)

hotdot

29-04-2008 17:20:38

We know only about the function "AttachObjectToBone" for a mesh object we did not see any reference to what you are talking about, can you direct us where we can check about that system ? All our development was geared toward using bones, if we have to get rid of them we might as well do it now since our model production was not green because of those problems.

EDIT : I do not want to look dummy i checked the SceneNode object and of course you can attach stuff on a sceneNode and subs will be rotated, translated if parent node is moved, are you refering to that ?

thanks again for the help

Lioric

30-04-2008 15:44:02

Yes, use nodes and scene nodes (and its hierarchy) when you want to move complete objects, not bones (only use them if you clearly need this in your project, as skinning animation)

Note: Skeleton are a localized node hierarchy (bones are "specialized" nodes)

hotdot

02-05-2008 21:31:00

We are kind of puzzled how to achieve an automated result with what you describe.

Currently we have the community Edition of Ofusion and are wondering if the helper export (grayed out in our version) is the thing to use.

Will the use of Helpers in 3d Studio Max :

-Create a sub entity ?
-Create a Scene Node ?
-Create a Node ?

Do we need the oScene loader lib to achieve this :

Our need is to get a position (originally from a bone) and attach a particle effect for a cannon shot by doing a call to AttachToBone with the particle system.

How do we automate this because to my knowledge the .Mesh will not create scene node when you do a SceneManager.CreateEntity(...)

Lioric

08-05-2008 03:01:37

The helper support is a Pro version feature only

If you are using the CE version you can use a simple placeholder object (a box) and place it where your helper nodes must be and name it with a sensible name, then when loading the scene use the event notification system to be notified when entities are loaded, and use the name to identify the helper-type objects (hide them or remove them as needed) and use the scene node from them

The SceneNodes are exported in the .osm scene file (use the oSceneLoader library to automatically load the scenes), if the node/object is animated in max (for example using keyframes) the animation can be played with the details provided above

If the helper-like objects is animated, any object that you attach to them in your application will be animated and move as the helper node

In your case, as a sample, you can link a helper object in max to your cannon in the position where the particles should be displayed and name it as "cannon01_particle_position", in your application hide the entitity of this node (if not using true helpers) at load time, then when needed get the scene node (use the sceneManager methods to get the scene node by name or you store a pointer to the object when loading) and attach the particle system to it, the particles will move as the cannon moves

It seems that your issues comes because you are not using the .osm scene files and the oSceneLoader library to automatically load and create the scene, but you might be creating entities directly using the .mesh file

The oSceneLoader will create all of the scene object (as scene nodes, entities, splines, cameras, lights, and all animations types) automatically when a scene is loaded