GLSL - Medieval house.

I’ve been modelling a medieval house based on warhammer online concept art

This is still very WIP but I’m quite happy how the model currently looks like. Currently I am modelling interiors and texturing untextured parts.

Here are some wires.
http://etanaisen.net/whhouse/wh1W.jpg

and glsl render of the same view

http://etanaisen.net/whhouse/wh1GLSL.jpg

Some random shots.

http://etanaisen.net/whhouse/wh3GLSL.jpg
http://etanaisen.net/whhouse/wh4GLSL.jpg
http://etanaisen.net/whhouse/wh6GLSL.jpg

If you want to see more random screenshots, click here

Looks great, are the textures yours? I’m not familiar with all the numbered grids, how and why are they there?

Most of textures I use are from cgtextures and from my own collections I have bought, (3dtotal, arroway) all normal maps are made by me.

Numbered grids are just there for a place holder textures, it means I’ve uvmapped all those parts but yet I need to decide texture for those parts.

All of those textures uses nodes so I can mix different materials and do all kind of fancy stuff, for example here is how that part is made where plaster is worn a bit and another texture (in this case, numbered grid) can be seen beneath it.

First we need bunch of textures, I give you same textures I use in my scene. just click textures names to get that texture.

These are large textures so feel free to make them smaller if you need.

Plaster diffuse
Plaster normal map

Stone diffuse
Stone normal map

Dirt diffuse
Dirt normal map

Placeholder diffuse
Placeholder normal map

and two dirt masks

Dirt mask 1 used for dirt
Dirt mask 2 used for worn out part

Those are all needed textures.
Tutorial will be my next post, I need to take dog for a walk now. :spin:

Looks nice, good luck with it… :wink:

Make sure you get textures from my earlier post.

I will be using blender 2.54 for this.

We need to model a piece of wall.
http://etanaisen.net/whhouse/tutorial/first.jpg
We need to make five sets of UV coordinates for our wall.

uv plaster for our plaster textures.
http://etanaisen.net/whhouse/tutorial/uvplaster.jpg

uv planks for our “planks” (placeholder atm).
http://etanaisen.net/whhouse/tutorial/uvplanks.jpg

uv mask for our mask textures for worn out part.
http://etanaisen.net/whhouse/tutorial/uvmask.jpg

uv dirt for dirt mask.
http://etanaisen.net/whhouse/tutorial/uvdirt.jpg

uv stone for stone textures.
http://etanaisen.net/whhouse/tutorial/uvstone.jpg

select our wall object and goto materials and add a new material to it.
Name it wornplaster, make it use nodes and goto node editor.

http://etanaisen.net/whhouse/tutorial/nodeMaterial.jpg

So first we need to make materials
Shift+A - input - material
do that twice

name one material plaster and other stone
now add plasterD and plasterN and one stoneN to plaster material, make plasterD and plasterN to use UV map plaster and stoneN to use uvmap stone. Here is how to do it.

Click Plaster material node in node editor then go to texture panel at properties window. Add a new texture, make it type image or movie, search for plasterD image and add it.

For diffusemaps
From Mapping panel, change coordinates to UV and layer to plaster.
From Influence panel, make sure color is 1.000 and specular color is 1.000

For normal maps
Make sure you check “normal map” from image samping panel and from drop down menu check tangent space.
You need to make it affect Normal of geometry from influence panel and nothing else.

now add stoneD and stoneN stone material, make both of them use uv map stone.

Back to node editor.

Shift+a - color - mix

drag line from plaster material color to mix color1 and from stone color to color2 of mix node.
Change blend mode to substract and change factor to something like 0.2, I like that most.

Your model should look like this now.
http://etanaisen.net/whhouse/tutorial/node1.jpg

next add new material and name it plasterdirt and add textures plasterdirtD and plasterdirtN to it and make both of them to use UV map plaster.

Now we need to add a texture without any material, I really have not found any “good” way to do it but here is how I do it.

add a new material node, name it something you want, I name it textures

