Blender Studio
  • Films
  • Projects
  • Training
  • Assets
  • Blog
  • Community
  • Join
  • BLENDER.ORG

    • Download

      Get the latest Blender, older versions, or experimental builds.

    • What's New

      Stay up-to-date with the new features in the latest Blender releases.

    LEARNING & RESOURCES

    • Blender Studio

      Access production assets and knowledge from the open movies.

    • Manual

      Documentation on the usage and features in Blender.

    DEVELOPMENT

    • Developers Blog

      Latest development updates, by Blender developers.

    • Documentation

      Guidelines, release notes and development docs.

    • Benchmark

      A platform to collect and share results of the Blender Benchmark.

    • Blender Conference

      The yearly event that brings the community together.

    DONATE

    • Development Fund

      Support core development with a monthly contribution.

    • One-time Donations

      Perform a single donation with more payment options available.

Training Highlights
Facial Rigging
Blender Fundamentals 4.5 LTS
3D Printing with Blender
Video Log #6: Promo video

Training types
Course Documentation Production Lesson Worskhop

Training categories
Animation Geometry Nodes Lighting Rendering Rigging Shading
Film Highlights
Singularity
2025
Wing It!
2023
Spring
2019
Hero
2018
Project Highlights
Impulse Purchase
Showcase
Project Storm
Showcase
DogWalk
Showcase
Project Gold
Showcase
Assets Highlights
Characters
Models & rigs
Assets
All production files
Libraries
Curated sets
  • DogWalk

Dogwalk Asset Creation Process

Discover the creation process of Dogwalk assets.
  • Article
  • 20 Jun 2025
  • 9 min read
Beau Gerbrands
Beau Gerbrands Author
Report Problem

This article goes into the artistic and technical process of creating assets for Dogwalk. Take a look at the Dogwalk content gallery for more behind the scenes images and videos.

Kitsu

Before starting to work on the assets we looked at some existing concept pieces to determine what kind we needed. Some of the initial assets are the pine trees, birch trees, bushes, boulders and some props. The difference between a prop and a library asset is the interaction between a character and an asset. A shovel, tennis ball and traffic cone are all props that have rigs and can be animated, while boulders and trees are re-usable library assets that are placed throughout the environment. On our production management tool, Kitsu, we add the assets to keep track of its status and communicate any feedback/paintovers.

As an example I'll use the pine tree which is a prominent and one of the first assets created for Dogwalk. The steps described here are mostly chronological but there are exceptions on a per asset basis.

Overview of the assets at the end of production.

This if one of the five pine trees.


Discussing reference & ideas

Aside from digital concepts, Vivien Lulkowski - Art Director - created real-life paper craft models that were essential in achieving the art-directed design/result, we used these references and talked about how the models were built. Especially the bushes needed several iterations to get the right volume and leaf assembly. Vivien also painted various textures that were scanned and processed digitally for easier/optimized/tiled mapping. Next is creating a preliminary model and start iterating.

The leaves of the bushes are slightly bent planes that are assembled to form a semi-sphere shape. On the left a reworked version and on the right an old one

paper craft pine tree created by Vivien.

Initial model

The first model had a simple dart shape as a base with plane cuts distributed along it. The pine cuts were created by placing the separate paper craft elements on the scanner plate and cutting the pieces out in Krita. This is a bit of a tedious process so we tried using different paper backgrounds in some cases to convert certain values to alpha. This wasn't perfect but worked quite well for very gently ripped pieces of paper.

This version only had individual pieces and not the assembled pine cuts later on.

Assembled pine cuts for the pine trees.

Using a darker piece of paper we managed to utilize the Color to Alpha feature in Krita.


Texture maps

Next is creating simple roughness and normal -maps based on the albedo, it won't be the most accurate but in our game we are hovering above the environment so there is more flexibility. After exporting, I used Image > Mesh Plane to import the texture maps with alpha already assigned, and cutting out the pieces by hand. By taking sections of the cuts and re-assembling them again in a different order we achieve more variations.

Textures for the pine cuts, in the end we used a smaller uniform normal texture to save memory and increase flexibility.


Scattering pine cuts

I wanted to create an easy and procedural way to create variation on the pine cuts. By adding a simple Geometry Nodes setup and vertex weights I can determine the way the individual strands of the cuts are "sticking out". To bend the assembled pieces around the base of the tree, a lattice is used for all of the pine cuts assets.

The tree trunks first existed as curves for a fast and flexible way of working.

Initially I tried a tileable pine cut texture and cut my own pine cut shapes, but this resulted in a bland generic look. The scanned pieces were not only hand painted but also have these nice imperfections where paper is ripped creating white edges. This sells the handmade paper craft look much better!

On the left a "generic" pine texture and on the right a handcrafted one by Vivien. The one on the right is made by hand, has more character due to imperfections and is cut to have the correct albedo information.

