Jump to content

Need help turning stack of splines into a solid object.


Kirsten Zirngibl
 Share

Recommended Posts

I'm working on some "high concept architecture" renderings that started with a series of irregular vector floors, currently in spline form. I want to create a solid surface that seamlessly blends the floors together on the outside. In other words, creating a continuous mesh such that each spline is a cross section of it.

 

  • I tried converting all the splines to NURBS, attaching them, then using U Loft, which ended up being a tedious mess (although I'm a NURBS noob and potentially missing something). It seems that since they are a bunch of little curve segments rather than one continuous one, things are not matching up.
     
  • I have tried the "Convex hull" maxscript, but it is extremely slow and prone to crashing on the more complex shapes. I can only do one "floor" at a time, and even then, it ignores crevices for a crude, polygonal look.
     
  • A script called "Encapsulator" seems like it would do the trick, but just instacrashes Max.

 

I'm open to other software at this point. Any guidance appreciated here!

 

SplineStackSample.jpg

Edited by kirstenzirngibl
Link to comment
Share on other sites

You may need to set the 1st vertex in each spline to be roughly in the same spot in each spline and check that the numbering goes in the same direction (clockwise/anti-clockwise) also. Turn on 'show vertex numbers' and use 'reverse' where necessary. Another step that might create a better mesh is to make sure all splines have the same number of segments, using 'Normalise spline' modifier. Be careful though, too short a segment length can cause a crash, so test out on a small spline first before adding to the others.

Link to comment
Share on other sites

When I use the "normalize spline" modifier, my only option is to "set segment length." I was unable to select spline points natively in Max. (When applying with a length of 15, I have 209 vertices on the bottom layer and only 32 in the top.) I found this script to do it though. http://www.scriptspot.com/3ds-max/scripts/normalize-spline, but it doesn't seem to want to set a given number of points for a set of multiple selections-- native method would be preferred.

Luckily, my points were all in the same origin and all clockwise.

 

U loft did indeed work (although very slow, and wouldn't do one of the steps). But still... yay! Until I deselected it, and did a preview render. Looks like some kind of wrinkled cloth. I was hoping for something elegant and "cleaner." I can see exactly how the wrinkled cloth would come about (different spaces between the vertices) but am at a loss as to fixing it.

 

I think of all the amazing things Zbrush can do when it comes to combining, retopologizing, and optimizing meshes. Even though it doesn't seem like a "spline program" and good for this task, it makes me think there's got to be an easier way to do this, probably in some other software. Anyone have suggestions?

 

CrinkleNURBSRender.jpg

CrinkleNURBSSCreenshot.jpg

Edited by kirstenzirngibl
Link to comment
Share on other sites

Looks like an interesting challenge

If spline topology ( = vertex count and sequence ) are equal from spline to spline you could try to apply the crossection modifier. This one would create vertical connection splines through the existing vertices and would let you add a surface modifier to generate the surface ( as patch ). Though the complexity of the splines in your case might bring Max down to it knees ...

 

Would you mind posting the unmodified splines in a Max scene ?

I love taking such challenges and would like to have my go on this problem ...

Edited by spacefrog
Link to comment
Share on other sites

use the Compound > Terrain object

 

Fantastic-- it's great to know this tool exists. I had a hard time with it being grayed out, though. For some reason, it is was unavailable out until I attached all the splines together, then exploded them again.

I would consider the result a success if I was trying to make city-themed glitch art. I think one of the problematic parts is the "overhangs." Perhaps also the sharp parts of the "scallop" shapes?

 

2017-01-12_204306-Render.jpg

 

Looks like an interesting challenge

If spline topology ( = vertex count and sequence ) are equal from spline to spline you could try to apply the crossection modifier. This one would create vertical connection splines through the existing vertices and would let you add a surface modifier to generate the surface ( as patch ). Though the complexity of the splines in your case might bring Max down to it knees ...

 

Would you mind posting the unmodified splines in a Max scene ?

I love taking such challenges and would like to have my go on this problem ...

 

Sure thing. Here's a link: https://www.dropbox.com/s/e3qvs6u3zxd04s4/KZirngibl_FloorStack1_CgArchitect.max?dl=0

Very much appreciate you lending your brain to this!

 

In the file you can see I tried adding the modifier and results were... messy.

2017-01-12_203731.jpg

Link to comment
Share on other sites

I don't understand what u r trying to do but u can connect the verticis in triangular or rectangular form by adding lines into it and just apply surface modifier on it. don't forget to weld them first.

 

I could do it by hand I suppose but it would take a VERY long time. The issue is that I have many of these to do, so I was hoping for a (semi) automated solution. Also wouldn't the same issue of vertices not lining up cause the "wrinkled cloth" look with this technique as well?

 

Whoa - the spline arrangement is even more complicated than it looked it first hand. There are some internal islands here and there and there is bridging going on and what not ... So i doubt my methods would be successfull here. Nevertheless i'll try a bit for some solution ...

 

Hmm, the internal islands are not necessary actually, a side effect of the initial vector creation process. I should have anticipated them being problematic, though. Here is a version of the file with islands removed. I also deleted all the floors that split into two, and renormalized the segment count. Hope that helps your process go smoothly!

https://www.dropbox.com/s/6iep3k4sq25a7f3/Asset_WireAnim1_CgArchitect-Cleanup.max?dl=0

Thanks again.

Link to comment
Share on other sites

Okay - i succeeded with the new posted max file

There are still some quirks in 2 or 3 of those spline sections because the wrong vertices get cross connected, but i think you get the general idea. The procedure is as follows

 

 

  1. First i un-grouped all splines and started to attach one after each other to the bottom spline in strict bottom up sequence. The strict sequence here is importand, as the crossection modifier applied later on, will cross-connect in that order, and we want that to be bottom up
  2. Now i only got one shape object left with all the splines in it. I set interpolation steps to 0 and switched off "optimize" ( to keep the splines similar as possible)
  3. For each spline i checked the "first" vertex, this is the one displayed in a different color when in vertex subobject mode. All those should lie in a straight vertical line on all splines as possible. To fix you can select any other vertex and press "Make First" until all are in a straight vertical line. ( of course there is only ONE first vertex per spline )
  4. Next step is adding a crosssection modifier, this cross-connects those splines with vertical splines going through the original vertices,
  5. After that i put a "surface" modifier on top. This can take a long time, because you use pretty bad system unit settings in the scene and the modifier has some bad default values. After i adjusted that i got a nice patch surface, i leave the steps at zero as i want to use turbosmooth later on
  6. Added Turn to Poly and Relax modifier to smooth out the whole surface and than a turbosmooth is used for smooth subdivision
  7. There is a delete spline modifier in the stack too, which deletes each second spline prior crossection&surfacing it . This produces a smoother surface, but of course looses details. You can simply toggle it on or off ...

This all might sound complex, but is pretty straight forward. I tried with Rhino too, but it's output suffers from the same problems like the method inside of max i just described but you loose the procedural nature of it . In Max you still can tweak all the parameters until you are happy with the outcome, simply see the scene attached

http://www.frogsinspace.at/?download=Cgarchitect_SplinesToSurface

 

SplineSurface.jpg

Edited by spacefrog
Link to comment
Share on other sites

This has been a huge help, so many thanks!

 

One thing I got was an error message upon opening, saying that "The MassFX authored in this file was created with a newer version of the plugins. Forward compatibility is not supported, so things might not behave properly." Not sure if that's affecting things at all (I'm in 3DS Max 2015).

 

Another question is what modifier did you use for the "SelectEachSecond?" I'd thought it's just an "edit spline" that has been renamed at first, but it appears to be something else.

 

you use pretty bad system unit settings in the scene

I looked into how Max handles units and checked my units setup. Turns out my SYSTEM unit scale was sect to inches, while Display was set to Meters. Oops... being self-taught and doing scifi designs where precise units don't matter, I can miss important stuff like that, hah. I have to wonder if some of the "quirks" I'd attributed to the software were actually a result of bad units. Anything else I should be doing to make sure my units are working well?

 

 

Thanks again.

Link to comment
Share on other sites

One thing I got was an error message upon opening, saying that "The MassFX authored in this file was created with a newer version of the plugins. Forward compatibility is not supported, so things might not behave properly." Not sure if that's affecting things at all (I'm in 3DS Max 2015)

 

