PDA

View Full Version : Where to get Autodesk Plugin ID


ArrantSquid
09-07-2010, 08:03 AM
Do you need to be a part of their developer network to get a Plugin ID? Or do you just email them? I've scoured their site for some semblance of information on it, but came up at a loss, so I'm not sure where to go from here. My plugin isn't completed yet, but I was going to start giving it out to some folks to test it, but don't want to risk having a conflict of ID's or even have someone use it and then have to change the ID. Thanks.

Robert Bateman
09-07-2010, 11:25 AM
Do you need to be a part of their developer network to get a Plugin ID?
Yes.


.... Padding to make up the min word count for cgtalk

ArrantSquid
09-07-2010, 11:36 AM
LoL @ the padding. Thanks for the reply. Appreciate it much. :)

chadmv
09-07-2010, 07:58 PM
Actually, you don't need to be part of the Developer Network. I just emailed them and they sent me my own range.

ArrantSquid
09-07-2010, 08:29 PM
Really?!? Just through their contact form on their site or did you contact a specific section? I've got a couple of nodes I've created that I'd like to put out there for everyone to use if they want 'em - when they're more complete - so I'd like to be legit, so I'm not screwing with someone else's id.

As an aside: Chad your work is an inspiration. Not trying to sound fanboyish, but your reel blew my mind and made me realize how little I knew. It's pushed me to learn Python and the Maya API, though, because I realized how much more I could do simply by using those tools.

Bolt1
09-08-2010, 07:12 AM
Do you need to be a part of their developer network to get a Plugin ID? Or do you just email them? I've scoured their site for some semblance of information on it, but came up at a loss, so I'm not sure where to go from here. My plugin isn't completed yet, but I was going to start giving it out to some folks to test it, but don't want to risk having a conflict of ID's or even have someone use it and then have to change the ID. Thanks.

You mean a plugin's classID method? You can call genClassID to generate your own random ID.
The docs say you can even do it straight from MAXScript.

Gravedigger
09-08-2010, 08:04 AM
no what he means is the id you need when registering custom plugins in maya, not max

when releasing plugins you need to get your own id range to prevent having plugins using the same id. if they would, it would mess up maya

Bolt1
09-08-2010, 01:09 PM
no what he means is the id you need when registering custom plugins in maya, not max

when releasing plugins you need to get your own id range to prevent having plugins using the same id. if they would, it would mess up maya

Well, that's interesting, because I don't ever recall using a pluginid for Maya. The OP must be using a
different kind of plugin interface than me. I've written import/export plugins before, but haven't gotten into
writing tool plugins yet. It sounds like a pain to get!

ArrantSquid
09-08-2010, 03:19 PM
It's probably the type of plugin you created vs the one that I'm creating. Because I'm creating nodes, they need to have unique ID's attached to them so they can be created and destroyed. Here's the doc on it: MTypeID (http://download.autodesk.com/us/maya/2011help/API/class_m_type_id.html)

I've contacted Autodesk, but got a reply that I didn't warrant support. :/ Not really sure why, but maybe I didn't provide enough info or something. I'll give them a call and see if I can get further with them that way.

chadmv
09-08-2010, 03:23 PM
I think you need to be a professional developer either at a studio or that intends on selling the plug-ins. And thanks for the earlier compliment!

ArrantSquid
09-08-2010, 03:47 PM
I think you need to be a professional developer either at a studio or that intends on selling the plug-ins. And thanks for the earlier compliment!

Well that's a bummer. :/ Hopefully I'll get picked up by a studio and then I can join those ranks and put the stuff I've been working on out for other folks to use.