After creating a few pine cuts it is time to add them to the base of the tree. My first instinct was placing them as instances manually but I figured speed was more important so I resorted to Geometry Nodes to scatter the pine cuts. Eventually the procedural scattering was removed and manual placement is desired for specific art direction and optimization. For most objects during this project I liked adding the "Triangulate" modifier to see how the models would behave. This meant that the result in final geometry was exactly the same with the modifier applied during export. We also decided to add a "Weighted Normal" modifier to avoid baking normal maps but spending more rendering budget on support loops, even though a lot of detail in the final image is thanks to handpainted albedo maps.

Additional loops to get the most use out of the weighted normal modifier and triangulate modifier to avoid geometry differences when exporting.

Changes to the pine tree were applying the Geometry Nodes on the base trunk after which UV’s were reworked and topology optimized. The pine tree was now made up of different sections fitting into each other like a collapsible telescope. It also received more subtle surface imperfections. Another element we added later on were 'pine knotholes' to add more variation on the tree trunk.

This version has the pine leaves with pine cuts as well, which were eventually used for the pine alt trees.

Before exporting the asset it is important to add a collision shape so the characters don’t intersect. This was solved by usually adding simple shapes like spheres, pill shapes, cylinders and more. In this case a cylinder was added at the base with a named prefix “COL-” so that the addon understands it is a collision object in Godot.

Collision preset made by Simon Thommes to easily add and adjust collision shapes using Geometry Nodes.

In the game we have a leash that can collide with objects, but in order to collide with more control, Julien Kaspar - Game Director - came up with leash points that snaps the leash to those points when overlap is detected.

Function of the leash points on the snowman is the same for other objects

During production, we decided to create an “Asset Zoo” to inspect and compare all the assets together to see how they work. This was a separate .blend file which was also loaded in Godot for testing. To assist production we used Blender’s Asset Library that has become essential in our projects, especially since we did all of the set dressing in Blender.

The Asset Zoo was a nice way to compare the rest of the assets in this production.

Export to Godot

The "Asset Export" addon developed by Simon, is used to initialize (tag) collections for exporting. The export is pointing toward the Godot game directory and read when Godot is open. In this case, the asset is exported as a static asset, meaning with collision.

Edge wear Before actually exporting the asset we can add additional visual details through Color Attributes using "Wear". Simon created a shader setup that is translated to a Godot material, this makes it very easy to adjust parameters in Blender and are automatically updated in Godot. The shader contains a "Paper Wear" section to adjust any parameters to simulate breaks in the paper. We used this to blend assets with the snow better at ground level.

Assigning the "Wear" attribute that is built into the paper shader to add additional effects.


Paper shader

The material has various options to influence various alpha effects, backface color, and the standard channels like Base Color, Roughness, and normal. It also allows the use of a secondary UV2 channel for the normal map to increase detail using tileable textures.

Paper shader parameters with the most reused 256 x 256 normal map texture.

After setting everything we only want to export a single pine tree, so we hit “Export Single and the change is quickly propagated to Godot.

Inspect in Godot When the asset has been loaded in we do a visual inspection how it compares to Blender’s result. Since the pine_tree_001 is used in different sets we can open the game world (or in a test scene) and see if the collision and leash points work as expected.

Testing the collision and inspecting the tree.


Asset Iteration

At this point we would potentially iterate on the asset after receiving feedback. One of the things that unfortunately didn't work were Geometry Nodes instances with the pine cuts scattered on the base of the pine tree. This was solved later but in the meantime we used collection instances to circumvent this. Which wasn't a big issue because the pine trees, like most assets, needed a more art directed touch.

To add more life into the pine trees, we need to add vertex wind on the pine cuts, which is vertex paint influencing the vertex shader in Godot. This allows the pine cuts to sway and move in the wind a bit.

When the player stops moving, the camera moves closer to the characters, this is why the trees become transparent. As a small detail we decided to place a smaller inner tree trunk that doesn't fade out. This trunk has an alternative material that stays opaque with a ripped texture on the edge.

Leaves blowing in the wind by adding a vertex gradient from black to white.


Final optimizations

Any small topology and collision optimizations take place here before the final version is approved. For example:

  • For the Boulders, we needed to change the entire collision shape. We noticed the player getting stuck against the boulders without justifiable visual clarification
  • Pine cuts had too many loops which added detail the player wouldn't really perceive
  • The birch leaves have a flat texture transitioning to 3D geometry, this resulted in bad normals and we had to cut the flat sections to remove this visual glitch

Split elements to form the birch branch and avoid normal issues.


Thanks for reading!

Join to leave a comment.

Films Projects Training Blog
Characters
  • Storm
  • Mikassa
  • Whale
  • Ballan Wrasse
Studio
  • Terms & Conditions
  • Privacy Policy
  • Contact
  • Remixing Music
  • blender.org
Blender Studio

The creators who share.

Artistic freedom starts with Blender powered by CG Global Entertainment Ltd.
粤ICP备2024327355号-3