Jump to content

Window Geometry


Recommended Posts

Vertex normals!

This is one of the most common issues when cutting round objects with round objects and you have to output evil triangles xD But the evilest thing here is the automatic vertex normal smoothing by modeling programs.. It is of course very helpful, but at this it simply fails.

My method is to manually specify the normals (I am using 3ds max EditNormals, I am not sure if whatever you are using has that option). Here is an example that I encountered:

Wu6pP4n.png

In this particular example, the hull is cut in halves to be able to remove the inner pieces and to help obtain proper normal values, as it is easy to simply copy values from the vertices on the upper edge of the hull, where the normals have been properly auto-smoothed. By just making sure that all vertex normals on a vertical line are identical you basically solve the problem.

KrNEZCV.png

You can see that these red selected vertices have normals copied from the upper edge (green normals on top).

When looking from the top, the difference is evident..

T8MGNc2.png

Above is how the normals are pointing when auto-smoothed by max, and the lower one is when I manually specified them.

For all rotary surfaces, like cylinders and cones such as in your case, you should just always make sure that the normals, horizontally, are pointing towards the focal point (the center of rotation)

In the end, I export the model as .fbx and unity perfectly imports the model with the specified normals.

Finished, no deformation, yay! (maybe not visible, but believe me, there are no deformations =) )

qlIc1Eq.png

I do not suggest that leaving saw tooth pieces inside the window frame is a good solution, it is not, it will promote Z-fighting, but for now this is the solution I am using.

ALSO: There is also a plugin for 3ds max called Normal Thief that can "steal" vertex normals from either a hole-less model or a high poly model and apply it to vertices on a holed model. Be sure to check it out. I did not use it in this example, but I used on some other things and it's pretty handy for solving problems like this.

Once you master vertex normals, you can do a lot more cool stuff, like smoothing edges with just a single chamfer poly, without using normal maps or cramming in more edges..

OlHM9kX.png

Edited by nothke
Link to comment
Share on other sites

Vertex normals!

This is one of the most common issues when cutting round objects with round objects and you have to output evil triangles xD But the evilest thing here is the automatic vertex normal smoothing by modeling programs.. It is of course very helpful, but at this it simply fails.

My method is to manually specify the normals (I am using 3ds max EditNormals, I am not sure if whatever you are using has that option). Here is an example that I encountered:

http://i.imgur.com/Wu6pP4n.png

In this particular example, the hull is cut in halves to be able to remove the inner pieces and to help obtain proper normal values, as it is easy to simply copy values from the vertices on the upper edge of the hull, where the normals have been properly auto-smoothed. By just making sure that all vertex normals on a vertical line are identical you basically solve the problem.

http://i.imgur.com/KrNEZCV.png

You can see that these red selected vertices have normals copied from the upper edge (green normals on top).

When looking from the top, the difference is evident..

http://i.imgur.com/T8MGNc2.png

Above is how the normals are pointing when auto-smoothed by max, and the lower one is when I manually specified them.

For all rotary surfaces, like cylinders and cones such as in your case, you should just always make sure that the normals, horizontally, are pointing towards the focal point (the center of rotation)

In the end, I export the model as .fbx and unity perfectly imports the model with the specified normals.

Finished, no deformation, yay! (maybe not visible, but believe me, there are no deformations =) )

http://i.imgur.com/qlIc1Eq.png

I do not suggest that leaving saw tooth pieces inside the window frame is a good solution, it is not, it will promote Z-fighting, but for now this is the solution I am using.

ALSO: There is also a plugin for 3ds max called Normal Thief that can "steal" vertex normals from either a hole-less model or a high poly model and apply it to vertices on a holed model. Be sure to check it out. I did not use it in this example, but I used on some other things and it's pretty handy for solving problems like this.

Once you master vertex normals, you can do a lot more cool stuff, like smoothing edges with just a single chamfer poly, without using normal maps or cramming in more edges..

http://i.imgur.com/OlHM9kX.png

Nice writeup man. I did explore some options earlier with manually editing the normals via the edit normals modifier but my infamiliarity with this method made me a bit frustrated.

Looks like you are using a floating/detached window over a simple cut out. Nice touch iwe been thinking about this method for a while but iwe never remembered to actually use it:sticktongue:

Edited by landeTLS
Link to comment
Share on other sites

Exactly nothke! I wish blender would finally get some of this functionality (there are some rudimentary normal project funtions since some builds but they arent great).

Back in the days when I was modelling for Power&Glory (GTL to GTR2 mod) i used zmodeler, and although lacking some vital funtions you could play with the normals very nicely, also stealing the normals from hole-less meshes.

EDIT

NO! I am dumb! And that is good!

For blender, there is the Data Transfer Modifier available since some time, that I totally overlooked for I was focussed on the normal edit modifier.

So a quick tutorial:

1) make sure you get a decent topology on your window cutout.

2) make a copy of your mesh, remove the window geometry (just the base mesh without holes), Move it to a different layer and/or hide it. We just need its vertex data.

3) make a vertex group where you put in all the vertices that you want to be affected. Exclude the ones that are recessed from the outer surface (ie the inner edges of a recessed window etc)

3) add the data transfer modifier. Choose the mesh made in step 2 as source, and use the vertex group made in step 3 to only affect selected vertices.

4) choose face data -> custom normal from within the modifier.

5) profit!

Javascript is disabled. View full album

Thanks nothke for making me take another look.

Edited by InsaneDruid
Link to comment
Share on other sites

That's a great find InsaneDruid.

If someone could make a complete beginners tutorial for this this modifier using a common example like those windows (maybe with an explanation of vertex normals as in nothke's post) then that would be a great addition to the dev sticky.

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...