C++

Hey all,

I was wondering if there is any c++ used when doing a job like a technical artist?

Greetz

I use c++ sometimes, but it is not very effecient in regards to development time and the ability for others in the team to edit the tools.

Plus plugins etc have to be recompiled every release, and even making quick changes requires yout to recompile etc.

So I only use it when I have no other choice, i.e. when maxscript can’t do something or is too slow.

I don’t think you should put a lot of efford in learning c++, if you are a T.A., unless you feel you really want to know it.
The times I used it are quite rare, and I don’t think it justifies the amount of time it takes to learn c++ and the various SDKs of 3d apps.

(Keep in mind, c++ the language, is very simple to master, mastering an applications SDK or even win32 or dot net takes soooo much longer)

-Kees

There can be - but it’s certainly not required. In my experience most Tech Artists are just that – technical artists. I use MaxScript, Mel, C#, Python, Lua, or whatever comes up. If C++ was required I would have to study up a bit!

~Alex

[QUOTE=Nysuatro;2998]Hey all,

I was wondering if there is any c++ used when doing a job like a technical artist?

Greetz[/QUOTE]

It totally depends on what type of technical artist you are and its required of you or not. I don’t write C++ as part of my job, but I understand it enough to see whats going on with code, which can be very useful. If you did know C++ its an extra advantage, its going to make you more flexible and thus more useful.

It also might take you further from art than you may like, it depends on where you want to head

It’s just because I get C++ on my school and we go very in detail. using the standard librarys, dirextx, … So I was hoping I could use this in the future because I like coding in C++. But I guess I will get faster result with scripting.

Definately comes in handy, specially if you try to muck around with the game code itself to write prototypes of features or bug fixing.

Maya plugins are also in C++, overall rule of thumb is the more languages you know the better off you are. Because something might be hard to do in C# could be a breeze to do in Python, something hard in python can be easy on Perl, it’s all dependent on the problem so the more you know the best of a swiss army knife you are

Yeah it seems nowadays alot of at least the tech artist focused tasks can be done in languages other than C++. Even plugin level stuff (Maya, Blender, Lightwave) can be done in Python now, Max and XSI are all about the C#/.NET stuff, etc. That said, C++ is still a fun language and definitely worth at least being able to read code.

Thx for the replyes.

And what about weblanguages. Xhtml, javascript, php, …
Do you guys sometimes make webapplications as tools for the pipeline?

Well if you are in school and are already getting c++ classes, then I would take advantage of them and learn the language.

I bet they pay more attention to the libraries like directX and dot net etc simply because that is where the realy studying is. (C++ the lanuage is not much to talk about)

I only use PHP for web languages.
It is very very easy to master if you are already familiar with another script language, so I’d first put your efforts in becoming familiar with another lanuage, like maxscript, Mel, Python, stuff like that and then pick up PHP once you need it.

It will take you maybe 2 days to learn the basics of PHP :slight_smile:
(If you are already familiar with other scripting languages)

Yea, I don’t fully know C++ but I know it enough to debug my work in .Net and tool around here and there. It’s also very helpful when you don’t always have access to a programmer and you can help artists around you figure out why or how they could possibly be breaking the game. Also, yea we do have plugins that sometimes need modification or recompiled to newer versions of 3dsmax and that is of course C++.

Javascript is also handy for automating processes for Photoshop. There are some tools here in there that we have done for PS when needed. Whichever language is exposed to an art creation application is handy to know. But like Kees said once you get a handle on some of the other scripting languages the rest is rather easy to pick up.

I might be able to chip in to this since we go to the same school. The basic idea is that we learn c++ instead of any scripting language. Since c++ encompasses alot of practices found in pretty much every other language. The theory is that we can pick those languages up because we have extensive knowledge about c++ (template functors for example). Even though the languages are different our c++ experience and programming “skill” could help us pick up new languages faster.

To put a spin to this topic, would you think c++ is a very good base to build upon or would another language be more suited as a base to learn other languages?

My experience reaches till maxscript and basic python atm. I would say the syntax of maxscript took a few minutes to get a feel for but actually building something might takes hours of searching the help for what i need.

I consider c++ a key skill for any significantly involved pipeline. While FBX and other formats have become very robust, there are reasons those plugins are written in c++, and if you stumble upon similar problems, you simply must break out into a more powerful environment. I, however, believe that in these cases you must treat C++ much like C is treated in python, as an atomic component that has been pushed into a lower level language for very specific benefit. I strongly believe overall flow should be orchestrated in scripting languages, because iteration and accessibilty are easier.

To gungnir specifically, computer science, more than c++, will give you insight into why various systems work the way they do. You may be able to look at Maya’s DG, or XSI or Max’s object models and grok them with no trouble, but what it will not teach you that the scripting interfaces to these apps will is the intended workflow of these apps. You will find that the script is reflective of the user experience, and is literally how that is grafted to app’s internal workings. That is a lot to pick up, and in my opinion why so many TA’s work exclusively in scripting languages, because their job matches the language, to graft art to tech.

Well C++ and the things you do/need to do with C++ are certainly more difficult than with other languages. We hired a bunch of new gameplay programmers and were looking for C# skill, but what we (I say we but I mean the other gameplay programmers, I wasn’t involved) was that a lot of the guys who knew C# but not C++ “didn’t know what the fuck they were doing.” C++ definitely teaches you what is going on behind the scenes more than other languages.