Now click that material node and add two textures to it, dirt1 and dirt2
Add new texture node shift+a - input - texture
Now make that texture dirt2 by clickin on name box and searching for dirt2 texture.

Now we need geometry node, add a geometry node Shift+A - input - geometry
Write mask to the value box of UV coordinates.

Drag line from UV of this geometry node to Vector of dirt2 texture node.
Add RGB curves node shift+a - color - RGB curves.

This RGB Curves will be used to make the worn out part a bit darker from the edge where the plaster has worn out.

Drag Color from dirt2 texture node to color input of RBG curves, Invert the C value of the curve.

add a mix node, drag color from plasterdirt to color 1 of new mix node and add color of our second last mix node to color2 of new mix node. Drag a line from RBG Curves to Fac input of if this mix node.

Your model should look like this now.
http://etanaisen.net/whhouse/tutorial/node2.jpg

Add new material, name it planks. Add placeholderD and placeholderN to it and make them use UV map planks.

Add another RGB Curves and again, drag a line from dirt2 texture node to input of this new RGB Curves. I modified default curve just a little bit.

This RGB Curves will determine where our plaster will be worn out and where we can see the planks material.

Add a mix node, take color of our second last mix node to color1 and drag color from planks material node color1 of this new mix node. Drag a line from color of our latest RGB Curves to Fac of this latest mix node.

Your model should look like this now.
http://etanaisen.net/whhouse/tutorial/node3.jpg

Modify inverted curve a bit to make the worn edge darker

http://etanaisen.net/whhouse/tutorial/node4.jpg

Add a new texture node and assign dirt texture to it

Add new geometry node and make it use uv dirt

Drag a line from Geometry UV to dirt texture node Vector input. Add a new RGB Curves. Drag a line from dirt texture node color output to this new RGB Curve color input.

This Curve will be used to determine how strong the dirt is.

Add a mix node, drag color from our second last mix node to this new mix node’s color1 and from plasterdirt color to color2 of this new mix node. Drag a line from our latest RGB Curves node to Fac of our new mix node.

And your final texture should look like this.
http://etanaisen.net/whhouse/tutorial/node5.jpg

If you need to change where the worn out part is, just modify mask UV
If you need to change size of planks material, just modify planks UV
If you need to change where dirt is and amount of dirt, use the corresponding RGB Curve and uv layer.

I hope this was useful to someone, it took much longer to write than I first thought :slight_smile:

Etana, thanks for this teaching thread.

I must be missing something because to be honest your technique seems a bit over-complicated.

Why don’t you simply use one UV map and fit the correct colours / displacement / whathever into that one?

I am not a texture freak by any means so I could be missing an important point, though.

Good question, here is two answers.

Answer 1: Detail.
If I bake all those textures to one image and map that to UV, all the detail will be lost. I would have to use really large image where to bake, like 2048x2048 or maybe even larger.

Here is all of that baked to 1024*1024 now remember that here is only this part of the model, add all remaining walls and other stuff to this uv and the detail will be lost even more.

Baked
http://etanaisen.net/whhouse/tutorial/detail1.jpg

Not baked
http://etanaisen.net/whhouse/tutorial/detail2.jpg

Answer 2: Formability
If I want to make worn out part bigger, change texture of beneath material, add more dirt, or anything, I can do it just by modifying UVs or curves, or by adding completely new images. It would be much more time consuming to do all those with one UV.

This is not really that complicated as it looks. If you know how to use nodes, this is really effective way to texture things.

Very interesting!

Small update,

Added roof material and also made burned wood material with nodes based on my tutorial I posted earlier.
http://etanaisen.net/whhouse/wh7glsl.jpg
http://etanaisen.net/whhouse/wh8glsl.jpg
http://etanaisen.net/whhouse/wh8s.jpg

Those parts really need some ambient occlusion, have to take look at that next.

I love your tutorial and your house. Could you post the tutorial in the Tutorials board as well? That way it would be easier to search for it once this thread falls off the frontpage of WIP.

Good idea, I should have posted that to tutorial section instead of here, I wonder why I didn’t. I go fix that now.