A modest proposal re Blender documentation -UPDATE 12-09-04

I have been thinking about the current state of the Blender user base, pondering where the greatest potential for growth exists, and also where Blender can do the most good. My tentative conclusion is that Blender is ideal for a classroom setting at the secondary (high school) level. Given the low hardware demands and the fact that it runs on Linux, a Blender-based CG lab could be created at very low cost, thus it is attainable even in school districts where resources are scarce. Granted, even at low cost, many districts will not invest in something as apparently “impractical” as a CG lab, especially when one sees what is happening to many art and music programs nationwide (I know nothing of Europe or the rest of the world, sorry).

In order for Blender to be put to good use, however, there needs to be a new set of docs that addresses the current feature set and go into some detail on some of the advanced issues. I know of at least one Blender-based curricullum, The one created by James Chronister and it is very good for what it is. However, the information presented is not based upon the recent major revisions (it apparently stops around 2.3 and doesn’t discuss 2.34, let alone 2.35). The course also seems to assume a certain level of knowledge about CGI and 3D concepts.

What I would like to do is start from scratch, at least where the writing is concerned, and write a Blender curricullum / online textbook for high school students that will:

  1. introduce the student to basic CGI principles

  2. Familiarize the student with the Blender UI

  3. Take the student through several smallish projects, from modeling to texturing to animating to rendering.

  4. Utilize Blender’s advanced / improved features as much as possible.

My basic idea is to take existing tutorials and documents and incorporate their concepts into this new text. I plan to write new text, unless a given author consents to having their tutorial included in the text. Part of the point of this is to agregate the disparate tuts and written materials into a cohesive work. Note, I realize that the 2.3 manual is online, and it is very good. It is no longer current, however, and it does not go into some pretty important issues like displacement mapping, ramp shaders, etc (at least, not in detail). I am looking to supplement, not compete with or replace official BF/NAN docs.

Here’s the problem: I’m a lawyer with four kids. Free time is in small supply. I will write as much as I can, but I am interested in collaborating with other Blenderheads (particularly the more experienced users out there).

This isn’t some vanity project I’m contemplating, and I fully intend the end product to be available online free of charge, just like Blender.

Would anyone be interested in such an idea, or am I merely duplicating and possibly diverting attention/resources away from projects arleady in progress?

Hi NOLA-Jedi,

You just mentioned one of the biggest problemes there is to keep the documentation up to date: lack of time. Blender is developing so fast that it is hard to keep up with. Therefore I think it is not a good idea to write new documentation, also because most documentation is already written. Blender has its own documentation project, better join them.

I agree with everything you have said (including the lack of time part). It is a good idea. An enjoyably frustrating part of Blender is that powerful new features are added frequently. The documentation always lags.

I have used tutorials, classroom training, manuals, try-it-and-see, and online help for learning different software packages (not just 3D). The best structure that I found was a series of books with each chapter broken out as a separate lesson. The lessons had an expected completion time of 45-55 minutes and there was a companion floppy with the working files on it. Today’s versions would have CDs.

I think there would be an excellent opportunity for what you are proposing. Not just for schools, but for anyone learning Blender. I used the books mentioned above at work. It was a good break to take an hour a couple times a week and go through one of the lessons. The 45-55 minutes is important because that fits into the college/high school/middle school instruction time. Distinct chapters would also allow different writers to contribute with chapters added or revised as features change.

I don’t see this as taking away from or competing with the official Blender documentation. This is more of a comprehensive turorial than a manual.

Maybe the first steps would be to set a chapter/tutorial format; create some basic models or scenes; and put them online for comments and additions.

Yes, my idea is to have discrete lessons that can be carried out over the space of an academic semester (18 weeks), or perhaps an academic year. Each lesson would have a clear goal in mind of what the student should be able to do at the end (e.g., create a poly model of a car and then rafine it with sub-surfs). I want to approach modeling first, with lessons going through all 3 of the major toolsets (well, 2.5, since NURBS is not really a full-fledged tool set at this point). Then I would move on to materials and texturing, then lighting, then camera placement and rendering, and finally animation.

Because I intend this to be aimed at newcomers to 3d, I want to focus on how to go about visualizing and conceptualizing a project, and how to plan out modeling, texturing, et cetera. This goes to the mental process involved, and is more than a manual that tells you how to use the tool. A manual assumes that you know what you want to do with the tool. The lessons I have in mind would cover how to decide what you want to do, and think through the various issues that come up.

I realize that I will face the exact same problem as other tut writers, in that Blender will certainly change as I write. That being said, we really have entered a new era with 2.34 and beyond, and 99% of the existing docs don’t even assume that you can select faces and edges, much less that you can do raytracing with the internal renderer or that you can do true GI with Yafray.

