02-06-2015, 08:00 PM
(This post was last modified: 02-06-2015, 08:09 PM by psychicparrot.)
I bought this plugin to use for oriented spline path meshes - particulary smooth ones.
The generated meshes are smooth for both pitching and yawing the spline, however upon rolling the surface becomes unsteady, creating a zig zag pattern of triangles. It took me a while to figure out why this happens and while being at it I changed the unclosed mesh triangles to use the same diagonal direction as the closed ones:
This is useful for me to generate visually complex meshes and simple collider meshes that use the same structure instead of having diagonals cross each other. It might be a useful change for others too in case it's not already in the new version or has any other consequences.
However that didn't fix my problem of generating small staircases whenever I twisted and rolled a spline mesh. I figured out how to fix it, but not yet where to best apply that in code. Since the effect is rather subtle on a mesh here is a sketch of what currently happens on the left and what I would like to achieve on the right:
To get that working with any flat shape each vertex needs to be shifted along the spline tangent (better yet the spline itself?) in relation to its position to the normal, with the maximum shift on the outer width having a magnitude of the segments length/4.
I figured a vector3 cross between the spline up and a vertex' extrusion vector to the spline might do the job, but I have no idea how and where to apply that.
For an all around smooth Curvy I'd love to get some help with that.
The generated meshes are smooth for both pitching and yawing the spline, however upon rolling the surface becomes unsteady, creating a zig zag pattern of triangles. It took me a while to figure out why this happens and while being at it I changed the unclosed mesh triangles to use the same diagonal direction as the closed ones:
Code:
//in SplinePathMeshBuilder
#region ### Build Triangles ###
// Unclosed Mesh (i.e. line like)
mTris[triIndex] = vtSegN+ev;
mTris[triIndex + 1] = vtSegN1+ev;
mTris[triIndex + 1] = vtSegN1+ev;
//mTris[triIndex + 2] = vtSegN1 +1+ev;
//switching diagonals
mTris[triIndex + 2] = vtSegN + 1+ev;
mTris[triIndex + 3] = vtSegN1 + 1+ev;
mTris[triIndex + 4] = vtSegN + 1+ev;
//mTris[triIndex + 5] = vtSegN+ev;
//switching diagonals
mTris[triIndex + 5] = vtSegN1+ev;
However that didn't fix my problem of generating small staircases whenever I twisted and rolled a spline mesh. I figured out how to fix it, but not yet where to best apply that in code. Since the effect is rather subtle on a mesh here is a sketch of what currently happens on the left and what I would like to achieve on the right:
To get that working with any flat shape each vertex needs to be shifted along the spline tangent (better yet the spline itself?) in relation to its position to the normal, with the maximum shift on the outer width having a magnitude of the segments length/4.
I figured a vector3 cross between the spline up and a vertex' extrusion vector to the spline might do the job, but I have no idea how and where to apply that.
For an all around smooth Curvy I'd love to get some help with that.