As far as the compliment goes, it's the least I can say. I saw your work about 3 weeks into this current quarter (my last quarter) and I was just blown away by the tools you created. It really made me re-evaluate what I brought to the table to potential employers. So I sat down for a weekend and hammered through some Python stuff and I haven't written Mel since my midterm. It really pushed me to expand what I was doing in a hurry (I had planned on learning Python and then C++ & C#, but hadn't planned on doing it until after graduation). I think it's definitely going to help my reel.


I graduate in 2 weeks, so I'm gonna get back to that reel, but thanks to everyone for their input! I appreciate it. :)

Gravedigger
09-09-2010, 07:55 AM
yeah same for me here. i'd want to do more witht he maya api but it quickly gets lost when doing a lot of projects. but, as you already said it, i will do more for the reel :D

i really love the combination of renderman maya api and rsl shaders. like this i can practically output whatever i need with very good performance

didn't expect it to be that difficult to get the ids. well....you could still release your plugins with random ids but make sure you let the downloader know that because it can in some circumstances make problems with your maya scenes.

if autodesk does not give ids to developers they will start using random ids which will mess up maya scenes which will then damage autodesk's reputation

and yes import/export plugins are not nodes. because of that they don't need an id. when you save a maya scene the nodes id gets saved. if two nodes have the same id maya will load one or the other which in 50% of the cases will make problems

ArrantSquid
09-10-2010, 01:34 AM
yeah same for me here. i'd want to do more witht he maya api but it quickly gets lost when doing a lot of projects. but, as you already said it, i will do more for the reel :D

i really love the combination of renderman maya api and rsl shaders. like this i can practically output whatever i need with very good performance

didn't expect it to be that difficult to get the ids. well....you could still release your plugins with random ids but make sure you let the downloader know that because it can in some circumstances make problems with your maya scenes.

if autodesk does not give ids to developers they will start using random ids which will mess up maya scenes which will then damage autodesk's reputation

and yes import/export plugins are not nodes. because of that they don't need an id. when you save a maya scene the nodes id gets saved. if two nodes have the same id maya will load one or the other which in 50% of the cases will make problems

Yeah, I think what I'll end up doing is exactly like what you said, notifying the user that it's not an approved Autodesk ID. I don't think that it'll hurt Autodesk, because most plugins that are developed are by professionals, but it doesn't say much about their willingness to work with the "small guy". The other thing I'll probably do is use an ID within the range that autodesk has for nodes that are used for internal testing. By doing it that way, I can guarantee that the ID will not conflict with another paid plugin (although it could conflict with an internal one, but again, they'll be notified about that anyways). :) Back to the reel!

ThE_JacO
09-10-2010, 03:05 AM
didn't expect it to be that difficult to get the ids. well....you could still release your plugins with random ids but make sure you let the downloader know that because it can in some circumstances make problems with your maya scenes.

if autodesk does not give ids to developers they will start using random ids which will mess up maya scenes which will then damage autodesk's reputation
Don't quote me on this, as it might be dated info (I haven't been informed otherwise though, and I only mean a year or two dated), but long before AD bought out Alias, and long after, the Maya team wanted to keep tabs on development, and to release anything more than some scripts, you would need an AD developer license.
It used to cost a pretty penny as well, but it's been taken down several times since.

They obviously made exceptions for people releasing OSS or freebies, but they made those exceptions by releasing a free development "permit" to those people, not by just giving away the IDs (which are an obvious control mechanism, because if they didn't want to be keeping tabs they could have just used GUIDs or another similar mechanism like XSI or Houdini).

All that said, I haven't found them unreasonable or uncommunicative, and they got a lot better since the AD acquisition (Alias under SGI was way worse on such things than AD is). If you feel you can contribute to the community of their userbase, and commit to releasing tools or tutorials for free, just keep pinging several venues until you find someone who listens, and you will get some help.

Releasing stuff that requires an ID without the dev license, in theory, used to be not-too-legit. People used to loan an ID from work or from friends some times, but that's not exactly by the book either.
I have never heard of SGI or AD chasing that up with anybody though, it'd be bad karma for their business, but still, if you care about full legitimacy, it's best to get in touch with them.

I'll see if I can get in touch with somebody who knows for sure to confirm. I've always had access to dev resources at work so I never really had to concern myself with the issues much. Take my post with a pinch of salt.

ArrantSquid
09-10-2010, 07:14 AM
Thanks for the heads up on all of that JacO. Here's the response I got from them when I emailed them after Chad said to email them:
Thank you for contacting Autodesk with your support request.

We have reviewed your account status and have not found a valid support entitlement for your product.

I'm a student using the student license, so while I understand their point about support, I wasn't looking for support. I just wanted to release some stuff for other folks to use (as I have in the past with my scripts and my QT Tutorial - which was great at the time, but after learning Python it's meh). I don't want to make any money off of it, I'd just like someone to say, "Hey that's useful," and use it. I like being part of a community and helping out where I can, so that's all I really wanted to do. :) Nothing I'm doing is mind blowing, it's just helpful stuff that I use and I thought other folks would be interested in.

I did email their students department after I got that email though, requesting the same thing so hopefully, as you said, I'll ping enough venues to find someone who will help. I also posted on The Area as well, but only got a response of, "Anyone at Autodesk can do that for you," which was good to know, but not helpful in the way of finding out who. :) I did get an email back from the student folks saying they were looking at my request, so eventually it'll end well for me - as I'd like to be legit before releasing anything. I also posted to their student section of their website, but haven't heard anything on there either. I figure if I post enough places someone will take notice and give me a contact name or something. :)

Until then, I'll just "Keep on Keepin' On" like Joe Dirt. Again, thanks for the added info and any info you can come up with would be wonderful.

ndeboar
09-22-2010, 12:53 AM
Good luck! I'm going to realese some shaders in the next couple months, so I'll have to go through the same fun. If you have any tips when you "finally" get one, i'll love to know.

rebb
09-22-2010, 05:06 PM
Oh god, this topic, it makes me rage every time.

I wish they would just drop this system, it just blocks people from possibly improving the software.

Makes the whole idea of "Maya is so easily extensible" a bit of a farce.

I'd also be interesting in any news regarding your request.

Btw, it's probably better to ask this in the Maya Section here, there are some Autodesk People roaming that section, and i'm not very sure they are roaming this section here too.

ndeboar
09-24-2010, 12:22 AM
emailed autodesk, got 128 plugin ids 12hours later. Can't complain about that.

ArrantSquid
09-24-2010, 08:38 AM
emailed autodesk, got 128 plugin ids 12hours later. Can't complain about that.

@ndeboar: Did you email anyone specific? I got wrapped up in my reel (as I should be) so I stopped my attempts and didn't pursue it any further. I'm done with it now, so I want to get back on it. :) Thanks for any help you can provide. (BTW, your work is sweet! Really love that ladybug and snail image. :) I've never done a node shader, but am curious about them. Got any good resources?)

@rebb: I understand where you're coming from with that, because it is a bit of a pain it would seem (at least my initial attempts for it were a pain), but Maya is fairly extensible because of it. I think they'd be better off with a different system of course, but I suppose they've got a reason for doing it the way they are (even if it's just a "it's not broke so don't fix it" mentality).

