[Closed] Cooperative mesh modeling
If one would develop a “multiplayer” plug-in, where creating an object you actually create a new project and publish your 3dsmax as a “server” on an online webserver list as host of the new project.
The plug-in act as the server and open up for connections from internet for who like to participiate in helping model your object, they need the plug-in too, to be able to act as a “client”.
Would it be possible doing this in maxscript? and my actual question is, is there any use for something like this? for example 5-6 modellers connected over internet modelling the same object in real-time? The plug-in can act as a server or a client depending on wether you create a new project or connect to an existing one. If you create the project you are admin and can allow client connections and give them permission to edit/model your object, or perhaps “kick” them if they misbehave. Others can connect as guests only to watch the object taking form, or copy the mesh, if the admin allows it.
The actual modeling I was thinking could be a “check out/check in” way, where admin “cuts” the mesh to create different parts of the model to check out, so several artists can work simultanous on the same object.
Sounds interesting, but I don’t think you get the realtime thing to work with MaxScript…
I was actually thinking about that too, it might be difficult using maxscript, but if I add a option to only update the object when a client “checks in” their update, or perhaps a 1 minute time intervall between updates from other modellers.
Perhaps the webserver that lists current active projects and server IP-addresses could keep a copy of the active object so that the “server” 3dsmax-plugin don’t get overloaded when clients request updates for the object
Initially it could be limited to only 2 clients and perhaps 2000 vertices, that would not cause network overload problems even for a slow modem connection. If it works good, limitations could be eased up. There is no need for small ping time since the part being edited by one client is locked for the others, so a 2 sec update delay is no problem for the overall workflow.
And what should be transferred via network? Vertices’ position? Complete meshes? If vertices: there are new vertices added by a modeler, so how to add that vertices? How should “global” modifier like MeshSmooth be handled? They take part at the whole mesh.
I don’t really think it is possible… at least without realtime mesh updates…
Collabrative modelling of one object would be near impossible, there are to many problems with that as a concept.
Sharing on a project file though is another thing and probably the thing to look at is Xrefs or Containers which are being used in Max.
Okay, thanks for feedback, perhaps I need to reconsiderate not digging into this project. The idea sounds cool, and a bit out of the box, and not really that impossible, but as I think of it more I find more obstacles that could ruin the project than I actually thought would be there in the first place.
I have a webserver and the tools for this thing, so maybe at spare time I give this a try, at the most simpliest form, just to test if it is possible.
The technical part about vertices I really have not thought through to the details, but I was thinking on ways that the client keeps track of what vertices is adjusted/added/removed, same with faces, and smoothing groups. I leave UV mapping and other things out of this, and focus on the geometry. The server (and the admin project creator) keep track of the “seams” between the objects different parts. One seam could be comparable to a sticky Shape with fixed count of verts in a loop that clients cannot update, only the mesh on the one side of the seam that the client has checked out. The admin could set the max number of verts one part can have.
My initial thoughts is not to be able to use 3dsmax all builtin modifiers, only custom-made tools that is included in the plug-in, some simple vert-modeling commands to start with. I am not sure if it would be possible to be able to use 3dsmax builtin (or 3rd part) mesh-modelling arsenal. If so I need to secure the object from been collapse-able and read to mesh from top of modifier stack and so on, perhaps at a later state if I get the client/server thing to work.
Perhaps a small optional chat window the modellers can use for communicating with each other.
Anyway, has anyone seen anything like this out there? I have seen regular painting applications using a similar approach, all web-based, but no 3d-modelling software.
The more I think of this, the more I want to get to work on it but in the end I am not sure if it will be useful in any way, just a toy
As I told before, I don’t think it is possible… or it is possible but with so many restrictions that it’s much less fun then the idea sounds like in this stage.
I read about a TCP like network protocol in a magazine some years ago (was it digital production?!) that should make it possible to use different software (photoshop, 3dsmax, maya,…) together with other users over a network. I’ve never heard of this anymore, even if the article did sound like it is in a working stage.
edit: I found this one, for example: http://www.expertsvar.se/english/pressrelease?pressReleaseID=6627&languageID=2
I think it was this protocol…
well, the possible and not possible question comes down to what you expect from it. As you say “… or it is possible but with so many restrictions that it’s much less fun then the idea sounds like in this stage.”. I have no high expectations of this at this stage. The technical part comes down to 2 important but not so difficult tasks: 1. Letting remote users edit your mesh and 2. Distribute updates among connected clients. It is not rocket science, a webserver outputting XML-setting files will serve as coordinator/timestamps and so on. And a simple socks connection using dotNet for connection transmitting data to/from maxscript plug-in. The most difficult part I can think of would be securing the webserver and maxscript plug-ins so that hackers can’t hijack your 3dsmax or the webserver. I have done user account/password solution before with encrypted user database using PHP and MySQL, so that is not the problem. But I have no experience in secureing a 3dsmax plug-in that is open for socket connections.
The usability in the mesh-editing comes down to how advanced you make the client plugin, what tools/scripts you incorporate that alter the mesh, that does not affect the collaborative or communication parts
The link about Uni-Verse protocol was a good read, that is more like rocket science they have taken a similar concept far far further than my ambigious is :).
Initially I am going for the absolute most simple solution, with fixed amount of vertices, that only can be moved, no deletion or adding of verts. After I get the most simple stuff going I think I am not going to focus on mesh-editing tools in the first place, but on the collaborative benefits.
One thing I believe I will do earlier is to be able to choose and substitute different parts, for example if I create a 4 legged creature object, the admin create seams on neck, legs and tail. That result in 6 different part to be checked out, but clients then may create different versions of the parts, that should be easily interchangeable through the plug-in interface. Since the seams is sticky, they should all kind of fit together, if the modellers do a good job.
Later on I will do a flash-plugin on the webserver that can display the objects so that anonymous surfers can watch the objects being created through their webbrowser without having any 3d-software … just kidding, well, that will be a later project :). Now I must get to work soon, instead of just talking.