The code for the header image could have gone here as well, but as explained in the previous post, a handy place to put that code is to embed it in a side menu widget. This enables a logged-in user to open the Blogger widget editor with a single click.

Here is all the code in the License widget as of this writing. Note that the code is likely to change because a spinning cube may well be 3D but it's still pretty lame.

If you are familiar with Three.js, you will recognize that all of this is ordinary Three.js coding practice. There are just a few things to notice.
The header rendering should appear the header, so var d = document.getElementById('header-inner') is used to attach the renderer to the header <div> tag.

One of the goals of this project is to enable all renderers to be animated. In order for the animations not to step all over each other, a single call to requestAnimsationFrame is desirable. But this call must be able to handle rendering an as yet unknown number of renderers each of which might be using different variable names.

The method used here is to create a global array renderers in the header file. A single line is added to any of the init functions which assembles the current variable names into an object and pushes the object to the array.

Finally the render function is modified so that a for loop processes the updates to all of the renderers.

As of this writing, every renderer produces the identical camera motion. I expect that in the not distant future, the capability for each renderer to have its own custom animation function will be available.

Each post is handled in a similar manner. Instead of attaching the code to the header, the code should look for the post it's in, so a new post is created and its unique ID is used. Here's the code for this post: var d = document.getElementById('post-body-1464980370977528245');

The only other addition is to add the push to the array: renderers.push( {renderer: renderer, scene: scene, camera: camera, controls: controls, stats: stats} ); to the end of the init() function.

Here is what is so cool: All of this is really entry-level eezy-peezy stuff. Doing something similar to a self-hosted WordPress site should be just as easy. I may even look into the possibility of adding 3D to a WordPress.com blog. Or even a 3D tumblr?