rebb
09-25-2010, 05:05 PM
emailed autodesk, got 128 plugin ids 12hours later. Can't complain about that.

Are you also on a student license like Pneumonic ?

ndeboar
09-27-2010, 01:11 AM
No, I'm not part of any special network or anything, I didn't even send my Maya licence in my request.

Here are the emails:
http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=473880 (http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=473880)

your work is sweet! Really love that ladybug and snail image. :) I've never done a node shader, but am curious about them. Got any good resources?

Cheers man. What do you mean by node shader, like hypershade networks?

ArrantSquid
09-29-2010, 12:47 AM
No, I'm not part of any special network or anything, I didn't even send my Maya licence in my request.

Here are the emails:
http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=473880 (http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=473880)



Cheers man. What do you mean by node shader, like hypershade networks?

Thanks for that! I'm gonna email them right now. :)

I apologize for my poor wording in my question. I know how to assign textures and create shader networks, but my skill is limited. However, my actual question was in regards to creating custom shaders for doing thinks like SSS, Mandelbrot textures and things like that. Honestly, any type of info you can throw my way is appreciated because my shader experience is pretty limited. I've focused more on the rigging, scripting, animating side, mostly because my modeling skills are pretty lame. (Everyone always tells me I can get better, but for me I'd rather get better at what I am good at doing, because that's my thing. There are modelers out there that I would kill to have the talent of, but then again, they don't have the toolset I have, so it works out in the end - as far as a pipeline experience goes.)

ThE_JacO
09-29-2010, 04:26 AM
@ndeboar: Did you email anyone specific? I got wrapped up in my reel (as I should be) so I stopped my attempts and didn't pursue it any further. I'm done with it now, so I want to get back on it. :) Thanks for any help you can provide. (BTW, your work is sweet! Really love that ladybug and snail image. :) I've never done a node shader, but am curious about them. Got any good resources?)
Shader writing is entirely dependent on the rendering engine, only the UI/interfacing part is remotely related to the 3D app it needs to be exposed in, and that's normally trivial and rather small compared to the time it takes to write a dso for renderman or a shader for MRay.
If you're after examples and docs, you should look for the appropriate ones based on the engine, not maya/soft/houdini or whatever else :)

@rebb: I understand where you're coming from with that, because it is a bit of a pain it would seem (at least my initial attempts for it were a pain), but Maya is fairly extensible because of it. I think they'd be better off with a different system of course, but I suppose they've got a reason for doing it the way they are (even if it's just a "it's not broke so don't fix it" mentality).
The reason is control over release coming from the alias/sgi times, nothing else :)

