How to Create a Bone Texture with Weight Maps in LightWave 3D

How to Create a Bone Texture with Weight Maps in LightWave 3D

This month’s peek behind the scenes tutorial will show you how to create a bone texture with weight maps in LightWave 3D’s node editor. This is a relatively simple, quick and easy technique that I used for a recent series of 3D dental illustrations that showed how false teeth and dental prosthesis aligned with cutaway shots of the upper jaw bone. Because this texture is created by multiple layers of procedural textures rather than by using any image maps it is fully resolution independent for high quality rendering at any size. This weight map technique may be used to control different areas of many different types of surface textures so it’s a useful tool to have in your toolbox.


Bone Surface Node Map with Weight Maps and Multiple Procedural Texture Nodes

Here is an overview of the bone surface node map as seen in LightWave 3D’s Node Editor.

Bone Surface Texture Node Map - How to Create a Bone Texture with Weight Maps in LightWave 3D

I built the bone surface texture using nodes in LightWave 3D’s node editor. I built up the bone texture using a series of slightly displaced vein nodes of varying scales to create the bone structure around voids. I used weight maps to control which of the scaled veins appear most in the center of the bone versus at the edges of the bone. This multi-layered structure is then fed into a Sigma material to create the slightly translucent SSS look of bone.


How to Create a Bone Texture from Layered Vein Nodes

The first Vein Node that I renamed Small Bone Veins has its Bg Color set to a medium brown and its Fg Color input set to the output of the Inner Bone Light Color Node which was set to a bone white color. I fed the output Color of each Vein Node into the Bg Color input of each subsequent Vein Node. I also fed the Bump output of each Vein Node into the Bump input of each subsequent Vein Node. This is an easy way to combine many different bump maps together in a cascading fashion.

Small Bone Veins Node

Bone: Small Bone Veins Node
  • Bg Color: Med Brown
  • Fg Color: Output from Inner Bone Light Color Node
  • Blending: Normal
  • Opacity: Alpha Output from Sm Gradient Node
  • Invert: ON
  • Width: 100%
  • Contrast: 0%
  • Bump Amplitude: 100%
  • Scale X, Y, Z: 2 mm

Medium Bone Veins Node

Bone: Medium Bone Veins Node
  • Bg Color: Output from Small Bone Vein Color Node
  • Fg Color: Output from Inner Bone Light Color Node
  • Blending: Normal
  • Opacity: Alpha Output from Med Gradient Node
  • Invert: ON
  • Width: 75%
  • Contrast: 0%
  • Bump Amplitude: 100%
  • Scale X, Y, Z: 5 mm

Large Bone Veins Node

Bone: Large Bone Veins Node
  • Bg Color: Output from Medium Bone Vein Color Node
  • Fg Color: Output from Inner Bone Light Color Node
  • Blending: Normal
  • Opacity: Alpha Output from Lrg Gradient Node
  • Invert: ON
  • Width: 50%
  • Contrast: 0%
  • Bump Amplitude: 100%
  • Scale X, Y, Z: 7 mm

Edge Bone Veins Node

Bone: Edge Veins Node
  • Bg Color: Output from Large Bone Vein Color Node
  • Fg Color: Bright Bone White
  • Blending: Normal
  • Opacity: Alpha Output from Edge Gradient Node
  • Invert: ON
  • Width: 100%
  • Contrast: 0%
  • Bump Amplitude: 100%
  • Scale X, Y, Z: 1 mm

Bone-Organic-Displacement-Turbulence-Node

Bone: Organic Displacement – Turbulence Node

I used a Turbulence Node to add a subtle deformation to the Vein Nodes to provide a more organic look. I set the bump amplitude very low (0.25%) and fed that vector into the Position vector input on all the Vein Nodes.

  • Bg Color: Dark gray
  • Fg Color: White
  • Blending: Normal
  • Opacity: 100%
  • Small Scale: 0.25
  • Contrast: 0%
  • Frequencies: 3.0
  • Bump Amplitude: 0.25%
  • Scale X, Y, Z: 5 mm

Bone SSS Sigma Node

Sigma Node