Which is why, as a TA, you shouldn’t bother learning C++. C# is the de facto language for tools, for reasons pointed out. Python is extremely powerful for tools as well, and is becoming the de facto scripting language in 3D. There are very few reasons you’d need to know C++ to be a great TA, outside of SDK plugins, which good TA’s know to avoid, and which are becoming less necessary and more obsolete. The fact that you are learning it, well, you may as well learn it now, it can’t hurt, and it is the ‘lowest common denominator’. I just think it is overkill.

You will be able to do some cool things knowing C++ that other TA’s won’t be able to do, for sure. And maybe I’d hire someone with C++ skills over someone without. But I’d encourage someone to learn a variety of languages to accomplish more varied tasks rather than learn something as ‘niche’ (for our needs) as C++. I’d be much more impressed by a C# class that downloads something, a MAXScript that modifies it in some way and renders the change, launches a Python script to composite it into some images, and a PHP script that puts it back online, over an SDK plugin that did the same in C++. Doing it in C++ shows you know how to accomplish a task- doing it seamlessly through 4 different languages and environments shows you know how to adapt and think on your feet.

I just don’t see a need for it outside of SDK’s, and that is a fringe case (and obsolete in some cases). The only fundamental reason is for performance, which is far less of an issue than code maintainability for TA’s, and as Kees pointed out, C++ is your worst bet for maintenance.

Lithium probably makes the best point on the thread, there really is no substitute for knowing how a package wants you to work within its sandbox. As anyone who has had to clean up MEL code that was written by a non-MEL/Maya savvy programmer can tell you, the difference is obvious.

1 Like

I’ll second that. I’ve had to deal with an awful lot of Python and Maxscript code written by C++ coders who thought “Well, it’s just a scripting language” and produced C++ style code.

You know the sort of thing, huge blocks of code mirroring built-ins, semicolons :rolleyes:

It’s a nightmare.

I agree with Rob Galanakis

Python is extremely powerful for tools as well, and is becoming the de facto scripting language in 3D.

If i would recommend a language to learn from it would be Python…

You will only write a hand full of plug-ins that use SDK, API, and need to be written in C++

Majority of the tools you will write will use Maxscript or mel script, and since python can call mel commands, maxscripts, and access the API (in Maya) it just seems like the best option. While writing good python scripts you will learn MEL and maxscript at the same time since you will have to call the commands through python


import maya.cmds as mc
mc.polySphere (name='mySphere', radius=3, subdivisionsX=5, subdivisionsY=5) 

[QUOTE=JAMsession;3039]While writing good python scripts you will learn MEL and maxscript at the same time since you will have to call the commands through python
[/QUOTE]

I would caution people against using maya.cmds to learn python, however. maya.cmds is not at all pythonic and will not teach you good python, you’ll basically just end up doing MEL with python syntax (i should trademark that phrase). If you have to bandwidth to support external code and you’re set on using Maya as your springboard into python, definitely take a look at Pymel.

Pymel on Google Code
Pymel on highend3d

Unless the project you’re working on ABSOLUTELY REQUIRES python in maya and you don’t have time to properly learn python, obviously do what you have to do, but take the time afterwards to learn Python properly. Otherwise find a good framework for learning Python and do it the right way.

[QUOTE=djTomServo;3040]I would caution people against using maya.cmds to learn python, however. maya.cmds is not at all pythonic and will not teach you good python, you’ll basically just end up doing MEL with python syntax (i should trademark that phrase). If you have to bandwidth to support external code and you’re set on using Maya as your springboard into python, definitely take a look at Pymel.

Pymel on Google Code
Pymel on highend3d

Unless the project you’re working on ABSOLUTELY REQUIRES python in maya and you don’t have time to properly learn python, obviously do what you have to do, but take the time afterwards to learn Python properly. Otherwise find a good framework for learning Python and do it the right way.[/QUOTE]

I completely agree with you on learning python elsewhere, but I find maya.cmds to be a much better way to work in Maya than using Mel. I haven’t found anything that I couldn’t do in python better and I don’t have to worry about silly things like end markers and mis-declaring variables that get stored into memory incorrectly.

Hey,

This is an interesting topic. I generally don’t encounter too many TA’s that know C++ and in most cases I think companies have a pretty good separation between programmers and tech artists, in the sense that the C++ is left up to the programmers and tech artists tend to handle tools either using built in scripting languages or C#. I personally went the route of learning C++ and I use it very often, but I think its more important to really understand programming principles, overall CG math concepts and most importantly be able to solve a wide range of problems using whichever language works best.

For me personally I dont really care about learning every detail of a language and becoming a C++ or python master…its more about using the language to solve problems. I really just think of programming languages like tools. Sometimes I use C#, sometimes python & if I want to quickly create a sphere there is no better language than MEL :slight_smile:

Obviously some languages are better suited for certain tasks and most of the time if I’m creating deformers (quite slow in python) or openGL based plugins (contexts, locators…etc) I’ll write them in C++.

The big disadvantage to having so many tools in C++ is that any TD’s we hire now really need to have a good knowledge of it in order to really support our pipeline. This just limits your candidates based on a language :frowning:

Cheers!

Great news then. Because on the other hand I don’t want to waste my knowledge of C++ when I am done with my education. I will be studying python and maxscript but I still want to use C++. I guess now it will depend where I will be working in the future.

It is still to early for me but what would you suggest to do for preparing for an internship as an TA. Or would it be much better to first have experience like an artist ?