Editing Modding:Creating and Exporting Meshes in Blender

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
{{PageSeo
 
|title=Modding Resources
[[File:ScreenshotHowToImportIt.webp|thumb|This should show up in your File> Import menu if you have the addon installed correctly.]]
|description=This page is a hub for everything related to Modding Baldur's Gate 3. Check out the following guides to learn how to mod BG3.
|image=Modding_resources.webp
}}<div column-width: "60em2;>{{Modding box}}{{Modding sidebar}}[[File:ScreenshotHowToImportIt.webp|thumb|This should show up in your File> Import menu if you have the addon installed correctly.|306x306px]]
In this tutorial we will assume you are generally knowledgable about how to use 3d software, so this will focus on things specific to Baldur’s Gate 3 exporter made by Norbyte. Remember, there are many general youtube tutorials about how to weight paint and edit meshes in Blender.
In this tutorial we will assume you are generally knowledgable about how to use 3d software, so this will focus on things specific to Baldur’s Gate 3 exporter made by Norbyte. Remember, there are many general youtube tutorials about how to weight paint and edit meshes in Blender.
== BG3 Tutorials and Resources ==
Be sure to watch [https://www.youtube.com/watch?v=IbivHL2lPrc&list=PLG6GyipNkD2ptAp16VXs8BiTNEaMlgKhO&index=1 this video tutorial series] by Druu using the BG3 Blender plugin and follow along. It is older but still very relevant and helpful.


==Setup==
==Setup==
Line 14: Line 8:
Here we are using Modder's Multitool, Blender 3.6, and [https://github.com/Norbyte/dos2de_collada_exporter Norbyte’s Blender installer.] Until the update specifically says it has been updated to work with Blender 4.0, we recommend sticking with Blender 3.6 currently.
Here we are using Modder's Multitool, Blender 3.6, and [https://github.com/Norbyte/dos2de_collada_exporter Norbyte’s Blender installer.] Until the update specifically says it has been updated to work with Blender 4.0, we recommend sticking with Blender 3.6 currently.


Make sure you install it correctly- [https://www.youtube.com/watch?v=yQSqRF7dLB8 this video] should give you some example of how to install it.
Make sure you install it correctly- [https://www.youtube.com/watch?v=yQSqRF7dLB8 this video is quite out of date] but should give you some example of how to install it.


You should also install [Https://www.nexusmods.com/baldursgate3/mods/346 Padme’s Addon, ‘Create LODs’]. You may also find use of the 'Reset Transforms' tools as they are helpful when weight painting a model.
You should also install [Https://www.nexusmods.com/baldursgate3/mods/346 Padme’s Addon, ‘Create LODs’]. You may also find use of the 'Reset Transforms' tools as they are helpful when weight painting a model.


==Extracting a model to work with==
==Extracting a model to work with==
[[File:NewBodyBlenderScreenshotImported.webp|thumb|Imported meshes.|187x187px]]Now open your modder’s multitool. Click ‘Search Index’. Filter by .GR2. Search something like HUM_F_ARM_ and browse the in game meshes available to regular size humanlike females.
[[File:NewBodyBlenderScreenshotImported.webp|thumb|Imported meshes.]]Now open your modder’s multitool. Click ‘Search Index’. Filter by .GR2. Search something like HUM_F_ARM_ and browse the in game meshes available to regular size humanlike females. You may also wish to consult this table- [https://docs.google.com/spreadsheets/d/16uyC9UIJUmg1ciwsFfjdhsAbJAz320g2ei65BUGrnZg/edit#gid=1726617676 Clothing and Armor models by Saku]. (This lists HUM F only but most outfits fit male and other races as well)


You should at least extract [[Modding:Body Models|HUM_F_NKD_Body_A]] (or whatever nude you are basing your outfit on) to fit your new outfit around.
You should at least extract HUM_F_NKD_Body_A (or whatever nude you are basing your outfit on) to fit your new outfit around.


When you have found a model to your liking, click the extract file/open folder. You should find the mesh in .GR2 and .dae form on your computer. Use the .dae- the Blender importer likes .dae format a lot more than it likes .gr2. [[File:MeshImportsWithLODSS.webp|thumb|A mesh importing. It has only 1 Lod.]]'''You generally cannot import a modded-in mesh without the plugin crashing Blender.''' Hopefully you are sensible and you save your own work often and can re-export it from there, and have obtained permission to edit all the modded items you want to import anyway.
When you have found a t-posing model to your liking. Click the extract file/open folder. You should find the mesh in .GR2 and .dae form on your computer. Use the .dae- the Blender importer likes .dae format a lot more than it likes .gr2. [[File:MeshImportsWithLODSS.webp|thumb|A mesh importing. It has only 1 Lod.]]'''You generally cannot import a modded-in mesh without the plugin crashing Blender.''' Hopefully are sensible and you save your own work often and can re-export it from there, and have obtained permission to edit all the modded items you want to import anyway.


==Importing==
==Importing==
It will be a fairly standard rig with an Armature modifier (see Modifier tab).
It will be a fairly standard rig with an Armature modifier (see Modifier tab).Your armatures will import in at 90 degrees. This will cause it to export flat to the floor and follow a naked character around like a weird windsock, so you need to fix it. '''[Object Mode] Object > Apply> All Transforms''' on the armature, until the coordinates for its location all read '''0, 0, 0'''. You may need to do the same thing on the mesh as well.
 
[[File:UrMeshImported90.webp|thumb|Your mesh will likely import this way- note 90 degree angle.]]
Your armatures will import in at 90 degrees. This will cause it to export flat to the floor and follow a naked character around like a weird sad windsock, so you need to fix it.  
 
'''[Object Mode] Object > Apply> All Transforms''' on the armature, until the coordinates for its location all read '''0, 0, 0'''. You may need to do the same thing on the meshes as well.
[[File:UrMeshImported90.webp|thumb|Your mesh will likely import this way- note 90 degree angle.|276x276px]]
The mesh will import in with 1 or more LODS. These are level of detail meshes, intended to be viewed at a distance so they are lower poly. You only need the best quality one as we are making new LODs later, so delete anything that has LOD in the name.
The mesh will import in with 1 or more LODS. These are level of detail meshes, intended to be viewed at a distance so they are lower poly. You only need the best quality one as we are making new LODs later, so delete anything that has LOD in the name.


Line 39: Line 29:
If you wish to combine two meshes for whatever reason, remember that each mesh will have its own name for the UV map and colour maps. You need to rename the UV maps and Colour maps to be the same before you combine them, or one will be absorbed into the other.
If you wish to combine two meshes for whatever reason, remember that each mesh will have its own name for the UV map and colour maps. You need to rename the UV maps and Colour maps to be the same before you combine them, or one will be absorbed into the other.


The UV map may seem bare when you tab into the UV display, but BG3 meshes have an odd habit of not being on the actual UV square itself, as the UV tiles. So you may need to scroll out quite far to see the full UV. You can drag it back ('''Snap to Vertex''' can be useful with this) or keep it there, it usually does not matter.
The UV map may seem bare when you tab into the UV slide, but BG3 meshes have an odd habit of not being on the actual UV square itself, as the UV tiles. So you may need to scroll out quite far to see the full UV. You can drag it back ('''Snap to Vertex''' can be useful with this) or keep it there, it usually does not matter.


[[File:Screenshot Uv and colour map imports.webp|thumb|Your UV map and Colour maps, found in Object Data tab.|227x227px]]Depending on what type of mesh you imported, it will not have all the bones- circlets for example may only import in with the head bone.  
[[File:Screenshot Uv and colour map imports.webp|thumb|Your UV map and Colour maps, found in Object Data tab.]]Depending on what type of mesh you imported, it will not have all the bones- circlets for example may only import in with the head bone.  
If making a new full body mesh, it is generally a good idea to parent your mesh to a naked body, which does have all the bones, as this can avoid weighting issues.
If making a new full body mesh, it is generally a good idea to parent your mesh to a naked body, which does have all the bones, as this can avoid weighting issues.


Remember that genitals are attached later via lsx code and aren't a part of the body mesh.
Remember that genitals are attached later via lsx code and aren't a part of the body mesh.
==Vertex Paint==
==Vertex Paint==
[[File:BlenderVertexPaintUnderwearExample.webp|thumb|This underwear has its green vertex paint, which tells it to vanish when a top is equipped.|171x171px]]
Tab into '''Vertex Paint''' mode to look at the naked body.   
Tab into '''Vertex Paint''' mode to look at the clothes and (for reference) the naked body.   


The game’s armour system works by vertex paint. It uses this, in combination with the .lsx code, to tell it what to hide and what to show. For example, an armour mesh may unload the torso as it will not be shown. The bottom half of a pant leg may not show when boots are equipped. Genitals have their own vertex paint and only load in when nothing with the 'hide genitals' tag is equipped. You can use existing meshes as a reference for this.   
The game’s armour system works by vertex paint. It uses this, in combination with the .lsx code, to tell it what to hide and what to show. For example, an armour mesh may unload the torso as it will not be shown. The bottom half of a pant leg may not show when boots are equipped. You can use existing meshes as a reference for this.   
 
[[File:BlenderVertexPaintUnderwearExample.webp|thumb|This underwear has its green vertex paint, which tells it to vanish when a top is equipped.]]
[[Modding:VertexColorMaskSlots|Check here for a reference and Hex codes for the vertex paint including physics colours.]]  
[[Modding:VertexColorMaskSlots|Check here for a resource and Hex codes for the vertex paint.]]  


Keeping the HUM_F_NKD_Body_A in the scene is useful as reference here. For example, if you set an upper arm to be hidden for some gloves, you may wish to fit it around these seams to ensure there is no gap in the body showing.  
Keeping the HUM_F_NKD_Body_A in the scene is useful as reference here. For example, if you set an upper arm to be hidden for some gloves, you may wish to fit it around these seams to ensure there is no gap in the body showing.  
Line 62: Line 51:


If you intend to use part of an underwear mesh on an outerwear outfit, make sure you paint it black in Vertex Paint or it will hide when it’s not supposed to.  
If you intend to use part of an underwear mesh on an outerwear outfit, make sure you paint it black in Vertex Paint or it will hide when it’s not supposed to.  
[[File:How2ViewVertyPaint.webp|thumb|Blender Attributes: How to view Vertex Paint in Object Mode|307x307px]]
[[File:How2ViewVertyPaint.webp|thumb|How to view Vertex Paint in Object Mode]]


== How to Vertex Paint Sleeves and Pant Legs ==
== How to Vertex Paint Sleeves and Pant Legs ==
If you handpaint vertex paint on your own meshes, the mesh will often glitch. You may need to use this method to make it work.
If you handpaint vertex paint on your own meshes, the mesh will often glitch. You may need to use this method to make it work.




Line 73: Line 61:
Select the vertices you want painted.
Select the vertices you want painted.


Shift + D to copy the vertices (right click so they stay in place)
shift + D to copy the vertices (right click so they stay in place)


Go into Vertex color and click the little icon on top that makes sure you only paint on selected vertices.  
Go into Vertex color and click the little icon on top that makes sure you only paint on selected vertices.  


Fill vertex color. (You can use Shift+K to bucket fill vertex paints also)
Fill vertex color.
 


Remember also you need to have a VertCut material set up in your LSX for Vertcut to take effect.
Remember also you need to have a VertCut material set up in your LSX for Vertcut to take effect.


==Fixing meshes that import in wrong==
==Fixing meshes that import in wrong==
[[File:BlenderTutAlfiraBustedNormals.webp|thumb|203x203px|Fixing Meshes that import in wrong: Sometimes the normals of skirts import this way- unusable in game.]]
[https://www.youtube.com/watch?v=NCDGhz3RSr8 See this video] for how to fix meshes that import in with messed up normals like a blue/red checkerboard, and export looking like see through checkerboards. Sometimes meshes will import in stuck together, usually on skirt meshes. This is because the verts were too close together and the importer made a hiccup. You can also fix with '''[Edit Mode] Mesh> Clean Up> Merge By Distance''', and then put a solidify modifier at 00.1 thickness.
Sometimes meshes will import in with broken shading and stuck together, usually on skirt meshes. This is because the verts were too close together and the importer couldn't interpret it. This is often an issue with the normals as well.
==Physics==
 
Physics are set with red vertex paint. Hot pink vertex paint counterbalances the physics. You may need to delete the cloth mesh your mesh imported with, as it can cause to export badly.
[https://www.youtube.com/watch?v=NCDGhz3RSr8 See this video] for how to fix meshes that import in with messed up normals and export looking like see through checkerboards.
 
You can also fix with '''[Edit Mode] Mesh> Clean Up> Merge By Distance''', and then put a solidify modifier at 00.1 thickness. Recalculate Normals> Average Face Area may also help.


Alternately, select all, alt+n to average face area. If any blue lines on the edges appear, select edges, then 'clear sharp' and alt+n average face areas again.
[[File:How2ViewFaceorientationoverlay.webp|thumb|291x291px|How to view face orientation overlay on Blender. Blue is outside, red is inside. Red will be invisible in-game, unless you set up a 2 sided shader in your LSX code later.]]
==Physics==
[https://www.nexusmods.com/baldursgate3/articles/311 Here is a tutorial about how to add physics to your mesh by ReallyLazyIcarus.]
[https://www.nexusmods.com/baldursgate3/articles/311 Here is a tutorial about how to add physics to your mesh by ReallyLazyIcarus.]


Unfortunately physics are not quite at game quality yet at this stage.
Some people have had success pasting the code from in game meshes into their code, specifically clothbuffer values, which caused the physics to be less flappy. Which is worth a try if you have a lot of patience and experience with coding.  
 
Physics are set with red vertex paint. Hot pink and blue vertex paint counterbalances the physics.
 
If a mesh is 100% weighted to a single bone, adding physics will cause it to crash the game. If you are making a helmet item and therefore need it to be entirely static, weight some of it to the piercing bones as they also do not move.
 
A mesh cannot be entirely vertex painted red or it will bounce around, it needs some black vertex paint left to keep it in place.
 
If your mesh is creasing up at the back, you may want to lower the vertex paint to be lower down.
 
A cloth mesh (Generally named something like HUM_F_CLT_Daisy_Dress_A_Cloth_Mesh and will import in) is the collider mesh, which stops it clipping through things. Sadly you may need to delete it as it can cause your mesh to be exported with errors.
 
Some people have had success pasting the code from in game meshes into their lsx mesh code, specifically clothbuffer values, which caused the physics to be less flappy and enabled the collider mesh to be exported without issues. Which is worth a try if you have a lot of patience and experience with coding. [https://docs.google.com/document/d/1nb_B2uz8Xlakhoa7XNf4IRU8mMisGPZyQEkydlZQdD0/edit?usp=sharing A tutorial can be found for this here.]
[[File:ScreenyExampleOfPhysicsMesh.webp|thumb|134x134px|Example of red vertex paint for Physics. (Daisy Dress Mesh)]]
Some people have also experimented with not exporting the mesh and setting non-skirt parts of the original mesh to use an invisible material, then combining it with their own torso in a roottemplate.


If you learn anything new, add it here!
If you learn anything new, add it here!


==LODs and Load Order==
==Lods and Load Order==
[https://www.youtube.com/watch?v=5TpdCBxYO1Q Here is a video of Padme’s addons being used.]
[https://www.youtube.com/watch?v=5TpdCBxYO1Q Here is a video of Padme’s addons being used.]


LODs are a way of improving performance on weaker computers by using a lower-quality version of the mesh at farther distances.
Using Padme’s addon tool, click the button to generate LOD and you will have your nice set of LODs. You may need to edit the LOD0 it’s a new mesh, as it won't know what settings a should have.
 
Using Padme’s addon tool, click the button to generate LOD and you will have your nice new set of LODs. You may need to edit the LOD0 it’s a new mesh, as it won't know what settings a BG3 mesh should have.
[[File:Screenshot LOD Distance level Explained.webp|thumb|LOD order in BG3 settings. You can find this in your Object/Object Properties tab.]]
[[File:Screenshot LOD Distance level Explained.webp|thumb|LOD order in BG3 settings. You can find this in your Object/Object Properties tab.]]


'''-LOD Level''' is what level of LOD it is. LOD0 is the best quality, cutscene one. Meshes generally have no more than 4-5 LODS, usually depending on how 'common' an asset it is. (A common peasant shirt will have many LODS, while an armour intended only for the player or important NPC may have only 1 LOD.)
'''-LOD Level''' is what level of LOD it is. Meshes generally have no more than 4-5 LODS, usually depending on how 'common' an asset it is. (A common peasant shirt will have many LODS while an armour intended only for the player may have only 1 LOD.)


'''-Lod Distance''' is the distance from which your mesh swaps to the next LOD. For this reason, your highest quality mesh should probably be something like 9-15 metres, your middle ones 15-20, while your last LOD always needs to be set to 0. Or it will vanish from a distance. There are certain cutscenes in Act 3 and elsewhere where your player character is seen from a very long distance, so this is important!
'''-Lod Distance''' is the distance from which your mesh swaps to the next LOD. For this reason, your highest quality mesh should probably be something like 9-15 metres, your middle ones 15-20, whatever else, while your last LOD always needs to be set to 0. If you don’t particularly care about it performing well on bad computers, you can have no LOD and just set your high quality mesh to have a Lod distance of 0.


'''-Export order.''' Generally all your LOD0 meshes go first, then your LOD1, LOD2, LOD3, assuming you have multiple LOD0 meshes. Look at imported game meshes for reference. If there is not a consistent 1, 2, 3, 4, export order, the mesh will refuse to export.  
'''-Export order.''' Generally all your LOD0 meshes go first, then your LOD1, LOD2, LOD3, assuming you have multiple LOD0 meshes. Look at imported game meshes for reference. If there is not a consistent 1, 2, 3, 4, export order, the mesh will refuse to export.  


If you get the export order wrong in the code, some meshes may end up with the wrong material assigned to them.
If you get this wrong in the code some meshes may end up with the wrong material assigned to them, but no other consequences.
 
=== '''Using No LODs''' ===
If you don’t particularly care about it performing well on bad computers, you can have no LOD meshes and just set your high quality mesh to have a LOD distance of 0.
 
== Weight Painting ==
If you hand edited the weight paints and now your outfit is squiggling, you may need to limit the total amount of vertices affected by the weight.
 
''Weight Painting Mode> Weights > Limit Total''
 
Usually the default '4' will work, but you may wish to try '2' if it persists.


==Exporting==
==Exporting==
Remember to set all of your mesh to the same material in Blender, or delete all materials assigned to the mesh before exporting, or some parts of the outfit may not show up in the game.
Remember to set all of your mesh to the same material in Blender, or ideally delete all materials assigned to the mesh before exporting, or some parts of the outfit may not show up in the game.


Default export settings are fine to use. See here for an example.
Default export settings are fine to use.


Remember to save as '''.GR2''' not .gr2 and use that in all your code, the game is very concerned with capitalisation.
Remember to save as '''.GR2''' and use that in all your code, the game is very concerned with capitalisation.


Your mesh will export x-mirrored. Meshes import in from the multitool x-mirrored, so they are the right way around now!
Your mesh will export x-mirrored. Meshes import in from the multitool x-mirrored, so they are the right way around now!


If you parented your mesh to the nude body armature, remember to delete the nude body before exporting it!
If you parented your mesh to the nude body armature, remember to delete the nude body!
See here for a [[Modding:Blender Export Settings|list of past and future Blender export settings]].
[[File:BlenderTtut3.6ExportSettings.webp|thumb|Default export settings for Blender 3.6]]
[[File:BlenderTtut3.6ExportSettings.webp|thumb|Default export settings for Blender 3.6|445x445px]]


==Testing in Game==
==Testing in Game==
Line 159: Line 115:
It is not only possible but very recommended to hotload meshes, it enables you to fix them in action. [[Modding:Hotloading|See here for how.]]
It is not only possible but very recommended to hotload meshes, it enables you to fix them in action. [[Modding:Hotloading|See here for how.]]


Although it has to have the same mesh order as the thing you are replacing.
== Tutorials by Others ==
 
Be sure to watch [https://www.youtube.com/watch?v=IbivHL2lPrc&list=PLG6GyipNkD2ptAp16VXs8BiTNEaMlgKhO&index=1 this video series] by Druu using the Blender plugin and follow along. It is older but still very relevant and helpful.
== General Blender tutorials ==
If you don't understand how to use Blender, start
[[Category:Modding guides]]
with [https://www.youtube.com/@blenderguru Donut tutorial by BlenderGuru].
 
You may also find [https://www.youtube.com/@TheRoyalSkies/playlists TheRoyalSkies short videos on Blender] to be helpful.
 
== Modders Resources ==
[https://www.nexusmods.com/baldursgate3/mods/2973 High Heel Feet by LazyIcarus]
 
[https://www.nexusmods.com/baldursgate3/mods/3683 Outfit Builder by LazyIcarus]- uses shapekeys to edit a mesh to a different body type- useful if you want to make an outfit for different body types.
 
[https://www.nexusmods.com/baldursgate3/mods/4310 Volno texture toolbox]- for previewing textures on the mesh.
 
{{Modding navbox}}
[[Category:Armor modding]]
Please note that all contributions to Baldur's Gate 3 Wiki are considered to be released under the CC BY-NC-SA license, except when noted otherwise (see BG3Wiki:Copyrights for details). If you do not want your writing to be edited and redistributed at will, do not submit it here. Per our Content Rules, you are promising that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)