Section 6 (Part 3): Learn 3D Modelling – The Complete Blender Creator (Udemy) Course

Alas, I have made it to the end of Section 6 of The Complete Blender Creator Course on Udemy. Looking back, there was an incredibly large amount of material covered for this section. Modelling Mr. Rabbit took up the bulk of the project while creating the environment for him – despite being lean -required many iterations (i.e.- very low quality test renders) in order to pull the final scene together. As a re-cap on where I had left off, here is a look at a high quality render from my previous blog post:

rabbitrender (CPU, 100 smp, 586 min 37 sec)

The next task was to add a plant and a tree to the scene. At this time, the Sapling Tree Generator was introduced and I can’t describe this tool better myself than the course instructor when he says it is (as with many of Blender’s capabilities) “extremely powerful”. To give you an idea of how the sapling tree generator works in Blender, I will run through a quick example on how to construct/model a basic tree and as you are reading and visualizing with the help of associated pictures, I want you to try and visualize how the system could work to create a small plant such as a bush.

Let’s begin. Once enabled, the sapling tree generator add-on in Blender works by first adding a curve named, “Sapling tree gen”. In the operator panel, the Geometry settings shows up by default. A stick figure tree is shown in the 3D viewport and by clicking bevel, the trunk/stem and branches appear to look 3D. Here, the resolution can also be increased. In addition, a Secondary Branching system can also increase the distribution and number of rings on the tree trunk as well as to increase/decrease the overall size of the tree:

saplingtreegen(geometry)

Next, under the Branch Radius settings, the thickness or radius of the trunk and branches can be adjusted. The base of the trunk can also be tapered and flared out to allow for roots to be sculpted outwards if desired:

saplingtreegen(branchradius)

Furthermore, under the Branch Growth settings, the length, angle, and curvature of the branches can be adjusted:

saplingtreegen(branchgrowth)

Afterwards, under the Branch Splitting settings, branches can be split to multiple levels and the number of branches at each level can be increased/decreased (think tree diagrams). The base/trunk can be split into multiple levels as well and its splitting height can also be altered.

saplingtreegen(branchsplitting)

Finally, under the Leaves settings, we can add basic polygonal leaves (i.e.- rectangular, hexagonal, etc..), increase/decrease the number of leaves in the branches, and/or adjust the angle of the leaves:

saplingtreegen(leaves)

How about that tree generator! Extremely powerful indeed… So, have you tried to picture how this could work in order to create a a small plant? Yes, in fact, the sapling tree generator was used to help model a bush for the final scene with Mr. Rabbit. But there were a few extra tricks employed to construct something more original (rather than just simply using the tree generator). Using most of the knowledge that was learned earlier in modelling Mr. Rabbit along with reference pictures, I successfully modelled a small bush:

saplingtreegen(plantbush)

At this stage, I felt I had just about all the elements I wanted and had initially conceptualized in the design for the final scene. Before a final render, I added a couple of things and made a few alterations: changed the skybox and adjusted the lamp lighting, applied a pink material for Mr. Rabbit’s ears and nose, added a second tree, altered the landscape. And so without further ado, here is a full HD render of the final scene:

rabbitfinalrender (CPU, 100 smp, 16 hour 46 min, 1920x1080 HD)

Looking pretty sharp, huh? But perhaps too sharp?! Evidently, one final requirement and learning task for this section was to render a DOF (Depth of Field) image. Similar to what was done in section 4 for the chess scene but in the Cycles Render engine this time, a DOF was added for the camera, and thus, created a blurring effect for the tree in the foreground along with the tree and grass in the backdrop. And so again, here is another 100% uncompressed, 1080p long render of the final scene:

finalrabbitscene (CPU, 120 smp, 1080p, 24h render)

Overall, I am pretty content and proud with how this render turned out. Thinking back on all that I have learned so far in this course and looking at the course discussion board, I cannot help but think of all the things I can do now and how I can improve this scene if I just put more time and effort into it. However, in the spirit of trying to complete this course by the end of next month, I feel that it is time to move to the next section. Section 7, entitled “Game Asset Pack”, will be a pretty exciting one for me as no doubt, it will pertain to game design – something I am very passionate about as of late. I look forward to diving into this section and writing my next blog post! Thanks for reading!