I then fed the Color and Bump outputs of the final Vein Node into the Surface Color and Bump inputs on the Sigma Node. The output of the Sigma Node are fed to the Material Input on the Surface Node.

  • Surface Color: Output from Edge Vein Node
  • Specularity: 0%
  • Roughness: 0%
  • OrenNayer: ON
  • Bump Height: 100%
  • Bump Drop-off: 0%
  • Translucency 10%
  • Absorption Color: Orange/Yellow
  • Absorption: 10.0
  • Distance: 1 mm
  • Refraction Index: 1.4
  • Gamma: 1.0
  • Pass Light Inside: OFF
  • Advanced Shading: ON
  • Subsurface Radiosity: ON
  • Receive Radiosity: ON

Creating Weight Maps in LightWave Modeler

In order to control and modulate the texture across different areas of the surface I created two simple weight maps.

I created the first weight map named: Bone Edge Weight.

Bone Edge Weight Map

I selected all the points along the edge between where I wanted the bone and the gum and set their weight to 100% and all the others at 0%. Notice that some of the points don’t appear to be along the red band because subpatch smoothing is on.

I then created another weight map named: Bone Weight.

Bone Weight Map

I selected the points where I wanted the bone texture to have the largest scaling and set those points to 100%. I set the points around the perimeter of the bone, just inside the edge previously selected in the Bone Edge Weight map and set those points to 0%. Any points between those I set to 50%.


Using Weight Maps to Control the Bone Surface Texture

I used the previously generated weight maps to control which of the scaled veins appear most in the center of the bone versus at the edges of the bone. I created a Weight Map Node for each. I renamed and set each to one of the two maps, Bone Weight Map and Bone Edge Weight Map. Refer to the full Node Map to see all the interconnections.

Bone Edge Weight Node

Bone Weight Node


Using Gradients to Modulate the Output of the Weight Maps

In order to keep the weight maps simple I use custom gradient nodes to modulate the output of the simple weight maps. I used the alpha setting of the keys along the gradient so that I could use simple 0-100% values rather than RGB values. I fed the output of the appropriate weight maps into the input of the gradient nodes associated with each of the vein nodes. I then fed the alpha output of each gradient node into each associated vein node. Refer to the full Node Map to see all the interconnections.

Small Gradient Node

Sm Gradient Node
  • Input: Output of the Bone Weight Map Node
  • Keys:
    • Position: 0.0, Alpha: 100%
    • Position: 0.36, Alpha: 25%
    • Position: 0.75, Alpha: 1%
    • Position: 1.0, Alpha: 0%

Medium Gradient Node

Med Gradient Node
  • Input: Output of the Bone Weight Map Node
  • Keys:
    • Position: 0.0, Alpha: 25%
    • Position: 0.36, Alpha: 100%
    • Position: 1.0, Alpha: 0%

Large Gradient Node

Lrg Gradient Node
  • Input: Output of the Bone Weight Map Node
  • Keys:
    • Position: 0.0, Alpha: 0%
    • Position: 0.36, Alpha: 25%
    • Position: 0.66, Alpha: 100%

Edge Gradient Node

Edge Gradient Node
  • Input: Output of the Bone Edge Weight Map Node
  • Keys:
    • Position: 0.0, Alpha: 0%
    • Position: 0.7, Alpha: 100%

Final Result of this How to Create a Bone Texture Tutorial

The bone texture created in this how to create a bone texture tutorial was used in the following project which consisted of a series of 3D dental illustrations. Because it was intended as a set of images the textures covered relatively small areas in the images. If they were to be used for more closeup images I would add somewhat additional detail to all the textures.

3D Dental Illustration


DreamLight Constellation Network Render Controller

DreamLight Constellation 3D Icon LogoDreamLight® Constellation is our cross-platform network render controller that combined with DLI_SNUB-Launcher™ makes configuring, launching and controlling LightWave 3D ScreamerNet LWSN for standalone, batch, network and internet rendering, drag-and-drop-dead-easy™.

Created by Michael Scaramozzino - LightWave 3D Artist Profile
Author of Creating a 3D Animated CGI Short & Mastering LightWave ScreamerNet

DreamLight wrote the book: Creating a 3D Animated CGI Short. See what we can do for you.

Leave a Reply