sprockets Live Answer Time Home Page Featured Free Models spotlight Rigged Spider Tinkering Gnome's Workshop
sprockets
Recent Posts | Unread Content
Jump to content
Hash, Inc. - Animation:Master

Becoming a graphics programmer


Roger

Recommended Posts

  • *A:M User*

I'm interested in dabbling in graphics programming, in the hopes that I might some day be able to write my own useful plugins for AM.

 

For the programmer AM users out there, any recommendations where to start, if you're starting from ground zero basically? I've had math up to Calculus I and II but never really grasped it like I'd have liked, and it's been years since I've done any algebra more complex than x+y=z.

 

I've written some C programs way back when I was in engineering school but never anything more than 100 or 200 lines, just little utility type things basically. And DOS batch files, if those count.

 

I don't think I will be jumping super deep into things just yet since I need to make finishing my movie my priority, but I think it might be fun to try.

Link to comment
Share on other sites

  • Replies 8
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

  • Hash Fellow

Actual graphics programming, the rendering stuff, is pretty severe, but someone is doing it so it must be learnable, right?

 

I don't know if enough of the renderer is available through the SDK to so actual graphics changes in A:M. I have no idea.

 

 

However, I'll note that most A:M plugins aren't really doing graphics, they are doing data manipulation.

 

For example TSM2 is just searching through all the data structures in a model (bones, constraints, etc.), finding the ones it is looking for and inserting new ones in the right places between the old ones based on some text instructions it has.

 

No real graphics, but good work being done by data manipulation which is much easier than graphics.

 

If you remember my series on "Painting with Light", that was sort of a human version of data manipulation, doing it in a text editor rather than programming the equivalent steps in C++

 

 

I recall there is a very specific compiler environment you need for A:M plugins, but someone else will need to fill in the details on that.

Link to comment
Share on other sites

  • Admin

Roger,

Like you I've had an interest in programming.

Perhaps unlike you, I'm not sure I have the capacity for it.

 

Robert has hit on several useful thoughts.

I'll add that with A:M plugins it might help to work from the goal backwards.

In other words, in your estimation, what might an A:M plugin that you would like to program actually do?

The answer to this will refine your focus so that then it becomes mostly a matter of wrangling that idea into the proper formatting and then (assuming it will be a plugin) compiling it for use with A:M.

 

If trying to tackle graphics manipulation and if I could start from scratch all over again in my efforts to press into programming I might focus on studying code that currently exists and manipulating it to achieve similar but different results. The end product isn't a plugin but if it achieves the desired goal it doesn't have to be. Specifically, I might use a program like 'imagej', which is written in java, and study how some of it's code operates. Of late, I have been sorely tempted to study the source code of 'Opentoonz' because it uses a lot of processes I'd like to be more familiar with and a better understanding of that code (written in C++) would surely be useful down the road. The nice thing about the Opentoonz code would be that you can take it... modify it... compile it... then smile/frown depending on your results.

 

Aside1: There isn't a lot of public and active sharing of A:M plugin code. It might be best to put a focus on one of these other coding projects that is highly active. Then you can come back and give A:M plugins research and development a much needed boost. :) But here again, the question might be; what is it that you need your code to accomplish?

 

Where I believe I messed up...

When I first thought of writing an A:M plugin I should have gotten the source code of a current plugin and then just compiled it. Then 'First step' = Done.

Steffen use to have a sample plugin (two actually if I recall) and while they didn't do much of anything, if they were successfully compiled and run, the process of writing a plugin was experienced and therefore better understood. This is not unlike those exercises with many programming languages where the first project is to create a program that successfully processes 'hello world'. I believe the sample plugins are still distro'd with the SDK but I'd have to check.

 

I've convinced myself that modifying a few of A:M's current plugins might be a useful exercise but not much of the code is shared... so... if you ever do become an A:M plugin writer I'd like to suggest releasing the code so that other can learn. IN modifying a plugin, we might consider how we can take the currrent plugin (say the Font Wizard) and have it point to a text file for its source for text (rather than obtaining that data from the text field in the dialog box. Why explore that modification? What is to be gained? While there are several potential benefits one primary gain might be so that the source text used with the Font Wiz can be archived/stored. In considering this alternative present themselves. Perhaps a cache could be used to store more than one text source (without external text file). Perhaps the plugin might store a number of text entries and the user could then select from those?

 

Aside2: Make sure you save a bit of energy for the tail end of your plugin namely that of success where the plugin does something useful but users request changes or modifications to make it even more useful. How much maintenance are you willing to put into the plugin to keep it maintained... optimized... operational?

 

Given the amount and complexity of code that exists in the world of graphics programming I do think it's important to narrow the focus by determining what you actually want to accomplish in writing a plugin for A:M.

It may be that you can more easily accomplish the same thing without writing any (or at least much less) code.

 

 

*If just dabbling, I highly recommend leaning into programs like 'Imagej' and it's many offshoots and/or 'OpenToonz'; Imagej for exposure to graphics programming and Opentoonz for the exposure to C++.

I'm confident that as you begin to successfully program with those programs you will soon be able to create very useful A:M plugins too. There are many other programs you could delve into but I see in those two a whole lot of coding experience and functionality to build upon. .

Link to comment
Share on other sites

  • Admin

There are a lot of sites that cover some of the technologies that are on the cutting edge.

Some of those can be shoehorned into simpler approaches or their results approximated.

 

In addition to the tech sites of the major animation companies I like check in on from time to time there are sites like this:

 

http://jcgt.org/read.html?reload=1 **

 

There are two basic approaches when browsing through information like this. The first is to try to implement the idea 100%. The second is to use the information as a springboard to explore your own ideas.

The downside of research into cutting edge technologies is that folks tend toward feature envy, which leads to a desire for features few people need.

The exercise in bringing such things to fruition isn't entirely futile but the return on investment can minuscule.

 

The underlying idea of watching sites like these is to survey ideas and apply what is discovered to your own interests.

 

**While there are a lot of interesting articles at this site the one that immediately caught my attention was Mappings between Sphere, Disc and Square.

My interest being that of forming more of a universal (one size fits all?) approach to decaling and mapping in my own work.

Other articles hint at areas that I think I know something about but see that I need to study more such as Interpreting Alphas.

None of these are particularly suited for plugin development but the information related to graphics programming is certainly relevant.

Link to comment
Share on other sites

  • Hash Fellow

I recall the last time I set out to learn C++ I tried and tried and tried to get the "Hello World" program to compile but couldn't do it.

 

Later I found out on a forum that the directions in the manual were wrong. :facepalm:

I haven't gone back to it since then.

Link to comment
Share on other sites

the one that immediately caught my attention was Mappings between Sphere, Disc and Square

...

None of these are particularly suited for plugin development but the information related to graphics programming is certainly relevant.

I'd say UV mapping techniques are perfect problems for plugin development.

Link to comment
Share on other sites

  • *A:M User*

Posting on a break here: some good ideas, I will need to check them out.

 

I have a couple ideas for things I'd like to try, in the realm of post filters or maybe something that can randomize the "greeblies" you see on a spaceship. Although someone may have already come up with that and I'm just not aware of it.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
filmstrip