Every single software out there other than maya that I can think of uses some form of uniqueID that doesn't require issuing from the software provider, simply generation of a pseudo random key that is complex enough to statistically guarantee uniqueness.

This is true for a lot of other software development/deployment environments too actually, some of them using the same device across multiple systems (see GUIDs), and to date there have been 0 recorded instances of a clash even when extremely large numbers of such IDs are involved.

Maya is fairly extensible, true, but house issued unique IDs in ranges are a pain in the ass with no valid reason to exist from the user's point of view (it only affects public releases anyway, it doesn't really limit its extensibility, I guess the extensibility farce comment was just a bit of frustration showing through, which quite a few people share actually :) ).
They bring no real benefit, just annoyances and release difficulties.
If it was more than a matter of a few days to replace it with another system, it'd mean a somewhat fatally flawed codebase in first place.
They could just make the ID generator available anyway in that case, with an AD userID based seed if they really wanted to keep an eye on releases.

ArrantSquid
09-29-2010, 11:56 PM
Thanks for the reply ThE_JacO. I guess I'll look up the docs for the Unreal Engine and start there. Or would it be better to start with something like Renderman or Mental Ray? I thought Renderman had a trial license of some sort, so that'd be interesting to play with. I've read a bit on Renderman and their rib files but felt it was above my knowledge I had at the time.

Again, I do agree that it seems like a flawed system, created to control who does what with their product. That being said, the email provided by ndeobar got me 64 id's overnight. :) So thank you ndeobar for providing those. It was exactly what I needed.

ThE_JacO
09-30-2010, 01:55 AM
You can start with unreal engine if your focus is going to be games, for sure, but OGL/DX shaders tend to be a thing of their own, and have several flavours depending on platform, HW, libraries and all.

Renderman SL shaders, if you're interested in RMan are extremely easy to write, DSOs (pre-compiled ones) tend to be a fair bit harder to chew on, and require more than decent knowledge of C++. SL also requires, obviously enough, SL knowledge, but being those compiled transparently by the rendering engine the difference is sort of the same you have, in learning curve, between learning to script some tools in Python against pymel VS having to write a node against the cpp API.

MRay only offers the equivalent of DSOs, aka pre-compiled and requiring cpp knowledge, and the documentation, general accessibility and design of the API, and the general experience are commonly regarded as atrocious (they sure are by me :p ).

3Delight offers the first license for free, even for commercial use, and they are probably closer to the renderman standard than even Pixar is often times.
RIBs are "just" scene descriptors though, you normally don't write ribs (not by punching them in at least).

If your focus is character/rigging work though aren't you stretching a bit thin? Shading and rendering require a decent amount of domain knowledge to get anywhere with shader writing, making some assumptions based on your posts you're in for several months of hard work just to get over the basics I'd say.

ArrantSquid
09-30-2010, 02:35 AM
If your focus is character/rigging work though aren't you stretching a bit thin? Shading and rendering require a decent amount of domain knowledge to get anywhere with shader writing, making some assumptions based on your posts you're in for several months of hard work just to get over the basics I'd say.

Thanks for all the info. :) Yes I am more character/rigging based (with a focus on tool scripting) and yeah I probably am stretching it a bit thin, but I love knowledge and have a passion for learning, so inevitably when I find something new that sounds interesting I try to learn it. I, also, just graduated so I'm looking for a job now and I want to make myself as marketable as possible. This is my third career (Marine Corps and then Web Design/Development before this), so I just want to succeed in every aspect of it that I can.