– Taklon

Section 6 (Part 2): Learn 3D Modelling – The Complete Blender Creator (Udemy) Course

Last week, I started writing about Section 6, A Fluffy Bunny, and anticipated that I will have to blog a three-part series for this particular section of the Udemy course I am taking. Indeed, due to the sheer amount of material in Section 6, I will have to write a third and final part later this month. As a re-cap on where I left off in modelling my rabbit, here is a small compilation of progress pictures from my previous blog post:

timelapsebunnypart1

No doubt, there’s still a lot of work left to do on Mr. Rabbit before constructing a proper environment for him. For starters, those plain, beady, evil-looking eyes could use a bit of work. To begin, you may recall that I mentioned about the Node Editor in the previous course sections (once for achieving depth of field for the camera in the chess set and pieces scene and a second time for adjusting material colour and specularity along with light emission in the animated desk lamp). This time around, the node editor was first used to assign basic colour and specularity to the eyes – a Diffuse BSDF (Bidirectional Scattering Distribution Function) node connected to a Mix Shader node for assigning colour and a Glossy BSDF node for applying specularity. Below is a screenshot/example of how the aforementioned nodes in the node editor were used and interconnected to assign a basic black and a minor reflection of light in the pupil (note: although not shown, there are separate node editors for the eyeball and iris since they have different coloured materials):

combiningshaders(rabbiteye)

Still, the eyes seemed rather basic/simple at this stage. Rather, the eyes should be a lot more intricate to match the detail in the rest of the rabbit. However, up until this point in the course, if greater detail was desired in a model or object, this was primarily achieved by increasing its geometry. As such, it was learnt that another way in getting around this was by adding a texture (recall that this was briefly touched upon when a wood texture was applied across the entire surface of the chessboard in Section 4). But what happens if we are unable to procure a specific texture that we want? What if we cannot use any of the textures that we are able to find? Or what happens if we only want a part of an object to be texturized? To get around these issues, we can first create that specific texture that we want and/or cannot procure directly in Blender. Subsequently, we can use the UV/Image Editor to perform something called Texture Mapping and UV Unwrapping – the process of projecting a 2D image onto the surface of a 3D model. And this was exactly what was done to construct higher-detailed eyes for Mr. Rabbit.

First, a texture for the iris was created from a circle (which through modelling had undergone subdivision, facial triangulation, and proportional editing). Next, a colour material was applied to the object (a brownish-red colour was chosen). Afterwards, a top-view of the image was rendered and saved as a .png image, which in turn, had become a texture to use subsequently:

createtextureiris

The rendered image or texture for the iris was then opened up in the UV/Image Editor. Through texture mapping, a portion/geometry of the eye (around the pupil) was selected and would then be assigned the texture; by clicking UV unwrap in the UV/Image Editor, the iris texture was projected across the mapped surface of the eye. Voilà!

UVunwrappingiris

Finally, as a finishing touch, some lens were modelled and a Glass BSDF node was applied to create a greater and more accurate reflection of light in the eyes. Below is a screenshot of the node editor for the iris (note: the lens is a separate material so again, it has its own node editor which is not shown here):

texturemappingiris

Alas, I think it’s time to move onto Mr. Rabbit’s surroundings! So the first thing we were taught was how to add a “Skybox“. A skybox is a background image or environment texture used to make the background in a scene look more realistic and/or bigger than it really is. In Blender, this was done by clicking “World” in the properties viewport, adding a “Background” surface, and applying an “Environment Texture” using an image. In addition, a mixture of the colours visible in the image would then also be projected as coloured light onto the scene. For example, if the background image is a daytime photo, then a natural daylight colour would be projected onto the objects in the scene. Conversely, if the image is a nighttime photo, then a dimly-lit scene would be rendered. Of course, that is not to say that the strength of the light projected cannot also be adjusted. And depending on the image as well, the image can be projected in either of two ways: equirectangular (for latitude and longitude projection) and mirror ball (for orthographic projection of a mirror ball image).

environmenttexture(skybox)

