Notifications
Clear all

[Closed] Proxymodeling (project wip)

Hey I agree a bit with Arketip that the connection of dummys is what is hindering it from being relally simple. One option could be to have a setting to create those connections automatically as you place the points. Another thing could be to “paint” in the connections so at least you do not need to manually select the points to connect.

cheers,
CML

I’m not exactly sure what you mean. If you mean the spline connections should be handled solely by anchor position data, then of course it’s an option, but currently I have absolutely no idea how I would do such thing. The risk of incorrect connections is way too high in any way that comes to my mind. Still, all automation is a huge plus if proven stable enough.

I’m very aware that the interface is lacking several fundamental tools, and not by any means should the interface seen in the video considered more than clumsy link to the internal functions. A mere placeholder so to say.
on my to-do list currently:
target weld
shift-click/drag copying for splines (already possible for anchors)
anchor grouping
more selection tools
more than one node movable at a time.
overall better interface for patches
section cut

section cut is already in the works, and while it didn’t feel important at the very first stages of development, I think this one will be one of the key features of this tool set. I’m not quite sure if I can use it directly for patch creation, but as a guide for anchors, it will be a great time saver.

I still have to make occasional changes to the frame structure, but overall it seems very usable already. I’ve been trying to come up with a replacement for the crawling method, mostly actual geometric calculations, but it always seems to fail on the relative slowness of the polyop/meshop methods. As in, the function would otherwise be very usable, but it takes too much time to read the mesh, even if it’s just single face per execution. It actually wokred pretty well on low poly meshes, but when there are 15k tris or more it really starts to crawl. SDK might handle this much better than script, but I don’t really have the time to start learning that.

Apart from wasting several days of time and noticing the crawling method is actually very good and easy, I didn’t really accomplish anything last week :). I’m focusing on the interface from now on. I’ll post a video of the section thingy when I get it done.

Beh, that took a while. I effectively had to rewrite the entire core to get the sections tool to work with adequate efficiency. Originally I had to implement yet another branch in the hierarchy, which made the datahandling really clumsy. Now every node actually remember their relations to others in the structure. It didn’t really make it work any faster, but seriously simplified further scripting.

Also I replaced most of the patch-hanlding procedures with much more efficient ones. Unifying the patches was the most hideously complex and processor intensive function in the whole thing and it suddenly became completely unnecessary as the patches completely lost their dependance to the neighbouring patches. Instead they get all the information from the splines that they are connected to.

Bottom line is that everything is much more functional. I’ll make some kind of video of it when I have time.

Although I still think the interface is lacking hideously, working with it feels almost comfortable now. My biggest headache is selecting multiple objects. I’m still using an endless loop with pickobject() for single nodes, but when I need to select multiple nodes the loop must exit and enter a #selectionsetchanged callback. This causes many problems, most of which are not all that severe, but potentially VERY uncomfortable for (potential) end users, I don’t mind that too much myself :). I could probably do everything with a callback, but the beauty in pickobject is that I can enter different ‘modes’ by testing keyboard.controlpressed/altpressed/shiftpressed inside the filteing function, and of course easily filter what I want to manipulate. If someone can think of any way to do area selection without breaking pickobject() that would help ENORMOUSLY.

Everything else aside. I have found that this kind of tool is extremely simple and swift to use on general and broad shapes, but high definition areas (fingers, ears, eyelids and such) definitely call for different measures. I believe I’ll have to fall back to the kind of paint-interface that all the ‘topology brush’ implementations have. Also making something like this fully interactive might be quite enormous task and since I’m kind of sick of scripting already ( it has kept me distracted from modeling for way too long) I’m gonna settle with sort of ‘one shot meshes’. Still there will be heavy aim for automation and evaluation instead of painting every polygon individually.

I don’ know if you’ve seen this, could be of interest… there’s a piece of software in development called Topogun just for this sort of thing. You might get some ideas for your tools watching the videos or joining the beta. Looks like ZBrush 3 has similar retopology tools too.

http://www.topogun.com/

Ohh, thanks for that. It’s very good to see that other third parties have taken this as their mission, but still I must say that I was somewhat disappointed after watching the demos there. I would have expected much more innovative solutions for a would be commercial (?), standalone program. I still do realise it is on mere beta stage, I only hope to hear good things from their direction.

However, after checking that I did realise I also need a set of basic polygonal tools as well, and even gave it a brief look. I was quite pleasantly surprised how ridiculously easy it was to lock all editing on another object’s surface, simply using when construct and some simple raycasting. Moving masses of vertices at the same time will be trickier though, but I think I already have a clear idea how that could be done.

Ops, forgot to update. So here’s how it looks now:
http://koti.mbnet.fi/sinko/host/proxyfinal.avi

It’s still quite stiff and extremely buggy, but I have kind of stopped the development for now. I’m seriously not much of a scripter and this is taking way too much of my time to be worth it. Well, it’s still awesome modelling concept, but I really have to get busy with my self promotional work (CG portfolio), otherwise I’m never getting any job :p.

In the video, few times the nodes seem to lag far behind from the cursor. This is not because the script is slow, it’s a bug or more precisely a missing feature. Originally the nodes were places with simple ray cast on first hit, but I replaced that with something more sophisticated because it was too easy to accidently ‘pull’ a node from far side of the model to the front. The new system is executed every time the mouse moves and currently shifts towards the mouse by one unit at a time (it’s supposed to normalize that to the view distance).

The funky ball appearing to the corner during section editing is my little virtual trackball :). It’s remarkably ergonomic and accurate way to rotate stuff, but once again my code is a bit flawed and tends to be jumpy and laggy. That can be fixed thought, but as said I don’t have time.

My attempts to create a freeform patch have all failed so far. My evaluator functions seem to be too inaccurate for the things I intended this for, and there are other technical difficulties as well. Pity though, because it might have been the most multifunctional and capable tool for this script.

It’s all still way too unstable for release, but you can request a copy if you wish to press your luck with it :). I’ll resume this at some point, but likely not anytime soon.

Oh, hey. One thing I really have had problems with is calculating the closest point (or intersection point) between 2 bezier splines (with multiple segments). Please tell me if you know any decently accurate and computationally cheap ways to do that.

sorry to hear that…about the script…i was looking foword to this script… me liked it allot :D… but know I’m disappointed :(… still can i get a copy of the script ?

I second that this was a killer project. Any chance of getting a copy?

-Baker

I look forward to you resuming this project.

Uhh, sorry. Haven’t paid too much attention to this corner of the forum in a while :). Sure, I’ll post something when I have a chance.

So yep. Here it is then. Took a while cause I had to find a spot to write some instructions to bundle with it. Don’t expect too much though, it’s clearly not suitable for anything except maybe testing.
http://koti.mbnet.fi/sinko/host/const3.zip
Tested only in max8. Extract to 3dsmax/scripts folder. Documents file included in const3 folder. And of course use at your own risk.

Btw, it’s not encrypted so feel free to laugh at my messy code

Page 2 / 3