3D Software for the Next Generation, Part I

I intended to return home from work write a blasting post about technical work in Max- quite frankly, I don’t know how you people who have been doing it for as long as you have can put up with it. Instead of learning to deal with the quirks (and I think I’ve learned how to deal with many of the quirks), I find myself developing a more intense dislike of Max as I find ways around these problems and issues.

But for the sake of being constructive, that post will wait for another day. I only lost half a day due to dealing with Max today, not bad in the grand scheme of things (or even the past month). Instead I’d like to write a bit about something I’ve been thinking about for at least a couple months, most of all since Austin GDC where I attended a Max Usergroup party which I would have left despondent if not for winning a new Intuos 3 (which should fetch a price to pay for the prizes for this and the previous contest).

I hate Max. I hate Autodesk. I have a high opinion of Softimage (would you believe, they called me after I DLed their demo to check out my experience!?), but I am sure I’d run into a number of problems with XSI as well. The grass is always greener, right? Well just cause the grass is always greener it doesn’t mean your lawn isn’t a wreck. So I’ve decided to make a goal for myself, to develop or aid in the development of a 3D software that fulfills the needs the current ilk of 3D software simply does not. I’ve been thinking for a while but I think the time has come to start putting the pen to paper, since it is certainly an interesting thought experiment and there are many thoughts on the subject. I’ll probably divide these thoughts up into much more fleshed out discrete chunks (and smaller posts!) as ideas develop. But for now, I just want to look at why 3D software no longer fulfills what we demand of it. Maybe I don’t even have anything to complain about?

All three powerhouse packages- Max, Maya, and XSI- have been around in one form or another for about two decades, and their modern incarnations are over or about a decade old. Think what CG was like 10 years ago, when the groundwork these platforms was set up- Toy Story released in 1995. Toy Story! Compare the technical requirements of that Pixar gem with a modest console game. The software designers at that point could just not have planned for what would happen in 10 years. Sure, a few may have correctly guessed much of what production is like, but could you really design software for what someone will be doing in 10, 12, 15 years? It is just not possible.

But yet 5 days a week, I get up, go to work, and sit down to script on, and curse at, a program whose platform was not even designed with scripting in mind, with developers who when they did implement scripting probably never would have planned on someone making a Vertlet cloth sim or ray-traced skin transfer utility. Hell they probably had no plan for what to do when people wanted to weight vertices instead of envelopes! Yet, somehow, I come in, bang away at my keyboard, then bang away at the wall with my head, and bend Max to what I need it to do… most of the time. I’d imagine the experience is similar whether in Max, Maya, XSI, or whatever.

