Yeah, it looks like you have the right idea JLV in your summary of suggestions. I would say that if you are pressed for time and you really need to prioritize, learn C first. I really believe that even though C has pointers, if you have good introductory texts in C you can start in C no problem. C has been around for awhile now and many of the new authors are aware how to properly teach the concept of pointers and their appropriate usage.
I would get atleast three texts on C. Get one reference text which just lists all the functions of C, one layman’s text which attempts to ease the pain of learning basic C concepts, and one other advanced C learning text which gives exhaustive in depth explanations for C concepts. This way, you read the beginner text on C. If there is something you still don’t understand, you go to the more in depth text. Once you are programming in C, you use the reference text to get to functions that even an advanced teaching text would not include(perhaps the functions come too close to redundancy). I think C++ is a bit over-hyped these days. Yes, Object Oriented (OO) programming has some advantages, but procedural programming for the most part can accomplish many of tasks done in OO languages with less confusion. I believe we lose many potentially great programmers because they took an OO class like C++ as their first class instead of C and became hopelessly confused or discouraged. For your own sake, learn things one step at a time. Learn C before you learn C++.
As mentioned earlier, C is the language which many other graphics-specific languages resemble. RSL looks like C, the original renderman scene description is C, and I believe Mental Ray is C. If you were to read the “Renderman Companion” without knowing C, you would most likely be lost. By learning C, you would be killing the most birds with one stone - so to speak.
Next I would learn either RSL or C++. C++ will allow you to work more with 3d software API’s. I believe both Maya’s and 3ds Max’s SDKs are C++ oriented. You may not get tangible results as fast as scripting, but again, you shouldn’t have trouble moving from one software API to another because they both will be using C++. With scripting, you are almost going to have to start from scratch again, because you can’t make any assumptions about the nature of the scripting language. MEL is not Maxscript. Eventually, you will want to learn scripting because it’s often faster to throw some scripted code together. By the time you have learned C and C++, learning scripting will be a piece of cake.
As Rendermaniac has said," - there is almost no way of getting away from it!(RSL)". Since you just learned C you would easily flow into RSL and the C API for renderman scenes. There are so many influential computer scientists(who are suprisingly accesible) that use renderman and many renderman compliant renderers strive to include the newest rendering technology. On top of that, the renderman support base is strong. Renderman also seems to be the best of the few open doors leading to visual effects production house techniques. Many effects houses use renderman compliant renderers for their shots and speak in renderman-ese when they give behind-the-scenes technical presentations and explanations. Renderman is probably the closest thing to a postscript/universal language for rendering.
If you are not pressed for time then I would start at the beginning (or close to it). Get a text on the basic workings of a primitive computer and how assembly language/machine code works with the microproccesor. You don’t have to study this in detail, just an elementary understanding will do. Once you have this knowledge, C pointers and addresses will make more sense. What’s the point in all this? If you want to understand the core of programming, eventually, you have to study hardware.
Before you study C++, read a book on the Object Oriented philosophy. By studying the philosophy separate from the rules of grammar and syntax in a particular programming language, the student can more easily pick up any OO language. Why? because the underlying OO concept is the same for all OO languages. Unified Modeling Language (UML) is a way (sort of) to study the philosophy of programming, but it can get into cumbersome rules as well. It is a good way to approach programming design though.
So I recommend:
A.Bare minimum
- C
- C++
- Renderman
B.With all the time in the world
- Hardware/Software general knowledge
- C
- Object Oriented Philosophy
- C++
- Renderman
- Scripting
)