As with everyone else, I agree that the documentation is currently a bit out of date and it is difficult for the documentation team to keep up with the features. That was my drive to do start making video tutorials. I just make an outline, spend maybe an hour or two recording a few takes and then I’m done. I can make new video tutorials when I need to for the same subject but with a few added features, etc.

One idea that I have been bouncing around to the web and doc boards is to combine the documentation, tutorials, video tutorials, and references into one resource. The idea is that most people are more interested in what topic to learn, not so much by what method.

So, if you looked up NURBS for example, it would display the documentation, and then also show links to tutorials and other stuff about the same topic. So it wouldn’t really be a big change. Just stylize the documentation, add some links, and try and keep it updated.

So yeah, that’s what I’m trying to do (aside from getting all of my design teachers hooked on it, so far so good).

I think your lessons will be very good in that it goes through the thinking process of setting up a good project. For my projects about 1/4 of the time is actually spend modeling/animating, so that will be a good thing to teach people. Also, those are concepts that will not change for each version, so you have an edge there.

I on the other hand focus mainly on teaching the tools so you have a firm understand about them and then say, “Okay, you know how to use them so apply it. You can solve your own modeling problems.” This is probably mostly due to my previous expirience in 3D. For me learning how to model and animate a gingerbread man in 40 minutes wasn’t as productive as reading through the manual to understand the features. That’s just my style.

I think everyone that teaches does it in the way that they wish they learned. I don’t think your project will divert attention or interfere with anything else. As for my I already got my hands full :).

I would really like to see some kind of one-stop place for all learning material. Some really good material is hard to find, and having it organized by topic would be great.

I just stumbled across http://www.oooauthors.org/

Seems like the way to go for Blender as well.

Here is a draft of the introduction, written this morning. C & Cs are welcome, of course:

It seems like everywhere we look today, there’s an example of Computer Generated Imagery, or CGI for short. Hollywood spectacles like The Lord of the Rings and Spiderman use CGI to depict scenes that were previously impossible to put on screen, like an army of 100,000 orcs laying siege to a walled city, or Spiderman swinging between the skyscrapers of New York City, with the camera following close behind him and matching his every move. Even something as ordinary as your local news program probably uses CGI for its opening credit sequence. CGI is an integral part of filam and television products that collectively bring in billions of dollars in revenue. The CGI industry itself generates hundreds of millions of dollars a year.

What is CGI? The first and most important thing it is not is imagery that was created by a computer, any more than a photograph is created by a camera, or a pencil sketch is created by a pencil. Just as with photographs and drawings, CGI involves an artist starting out with a blank slate and using a set of tools to create the image that he sees in his head. In the case of CGI, the tools involved are extremely powerful computer hardware and software. Regardless of the tools being used, however, the process involved is still an inherently artistic and creative one.

You may have wondered how the artists who work with CGI learn their craft. Do they have to be computer programmers first? Good at math? Is there some special schooling involved? The answer to all three questions is “Not necessarily.” While knowledge of programming, and, to a much lesser extent, mathematics can certainly be helpful, it isn’t necessary to become a 3D artist. And while there are several excellent schools that teach digital art, formal education is not a requirement if you can show that you have the artistic and technical skills that are needed for a given project.

How, then, should one go about learning to do CGI? This is a real diliemma for people who might be interested in exploring digital art, but don’t know if they have the talent or apptitude for it, or whether spending hours upon hours sitting in front of a computer, often for weeks and months on end, is something they want to do for a living. More than many hobbies and skills, CGI can require a considerable investment of money to get started.

The software used to create 3D graphics can be enormously expensive, and it often requires a cutting-edge computer to run well. Two of the most popular 3D programs, Alias Wavefront’s Maya and Discrete’s 3D Studio Max cost thousands of dollars to legally purchase. The least expensive of the major applications, at the time of this writing, is Softimage XSI, and it still costs $495. Even academic discounts will only bring the cost of the major applications down to $250-$300. And that’s not counting the cost of various plugins and external programs like Adobe’s Photoshop (itself a $600 program) that are used every day by CG artists.

What would you say if I told you that you don’t need to spend thousands of dollars just to assemble the tools to start learning CGI? Would you believe me if I said there is an extremely powerful 3d editing application, one that can create virtually any image that was made using the major 3D packages, but which costs . . . absolutely nothing? And by nothing I mean you can legally download and install it, free of charge? Sounds too good to be true, doesn’t it? Well, believe it or not, there is just such a program, and its name is Blender.

Blender was originally created by the programmers at Not Another Number (NAN) as a custom application to be used in-house by the company’s artists. Through a series of events too lengthy to recount here, Blender eventually became an “open source” application, one that could be freely distributed. There is a small but extraordinarily talented and dedicated group of programmers, led by Ton Rosendal, that are continuing to develop and improve Blender. The nature of open source software means that in addition to the core developers, literally any person who wanted to could download the program code, create a new feature, add it to the application and then make it available to the world with their modifications. That’s not legally possible with commercial softare such as Maya (though you can, of course, write plug-ins for Maya, as long as the program itself is untouched).

