Guide on how to create Dota 2 assets with Blender

polycounter lvl 5
Offline / Send Message
Pinned
Linko polycounter lvl 5
Lastest update: 18/09/18
Note 1: Part for ward, courier and particle effects will come very soon.
Note 2: All those guides are the post I have written on Blender Stack Exchange, if you like don't forget to leave a like there: https://blender.stackexchange.com/users/23134/danyl-bekhoucha?tab=answers
Note 3: this guide will use Blender only.


Resources:

You can download the Orb Brushes for Blender for sculpting the stylized cracks: https://www.blendswap.com/blends/view/86419
An huge collection of stylized alphas that you can use in any sculpting software: https://gumroad.com/l/StlzdJR

The two most used ZBrush matcap converted for Blender 2.8 (they are free to share), put them in
\2.80\datafiles\studiolights\matcap: https://drive.google.com/file/d/1jTjYaXJDu3s9QZ1JvYvzHM2SpmiM0tYa/view?usp=sharing

=== COMPILING TO DOTA =================================================================================

Installing the tool to export to Dota

To export your model into Dota you will need to export it in .DMX with the addon "Blender Source Tool": http://steamreview.org/BlenderSourceTools/ (don't unzip it)

To install the add-on go in File > User Preferences... in the Add-ons tab click "Install Add-on from File..." and select the .zip. Type "Source" in the search bar and make sure it is enabled.

enter image description here

Importing and editing a game character from Dota

You need to import a character, your model won't compile if it's not attached to the armature of it. You can find the heroes of the game here: http://www.dota2.com/workshop/requirements

Import the SMD files with the add-on if there is only an FBX, they often have a bug with the scale of the bones, if this happens read my post bellow on how to fix the.

To import your SMD files you can use shift and left click to highlight the files and import them all at once. Each SMD have the armature but it will be imported once.

The model will be laid down horizontally and be very big in the viewport, you can orient it correctly and apply the rotation but you will need to keep the same scale when exporting. You can scale the bones to 0.01 to model your assets.

In this example I am adding the head of Suzanne on top of the head of the heroe Alchemist.

To attach it to the armature, select the model you have made first then the armature, then press Ctrl+p and select "With Empty Groups".

To bind the model to a bone you need to go in the property menu, in the Data tab with a triangle as an icon, in the Vertex Group menu. You will see every bones listed, to order them alphabetically click on the black arrow pointing downward then click "Sort by Name".

enter image description here

In edit mode select the vertices you want to bind to a bone, I select the entire Suzanne head, stay in edit mode and in the menu I select the head bone and click Assign with a Weight of 1 (1 = fully connected).

enter image description here

Now to test it I select the head bone in Pose mode and move it, the model now moves with it, if not check if it is connected to the correct Vertex Group.

Exporting your model

In the property menu go in the Scene tab, it's the third tab from the left. Scroll down to Source Engine Export. Set the path where to export it. For the format make sure it is DMX. Change the DMX Version to the highest numbers: Binary 9 and Model 22.

Note: you can't name your DMX, you must name your asset in the "n" menu. The file will take the name of the active selection.

enter image description here

You can also create a basic normal map to test your model, by creating an image filled with the color RG: 0.502 B: 1.

Compiling and testing in game

To test your asset in Dota 2, right click on the Dota 2 game on Steam and go in Properties. Click on the DLC tab and check Dota 2 Workshop Tools DLC, steam will automatically download it.

When you will launch Dota, a pop-up window will ask you if you want to launch the game or the workshop tool (if it doesn't appear it means the download isn't finished), select the second.

enter image description here

Click on Create New Item, then Hero Item..., select your hero and slot that your asset will replace, then click Select.

Name your asset you can't use uppercase and spaces.

Import the normal map. For the color map (diffuse map) you can use a basic color texture to test your model and silhouette.

For now set the Specular Intensity Mask with RGB at 0.1 because on some heroes the asset is too shiny and a Rim Intensity Mask at RGB 0.2.

enter image description here

If you get an error during the compilation here are the things to check:

  • Your asset must be attached to the armature even if there is no bone weight.
  • Your asset must have UVs.
  • Your asset must have a material (Cycles or Blender Render).
  • If the asset isn't visible make sure you have reseted the scale of the armature with Alt+s.
  • The color or normal map are missing.
  • The texture resolution and polycount are too high, but this is just to publish your asset, it will compile without the correct values you can check the values in the hero download page.
  • You haven't export in Binary 9 and Model 22 version.

enter image description here

You can play the different animations, by default it's on idle and the Preview in game will launch the game. Do a test in the Dota map, remember that most details are seen from the top view, remove unnecessary details.

Textures

For the textures use a suffix, for example alchemist_head_color.tga. Use the TGA format and the texture resolution of the hero requirement page. Here are all the suffixes in the same order than the Workshop settings:

enter image description here

  • _transparency.tga
  • _normal.tga (base RG: 0.502 B: 1)

enter image description here

  • _detailMask.tga
  • _fresnelWarp.tga
  • _metalnessMask.tga (RGB: 0 = non metallic, RGB: 0.6 = metallic)

0:

enter image description here

0.6:

enter image description here

  • _selfIllumMask.tga
  • _specularMask.tga (RGB: 0.22)

enter image description here

  • _rimMask.tga (RGB: 0.2 = non metallic, RGB: 0.6 = metallic)

0.2:

enter image description here

0.6:

enter image description here

  • _tintByBaseMask.tga
  • _specularExponent.tga

