Tcll
Smash Lord
check the hitboxes...Either way, it doesn't really seem to matter much. Changing the data there has no noticeable effects in game.
the game may rely on an object's bounding box as it's hitbox
Welcome to Smashboards, the world's largest Super Smash Brothers community! Over 250,000 Smash Bros. fans from around the world have come to discuss these great games in over 19 million posts!
You are currently viewing our boards as a visitor. Click here to sign up right now and start on your path in the Smash community!
check the hitboxes...Either way, it doesn't really seem to matter much. Changing the data there has no noticeable effects in game.
you're right...Can't say I'm positive, but I believe it's xyzXYZ
What do you mean "release this?" What do you mean by "this?" Do you mean you'll release the importer/exporter? Or do you mean you'll release your Pikachu hack? Either way, looking cool! There should be more people showing hype for this, honestly. Would your method be able to export models that were hand made? Or would it only be able to import models from the game, edit them, and then export them back into the game? If this could do handmade models, this would revolutionize Smash Brothers hacking.thanx
I need help with the materials so I can release this...
I'm releasing V3 with his dark Green thunder
shown here:
*Picture*
that was done with just a simple color edit...
but not all his MDL0's have color group...
there's some that are controlled by the materials
once I can getthose changed, I'll release this
I ment my Pikachu hack...What do you mean "release this?" What do you mean by "this?" Do you mean you'll release the importer/exporter? Or do you mean you'll release your Pikachu hack? Either way, looking cool! There should be more people showing hype for this, honestly.
as of right now...Would your method be able to export models that were hand made? Or would it only be able to import models from the game, edit them, and then export them back into the game? If this could do handmade models, this would revolutionize Smash Brothers hacking.
Here's a tip: No one goes in the "Tutorials, FAQs & Help" part of this forum. You want more help? Say that you're beginning a project, give it a fancy name of some sort, and post it on the "Smash Workshop General" board. It works, I've seen it done in the past.I'm surprised I'm not getting as much help as I should be on the importer and exporter
KK thanxHere's a tip: No one goes in the "Tutorials, FAQs & Help" part of this forum. You want more help? Say that you're beginning a project, give it a fancy name of some sort, and post it on the "Smash Workshop General" board. It works, I've seen it done in the past.
oh that's okKeep in mind though that you'll get a lot of people banging at your door asking "ARE YOU DONE YET," and all that. You'll most likely feel rushed and pressured, then. If you're looking for more attention, though, that's the way to do it.
well besides adding vars to the seperate functions, and not knowing how to use most of the data in blender, no...Any update on this at all?
actually...ah, I see :3
a in/exporter x3
the more people info are gather, more easier is it to make right? :3
make sense
I need to say lucky you, I bet more than 10 helping you right know about gathering/making that tool
well, to be the only one that looking in texture pattern hacking, it takes some time and I can't ask somebody if I got stuck D: since I know (for sure) the most about pat0 files right know. only 5% left that need to be discovered and just those 5% is the missing part for fully complete custom patten hacking ;_;
oh, sorry for offtopic ^^;
Just PM/email them. I am sure that's a much better way to get a hold of them.Bump...
Pharrox...
Vile...
>_>
<_<
why am I alone here D:<
eh... you guys are prbly busy with something else... *shrugs*
reply whenever you can or have time I guess...
just tryin to keep this thread alive...
answered:anyone have any idea on what that data is after 0x80??
(before that large cluster of 'FF')
can you tell me how a bit of C++ code works??Hey Tcll,
I've been following your work for a little while now as I've been interested in importing brawl models into Blender. I know a bit of C and Java, but unfortunately I don't know anything about parsing model files so I doubt I can be a significant help. If there's anything trivial you need to get done like testing or something I'd be happy to lend a hand.
Just wanted to thank you for what you done so far and let you know there are people anticipating your hard work.
as for progress, well...Ah, Brawl's vertex weights, the bane of anyone trying to fully learn
Brawl's model structure. The weights are actually in a couple
different places. In the header of the MDL0 file, I'm sure you will
see a long series of 0xFFFFFFFF, this is a quick way too find the
first listing.
Every joint in a model has a weight entry for itself, even if it isn't
actually used for weighting any vertices directly. In the MDL0's
header there will be a few 32 bit ints, followed by the aforementioned
block of 0xFFFFFFFF, and then a few more 32 bit ints. The first set
of ints are the indexes of the joints which have vertices that are
weighted only by them (a weight of 1.0 from that joint). After that
there will be a 0xFFFFFFFF entry for every weight used by them model
with influence from multiple joints, and finally the last set of ints
will be the indexes of joints which do not have have any vertices
weighted directly to them.
Next you will need to skip down a bit to the root entry titled
"NodeMix". This is the block of entries which start with either 0x03
or 0x05. I always forget which is which, so I may have it backwards,
but I believe that 0x05 is for weights which are only influenced by
one joint and the 0x03 is for weights with multiple joint influence.
The first set of weights (the ones weighted by a single joint) will
simply list the index of the weight (determined by where the weight
appeared up in the MDL0 header), followed by the index of the joint
which influences it. After that are the weights influenced by
multiple joints which will first have a 16 bit number for the number
of joint influences, followed by that number of entries with a 16 bit
index (the index of a weight which is influenced by only one joint
(not the index of the joint itself)), followed by a 32 bit float
telling the amount of influence that weight/joint has.
I should also mention that in each joint's header is the index of the
weight which it has full influence over. I don't think this is
actually ever used in game, but I figure I should mention it just in
case for the sake of completeness.
Next is the matter of how the weights are applied to the geometry.
There are two ways weights can be applied. The first id for a mesh
which is controlled entirely by a single joint, and the second is for
a mesh which will have different vertices weighted by different vertex
weights. For the first way, if the 8th byte of a polygon block is not
-1, then the entire mesh listed in that block will be weighted by the
weight with the index listed at 0x08. Also, the position of the mesh
will be multiplied to the inverse bind matrix of the joint that
controls it.
Second and finally, there is the matter of how they are applied when
the vertices in a mesh are controlled by multiple weights (0x08 ==
-1). I'm going to assume for this that you already have a basic
understanding of the Wii's primitive lists and draw functions (0x90
for a triangle, 0x98 for tristrip, etc.). In the list of primitive
draw commands there will be entries for transform matrices (0x20 for
position, 0x28 for normals, 0x30 for texture coords, and 0x38 for
lights (not really ever used)). Bear in mind I don't have my
computer, or any files for reference right now, so this may be
slightly off, but I'm sure that you could find any slight errors I
might make for this next part. I believe, after the flag byte (0x20
being the important one) there will be a 16 bit index of a weight,
followed by a 16 bit memory address which the Wii will use for finding
the transform matrix. You will need to find the index of this address
by doing a little math. I believe that for 0x20 the index is:
ActiveWeightIndex = (Address - 0xB000) / 0x1E
This index I will call the ActiveWeightIndex. After which will be a
series of draw commands with their vertex description. The first byte
will be the ActiveWeightIndex and the weight that controls it will be
the weight from the first index of that 0x20 entry. Also, if that
vertex's weight is controlled by a single joint (a weight of 1.0), then
you must multiply the position of that vertex by the inverse bind
matrix of the joint that controls it. Vertices that are weighted by
multiply joints do not have any transforms applied to them.
I hope this helps out a little and is at least somewhat
understandable. I tend to be pretty bad when explaining things like
this. If you need any clarification, feel free to ask. It is quite a
bit complicated and several people have asked me how it works, I
myself had to have it explained to me by Sabretooth, who is the real
genius here for being the one to actually figure it out. I also just
feel like mentioning that I'm playing around with the models in
Pokemon Battle Revolution, and the weights are giving me some trouble
there as well. Nintendo just can't make it easy for us.
actually, I forgot to mention Blender got the best of me...I've been lurking on here for a while and I've been following your project truthfully for like only a day. However I do feel that this looks very promising. Keep up the good work Tcll don't give up.
I know you don't seem to be getting much help but if you keep going then I know you'll be able to get this done. I'd like to help you as much as the other people who'd love to but can't because we aren't skilled in programming.
If you need anything basic or just some testing even I'll be here. Sorry I can't be of any real help other than a Cheer Leader XD.
Good luck,
Proverbial Lemon