Blender is rapidly evolving, in many ways more quickly than its commercial counterparts. 2004 alone has seen tremendous growth in Blender’s capabilities and ease of use. That’s a wonderful thing, because it means that someone who starts learning Blender today can count on it being an even better program as time goes by, without having to spend thousands of dollars for each new upgrade. The downside to this quick development pace is that documents and tutorials written about Blender become outdated very quickly. The lessons contained in this book will no doubt lag behind Blender’s capabilities to a certain extent. What this book will focus on, first and foremost, is the fundamental process of using Blender to create CGI, and this is as much an issue of visualizing and problem solving as it is an issue of which button to press to activate what feature of Blender. As a result, I am hopeful that while certain specifics may no longer be current by the time you read this, the basic theories and techniques discussed will still be useful.

This book is broken down into several discrete sections, each dealing with a basic component of CG imagery. The first section relates to modeling, the process of creating 3D objects, and covers all of the major toolsets that are included in Blender. The second section focuses on materials and textures (the pictures that are “glued on” to 3d models to make them look more realistic). Third we will cover lighting in a CG image, with the next section dealing with cameras, image composition, and rendering. Our final section will deal with animation. By the time you finish this book and work through the included lessons, you should have a firm foundation in using Blender specifically, and in creating CGI in general.

And now, without further ado, let’s talk about modeling.

I think this is a great idea for beginners to the Blender system in particular and CGI in general. I’m currently working on teaching a friend of mine who just got a new PC how to use Blender, and my own experience is still somewhat lacking to be sure – I only started using it in February of this year.

The more recent developments have certainly opened my eyes to things I didn’t realize Blender could do. I started out with an outdated guide (Tutor Guide 01) designed for Blender 1.72, which a friend had passed on to me several years ago when I tried to start learning Blender for the first time. At that point, it was beyond my computer’s power to get anything done, so I put it off for a while, until February. I learned quickly, and wanted to do very advanced things, but could never quite follow the tutorials properly or whatnot, so instead I leaned towards trial and error.

I’ve learned a lot, and I’ve gotten faster at doing things, but it’s only the tip of the iceberg for me as I now work on learning how to build animations, particle systems, and finding my own preferred ways to make things like hair. Having a good centralized resource for teaching new students of Blender how to use the tools would be great. I’m learning a lot as I teach my friend, and I think people, skilled but learning and new alike, could definitely benefit a lot from this sort of project.

Excellent start and I’m glad you are continuing with the work.

My comments (for what they are worth):
Don’t focus just on CGI art. Our world is becoming increasingly visual. Digital cameras, video editing on home computers, cell phone cameras, etc. If you are going to make a Hollywood movie, sure, use the big expensive software, but if you have a basic skills with mechanical drawing you can create pictures and animations for kitchen remodelling, simple machines, product demonstrations, graphics for documentation and training materials, etc. Just about anyone can add a JPEG image to a PowerPoint slide or create a line drawing with MS Paint, but Blender allows you to creat a CGI image and look at it from different angles.

There aren’t too many individuals that can justify buying Lightwave to create intro menus for DVDs of home movies, but it is possible to do it with Blender for FREE.

I can teach an 11 year old how to use Blender to cut a Cone with a Plane using boolean operations and generate an animation of conic sections for a geometry class. That isn’t art, but it will amaze most middle school math teachers and really help students understand the concept.

You might want to add an initial chapter or a reference appendix to explain viewing 3D objects in 2-dimensions (front, top, side, orthographic, perspective, etc.). I still remember the first object we made in my 8-th grade mechanical drawing class. It was a simple rectangle, that became a “T”, then a notch cut out of the top cross bar, and finally a hole drilled through the length of the top bar. We used front, side, top and 30 degree perspective views.

I don’t mean to come across as negative. I think it is a very good start and well worth continuing. You may also want to get a copy of “The Blender Book” by Carsten Wartmann. It was written for an earlier version (1.8 or so I think), but does a good job of teaching 3D using Blender. It isn’t designed for the 1-hour teaching lesson and is geared for the initial user without overwhelming the user.

My plan is to explain 3d perspective at the begining of the modeling section. Basically, the first page or so of the modeling section will serve as an intro to the Blender UI, viewports ,etc. Blender isn’t complicated, conceptually, it’s just that the UI isn’t self-explanatory when you look at it. Then again, neither is Maya’s. It shouldn’t take too long to explain the basics of camera movement, window arrangement, etc.