Valve has made a post with advice on texturing: https://support.steampowered.com/kb/9334-YDXV-8590/dota-2-workshop-character-art-guide More informations about the different maps: https://support.steampowered.com/kb/3081-QUXN-6209/dota-2-workshop-item-shader-masks

Fixing the bones (if an FBX is used)

When the SMD files aren't available the only option is the FBX. In this format the bones aren't oriented and scaled correctly, but we can export a .DMX from Source Filmmaker. In Blender import the .FBX an delete the armature, the character will lay down, orient it correctly, you can apply the rotation. If you change his scale don't apply it.

To download Source Filmmaker go in your Library of games and change the Games menu at the top to Software, you will see Source Filmmaker, do not launch it from there because you won't have access to the Dota assets.

enter image description here

Launch the Dota Workshop tools and click at the bottom on "Launch Custom Game Tools".

enter image description here

A window will open called Asset Browser, click on the Source Filmmaker icon at the top it will launch it.

enter image description here

Create a new session, name it whatever you want.

Open the Animation Set Editor tab at the top left and click on the "+" icon then click on "Create Animation Set For New Character".

enter image description here

Then choose your heroe, it will appear in the viewport.

Now do a right click on the heroe name followed by a 1, it is the first line and select Export > Animation. This will export your model in his default pose with his armature, you can name the file heroename_rig_fix for example.

enter image description here

Import the asset it's a .dmx. Go in Pose Mode, it's important that you use this mode and not the Object Mode. So in Pose Mode select every bones with "a" then press Alt + g and Alt + s, the armature will be horizontal and on the side.

In Object Mode orient the rigging to match the heroe then apply the rotation.

Select every meshes of the heroe and in the modifier tab assign the armature, if the mesh doesn't move it means the armature is oriented corectly. In Pose Mode the character should move with the rigging.

enter image description here

Create a courrier

Courrier requirement:

  • Two courriers one on the ground and the other flying each with a LoD1 and eventually a LoD0. You can use the suffix _model for the one on the ground and _wind for the other
  • LoD0 (optional, used for the portrait): 3500 triangles
  • LoD1 (in game): 3000 triangles
  • Texture resolution: 512x512
  • Animations: Spawn (ground only), Idle, Run, Die
  • Special bones: attach_hitloc (where the attacks land), left eye, right eye

Create a ward

The observer ward and the sentry ward share the same mesh and UVs, the only difference is there texture. What differentiate them the most is the color of the eyeball, this is why it must be big and visible from above.

Ward requirements:

  • LoD0 (optional, used for the portrait): 2000 triangles
  • LoD1 (in game): 1500 triangles
  • Texture resolution: 256x256
  • Animations: idle, idle_alt, run, spawn, turns, wings_die, wings_idle, wings_run, wings_run_alt

Particle effects

More informations: How to create dota 2 assets ? (Steam Workshop)

The following heroes require effects for their weapon(s): Abaddon, Anti-Mage, Bounty Hunter, Doom, Ember Spirit, Juggernaut, Kunkka, Phantom Assassin, and Skywrath Mage.

You must create a contour of you mesh with an higher vertex count than your weapon for an higher precision. Export the DMX separately, use the same name than the weapon and add the suffix "_fx".


=== STYLIZED MODELLING TIPS ======================================================================================


Stylized hair creation

The curves allow to create strands of hairs that you can quickly place and shape. You will need three things, the hair strand direction, a taper curve for the width and a taper for the shape to extrude.

Hair strand

Add a Curve > Bezier, in edit mode move it of 1 unit to the right so the root of the hair strand is on the origin. In the side view from the right (numpad 3) rotate the hairs in -90 degrees in edit mode. Scale the curve in object mode to 0.15, then apply the scale. For the resolution Preview U to 20. You can name it hair so you can select them more easily in the outliner.

Taper

The taper determine how wide the hair strand is. The space between the origin and the curve allow to adjust it. Adda curve, the default shapes can be used for the taper. You can scale it down to 0.15, it has no effect on the wideness if you do not apply the scale. Name it "hair taper".

Bevel

The bevel is the shape that is extruded along the curve. To create it add a Curve > Circle change the Handle Type to Vector with the V shortcut. Scale it to 0.12 in edit mode then in Y by 0.4. Then set the vector type to automatic. Name it "hair bevel".

Here is the result (base mesh: https://cubebrush.co/marketplace?q=anime%20base%20mesh&product_id=1qqfhg ):

enter image description here

Stylized cracks

=== TEXTURING ==========================================================================

You can download this node setup to generate a base texture: https://drive.google.com/file/d/1PmAQoN-lYD-xmV9GxuOCPhlqbwChjsjU/view?usp=sharing
The color ramp I have used is not needed. The blood color is R: 0.7 GB: 0.1. It uses a pointiness node (a per vertex curvature) so the quality depends on the vertex density of an area.



If you want to generate a pixel curvature map based on the normal map follow this node setup. You can download it here: https://drive.google.com/file/d/1bixkxs6cSes-J9GVwDeIP7pW2OnGNhYd/view?usp=sharing

enter image description here

Per pixel curvature smooth node setup, the Linear nodes of the image above must be replaced by Mix nodes (keep the value at 0.5).

enter image description here

For fake hand painting node setup, as you can see the ColorRamp is set to HSV to generate an analogous color transition. The base grayscale is plugged on a Value node so you don't have to worry about the values of your color, the base value will stay the same.

enter image description here














Replies

Sign In or Register to comment.