I'm probably better off just focusing on my rigging, though, based off of what you've laid out. I only know Maya right now so I think I'm gonna tackle 3DS Max and try and port my auto-rigger to it instead of learning a whole new system/way of thinking with the shading/rendering. I'm kind of a glutton for punishment. I like taking on seemingly impossible tasks for myself and pushing myself to complete them. (I hadn't touched python and decided to try and write an auto-rigger in 4 weeks. It turned out great, but there was a lot of head banging going on. :) )

Thanks for the info and the reality check. I'm not a head in the clouds type of guy, but when it comes to something new or knowledge in general I get carried away. :)

ThE_JacO
09-30-2010, 02:59 AM
Don't get me wrong, nothing broadens your horizons like tackling different disciplines, and shading/rendering comes with a set of problems to be solved that you only touch on tangentially when doing rigging in the beginning (sampling, interpolation across large sets, estimators, determinism, aliasing, quantization, a chance for algorithmic complexity), but at the same time it also diverges from certain things that are key to rigging (user interface and interaction abstraction, viewport performance, scene graph troubleshooting etc.).

Later down the path they complement each other well, as shader writing/rendering gives you much better visual feedback and consequently learning tools for the above mentioned subjects, and when you start writing deformers and doing work of a certain quality they become important, but if you're relatively fresh I would suggest you cover character work well first, until you get to a point where you need a break, or you get to fundamentals better explored first through a different discipline.

IMO: Stick to Maya for a bit longer and work on your programming and math skills for a while rather than trying to port your efforts to max (which in regards to rigging and scripting is a rather unique and isolated beast).
At this point I've taught and lectured a fair bit on the subject (of rigging/character pipelines and programming), and my advice would be to evolve your autorigger into a process friendly API to support rig definitions and automated builds, and to catch up to what you need of lienar algebra and pre-calc, mostly transforms and interpolants respectively if you want a broad sketch of what to look at.

Building somewhat similar rigs with a patched-together macro style script in two apps isn't going to carry anywhere the same weight of an understanding of object design, implementation of various design patterns and maths in an interview, or at work for that matter.
Character and pipeline TD work of a certain profile and depth is also pretty rare outside of Maya and some Softimage, at least if you're shooting for the film/feature animation/TVC kind of jobs.

Games tend to be a different beast and max has excellent market penetration, but expect the character work to be rather limited and pipeline focused in there, as HW platform limitations put you in some seriously thick shackles over there.

Good luck either way :)

ArrantSquid
09-30-2010, 03:21 AM
I'm not sure why, but that whole post really bummed me out. I almost feel like what I've already done has been somewhat pointless and has been more of an exercise in futility than an exercise in skill or talent. :/ I may just be reading that wrong though.

Could you explain a bit more in depth by what you mean as far as "a process friendly API"? Do you mean allowing the user an almost unlimited amount of definitions for features, where they are then able to select said features based on their current task (with the ability to add features in later without breaking the rig or previous animation)?

And what about "automated builds"? Again I'm grasping at straws, but do you mean being able to setup a bash-esque queue system where the user selects a set of models, selects features for a rig and then automates the process of rigging the characters based on possible data within the mesh?

As far as the auto-rigger I currently have goes, (and I mean no offense, nor am I being defensive, I'm just trying to explain what I did) it is a bit more than just a straight copy paste of commands to build the rig. I know that after looking through many auto-riggers it seems that was the style and I wanted to try and provide something a bit more extensible, so I implemented most of it through procedure and oop calls so that it could be more extensible in the future. I'm not sure if this is still in that "patched together macro-style script" category, but I didn't think that it was. It very well may be, I just wanted to explain what I did to achieve my result to see if it is indeed what you're talking about.

As far as film/tv vs game, I really have no preference, but the market penetration here in Chicago is much more focused on Gaming than it is on Film or TV, so that's why I brought up 3DS Max. It's not that I'm against moving to get a job, I was just trying to become more marketable to this particular area since this is where I currently live.

Again, thank you for all of your insight because it really is helpful.

ThE_JacO
09-30-2010, 04:02 AM
I hope it was just circumstance and reading, because I sure didn't mean the post to be offensive.

Again, I'm (naturally) starting from assumptions, but if you've been at it for more or less a month coming to a new language and with no previous experience, the work might be staggering in that context, but there are also chances that it can be improved on considerably in terms of design and architecture, simply because a month is a fraction of the time it takes even an experienced TD to build a character API.

What I mean with process friendly API is building an "autorig" (God I hate that word :) ) not as a tool that can put a single rig together, but as a set of libraries that can be used to create and assemble different rigs, and building a set of tools and procedures on top of that to abstract a rig to a definition/configuration file, and build it automatically.

This is the way things are going in quite a few of the high end places that have some sense, and enough time and money to do it. Flavours and variations, architectural patterns and implementation obviously differ greatly between the various shops.
This is usually not -a lot- of money btw, or time come to it, it's usually stuff done by one to three people over a few months, and evolved project by project expanding the libraries to accomodate whatever new elements a project requires.
It lends itself tremendously well to agile developmentand iteration.