I then plan on walking through the components of a 3d scene, from the individual elements of a mesh (verts on up) to the materials and textures, to the lights and cameras. I want to have students always thinking within the context of the final scene when they work, so they have an idea of how their model is supposed to relate to its surroundings, how light will affect it, what camera angles are most beneficial, etc.

This is another draft section for the book. This is intended to go at the begining of the modeling section, to explain how 3d space works. C & Cs, pretty please! In particular, read this with the idea of a total newcomer to 3d opening the book, and learning things from the ground up/

Modeling: Basic Concepts

Before you begin working on three-dimensional CGI, you should have a basic idea of how 3d space is arranged in the context of computer graphics.

Computers are good at doing lots of things, but one thing they cannot do is make a guess or an approximation. They need precision, because everything for them ultimately boils down to the numbers 1 and 0. What this means for 3D CGI is that the computer has to know the exact location of every object in a given scene before it can make the necessary calculations to render (or display) an image. “Object” in this case refers not to whole virtual items such as tables, or lamps, or robots,but to the smallest individual component of any 3D model: the vertex (or point). If you’ve taken geometry, you already know what a vertex is. If not, we’ll be discussing them later. For now, what you need to understand is that the computer has to have a precise location for every individual vertex of every object in the scene before rendering can occur.

This is done using a series of coordinates, very much like longitude and lattitude on a map, except that 3D coordinates tell you more than just North, South, East, and West, they also tell you height (altitude). To understand how 3D coordinates work, think of a sheet of graph paper. The vertical lines represent one axis of movement, in this case the “y” axis. The horizontal lines represent another axis, “x.” Each line on each axis has a number assigned to it. x-axis numbers increase as you move from left to right. y-axis numbers increase from bottom to top. Another way to visualize this is to think about the old Milton Bradley game “Battleship.” In that game, the location of each ship was fixed on a grid that had numbers along one axis, and letters along the other (“B-7!” “You sank my battleship!”) Here, both axises have numbers assigned.

Now, the coordinate system we’re discussing here doesn’t start with y-axis “1” at the very bottom, and x-axis “1” at the far left of the page. Instead, the coordinates in a 3d system use both positive and negative numbers. Dead-center from left to right is x-axis “0.” Dead center from bottom to top is y-axis “0.” The very center of the page is coordinate 0,0, meaning the spot is at 0 in x and 0 in y.

If you were to move exactly one square up from 0,0, you would find yourself at positoin 0,1, meaning x-axis 0, y-axis 1. Move one square to the right from there and you’re at 1,1, or x-axis 1, y-axis 1. One important thing to remember is that the first number will always refer to the x-axis position, and the second will always refer to the y-axis position.

Any y-axis position below 0,0 will have a negative y value. Any x-axis position to the left of 0,0 will have a negative x value. To see what I am talking about, go back to position 0,0. If you move one square down, you are at position 0,-1, or x-axis 0, y-axis -1. One square to the left of that is -1, -1, x-axis -1 and y-axis -1.

So far we’ve only discussed two axises, the x and the y. Every 3D system requires a third axis, the “z” axis. While x and y arrange things vertically and horizontally, the z axis tells you where things are from front to back, or how close they are to the imaginary viewing plane (assuming you are viewing 3D space from the front).

To understand the z-axis, imagine the sheet of graph paper we just discussed, only this time think of it standing straight up, like the wall of a building. The y-axis will move from bottom to top, literally. The x-axis will move from left to right. Now imagine a series of these graph sheets arranged in a row, one in front of the other. Position 0,0 on any given sheet would be directly in front of or behind position 0,0 on the next sheet over. Each sheet would represent a number on the z-axis. In the very middle of the sheets we would have z-axis 0, and the point at the very center of that sheet would be position 0,0,0, or x-axis 0, y-axis 0, z-axis 0. In computer graphics, position 0,0,0 is also referred to as the Point of Origin, or just Origin. Move one “sheet” forward from 0,0,0 and you’ll come to location 0,0,1, or x-axis 0, y-axis 0, z-axis 1. One sheet behind 0,0,0 would be 0,0,-1.

Remember, x is always first and y is always second for any given 3d coordinate. Z, the final axis, is always last. To remember which axis is refered to by any number in a 3D coordinate, just think of the “slots” for the numbers going in alphabetical order. Simple as x, y, z!

Just to see if you’ve gotten these concepts down, let’s take a short quiz (I know, a quiz is not fun, but this is a textbook, after all).

  1. What are the coordinates for the Point of Origin?

  2. What are the coordinates for the point one space above the Origin?

  3. What are the coordinates for the point one space to the right of the Origin?

  4. What are the coordinates for the point one space in front of the Origin?

  5. What are the coordinates for the point one space to the left, one space below, and one space behind the Origin?

There. That wasn’t too bad, was it?