Assimp: Difference between revisions
Carrepairer (talk | contribs) m Updated blender workflow tutorial |
|||
| (8 intermediate revisions by 3 users not shown) | |||
| Line 2: | Line 2: | ||
=Assimp= | =Assimp= | ||
Open Asset Import Library (short name: Assimp) is used in Spring for loading a number of model formats | Open Asset Import Library (short name: Assimp) is used in Spring for loading a number of common and well supported model formats (.3ds, .dae, .lwo, .blend - currently .obj is parsed by a different code path). | ||
What Spring supports in its Assimp renderer: | What Spring supports in its Assimp renderer: | ||
| Line 10: | Line 10: | ||
* loading of the texture filepaths from the model (don't have to be in <code>unittextures/</code>) | * loading of the texture filepaths from the model (don't have to be in <code>unittextures/</code>) | ||
* when texture filepaths aren't included in the model, it searches for <code>%modelfilename%.*</code> & <code>%modelfilename%2.*</code> in <code>unittextures/</code> | * when texture filepaths aren't included in the model, it searches for <code>%modelfilename%.*</code> & <code>%modelfilename%2.*</code> in <code>unittextures/</code> | ||
* special modelpieces `SpringHeight` & `SpringRadius` | * special modelpieces `SpringHeight` & `SpringRadius` {{removed|101.0}} | ||
* {{new|102.0}} auto-normalize normals and tangents for all AssImp-loaded models | |||
* {{new|95.0}} allow modellers to work around {{mantis|3552}} (differing axes conventions between software) by recognizing a number of new piece-table keys as follows | |||
For the root piece: {{removed|104.0}} | |||
* "xaxis" = float3, "yaxis" = float3, "zaxis" = float3 (determine global orientation of model) | |||
For all pieces: {{removed|104.0}} | |||
* "rotAxisSigns" = float3 (determines direction of script-applied rotations around each axis) | |||
* "rotAxisMap" = number (currently can only be 0=XYZ or 3=XZY, determines coordinate conversion) | |||
=Assimp Textures= | =Assimp Textures= | ||
See [[3DModels:Textures#Textures_-_Assimp_Model_Formats_.28DAE.2CMDL.2CMD3_and_others_except_OBJ.29 |3DModels:Textures (Assimp Section)]] | See [[3DModels:Textures#Textures_-_Assimp_Model_Formats_.28DAE.2CMDL.2CMD3_and_others_except_OBJ.29 |3DModels:Textures (Assimp Section)]] | ||
=Standard Workflow= | |||
The following Workflow is provided for a standard 3D Modeling package using the Z = forward, Y = upwards convention, like Maya, Modo or Lightwave. You can also use Blender to export models for ASSIMP, as covered in the next section. | |||
* [[3DModels:AssimpWorkflow]] | |||
* [[3DModels:AssimpMetadata]] | |||
=Blender Workflow Tutorial= | =Blender Workflow Tutorial= | ||
This is a stub containing a simple outline of a Blender workflow. | This is a stub containing a simple outline of a Blender workflow. | ||
# Open an existing Blender model or import a different format through the File menu (File > Import). | # Open an existing Blender model or import a different format through the File menu (File > Import). You can import s3o models - complete with materials - using the [https://github.com/sanguinariojoe/blender_s3o_import s3o import] plugin. | ||
# | # Compose your model by making a series of rigid pieces, and parenting them to one another (ctrl+P). These will be imported as `pieces` into Spring. | ||
# | # It is preferred to apply all scale transforms, because uneven transforms will not be tolerated by Spring. You can keep rotations, though. | ||
# Make sure you have a lamp in your scene while in this mode or your model will be dark. | # Blender is Z-up and Spring is Y-up. Spring will import Blender models as Z-up. If you want to fix that, add a root piece to your model, and rotate its children 90 degrees, such that their local Y-axis points up. | ||
# Make sure you have a lamp in your scene while in this mode or your model will be dark. You can delete it before export. | |||
# If you want to animate the model using the animation exporter [https://github.com/Anarchid/blender2lus addon] later, set the rotation mode for all your pieces to be Euler ZXY. | |||
# Applying texture: | # Applying texture: | ||
## In the UV/Image editor, click the image icon (Tooltip: Browse Image to be linked) to select your texture. If it's not there, click on Image > Open Image to browse for it. | ## In the UV/Image editor, click the image icon (Tooltip: Browse Image to be linked) to select your texture. If it's not there, click on Image > Open Image to browse for it. | ||
## In the 3D View, select (right-click) your object and hit Tab to enter Mesh Mode. | ## In the 3D View, select (right-click) your object and hit Tab to enter Mesh Mode. You can select multiple objects if you want to unwrap the entire model without going piece-by-piece. | ||
## Hit A to select all your faces. | ## Hit A to select all your faces. | ||
## In the 3D View, hit A to select all the faces there and select your image with the image icon. Assuming there's a UVMap, you should see your texture. | ## In the 3D View, hit A to select all the faces there and select your image with the image icon. Assuming there's a UVMap, you should see your texture. | ||
| Line 41: | Line 57: | ||
# Piece hierarchy: | # Piece hierarchy: | ||
## Select piece A, hold shift and select piece B. Hit Ctrl+P and it will make piece A a child of piece B. | ## Select piece A, hold shift and select piece B. Hit Ctrl+P and it will make piece A a child of piece B. | ||
# Setting piece origins: | # Setting piece origins: | ||
## Select a piece. | ## Select a piece. | ||
| Line 51: | Line 66: | ||
## Do this for all your pieces. | ## Do this for all your pieces. | ||
# Preparing for Spring (this may or may not apply depending on how assimp handles your model.): | # Preparing for Spring (this may or may not apply depending on how assimp handles your model.): | ||
## | ## Ensure that the scales for each object in your scene are uniform (that is, x, y, and z scales are equal to each other). A quick way to ensure that is select all (a) and apply scale (ctrl+a -> scale). | ||
# Save your model. | # Save your model. | ||
# Select all the pieces of your model, ignore the lamp. | # Select all the pieces of your model, ignore the lamp. | ||
| Line 62: | Line 73: | ||
# The dae file will be used as your object. | # The dae file will be used as your object. | ||
Don't hesitate to google for answers if you bump into questions with how to use Blender itself. It's a powerful piece of software with a lot of tutorials on how to use - the scope of this article is not teaching how to use Blender, but only how to use Blender for making Spring models. | |||
Latest revision as of 11:32, 6 May 2020
Development < Game Development < Assimp
Assimp
Open Asset Import Library (short name: Assimp) is used in Spring for loading a number of common and well supported model formats (.3ds, .dae, .lwo, .blend - currently .obj is parsed by a different code path).
What Spring supports in its Assimp renderer:
- extended metafile (
%modelfilename%.luanext to the modefile) - still uses tex1 & tex2 texture system of S3O (same shader as S3O)
- 2nd texcoord
- loading of the texture filepaths from the model (don't have to be in
unittextures/) - when texture filepaths aren't included in the model, it searches for
%modelfilename%.*&%modelfilename%2.*inunittextures/ - special modelpieces `SpringHeight` & `SpringRadius` Removed from version 101.0
- New in version 102.0 auto-normalize normals and tangents for all AssImp-loaded models
- New in version 95.0 allow modellers to work around #3552 (differing axes conventions between software) by recognizing a number of new piece-table keys as follows
For the root piece: Removed from version 104.0
- "xaxis" = float3, "yaxis" = float3, "zaxis" = float3 (determine global orientation of model)
For all pieces: Removed from version 104.0
- "rotAxisSigns" = float3 (determines direction of script-applied rotations around each axis)
- "rotAxisMap" = number (currently can only be 0=XYZ or 3=XZY, determines coordinate conversion)
Assimp Textures
See 3DModels:Textures (Assimp Section)
Standard Workflow
The following Workflow is provided for a standard 3D Modeling package using the Z = forward, Y = upwards convention, like Maya, Modo or Lightwave. You can also use Blender to export models for ASSIMP, as covered in the next section.
Blender Workflow Tutorial
This is a stub containing a simple outline of a Blender workflow.
- Open an existing Blender model or import a different format through the File menu (File > Import). You can import s3o models - complete with materials - using the s3o import plugin.
- Compose your model by making a series of rigid pieces, and parenting them to one another (ctrl+P). These will be imported as `pieces` into Spring.
- It is preferred to apply all scale transforms, because uneven transforms will not be tolerated by Spring. You can keep rotations, though.
- Blender is Z-up and Spring is Y-up. Spring will import Blender models as Z-up. If you want to fix that, add a root piece to your model, and rotate its children 90 degrees, such that their local Y-axis points up.
- Make sure you have a lamp in your scene while in this mode or your model will be dark. You can delete it before export.
- If you want to animate the model using the animation exporter addon later, set the rotation mode for all your pieces to be Euler ZXY.
- Applying texture:
- In the UV/Image editor, click the image icon (Tooltip: Browse Image to be linked) to select your texture. If it's not there, click on Image > Open Image to browse for it.
- In the 3D View, select (right-click) your object and hit Tab to enter Mesh Mode. You can select multiple objects if you want to unwrap the entire model without going piece-by-piece.
- Hit A to select all your faces.
- In the 3D View, hit A to select all the faces there and select your image with the image icon. Assuming there's a UVMap, you should see your texture.
- If you don't see any faces you'll need to add the UVMap to a new texture:
- In the Properties view click on Textures (checkerboard icon).
- Click on Add New Texture (plus icon).
- Select Type = Image or Movie.
- Under Image, click on the image icon and choose your image file.
- Under Mapping, select Coordinates = UV.
- Under Influence > Diffuse, check Color and make sure it's 1.00.
- To add a normalmap:
- Repeat steps 5.5.1 to 5.5.5.
- Under Image Sampling, check Normal Map.
- Under Influence > Geometry, check Normal. Make sure it.s 1.00.
- You'll need to do this for each piece.
- Piece hierarchy:
- Select piece A, hold shift and select piece B. Hit Ctrl+P and it will make piece A a child of piece B.
- Setting piece origins:
- Select a piece.
- Place the 3D cursor where you want the origin to be (left-click).
- Click on Object > Transform > Origin to 3D Cursor.
- You can now rotate your pieces:
- Click on the dropdown "Pivot Center for Rotation/Scaling" and select Individual Origins.
- Rotate.
- Do this for all your pieces.
- Preparing for Spring (this may or may not apply depending on how assimp handles your model.):
- Ensure that the scales for each object in your scene are uniform (that is, x, y, and z scales are equal to each other). A quick way to ensure that is select all (a) and apply scale (ctrl+a -> scale).
- Save your model.
- Select all the pieces of your model, ignore the lamp.
- Click on File > Export > Collada.
- Check "Export Only Selected" and export.
- The dae file will be used as your object.
Don't hesitate to google for answers if you bump into questions with how to use Blender itself. It's a powerful piece of software with a lot of tutorials on how to use - the scope of this article is not teaching how to use Blender, but only how to use Blender for making Spring models.