MoI discussion forum
MoI discussion forum

Full Version: mesh edges not aligned when exporting (Closed)

Show messages:  1-10  11-30  31-50  51-70  71-90  91-110  111-123

From: Marc (TELLIER)
25 Nov 2010   [#51] In reply to [#49]
Hi Michael,

I was thinking of images maps or shaders like noise applied to a surface in a displacement channel, a bit like a bump or normal.

Here's a example on simple cylinders that has been tweaked a little to keep their original shape while subdividing.

Marc


Image Attachments:
2010-11-23 - Displacement on nurb export.png 


From: Michael Gibson
25 Nov 2010   [#52] In reply to [#51]
Hi Marc, but doesn't that render-time displacement that you're showing work on any kind of polygon model, not only one made up of just of quads?

In fact in your example there, it looks like the cylinder to the right has an n-gon cap on the top, not all quads on the top, yet you show it displaced in the rendering?

As far as I can tell, you can do "sub-polygon displacement" in Cinema4D on any kind of polygons - that means to dice any polygons up into smaller pieces before perturbing their vertices by the displacement, the "sub" in this case doesn't mean "subdivision surface" in the same way as a HyperNURBS smoothing.

Here's a quick test just to verify - here's a model that is not suitable for sub-d smoothing, it has not been retopologized into quads only, it's got just 1 big n-gon polygon on the top:



Yet it can still be rendered with a displacement maps with "sub-polygon displacement" enabled:




However, since displacement mapping works in Cinema4D by perturbing vertices around (instead of by perturbing micro polygon render samples which is a way some other renderers operate) you probably want to export such models out from MoI into more finely diced up pieces.

You can do this just at meshing time though, you don't need to retopologize your model into a subdivision surface friendly topology first, you just use the "Divide larger than" option when generating a mesh to dice big polygons up into small pieces (and you may as well just use Quads & triangles instead of n-gons), that looks like this:



Having more regularly spaced vertices like that will make more points available for the displacement mapper to push around. But note that this is just an option that you set when exporting the mesh from MoI, you don't need to totally reorganize the topology of your model for this purpose.


There are some render techniques that do combine displacement maps with subdivision surfaces as well (not sure if this applies to Cinema4D in particular though), but it is typical to be able to do displacement mapping on just regular polygon models. Just generate a diced up mesh if your renderer doesn't incorporate displacment directly into its sampling pipeline like RenderMan.

- Michael

Image Attachments:
marc_displacement1.jpg  marc_displacement2.jpg  marc_displacement3.jpg 


From: Michael Gibson
25 Nov 2010   [#53] In reply to [#51]
Hi Marc, so in other words you can use the "Divide larger than" export option in MoI to subdivide (as in "dice up into smaller pieces") the generated mesh if you need a more even distribution of vertices.

That kind of subdivision though is not the same thing as producing a "subdivision surface" friendly topology.

- Michael
From: Marc (TELLIER)
25 Nov 2010   [#54] In reply to [#53]
Hi Michael,

Like said previously, this is a situation were I end up wanting displacement and is wasn't planned, or that it would very long to produce the geometry in a polygonal software.

Here are other examples with the cylinder,
When dicing very small, the vertex normal breaks make funky artefacts.
When dicing very small and unwelding vertices small openings appear.






Anyway this situation doesn't happens often and I'm a happy camper.
Just experimenting a bit. :-)

Thanks for the hints!!

Marc

Image Attachments:
Various Flavors.png 


From: Michael Gibson
25 Nov 2010   [#55] In reply to [#54]
Hi Marc, you'll probably want to use a welded mesh so that the pieces don't jiggle apart.

Also are you just using the default UV coordinates for that displacement mapping? That's probably what is causing your unwanted disruption at the seam between the top surface and the side.

You'll need to get a continuous UV mapping on your shape if you want the displacement map to also behave as a continuous looking thing across the whole model.

If you were to apply a regular image map to that piece, that would probably show you a similar break between the pieces as well.

I think it's likely that the UV mapping on your other piece is the reason why it behaves how you want, not particularly something to do with subdivision surfaces...

- Michael
From: Marc (TELLIER)
25 Nov 2010   [#56] In reply to [#55]
Hi Michael, I didn't thought of unwrapping in the previous example, I used the default cylinder mapping because the default Uvmap stretched the texture.

I will try this later on.

Marc
From: FlashFire
25 Nov 2010   [#57] In reply to [#48]
Steve Wow! How did you force Moi to make such uniform polys? I mean I tried to slice but had no luck
like that.
From: steve (STEVE_HOME)
1 Dec 2010   [#58] In reply to [#57]
Hi FlashFire,

Sorry, I missed your reply/question.

For that model I just used lines to trim the surfaces. For some models it can take longer to split up the surfaces than actually building the model. But if that is the type of output wanted, then that it what I do.

I did have a look at Topogun due to Michaels post (I had been meaning to look at that program for a while). The program is very easy to use, but find that it would take a lot longer to produce the type of output I want, than it takes me in MOI


- Steve
From: FlashFire
1 Dec 2010   [#59] In reply to [#58]
I tried to trim the model using the models outlines, but I don't get your results.
I've used both a re-join surfaces approach and non rejoin.
Could you show me what am I doing wrong?
From: steve (STEVE_HOME)
1 Dec 2010   [#60] In reply to [#59]
You need to add lines to use for trimming.

Here is the start I made on that last model, I added a circular array of lines to trim the top surfaces. It is then a case of adding more trim lines where/if needed to make more cuts. It all depends on the surfaces if trimming is needed, as some surfaces will have good flow for the mesh output even without trimming.


Image Attachments:
trim.png 


From: FlashFire
1 Dec 2010   [#61] In reply to [#60]
But how do you decide on how to trim just any model?
I've been poly modeling since 1993 ;)
I followed your example......IT doesn't magically do what you did.....

Image Attachments:
Clipboard-1.jpg  Clipboard-2.jpg 


From: steve (STEVE_HOME)
1 Dec 2010   [#62] In reply to [#61]
>>But how do you decide on how to trim just any model? <<

Thats like asking how do you decide to build a model. It depends on the model and output wanted.


>>I've been poly modeling since 1993 ;)<<

I was never really into poly modelling back then. I did try 3d studio and used truespace for a while when it came out, but I was modelling in CAD at work, so that became an hobby when Rhino was first released in beta.


>>I followed your example......IT doesn't magically do what you did.....<<


If it magically did, then I would not need to add trims.
The circular array was just the start, I added more trim lines to cut up the model. It took me about 30 minutes to add the lines/cut up, so its not very quick, but still quicker than some other methods.
From: FlashFire
2 Dec 2010   [#63] In reply to [#62]
I noticed the more I cut the model using the radial method, the worse the polys jumped
around, as you can see in both images I posted. If you could please show me what you did
to get such perfect polys, I could then hopefully see your method ;)

I wish this area of Moi could be worked on to be even better. But realize this is a limitation
of the libraries used in programing.
From: Michael Gibson
2 Dec 2010   [#64] In reply to [#63]
Hi FlashFire,

> I wish this area of Moi could be worked on to be even better.

Could you be a little more specific and narrow it down a bit - which area in particular are you referring to and could you describe a bit about what you would rather see MoI do?

But please don't give a description like "just emulate my extensive experience and use my same judgment in creation of the mesh", because unfortunately software algorithms can't be easily created that follow such nebulous types of processes. A software algorithm has to follow a very specific and meticiulously detailed set of rules to produce output, it can't "just do it" ...


> But realize this is a limitation of the libraries used in
> programing.

It's not so much just a library limitation - it's that MoI cannot easily just repeat a process that is mostly based on human judgement and experience.

But there are other issues beyond that as well - one of them is that an all quad topology is not actually better 100% of the time.

Here is a pretty simple example:



So note there that the current mesher placed a single n-gon polygon on the top cap there. If you were looking for the cleanest possible wireframe and most efficient polygon count, that current result delivers that. To produce an all-quad topology for that same example would involve tiling that top planar face with a lot of little quad fragments, making a higher polygon count and denser wireframe instead of a really light wireframe.


MoI's mesher is oriented towards those kinds of goals currently and not on producing an all quad ready-to-subd mesh which it sounds like you are looking for.

If you want an all quad, ready-to-subd mesh, I really recommend that you create that from the start in a polygon modeling program that has a bunch of tools that are oriented towards creating that kind of a thing. MoI's tools are not oriented towards that kind of a thing, you can create poly output with MoI, but it is a different kind of polygon structure than that. The result from MoI is perfectly suitable for rendering directly already though.

If you're trying to do something else than render the polygon result from MoI you are probably just not using the correct tool for the job, except in certain special cases.

- Michael
From: FlashFire
2 Dec 2010   [#65] In reply to [#64]
Nah....I'm not wanting perfect quads.....Chose Moi for it's hard surface and boolean ability.
I wanted to point out that sometimes poly artifacts can show up even when C4D is used to render a moi model imported with normals.
Many points have to be manually welded/cleaned up.

Look at the polys to the left of the words output: and display:
If the exporter could weld points which are as close as these show, it would be even nicer.
Or some how handle these close points or sliver polys better.
This model is using CentroidTriangulation=n as y is so much worse. With Y you then have many points in the center of polys to weld or remove in a polygonal modeler.




In example 2 these points are so close they would no doubt create a smoothing problem in a polygonal modeler. So they would be welded by hand.




I should mention I have adjusted both divide larger than and avoid smaller than with many settings tests and still get slivers or
points that should have easily been welded to a neighboring point.

3D modelers I've used such as C4D still produces strange results at times using N-gon output, so I'll steer clear of it and settle
for Quads and tris. I hope this maybe helps.

Image Attachments:
Clipboard-1.jpg  Clipboard-1b.jpg 


From: GioCa
2 Dec 2010   [#66] In reply to [#65]
I may be wrong but I think that setting "Avoid smaller than" to something like 0.001 should avoid some of the tiny edges on the output mesh, making it somewhat cleaner.
From: Michael Gibson
2 Dec 2010   [#67] In reply to [#65]
Hi FlashFire,

> I wanted to point out that sometimes poly artifacts can show
> up even when C4D is used to render a moi model imported
> with normals.

That shouldn't be the case - do you have an example model you can post? Please post the actual model file though and not just a screenshot.

Also your last screenshots did not show what the rendering looked like in Cinema4D - with the proper vertex normals coming over, models such as you show there should not have any artifacts in them at all, they will look the same as the original NURBS object despite that kind of topology.


> Many points have to be manually welded/cleaned up.

This may mean that you have not prepared the model properly - make sure to join surfaces that are sitting next to one another so they will get a watertight mesh created for them.

If you have surfaces that are not joined to one another but are just sitting next to one another as independent objects, that will make them get meshed independently and they can have get separate vertex structures created for them in that case.

Also you may just need to create a bit higher density mesh to get a smoother looking result.

Don't forget that polygon models are not actually smooth things, they're made up of little facets and the smoothing is a kind of visual trick that's done by using vertex normals. If you have a small number of facets, that can stop the illusion of smoothness from working very well.


> Look at the polys to the left of the words output: and display:

Those should not have any problems in the actual render in Cinema4D with proper vertex normals on them.

Have you possibly turned off the import of vertex normals into Cinema4D?

Also I would recommend using n-gons - Cinema4D has very good support for n-gons and while it is possible for there to be n-gon triangulation problems in Cinema4D, it is quite rare, so I would recommend using n-gon output for regular use, and only switch to Quads & Triangles output for some special purpose when you have actually identified a problem rather than just defaulting to that.


It would really help though if you could post a model that you're having problems with though instead of just screenshots.

I think some of your prior polygon modeling experience may be working against you - if you built a regular polygon model with slivery polygons like that, that could indeed cause artifacts because it's hard for the smoother to make good vertex normals cooked up from scratch on polygons like that. So you seem to be just assuming you're going to have problems because of that topology. (it sure seems like you're just assuming that anyway since you did not show any rendering result). But when you have vertex normals coming in from the original NURBS surface, that is a completely different things and won't have the same kind of artifacts.

It's important though to make sure the vertex normals are being preserved though, that's the key thing that makes the render of topology like that look totally smooth and keep the same appearance as the original NURBS model.

Another general problem you may be running into kind of related to your past sub-d modeling experience is that you may be producing too low polygon of a result out of MoI if you're seeing artifacts. Remember that you're not going to be relying on sub-d smoothing to be applied to smooth out the model further, so you should not try to make as rough of an initial cage as you would if you were doing a sub-d model.

If you make a low poly model you can get various kinds of artifacts that are just part of being low poly. The solution to that is to increase polygon density.

- Michael
From: Michael Gibson
2 Dec 2010   [#68] In reply to [#65]
So anyway if you post the model I'm quite confident that I can help you get it rendered in Cinema4D without any trace of artifacts in the rendering whatsoever....

This has come up before where someone who was used to poly modeling just assumed that they were going to get shading glitches in Cinema4D when that was not the case, here is the thread:
http://moi3d.com/forum/index.php?webtag=MOI&msg=3533.1

And here was the rendered result of that:
http://moi3d.com/forum/index.php?webtag=MOI&msg=3533.11

The only trick applied to make it look totally smooth and perfect in Cinema4D was to ensure it got refined with enough polygons to avoid low poly artifacts.

So for example you mentioned previously that you are using "avoid smaller than" in your mesh settings - don't do that, as that avoids refining in areas and will produce a lower polygon result.

If you want a better quality rendering without low poly artifacts, you need to produce more polygons.

If you produce a low polygon output model, it will have low polygon related artifacts in it when rendered, that's pretty straightforward.

- Michael
From: FlashFire
2 Dec 2010   [#69] In reply to [#68]
Thanks all for the feedback

I have no problem getting a model to render ok. I'll just not be using N-Gon output to do so anymore ;)

My question is, why can't a function to automatically weld points within a distance such as the ones circled in
red be added to the meshing options dialog box? I too thought that was what avoid smaller was for, but to no avail.

Image Attachments:
Clipboard-1c.jpg 


From: Michael Gibson
2 Dec 2010   [#70] In reply to [#69]
Well, what you said a couple of messages above was:

> I wanted to point out that sometimes poly artifacts can show
> up even when C4D is used to render a moi model imported
> with normals.

If you can post the model, I'll show you how to render it in C4D without any visible artifacts at all.

Most likely the artifacts you were referring to were related to low polygon count and not due to the topology stuff that you are posting screenshots of.

But it's difficult for me to verify this since I cannot test a screenshot. If you were to post the model that would give me something I could test and that would help me give you better feedback.


> I too thought that was what avoid smaller was for, but to no avail.

Avoid smaller than doesn't cause welding to happen as a post-process - what it does is make polygons that are smaller than that threshold distance use a rougher angle than the regular angle setting during the refinement stage of the meshing.

It's for producing lower detail on small sized portions of the model. Say for example you have a model that has a lot of little tiny rounded buttons on it, and you don't want very many polygons on those. You can make those small areas get a lower poly count by using "Avoid smaller than".

Here's an example of a small area that is getting quite a few polygons - this happens because the regular angle parameter is scale independent - it works just off of curvature and not size, so a large size rounded thing and a small sized rounded thing that have the same roundness get the same poly density with just the angle parameter:



That little rounded thing is about 0.5 units across, and so if you wanted that small area to get a lower level of detail you can enter in "Avoid smaller than = 0.5", and that will produce this instead:




It does not force welding to happen as you were thinking...


> My question is, why can't a function to automatically weld points
> within a distance such as the ones circled in

It's somewhat hard to do this and also maintain the accuracy of the mesh adhering to the original NURBS object at the same time.

If points that are too far apart get welded to one another, it produces a kind of divot or bump cutting into the mesh.

The other thing is that kind of welding would not really serve any purpose for rendering, if you post a rendering of the unwelded result that you show there side by side by a welded one, they would be indistinguishable in the actual rendering so long as the imported vertex normals are used.


Once again though, it would really help if you would post the model file of the stuff you are showing instead of only a screenshot.


- Michael

Show messages:  1-10  11-30  31-50  51-70  71-90  91-110  111-123