Download link and main info! [latest ver 0.0.82e -- 19 Jun 2016]

Users who are viewing this thread

DaBlade said:
mtarini said:
Format:
- currently, OpenBrf understands DXT3 and DXT5 textures, which are the vast majority of textures used in M&B.
  It does not understand DXT1 or tiff textures.

Hey mtarini.

I think it would be a good idea to include DXT1 if possible; this format is (or should always be) used whenever there's no need for an Alpha channel.

I have to agree here.
It's just unnecessary to use anything else than DXT1 if you ain't thinking about having alpha channels.

And now it's not even an option with your mighty tool.


Overall I have to say that this is some fantastic work here. You just came here and blew everybody away with this tool.
And made skeleton changes possible. Great work here. I hope you'll keep up the work on this tool.
 
(clarification: "And now it's not even an option with your mighty tool."  Well, we are just talking of previews here. Everything else will work -- in game, in exports... it is just that inside OpenBrf you see the "problematic" texture as a surrogate checkboard. OpenBrf never saves dds files, it just loads them for previews (just like brfedit did). But, I agree that previews are important, otherwise you have to operate blind.)


That said, good Point about DXT1. I'll fix it...

PS: oops, my fault. DXT1 is already supported. I believed I had a problem with them but actually I don't.

In my above post explaining why you see checkboards  instead of your texture, I also forgot to mention the common cause, which is...

As you know, Meshes determine Materials, and Materials determine Textures. So to know what texture to use, you need the material, which can be in another BRF file. Currently, OpenBrf only scans for materials a few files ("materials.brf", "core_materials,brf", and in the next ver, "materials_face_gen.brf"), so either the used material is there, or in the file you just opened together with the mesh, or in a file you opened in the same session, or else... checkboard.
 