So we know, or can imagine, how things were even 6 years ago. But development has changed, drastically, at least in technical requirements. The content pipeline for a game is utterly different than it used to be, for good reason- and engines and teams stuck in the old paradigm operate at decreased productivity and increased stress. Much of this change is due to us- technical artists. No longer are artists dependent upon software adding features, or a helpful programmer writing a script and uploading it somewhere, or one of the rare artists who can script making something that looks like crap but gets the job done. There are actually people- us- whose job is to automate, simplify, speed up, fool-proof, the pipeline, and provide tools, buttons, widgets, macros, and more for a team of artists. How many TA’s can program in a compiled language, and think about how many could even 4 years ago (probably more can program in C# now than there were total TA’s 4 years ago?).

Production time isn’t spent creating assets. Even a mediocre artist can say ‘it will take me x hours to create that asset’ and be within the threshold of a couple hours. Where production time, and overages, are spent, is in iteration and pipeline. This is no secret, I don’t think. If it were, there would be far fewer of us.

So why are content pipelines built around 3D programs that are developed primarily for asset creation? Think of all the things Max can do- it is absolute mind-boggling when you really reflect. So many features, and many of them actually work. And what does the FFD modifier have to do with my cloth sim? The same as the reason I can’t extend a Tape helper- nothing. These softwares are incredibly complex spiderwebs of features that weren’t implemented correctly, were implemented well and made obsolete, some were never good ideas in the first place.

Look at where speed lies now, where simplicity lies, where the future of everything from automobile parts to ballistic vests to software architecture lies- modularity, and in the case of the last, abstraction. Again, nothing new here. What needs to be new, is how we look at what we are doing, what our jobs are, and what our tools are. Why do we try to use bubblegum and toothpicks to build the hub, the core, of our pipeline for multi-million dollar projects; we should be using steel and concrete? Why are our tools shovels and pickaxes when we should be using backhoes and dynamite? Yes, there will always be a better backhoe, and backhoes can break- but so can shovels and a backhoe will always be faster.

What I’d like to do with this first thread is talk about, why software is where it is, and what are you problems with it? What would you change? What would you improve? Specifics, generally, whatever. You hate skinOps, or one of the three versions of getVert? Say so. You have a lack of object-orientation, or broken object-orientation? Say so. Say it, whatever it is. Start the discussion. What I’d like to do in future threads is develop general and specific solutions to these problems.

It seems hopeless, but it doesn’t have to be the way it is. I’ve given up the idea of taking a vow to use XSI in my next job- yeah, I’ll probably be using Max. But that doesn’t mean there is no hope or things can’t change. Change can happen, but change comes slowly and has no momentum of its own. It is about time there is a sensible pipeline software that is dedicated to what it is supposed to do. And when it is ‘about time’ for something, that something is probably a speck on the horizon because change never arrives on time. But it always arrives- will we be the ones controlling it or being controlled by it?

Excellent post Rob, and I feel your frustrations.

As to why software is the way it is now, I think there is a very common theme: Companies aim to grease the squeakiest wheels, but in the process don’t actually get to the centre of the issue: That their core software has become stale and unusable.

For the most part new software is becoming more popular because it’s been written from scratch and is not relying old old technology. The “Big three” have the issue of getting a yearly update to the community and therefore have to tack on branches here and there rather than addressing the main trunk.

The software that is actually working for the wider users at large is where it has had it’s roots in actual film or game development. Look at how Mudbox grew from it’s infancy through film pipelines, or the way Maxon incorporates new technology into Cinema 4D based on tools it’s worked on with film studios like Sony Pictures.

I actually have to say that Cinema 4D is one of the first apps i’ve been into where I could use it almost immediately without opening a manual. More applications should have this level of ease. ZBrush tried to achieve this by making a “3d modeling for photoshop users” sort of deal, but ending up making a learning curve like a vertical line.

As to the specifics, we can see some key issues:
[ul]
[li]Maxscript is too limited. There is little point to scripting language that can’t access all levels of the system. MEL is more robust, but it’s like coding in a foreign language (given of course my limited knowledge of it but you know what I mean).[/li]
[li]There needs to be a generic expandable language that can be used across many applications. Python is headed in this direction, so maybe there is hope yet.[/li]
[li]Why on earth aren’t EditablePoly and EditableMesh in 3dsMax not combined into one cohesive editable format? More to the point, why should I have to convert it to that format to begin with, when every other package i’ve ever used lets me start tweaking it immediately? I do like the stack workflow, but so many other apps do it better.[/li][/ul]

I hope this is the sort of discussion you are after Rob. I’m just letting my brain gush to my keyboard.

I feel your pain guys,

I can’t tell you you how many work-arounds and windows messaging hacks we have had to do with Max script. Max script has it’s pros over Mel with a simpler object based scripting language, and direct .net support (.Net in Max has been a huge step in development, we are now doing a lot of the tool creation in .Net) Mel also has it’s downside but since the implementation of Python, scripting in Maya has improved considerably. The most of my time is spent in Maya, and I shudder when I need to get back into some old Maxscripts.

Max was based on the idea of a modular system, but through the years it has become an abomination. I think the main reason is due to Autodesk increasing their target market rather than focusing on a specific genre and that is a just a good marketing strategy.

I can only speculate that they must be working on a complete rewrite to Max/Maya if they want to compete with XSI, not sure if it will replace 3DStudio Maya with one product though. The thing is with tech nowadays is it moves so quickly, so if you don’t have a package that is written to handle extreme expansion then it’s going to get bogged down real quick.

Node based is definitely the path to go down with small nodes that allow you to create complex hierarchies. I’m currently looking in Houdini as an example of a system that really works and works well.
But what you want really as you said Rob is a package that is designed and not retro fitted to give us what we need.

Maybe we should start collating the best and worse from different packages as a start?

Cheers

Rob.

[QUOTE=DrBob;1485]

Maybe we should start collating the best and worse from different packages as a start?
[/QUOTE]

We also shouldn’t limit it to 3D. Compositing packages (including Photoshop) are a vastly important part of the pipeline. The different there is they seem to be more than willing to make vast improvements. The rise of Eyeon Fusion’s improvement has been staggering.

Years ago, after moving from TV commercials to video games, I was excited to start using Max 3.1. I was use to 2 week TV schedules, where we had to crunch to invent fly-by-the-seat-of-our pants setups for rigging and effects. Not only did these setups have to start working in a few days, they also had to be change tolerant, because the clients were always dropping by and suggesting improvements. I was looking forward, in the game industry, to having weeks at a time to properly create pipelines and workflows. This is a little story about how 3dsmax got in the way…

Although I had been using the granddaddy of procedural modellers at the time (Houdini), the modifier stack in Max looked promising. My first task was to model a scifi racing track for a minigame with a roller coaster feel. I felt the best way to get the right balance of fun, speed, banking, and height was to create a way to edit just a single spline and then have the modifier stack procedurally fill in the track floor, side rails, columns, pipes, etc. This way I could be easily modify the track based on feedback and “re-compile” the level art ready to view in-game. After spending several days I kept hitting brick wall after brick wall. Yes I could create simple splines and have Loft do its procedural magic, but I couldn’t extend this system for example to control the banking or extract out cross-sections every 10 metres to position columns. In the end, such an elaborate mini-game would have been too much work anyways and we switched over to a drag race style track, but the original lustre of the modifer stack was definitely gone. I was being constrained by a black box (Loft) and an incomplete set of low level operators usable in the modifier stack. Even today in max9 I don’t think I could easily accomplish this system, which I think would quite helpful for an artist trying to prototype a race track layout.

Even Houdini, circa Max3.1, offered up the low level modifiers to create my own Loft object but the problem then and still today is that it is still not the preferred tool for animators and artists. So I think the perfect match for the future, would be a 3d app that is like a geometry programming language (with all the niceties of real programming languages like classes but INSIDE the modifier stack) and has a frontend that the general artist will like. I haven’t used XSI but assume it has Houdini beat on the user interface side so the question is how good is XSI as a geometry programming language? Or can Houdini up its user interface game? Or is there a door #3?

Harvey! :D:

Whoa… That is a really good post, Rob.

I’ve been frustrated with max for a long time… and I’ve always been kinda amazed that other artists around me don’t really realize how bad it actually is. Moved to Maya now for the most part, but still keeping my eyes open for something better… Actually have a guy from SoftImage coming by our offices in an hour to give us a tour of XSI. I’ve been looking into XSI on my own… downloaded the trial… but it was bugging out too much to use ( something to do with ati driver of course :stuck_out_tongue: ).

For where things are going… I think Modo might be on the right track… Extremely customizable and from my point of view, good scripting (not interactive right now, but supposed to be in the works)…
They are licensing out the source to other companies… solidworks signed up with them… which I think is good because of the possibility of someone making tools for specific industries built from a good base…

[QUOTE=Erilaz;1486]We also shouldn’t limit it to 3D. Compositing packages (including Photoshop) are a vastly important part of the pipeline.[/QUOTE]

I’ve been waiting for something to come along and nudge Photoshop and painter away from digital painters… I’m curious how complex a program focused at digital painting would have to be… not trying to emulate actual paint strokes like painter does (I personally don’t like that much) but instead just having soft/hard/size tweakables + be able to use images… A good swatch palette for once would be nice. Everything hardware accelerated (cs4 is supposed to be doing this, I hope they pull it off). Highly scriptable… be able to change interaction (real-time mirroring would be nice when doing front facing concept).

This would be a basic core 2d painting program that would be made to be built on and customized. I’ve been wanting to make something like this for awhile, but don’t have the time or experience to tackle it :stuck_out_tongue:

I’m by no means a Games professional - in fact I’ve only recently started my first real project doing some elements for a film (jumping in at the deep end!), I do a bit of games modding, but generally my thoughts are disposable…

If it is a system where you want to create specific tools/workflow solutions where you can really go under the hood and effect elements at a very low level in the program, then to my untrained eye blender seems to be the most obvious choice. Every other program is going to be locked out at varying levels to protect itself as a piece of code. Blender is available as source, so you can theoretically modify and build anything you want and recompile it, or just make it as a standard plugin/script.
Of course, there is the issue of artists being unfamiliar with the package, but surely that could be solved in a way similar to GIMPShop? I know when I had to use Maya at uni it was a lot easier when I used a script to mimic 3dMax’s shrotcut keys/viewport manipulations and Target Weld (Why is it not native??).

Just a thought anyway.

Ummma:
I’m looking forward to when blender has customizable keybindings with out having to modify it’s source… until then though I can’t consider blender as an option… Currently I use too many programs for it be worthwhile to learn something that has such a large learning curve.

I looked into implementing bindable keys into it… but the existing bindings are so hard coded into the program it would be a very big project… which explains why they still haven’t done it.

This problem has lead me to believe that other systems are probably not much better in blender and so it currently suffers from the same root problem as most major tools: inflexible non-modular core system with a bunch of features piled on it.

I hope that I’m wrong though… I’m always excited to see the progress of blender… but in it’s current state, investing any serious time into it seems like a mistake to me.

It is kind of crazy that a game artist might spend most of the time just using (in the case of Max ) editpoly and UVunwrap, yet the app is so much bigger.

I had an annoyance the other week using Max 2008, I was trying to use the new callback system I found in the help, took me a while to realise they had taken it out of 2008 and left in the documentation, someone should get a slap wrist for that :slight_smile:

Then the other day I wanted to find the normal of a vert in editpoly, I had to write my own function to do it… bah, still I learned a few things.

Another thing worth looking at is where a TA roll blurs into a tools programmer.
How thin can we spread ourselves? How much support do you get from tools programmers? Or have you just realised you ARE the tools programmer :slight_smile:

Just got done talking with the XSI guys… I’ve seen some cool stuff on their site… but didn’t look at the ICE stuff…

ICE… whoa… just… wow…
Of course I need to actually try using it… just got a hold of a nvidia card to get around the ati bug.

Coming from the web industry I have a different exposure to 3D. In the past I had experience with a 3d pipeline driven by a database to create thousands of images. And then the same kind of pipe but to do real time over the web (Sears virtual homes thingy). the web site was our engine running on some machine in Montreal wrap on an Asp web page.

As far as the three are concern I’ve struggle with all of them both in the Api and with scripting. But if I had to choose a favorite I would definitely go towards XSI and the reason is C# tough you still can’t do everything with the scripting object Api (still have to get dirty with C++ to do mesh accessor ) its the only application so far that was able a Pipeline Application instead of a collection of scripts (MaxScript or Mel) that we call “the pipe”. Of course there are other alternative like doing pipeline apps full C++ but its really hard to maintain and takes a while to implement.

I’ve currently regressed to use MaxScript at BioWare and one problem I see is that’s its to powerful, not in what you can access with the language, but in emulating an object base language but not having the proper tools to us it (debugging, IDE and no intellisense ). So compare to the experience I had with XSI where I was able clean applications and reusable components and library I’m extremely disappointed in Max dev environment. Some MaxScript access have UI dependencies so you have to focus on modifiers change edit mode Etc. And in the Api the Modifier Architecture blocks you form doing cool stuff like … mesh access … tried to do a real time symmetry modifier(in Maya it’s nodes) like I did in the past in Maya … the stack has to be collapsed … ok maybe i could have found a way around it but nothing as simple in the Maya Api.

One thing I like about Maya is the easy access in the Api and the node architecture and the way you can connect them and build custom one’s nice for rigiging and animation tools … but still you have to call some Mel script from the api to do simple stuff like traversing the scene graph without having kilometers of C++ lines … still it’s a better compromise then the documentation less weird incomplete complicated Max Api.

XSI is so far the best balance but not as flexible as what you can do in Maya. At my old company we had recompiled Maya in library as an exe to build render scene on the fly … yep could do this for rendering lightmaps …

Have to agree with Rob tough I like to see a new app where the components are all modular and written or completely exposed to .net. Would be great do derive a class from the view port app running your shaders and lighting but having all the benefit of the view port class … having one mesh class with all the ray casting intersection features, methods to simplify the generation of vertex and index buffers Etc.

Probably dreaming here … would be nice to have less pain at work tough …
(just finish an Xml light map scene importer in Max wonderful API … and it was painful) :wink:

If Harvey and JS are here, it’s ON now!

Light

Its about time you Bioware guys started showing up. The Volition guys still have us outnumbered though (7 to their 11… holy hell).

Anyway, lots of interesting thoughts so far. Been on a bit of a crunch this week but I can’t help myself from posting.

For all the Max haters: I feel your pain. Like a hot coal in my throat, I feel your pain. But I have begun thinking of Max like my art school education- everyone had such a horrid experience it is not even worth talking about how bad yours was, even if it was really bad. There were just so many things wrong with it- how can they be addressed? There is something fundamentally flawed with their methods, much because they were established a decade ago, and the people who have input on shaping the curriculum are not the most upset and catalyzing, but often those who are happy enough doing what they’ve been doing. But that is the great thing about the time we live in, is it not? I fundamentally disagree with how CG was taught to me and countless others, so I can find people who are also unhappy with how CG has been taught and are doing something about it, starting a new program or renovating an established one. And we can fix what we know are the problems. And eventually, with time and patience and hard work, the ‘swells who run the show’ will fade to be replaced by a method that is just slightly less archaic, and the cycle will repeat itself.

I certainly asked for Max grievances in this thread and I am glad to have them stated. It is important to put them out there because it makes clear how much will never be addressed. They aren’t there for one of us to fix or give a workaround for, at least not in this thread- they are there to put clear on paper why I feel so strongly about this issue and why this issue resonates with you. That yeah, things really are as bad as you think- worse, probably, when you pile on things you didn’t even know were wrong about your software of choice. I’m a big fan of working with the system, of not reinventing what doesn’t need to be reinvented, of fighting only what needs to be fought- but isn’t creating new software working within the system of software creation? The problem is thinking of Max or Maya as platforms, as systems within themselves, whereas they operate in the larger system of software- and software comes and goes and even giants can be toppled.

RE: Blender. Yeah, so Blender. The 3D software with the most seats installed, and is probably the most feature rich. And it is also a catastrophe in a number of other ways. A horrendous UI but was the first app (I think) with LSCM, for example. Someone brought it up in another thread, the idea of using Blender as a hub app. And I think it is the right idea but the wrong software. Blender is too big, too messy, too old- and too stigmatized? But yes, something like Blender- but less sucky. Blender is old, too, and doesn’t have the development resources Autodesk or Avid products do. Its heart is in the right place, that is for sure, but otherwise it doesn’t differentiate itself that much from the same problems Max, Maya, and even XSI have. Only that you could rewrite Blender if you wanted, but that’s not what it is about, is it? If you are going to overhaul Blender, may as well just work in XSI. This is about a slimmer, fitter, more functional software paradigm, and Blender, software-wise, is the same or an even worse paradigm as other 3D apps (but as said earlier, their open-source code gives them points for doing what they know is right).

So maybe compiling good and bad features would be a constructive thing to do, or maybe it would take this project idea from something evolutionary to a bunch of Max and Maya crybabies- I don’t know. But I guess we can only suggest based on our experiences. Probably this weekend I’ll lay out what I perceive as the way forward on this idea, at least design-tenet wise. I suppose that will be a more focused discussion. There’s no hurry and I have no realistic ideas about this project yet, but my mind needs release. Right now, this has just been an awesome free-flowing brain gushing thread and it is encouraging and enlightening to read other people’s feelings and experiences.

Probably dreaming here …

Nec regem Afrorum noscenda ad coepta moratur
laude super tanta monitor deus. omnia somni
condiderant aegrisque dabant obliuia curis,
cum Iuno in stagni numen conuersa propinqui
et madidae frontis crinis circumdata fronde
populea stimulat subitis praecordia curis
ac rumpit ducis haud spernenda uoce quietem:
‘O felix famae et Latio lacrimabile nomen
Hannibal, Ausoniae si te Fortuna creasset
ad magnos uenture deos, cur fata tenemus?
pelle moras. breuis est magni Fortuna fauoris.
quantum uouisti, cum Dardana bella parenti
iurares, fluet Ausonio tibi corpore tantum
sanguinis, et patrias satiabis caedibus umbras.
nobis persolues meritos securus honores.
namque ego sum celsis quem cinctum montibus ambit
Tmolo missa manus, stagnis Trasimennus opacis.’

Any particular reason why you’re quoting from Silius there Rob? :slight_smile:

My idea of future-proof next-gen 3d app:

  1. Written natively in C#.

  2. Core is a performant, generic graphics framework.

  3. Base is implemented using the Core, so Mesh class is in the Core with absolute minimums, but is “extended” in the Base with Loop/Ring, Extrude, Bevel, etc, which does nothing more than flagging verts, edges, faces, and creating new geometry.

  4. UI is dynamically built on top in a modular way (piece by piece), where everything can be removed, modified, extended or written from scratch.

  5. Everything is an Operator composed of Sub Operators, which can also be combined into super-operators. (i.e. You have a Bend Operator that is composed of Get (Vertex) Operator, Math Operator, Set (Vertex) Operator. So you can go in and tweak the math behind the Bend Operator and see the result before your eyes. You can combine its Math Operator with a Curve Operator to affect the result with a custom curve, that is also composed of Sub Operators, so you can also change the math of that, etc. Operators can be thought of or renamed to Nodes if you will.

  6. Plugins can be plugged in and out with no dependency whatsoever.

  7. Only generic tools are implemented in the base software (i.e. no tool that selects every 2nd face).

  8. Very consistent code and design with full xml comments. Documentation is generated by Sandcastle HFB. So Loop is Loop for everything even if it’s implemented for NURBS.

  9. Everything is named very sensible that even seeing the name is enough for you to know what it’s all about.

  10. No scripting language; ability to use any .NET language (not to extend the core/base though; would make it difficult to maintain).

…More can be added/modified.

Btw this is just my idea about the dream 3d software I have been thinking about for quite some time; neither best nor unbiased (:

Cheers,
Light

For me 3dsMax is like eating McDonalds:

  1. I usually choose it because it is easy and fast
  2. But i usually regret it after a few hours
  3. Neither have changed their menu much in the last few years
  4. And both tend to give me diarrhea the next morning.
  5. So every time I choose it, I vow not to choose it ever again.
  6. I try a few other meals from different companies
  7. And yet for some unexplained reason, I always end up back with McMax.

[QUOTE=kees;1512]For me 3dsMax is like eating McDonalds:

  1. I usually choose it because it is easy and fast
  2. But i usually regret it after a few hours
  3. Neither have changed their menu much in the last few years
  4. And both tend to give me diarrhea the next morning.
  5. So every time I choose it, I vow not to choose it ever again.
  6. I try a few other meals from different companies
  7. And yet for some unexplained reason, I always end up back with McMax.[/QUOTE]

That is beyond brilliant. :laugh:

[QUOTE=Erilaz;1509]Any particular reason why you’re quoting from Silius there Rob? :)[/QUOTE]

Because like Hannibal we will take the hard trip across the Alps with our devastating elephants, rally the aching tribes of Gaul, and use the strength of the Romans against them when we crush them in front of a great lake.

Wow, there’s some real frustration here… which most of it I share too. It feels like it’s never going to go the right way, in terms of user friendliness. Some things are really briljant and the speed in which I can put out some small project is just tremendous… But when things are scaling up (and that’s where all you big studio people are off course) it’s failing miserably… Even for our 3/4/5 man shop it’s sometimes a real agony, when trying to build some consistency in the process, where always working around one bug or another… For example we found the perfect shader for what we want, but it doesn’t work in a multisub for example… that’s old and new stuff just colliding, and still make it feel like mentalray it’s a slap on renderer…

It’s also really frustrating when you’re really starting to get this 3D thing and begin to think in nodes and node like behaviour that max’s flaws are becoming more and more appearent. I have tried some XSI and Maya but I still continue to return to max, cause several years of experience are costly to throw right out and start over again…

I guess I’m just lucky I don’t get that aftertaste off bigmax’s and maxshakes that much.

-Johan