You can savely ignore this, it's just because i saved back from a newer Max version to the 3ds Max2015 version. Once you saved in your Max, this message should go away.

 

Another question is what modifier did you use for the "SelectEachSecond?" I'd thought it's just an "edit spline" that has been renamed at first, but it appears to be something else.

That's just a "Splineselect" modifier - i should have named that more clearly ....

 

Regarding units:

it's always good to set them so that you have plenty of "headspace" and do not have to rely on very huge ( >100000) or very small coordinates ( below 0.01 ) and values ( even some large offset from the origin matters here ). Note: the limits i mention here are just for orientation and are straight gut instinct.

Display Units do not matter at all, there are only there to remind about the dimensions of your tools. I usually switch them to generic units, as this refers directly to the "System units", which are important. If your scene would be a real life building, i would suggest setting system units to "meters", and model the building correctly on scale....

Edited by spacefrog
Link to comment
Share on other sites

Hey, thought I'd share another way I found to do this, even though it's not Max related. It's much faster/more automated than doing it with splines though. Hope it helps anyone stumbling on this thread looking to do the same thing...

 

This is using Zbrush. Turns out "Dynamesh" is capable of jumping the gaps.

 

  1. Convert all splines to poly and attach them so they are one mesh. Order doesn't matter. I just used the "collapse" utility.
  2. Export to Zbrush as .obj and import as tool.
  3. Apply Dynamesh on a relatively low setting like 128 (otherwise it will not "bridge" the layers.) Things will look a little crappy.
  4. Remove all artifacts not directly attached to the main shape by hiding the main shape, reversing the selection so the artifacts are hidden, then Tool > Geometry > Modify Topology > Delete hidden.
  5. Close holes (under Modify Topology).
  6. Run Zremesher (default settings).
  7. Use Claypolish with "soft" setting turned high (I had 80.)
  8. Export Tool as obj and import into Max. Will need to be resized.

2017-01-20_173349.jpg

 

What I like about this technique is that I actually wanted the shape to be a little smaller than the floors, and with Zbrush I can play with the Polish settings to shrink things, tighten edges, make hollows more concave, etc...

Edited by kirstenzirngibl
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...