May I suggest adding some new ways of adding items into skin sets? Right now we can view how shields and weapons are held, but not how scabbards are equipped or quivers are worn, etc. Would it be doable? I don't know how much work this would involve so I understand if it's not high on your priority list compared to fixing bugs and implementing planned features (I'd prefer vertex animation over this suggestion :razz:).

Viewing skin sets have been extremely useful in order to check rigging and to see how items are handled/equipped without having to boot up M&B. I love this feature so much.  :mrgreen:
 
amade said:
Right now we can view how shields and weapons are held, but not how scabbards are equipped or quivers are worn, etc.

Why not? you can just add them to your skin, just like weapons/shield/helms... it just takes to know to which bone they must be attached (I don't, but it is a matter of very little guesswork). Doesn't that work?

EDIT: OOPS NO, it doesn't...


(BTW: little tricks: if you attached your skin mesh "helm" (for example) to the "head" bone of skeleton_A, but now you want to reattach it to the same bone of skeleton_B, you can use the "reskeletonize tool" on your skin file. Also know that by editing skin mesh names you basically assign them to different skins.)

 
mtarini said:
amade said:
Right now we can view how shields and weapons are held, but not how scabbards are equipped or quivers are worn, etc.

Why not? you can just add them to your skin, just like weapons/shield/helms... it just takes to know to which bone they must be attached (I don't, but it is a matter of very little guesswork). Doesn't that work?

Nope, I tried, doesn't work unfortunately :sad:. They get attached at wrong positions/angles. Also, for quivers and scabbards there are multiple ways they can be attached to the agent.
 
Its about time someone gave us a new BRFedit, and the list of features sounds really promising.  Can't wait to see what new shiny things I'll be able to make with it :grin:
 
amade said:
Nope, I tried, doesn't work unfortunately :sad:. They get attached at wrong positions/angles. Also, for quivers and scabbards there are multiple ways they can be attached to the agent.

Oops you are right. I made the wrong assumptions. So, that means that the games knows something OpenBrf doesn't: how to displace/rotate a quiver when it used (diplacement/rotation which must be defined w.r.t. a bone, I'm sure, otherwise it would not move during animations).

I've no idea where to get that information, and, until I do, I cannot put that feature (add a quiver to a skin).
Maybe inside some ini file relative to weapons?
 
I had a look through but couldn't really find any clue to where the information may be stored. I'm only aware of the flags used to determine which carry type is used via the module system but they don't seem to offer any hints on the exact positioning of the items either. Hopefully someone more knowledgeable than me will find out.
 
mtarini, not sure if this will help you, but these are in header_items.py

Code:
itp_attach_left_item     = 0x00000100
itp_attach_left_hand     = 0x00000200
itp_attach_forearm       = 0x00000300
itp_attach_armature      = 0x00000f00
 
cdvader said:
mtarini, not sure if this will help you, but these are in header_items.py

Code:
itp_attach_left_item     = 0x00000100
itp_attach_left_hand     = 0x00000200
itp_attach_forearm       = 0x00000300
itp_attach_armature      = 0x00000f00

These are probably more relevant:

Code:
itcf_carry_mask                                      = 0x00000007f0000000
itcf_carry_sword_left_hip                            = 0x0000000010000000
itcf_carry_axe_left_hip                              = 0x0000000020000000
itcf_carry_dagger_front_left                         = 0x0000000030000000
itcf_carry_dagger_front_right                        = 0x0000000040000000
itcf_carry_quiver_front_right                        = 0x0000000050000000
itcf_carry_quiver_back_right                         = 0x0000000060000000
itcf_carry_quiver_right_vertical                     = 0x0000000070000000
itcf_carry_quiver_back                               = 0x0000000080000000
itcf_carry_revolver_right                            = 0x0000000090000000
itcf_carry_pistol_front_left                         = 0x00000000a0000000
itcf_carry_bowcase_left                              = 0x00000000b0000000
itcf_carry_mace_left_hip                             = 0x00000000c0000000

itcf_carry_axe_back                                  = 0x0000000100000000
itcf_carry_sword_back                                = 0x0000000110000000
itcf_carry_kite_shield                               = 0x0000000120000000
itcf_carry_round_shield                              = 0x0000000130000000
itcf_carry_buckler_left                              = 0x0000000140000000
itcf_carry_crossbow_back                             = 0x0000000150000000
itcf_carry_bow_back                                  = 0x0000000160000000
itcf_carry_spear                                     = 0x0000000170000000
itcf_carry_board_shield                              = 0x0000000180000000

itcf_carry_katana                                    = 0x0000000210000000
itcf_carry_wakizashi                                 = 0x0000000220000000

...but still a longshot perhaps? *shrugs*
 
Dain: true, but it could be useful to preview them, so you can model them until they are right without running the game. But I agree... very low priority.

Anyway, I'm afraid that info alone won't help me. I not sure what that means but it's simply not enough. They look like mnemonic values, to refer to the vector data I need. What I need will look like the description of a roto-translation, so a certain number of floating point ("real", non integer) numbers (probably 6, 7, or 12, depending on how it is encoded). Plus, one or a few bone index maybe. If these number are hard-coded, then it would be enough to know them and I could hard-code it too.

The real priorities are group material edits and some support for vertex animations.




Meanwhile... very small exe update. Not worth mentioning as a new version (I'll recap all changes with next version), but now the static mesh export/import bug are fixed (except the Off ones, didn't have time), Obj is first export format choice, added a visualization mode for skeletons, and now it scans materials_face_gen.brf for materials too...
 
I think carry positions are very much hard coded.. no idea how you'd go about finding them without looking at the game source itself..

Ability to apply material to multiple objects at once? :razz:

Also, thought of another handy feature.. some way of flagging up when you have 2 objects named the same thing.. highligh them in red or something, because that'll cause the game to crash.
 
going on Dain's suggestion, it might be nice to have a 'Verify BRF Files' type of option which scans all BRF's in the CommonRes and Resource folder for a mod, and gets a list of all mesh/materials/textures/etc.    Then we could add some checks and it would throw errors where a mesh has a material that doesn't exist, a material has a texture that doesn't exist, there are two objects with the same name, etc.  low priority, but would help with some basic debugging, and coding would probably be similar for what you have to do for the BRF Search type of option.

on a side note, the limitation of only 16 races in module_skins.py is really upsetting now that we have skeleton support....  I want to create different skeleton sizes of rancors and other aliens, but each one would have to be a separate skin, and I'm already at the maximum... I can't even re-use similar sized skeletons for multiple races since I want them to have different sound effects... argh.  !@#!*    Does anybody who's beta testing for warband want to do a test where you try adding 17 races into skins.txt....  :???:
 
HokieBT said:
on a side note, the limitation of only 16 races in module_skins.py is really upsetting now that we have skeleton support....  I want to create different skeleton sizes of rancors and other aliens, but each one would have to be a separate skin, and I'm already at the maximum... I can't even re-use similar sized skeletons for multiple races since I want them to have different sound effects... argh.  !@#!*    Does anybody who's beta testing for warband want to do a test where you try adding 17 races into skins.txt....  :???:

Somebody know how to do this? we realy need more races
 
Bloid said:
I don't suppose this paves the way for actual "dual-wielding" (not that I would want it)?
true dual wielding, no.  But by allowing us to create new animations we can improve on the 'sword shield' concept by actually having a left hand swing or thrust animation so it would look more decent.  We're looking into this for the star wars mod.
 
Sorry if this is obvious, but what does POS mean in this screenshot?
openBRF0013_pos.jpg


The left one is from a static mesh imported via BRFedit, the one on the right is the same mesh imported using openBRF. The only thing I can infer from it so far is that each time I import a static mesh the POS count is the same as the VERT count.

edit: Oops. Now I'm getting inconsistent vert counts as well... Not sure why. Hopefully the error is on my end.
 
In short, the lower numbers the better (other factors being equal). Less space consumed on the disk, less RAM on the Graphic card, and more efficient rendering.
In openBRF, you can achieve the same result if you set the option "after import" to "merge". Try.

To really answer your question, it takes to have a look at the internal structure of BRF meshes...

In  M&B, a mesh is composed of

- an array (a set, a group, a bunch) of triangles [first number]
- an array of vertices [second number]
- an array of XYZ positions  [third number]

But, wait, aren't the last two the same thing?
No. A vertex has normals and uv text coords, but no XYZ coordiantes. Instead, it has an index to a position, and the position has XYZ coords.
Why so? because that way two "vertices" which are in the same position but have different texture coords or normals
(this is called a seam), they can point at the same "position", and the actual XYZ coordinates are not repeated for the second vertex.
So the mapping between vertices and positions is not 1:1 and there can be more vertices than positions.

Summary:
- a face has only three indices, to three different vertices
- a vertex has: u,v texture coords, normals and an index to a position
- a position has XYZ coordintes, and rigigng (weitght and bone indices, for up to 4 bones).

But mesh formats (e.g. obj) are not like that. They have only faces and vertices. Each vertex has X,Y,Z coords inside it, directly.
So, two vertices in a seam (i.e. same position, different uv coords) they repeat their coordiantes, each has its own copy of XYZ.
This is commonly called an indexed mesh.
(SMD files has even less: they have only triangles: normals, u,v coords, rigging etc is repeated three times for the three vertices
of each face.)

Therefore, after loading, there is the opportunity to save space/resources by merging together positions that are identical but that were separated in the original (obj), and even vertices (in SMD files)... This is what the "unify" option does. If you also ignore the original normals, by recomputing them, you can unify more veritces because less vertices will be distinguished on the basis that they originally had a different normals (like in the flat shaded giant above). This is what the "unify and recompute normals" option does.

Thanks for asking. I now see that the default setting should be to "unify" meshes after import. The only reason not to unify is to keep vertex order unaltered, to merge frames in an animation (in the future).

(I saved during edits because this browser crashes a lot on me)

Two vertices will be merged if they are totally identical: same u,v, coords, same normal, and they refer to the same "position" (so they have same XYZ coords and same rigging).
Two positions will be merged if they have the same XYZ coordiantes, and the same rigging.
 
Back
Top Bottom