[Closed] Some newbie questions
Hi there,
ok, I am aaaaall new to 3ds max, so please forgive me if these are silly questions (just evaluating the demo).
In C4D there are generator objects (they allow me to…well, generate things) which are updated every frame or only when something changes with the object (may it be user changes the object´s settings, or settings are animated or similar). Is there an equivalent thing in max? From what I could see a modifier would apply best to this wouldn´t it (I´m a bit confused because in c4d a modifier modifies a generator)? The more obvious question is, what would be the best target plugin type for a fluid simulation plugin?
I am still a bit confused by the plugin types though the sdk help is explaining them quite good. Probably because I have never worked with max before and don´t know what the certain types effectively do and how they work.
Also, which versions of MAX should be supported by a plugin at minimum? So let´s say the majority of the user base works with 2009 or higher. Also do I need the 2009 etc. versions to compile for them (I assume so to get the right SDKs) and where would I get them? (let´s say I buy a copy of 2011, would I be entitled to get older versions for development purposes?)
What plugin type would enable me to write volumetric shaders btw.? What renderers should be supported (what renderers are actually available for max by default?)
This is all for c++ development so no scripting.
Thank you in advance
Well the neares thing i can think of is a particle flow and i would say that if you want to generate a fluid simulation to add it to pflow seems kinda logical (to me at least )
I was just wondering because I saw that FumeFX seems to be a modifier. And isn´t particle flow for particles?
It’s an object, superclass is GeometryClass even. In max you have your objects, let’s say a sphere, and then you have the paramaters for that object, such as radius. You can modify radius (which has a float controller), and it modifies the baseobject itself… this tells the geometry to rebuild and then tells the scene and renderer to update the geometry of the object every frame if it’s animated. Else, you also have modifers, to further modify the geometry, such as a bend or twist modifier. …so modifiers do indeed generally modify objects, but you can have your ‘generator’ be modified with it’s own base set of parameters.
For fumefx, you have a single object representing the grid. (there is no real support for volumetrics in the viewport in max) So it looks like it’s set up as a helper object for the most part, but then has it’s own dialog (and you can do this differently, and even keep everything on the modify panel of the base object if you wanted) for actually doing most of the simulation work, and setting up your render settings. Then when the renderer is called it actually renders out the volumetrics. The sources are set up as separate helpers (actually in the helper class), (such as an object source, for setting an object on fire) which you then reference in the fume grid dialog. Generally geometry for anything that will render, modifiers for modifying geometry / objects, then helpers for …well just helping, but don’t directly render.
Yup, Particle flow is for particles (though they show up under the geometry class in max too)… they are only related to fume in that there is a particle flow operator that reads fume data / fume can read particles as a source object as well.
For your Max version question, I’d say just go with 2010 / 2011 (since they’re on the same compiler).Just skip 2009, it’s probably not worth your time / effort.
well yeah its for particles but maybe you could use it for your fluid sim.
FumeFx is a Object actually but you need to go to the modifier panel if you want to modify it. so its kind of a mix.
thanks, that clears some things. If I understood correctly, although inheriting from geometryclass the object does not necessarily have to return any geometry, it´s just the class name convention for objects right?
Still remains the question of rendering volumetric data. Is there a “volumetricshader” class or similar?
Volumetric Shading requires an Atmospheric object plugin. Typically (for example in Afterburn, FumeFX etc.), the Atmospheric object is working together with the geometry object in the scene – Afterburn uses the particle data from PFlow to define spherical volumes, FumeFX uses the voxel grid data to define its data and so on.
So if you intend to render a volumetric fluid (like smoke), you can create a GeometryClass object or a Helper class object in the scene to represent the data in the viewport, and an Atmospheric object (which appears in the Environment and Effects dialog > Environment tab > Atmosphere rollout) which reads data from the scene object and renders it. If you don’t intend to visualize the data in the viewports, in theory you could probably directly read data from an external format and use only the Atmospheric object to render it, but that wouldn’t be very usable as people like seeing something in the viewport for reference.
The Default Scanline renderer, Brazil r/s and V-Ray all support the SAME Atmospheric engine of 3ds Max, so developing a volumetric shading plugin for Scanline will also work in the other two. This does NOT apply to mental ray which will require separate shader development effort.
If you are doing liquids (like RealFlow, Flood etc.), you would just need a Geometry object in the scene to generate geometry for the viewport and renderer.
Afaik, yes, fume is just acting as a container of data… I’m assuming that the geometry class is specifically called called by the renderer, and expects certain things from it when it gets called, not sure on the backend how that all works out. I didn’t realize that I had left out some important information… it’s called ‘atmospherics’ in max. Fume is even rendered as an atmospheric for that matter… much like an atmospheric gizmo (another type of object for rendering some atmospheric stuff) which is more or less a helper that is called by certain atmospherics. The geometry portion of it, i’m not sure how that comes into play, but I would guess maybe the renderer calls the geometry, it calls the atmospheric to render the ‘geometry’ and then passes the fume data on to the renderer… or something like that. :shrug: Sooo… look up atmospheric, and see if that leads you anywhere.
Hey both of you. Thank you very much.
Boris, that was the exact information I needed. That made it all clear to me (very nice also that brazil and vray both will be able to use the according shading information). In the end it seems all 3d apps work the same, at least at the very core.
I have one more question before I stop bothering you guys and actually start coding. Does the SDK provide classes for multithreading (multiple processors) purposes and stuff like semaphores? No need to answer if it´s in the sdk help, I can look it up but if it´s hidden somewhere else it would be essential to know (or if one has to manage multiprocessor threads and semaphores oneself).
Thanks guys, I guess I can make some first implementation tests in the following weeks. It all sounds very straight forward (well, I hear myself saying this for more than 10 years now :D) and your answers are really appreciated.