This normally begins with building a prototype rig or two, dividing it into units in a way it makes sense to you (usually it's limbs/components and super-rigs for the elements spanning across multiple components), and then designing and building, in an SDK form, the objects and processes that represent the items in that rig, their connections, and the added control layers on top of that.

This is a default build of a leg taken from my ever-evolving personal project at home (the one at work differs and obviously I can't post :) ):

legDefinition = rig.parseFromDefinitionFile("legfile.rigdef")
leg = rig.component.instancer(legDefinition.getBuildData())
leg.buildGuideInScene(app.isInteractive)

##user sizes the guide at this point

leg.buildArmatureFromGuide()
leg.disconnectArmatureFromGuide()

leg.buildDeformersFromGuide()
leg.buildControlsFromGuide()

leg.connectDeformersToArmature()
leg.connectArmatureToControls()

leg.configureInScene(0)
leg.__exposeHooks() ##viewport friendly hooks shown for manual super-rigging


The definition is just an xml file (which can be generated by parsing a prototype rig in scene with the key elements tagged, or by parsing any of the stages in scene, or simply punched in if you're patient enough) that tells the instancer what set of objects and files are needed to build the leg, and gives it a default configuation to build the guide from, the rest is a serie of pre-determined hooks that are implemented in each component build (callback mechanism style) that create the various nodes of the component, connect them appropriately, and tag them with whatever additional metadata is necessary for the following stages, or for tools to be able to "read" the rig and its context after the build.

The library itself, at its most basic level, is a set of abstractions/wrappers for the fundamental building blocks (like nulls/locators/groups, transforms etc) that presents them in a way that is useful and practical from a rigging stand-point, rather than the scene or application dependent way that maya or softimage will normally present things in.

IE: in Maya transforms are downright ass-pat, and in Softimage, while the object orientation is much stronger, they still don't have any convenience methods, so doing something like creating an ankle locator already aligned properly requires you to punch in all the steps that get you there, instead of what you want that object to be, making the whole thing unnecessarily verbose, and generally f***ing unreadable :)
In a rigging API I would expect to have the option to do this:

ankle = rig.elements.locator.create(True)
ankle_srt = transform.create()
ankle_srt.align("y", shin)
ankle_srt.upvector("x", foot)
ankle.transform.set(ankle_srt.getMtx4())

Which tells me what I'm doing in rigging terms, instead of what clicks inside the app I might be emulating.

I hope this helps more than it confuses :)
This is really the whole extent to which I can discuss this, since so much of it is what I do at work for a living (even if it overlaps or takes from my personal projects at home), and I'm contractually not allowed to discuss implementation or design details of what we do at work.

ArrantSquid
09-30-2010, 04:50 AM
Wow! Alright. It appears this padawan (I hate THAT term - I like Star Wars, but I'm not a fan boy - , but it was thrown on me during school) has much to learn. I definitely must have read your other post wrong, as I had figured I did. The internets not too good at inflection. :)

I totally understand you only being able to discuss certain things about it and I appreciate everything you have already posted. It definitely does make much more sense what you're talking about. I think we were almost saying the same thing, in regards to the API question I had, but your definition definitely helped clarify that.

Yes I have only been with Python for a month and YES my codebase could definitely use a re-write. I learned a lot doing it, so as I was coming to the end of it, I was creating pieces with 10-15 lines of code, where before I was using 30 (just generalizations of course).

I definitely see the benefits to doing it in the fashion you describe, because then it's actually functioning like an API. I'm gonna re-write what you wrote in case I misunderstood something. Basically it would go like this: Call to create the leg would create some locators around the legs position which you would put into position. Then from there, the user calls the function for the creation of the leg based upon where the locators are. During creation everything is compiled into one standard leg rig from that. So for instance, you'd have a class for creating the joints, then a class for creating controls, a class for creating the ik, etc. All the connections are built separately, but are able to function within each other because it's a standardized leg setup. To take it further, you can create an xml file which is able to be read, which contains the necessary positioning information which can then be used to generate rigs on the fly without user interaction. I think I may be missing that last point with the xml. Actually reading your post for the 10th time I think I may be missing all of it. :hmm: (Could the xml file be replaced by a GUI that would create said elements? I really think I'm missing it.)

This type of setup is what I was trying to achieve, but I put everything in one file rather than referencing other files to generate the rig. It's also not very extensible, based on what I believe you're saying. I also create all the locators from the jump, rather than on an individual limb basis. I definitely see the flaws in the way I did it versus how you're saying to do it. When you say "additional metadata" are you referencing naming conventions or is there a way to get metadata onto a node or skeleton? I'm assuming it's the latter of the two, but I wasn't aware that, that was available (although I'm sure I'm missing something).

I keep thinking of more questions, but I know you can't answer them so I'm frustrating myself right now. LoL. That's been my biggest problem, though, is not having a "mentor" to learn from. We had one teacher who taught rigging and he was good at it, but he didn't code and since I came from web dev I figured that was something I could add to my toolbox. I never did a whole lot of OOP so Python in Maya was my first real venture into it (most web apps are so small it's useless to do it).

The more I read it the more I'm analyzing it and I think I'm over-analyzing it at this point. I feel like I have more questions than answers, but I may just be racking my brain for no reason. Thanks for all the info and I hope that I've at least understood part of what you've said, if for no other reason than to not make it seem as though I'm dense and wasting your time. :) Again, thanks for explaining all of this. It's definitely making me think about how I need to start doing things on my own until someone hires me (although after reading all this, I'm worried about that as well now).

ThE_JacO
09-30-2010, 05:15 AM
I definitely see the benefits to doing it in the fashion you describe, because then it's actually functioning like an API. I'm gonna re-write what you wrote in case I misunderstood something. Basically it would go like this: Call to create the leg would create some locators around the legs position which you would put into position. Then from there, the user calls the function for the creation of the leg based upon where the locators are. During creation everything is compiled into one standard leg rig from that. So for instance, you'd have a class for creating the joints, then a class for creating controls, a class for creating the ik, etc. All the connections are built separately, but are able to function within each other because it's a standardized leg setup. To take it further, you can create an xml file which is able to be read, which contains the necessary positioning information which can then be used to generate rigs on the fly without user interaction. I think I may be missing that last point with the xml. Actually reading your post for the 10th time I think I may be missing all of it. :hmm: (Could the xml file be replaced by a GUI that would create said elements? I really think I'm missing it.)
Yes, the general gist of it is that. The XML file is just holds the description of what to do to build that particular component, and some settings.
A GUI could be involved to configure some of that, but you are possibly confusing data with how it's created there, the two things aren't mutually exclusive :)
In the XML I also store what objects are referenced for the component builder to use, those in turn can describe the connections between elements, their names and so on.

This type of setup is what I was trying to achieve, but I put everything in one file rather than referencing other files to generate the rig. It's also not very extensible, based on what I believe you're saying. I also create all the locators from the jump, rather than on an individual limb basis. I definitely see the flaws in the way I did it versus how you're saying to do it.
Don't take my approach too at heart in its details. There are many architectural and design patterns and models that will work just as well. The key thing here is the ability to abstract to just the right level, and re-compose things back together and implement.
It's a design effort before it's an implementation one if you want, an invite to thought and analysis first and foremost.

You haven't wasted your time insofar, or mine discussing it. It's an extremely iterative process, and nobody starts with a 500 pages document with all the details down for a finished system (those who, do normally fail :) ).

You keep doing it over and over again, redesigning or refactoring as you go, until after a few iterations. It's both natural and beneficial to get it "wrong" (if there is such a thing) a few times.
A few people here and there seem to get the ideas by osmosis as soon as they approach a computer, the rest of us have to slog it through a few times over until you have done enough implementation to not be impaired by that when designing, and until you have designed it enough times around that implementing it won't be a nightmare.
Ultimately, you get there by Pavlovian conditioning :p

When you say "additional metadata" are you referencing naming conventions or is there a way to get metadata onto a node or skeleton? I'm assuming it's the latter of the two, but I wasn't aware that, that was available (although I'm sure I'm missing something).
Metadata is simply the description of what information one expects to find.
Again, understanding the difference between what something is, and how it's represented, is important. You can carry that information in the object's name and parse the name, or appended to the graph as custom nodes, or as custom attributes (strings) or a number of other things. The format itself isn't as relevant as the idea of producing rigs that are "aware" of their origin, and that are tagged so that tools (just as important a part of the rig as the bones themselves) can be aware of the parts of the rig they will need to look for without extrapolating the info from God knows where.

I keep thinking of more questions, but I know you can't answer them so I'm frustrating myself right now. LoL. That's been my biggest problem, though, is not having a "mentor" to learn from. We had one teacher who taught rigging and he was good at it, but he didn't code[/code]
I can still answer some, just specific details of implementation or design issues of what we do at work prevent me from discussing those, it doesn't mean the basic concept of proceduralism or rigging as software development is covered by an NDA :)
I would also argue that if somebody isn't willing to invest at least some effort in maths and programming, that person really shouldn't be rigging anything; for the sake of this industry and the people in it, but I've been called an elitist and a snob for that in the past, so I won't say it :p
You're probably doing better than your mentor already, or better than many people who are actually employed already as character TDs come to that.

[quote]The more I read it the more I'm analyzing it and I think I'm over-analyzing it at this point. I feel like I have more questions than answers, but I may just be racking my brain for no reason.
At some point you'll have to stop analyzing it and start doing it, and within a few go's at it it will make a lot more sense.
They are all rather intuitive concepts actually. Explaining them in written form makes them sound a lot scarier and over-glorified than they really are.

Thanks for all the info and I hope that I've at least understood part of what you've said, if for no other reason than to not make it seem as though I'm dense and wasting your time. :) Again, thanks for explaining all of this. It's definitely making me think about how I need to start doing things on my own until someone hires me (although after reading all this, I'm worried about that as well now).
Don't worry too much.
In first place what I describe is a rather personal and biased view of things (although my schedules and project postmortem usually prove that it beats hands down the clicking-shit-together school ;) ). Secondly, quite a few people doing rigging for a living don't ever even skim the subject, and in a few places when it gets up to a certain level this stuff gets supported, if not handed off entirely, to RnD (which is a crying shame imo), if you make it a third of the way through what I'm talking about, you will already be vastly more marketable and efficient as a character TD than a lot of people who are around already.

Yes, this is all part of my master plan to kick clickers out of character TDs seats, to replace them with people who happen to have a clue, or are at least willing to try and get one ;)

Point caches off the farm, now I have to actually do some work.

ArrantSquid
09-30-2010, 06:14 AM
LoL. Alright, well I'm glad that I at least understood what you were describing. I took tons of notes while I looked at my code while reading through what you wrote, so I'm hoping that will help. I definitely understand how you're using the xml data now. Makes so much more sense now and yes, I was lumping in data with how it's created (although I did realize that they may not be part of the same piece of the puzzle).

I didn't think that any Character TD or otherwise didn't know math or how to program, so that's news to me! I figured that was at least a basic pre-requisite considering you have to understand at least basic node networks and while those only use basic math (with stock maya options) I still though you would need to have an understanding of basic trig (motion paths and arcs). Again, that was just my understanding of what was required so that's why I took up Python after working with Mel for a few years.

I had a feeling that what you meant about metadata wasn't what I (web dev brain still works in spurts - pdf metadata! ahhhhh!) was thinking, but I did have a feeling it was tied to something like the attributes or custom nodes.

I definitely know what you mean about just try it. There was a TED Talk a few years ago by Sir Ken Robinson where he talked about how schools (and society in general) teach children that it's not ok to fail and that that's plain wrong. I watched it again right before I started this project and realized that I was holding myself back because I was afraid to fail, so I just did it. I could have lost my education due to it, but because I knew I would fail multiple times I also knew that eventually I would get it right. I fixed the last "failure" in the script about 6 hours before I had to turn in my reel at our portfolio show. I think had I not just done it, I wouldn't have attempted it for quite some time and attempting an "auto-rigger" as my first python experience probably wasn't the best choice, but it came out ok in the end. :)

I'd love to do R&D at some point as long as I was able to do some rigging and animating too, but I'm a far cry from there right now. :) But thanks to your insight I have a direction to go in now with my current setup and I'm really excited about it. Like I said, I keep jotting notes as I write this because something pops into my skull that I'm connecting with this whole concept or it's something that would make the whole library more extensible. I really want to get into more custom node type stuff, but until I get more into a production pipeline to see what's needed or necessary I'll just be trying out different things (and failing :) ) to see if I can make something that's cool/useful. I just watched Chad Vernon's latest sticky lips demo and was like, "I need to make something cool/useful like that".

I'm definitely burned out on my auto-rigger project right now, so I'm gonna do the nodes I wanted to do (especially since that was the original reason I wrote this topic. :) ). They're nothing amazing (actually they're a port of another set of nodes someone else did, but they aren't updated nor are they able to run on OSX, which is where I do a lot of my development - mostly because bash > dos {I got into Linux while I was in the Marines, partially because of my job, so it bash became second nature}).

I'll probably end up doing something similar in design to what you've stated though. It'll definitely be an almost entire re-write because I'll have much more pre-production time than I previously had so I can map out the design much better this time around. Thanks again for all the insight and I'm definitely going to pick your brain at some point about the stuff you can talk about, if that's alright with you. At the beginning of this evening I felt a little disheartened, but now I feel like I've got a new focus. Thanks so much! :thumbsup:

CGTalk Moderation
09-30-2010, 06:14 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.