Next, for the grass, textures were used again instead of modelling from scratch. Additionally, unlike the iris earlier, the grass textures were not UV unwrapped and mapped to any pre-existing geometry. Rather, images of different blades of grass were readily available and imported as planar geometry (plane meshes):

importingimagesasplanes

And with the node editor, using a Transparent BSDF node and the alpha channel (which controls transparency) in the Image Texture node, the background in each of the images were made transparent:

makingimagestransparent

Afterwards, the light path render settings were then adjusted to ensure that a glitch in Blender would not occur whereby graphical distortions would appear in the render due to light striking through a specific/set number of objects (not really sure why this happens as of now). As equally important, in order to make the 2D textures appear 3D (as if they were actually 3D objects), each blade of grass was duplicated and rotated about its Z-axis, then scaled and rotated inwards/outwards (this process was repeated several times):

makingtextureslook3D

Lastly, in order to generate an entire field of grass, the particle system was re-visited. Here, proportional editing was first used to transform a plane mesh into a ground with small hills. The mesh was then assigned to four particle systems for each type of grass plant, each with varying parameters in its seed (random distribution) and number (amount of objects):

grassobjectsparticlesystem

Alright then! To give you all an idea of what sort of render times I am dealing with currently, here are four transitioning renders with sample sizes of 1, 5, 20, and 100. It took nearly 10 hours to render only 100 samples! *gulp* Clearly, I need to find a way to lower the detail a bit and get rid of any “extra” geometry where possible if I were to generate a high resolution image at the end in a reasonable amount of time…

timelapsebunnypart2

In any case, it looks like I am almost at the end of Section 6 now! I believe the only thing left to do is to add a tree and saplings to the scene to make the scene look a bit more lively?! I do want to polish and tidy up some things on the rabbit and the grass though; I feel like I did not stay completely lean and am now finding the urge to go back and fix some things to speed up the rendering time without compromising the quality…

I look forward to writing the next blog post! Today’s post was incredibly lengthy. I am going to try to keep future blog posts significantly shorter. Either way, I hope today’s blog post was a good read for you!

– Taklon

Section 6 (Part 1): Learn 3D Modelling – The Complete Blender Creator (Udemy) Course

It has taken some time getting around to writing this blog post as the next section in the Complete Blender Creator Course I am taking is quite content-heavy, even more so compared to the previous section. As a result, today’s blog post will be the first of a three-part series for Section 6. At this point, I just want to mention that there will be some Blender-related terms I will use which I explained/described earlier in previous sections of the course – so if you have not read some of my previous blog posts, some of what you will read may seem like jargon. Either way, I hope you get a good read out of it! 🙂

In Section 6 (40 lectures, 6hr+40min), A Fluffy Bunny, the objective is to model and render a scene of a rabbit in its natural environment. We first begin with an initial plan and design phase much like what was done in the previous section with the animated lamp. One key consideration in the rabbit’s design is to avoid modelling any part(s) of its body that would not appear in the final render. As a result, I am sad to inform that my rabbit will be indeed, without limbs, as the tall grass would cover its legs in the final scene rendered.

After the planning and designing phase, the concept of layers was introduced. In computer graphics and animation, a layer typically contains a single object or element. Each layer is stacked on top of one another – often in a meaningful order (e.g.- from the foreground objects to the background elements in a scene). Thus, layers are often worked on independently and combined at a later stage. The instructor then proceeded to show how to hide and unhide a layer in Blender. No doubt, layers will be re-visited later in this section when all the different objects and visuals in the scene have been modelled. For now, all attention is turned towards the focal point of the scene: the rabbit, of course.

Modelling the rabbit began as soon as it was learnt that a new object can be added, the Metaball. I like to think of a Metaball in Blender as a sort of soft clay, putty, or dough. Two or more metaballs coming together can meld into one another (or leave a dent in the other if so desired). Using a side reference picture and three metaballs, the outline of the rabbit’s body and head was quickly formed:

1. metaballs

Next, two ears were created using a UV sphere and a mirror modifier. The metaballs were then converted into a mesh and joined together, which in turn provided a decent amount of geometry to allow for potentially high-detailed sculpting afterwards:

2. metaballsculpting

With sculpting in Blender, a number of brushes can be used to add or subtract geometry in a model. The size and strength of the brush can be quickly adjusted as well. By using the computer mouse and literally moving back and forth across the mesh like a brush, a bit of definition was added to the rabbit:

3. sculptedbunny

At this stage, the particle system, found under the properties viewport, was introduced. In Blender, there are two types of particles: hair and emission. In this case, hair was selected and a number of parameters were then shown and adjusted. The first two parameters were the emission/hair number and length; the number indicates how many strands of hair there are and the length indicates how long each strand of hair is. Furthermore, the number of strands of hair that can be adjusted are parental, meaning that each parental strand could have a number of children strands as well. The importance of children strands is that, when interpolated, they can control everything you can possibly think of when it comes to the appearance and distribution of the hair such as uniformity, size, endpoint, roughness, randomness, clumping, etc.. The aforementioned are all numerical parameters that can be adjusted in order to generate on the rabbit any kind of hair imaginable! For my rabbit, I chose 10000 parental strands with each parental strand having 10 interpolated, children strands to begin (Note: I have not adjusted any of the parameters in the children strands at this point):

4. hairbunny

In addition to assigning a material to a mesh (in this case, I’ve picked a medium-brown for the skin), a material can also be assigned to a particle system. And so, for the hair, I’ve chosen a light brown (fun fact: in many cases, an animal’s fur actually looks much darker than its skin due to the apparent density).

5. colouredbunny

As soon as a particle system is generated on a mesh, Particle Editing is enabled. Like sculpting, a number of different brushes of adjustable size and strength were available to allow for high-detailed editing across the particle system – in this case, the rabbit’s hair: Comb, Smooth, Add, Length, Puff, Cut, and Weight. I won’t go into detail of what each of these brushes do as they are fairly self-explanatory. As such, I proceeded to comb my rabbit:

6. combedbunny

Now, the rabbit is starting to take form alas?!?! I think I’ll call him Mr. Rabbit from now on… 🙂 Still, his hair looks a bit odd – for example, tufts of hair are coming out in unusual places and the hair seems to be a little too uniform throughout the entire mesh. To tackle the issue of hair being where it shouldn’t be or too much hair growing in certain areas,  vertex groups were created for different parts of the rabbit and the instructor then showed something called Weight Painting. In 3D modelling, different parts of a model can be assigned varying weight values. In Blender, weight-painted areas cover from red (100%) to blue (0%) as a colour spectrum. The rest of the colours fall in between these two opposite ends in our colour spectrum; for example, green-painted areas would have a weight value of ~50%, whereas yellow-painted areas would have a weight value of ~75%. In the case of Mr. Rabbit, this weight value is assigned a percentage of the particle system as long as it is linked/applied to the vertex group. For simplicity, I weight-painted in red the following vertex groups: Body, Ears, Whiskers, Head, Chest (not shown):

weightpaintingbunny

It should be noted that after weight painting, any changes done in particle editing mode are lost (i.e.- combing). So planning ahead and staying lean, once again, is important! After weight-painting and re-combing, I think Mr. Rabbit looks a lot cleaner, hmm?

7. weightpaintedbunny

*Breathes heavily* Phew, okay, I’m not done yet! I mentioned about the importance of children strands in hair particles a few paragraphs back and how a bit of randomness and variation can be adjusted in our model. Well, at this point, we were then told to adjust some of those parameters for different weight-painted, vertex groups in our mesh. We also added different materials for chest hair and whiskers during weight-painting.  After a bit more particle editing as well (mostly combing.. lol), here is the last progress picture I have to share:

8. addedrandomnessbunnyIf you’ve made it this far in my blog post, just want to say thanks for taking the time to do so! I hope it interests you as much as I had learning all of this. It may not look like it, but in fact, I have spent quite a bit of time up to this point. Organic modelling (can and usually) takes a LOT of time and I finally have a proper taste of it… Anyway, I look forward to finish modelling Mr. Rabbit and moving into creating the world/environment he lives in. Stay tuned and I look forward to writing my next blog post!

– Taklon