Posts: 3
Threads: 1
Joined: Dec 2019
12-20-2019, 08:56 AM
(This post was last modified: 12-20-2019, 08:58 AM by mammuoils1.)
Hello, I have just tried Curvy spline in the last few weeks. My project used almost scene setting for 51 InfiniteTrack( InfiniteTrack.cs). I set some point in space with my rules ( point never duplicate ) then i spawn mesh like the examples. But some times i make some mistakes like the mesh is distortion. This error happens with some case of special position point spline. But i don't know why. I create a spline, creat buildGenerator and updateSectionGenerator to follow the begin and the end point cp in spline. I try to read build Generator but i have not still known the reason. I attached my picture showing my error, hope that you can help me with answer. Thank you first
https://imgur.com/VtsZEfc
https://imgur.com/zEaU1If
https://imgur.com/PBNxVvL
Posts: 2,114
Threads: 92
Joined: Jun 2017
Hi,
It seems to me that the issue is from the orientation of the last Control Point (CP for short), which might be rotated a bit around the y axis. If the issue is unrelated to the spline's orientation, can you please send me a scene that I could test?
Also, I see from the screenshot that the spline segment between the two circular meshes have an uneven distribution of cache points. This is probably because it is a Bézier spline, and the Bézier handle at the first CP is very long while the one at the second CP is very short. If I do remember well, in linear spline segments, the best size for the Bézier handle should be 1/3 the length of the spline segment.
Please let me know if any of this helped.
Have a nice day
Please consider leaving a
review for Curvy, this helps immensely. Thank you.
Available for freelance work—feel free to reach out.
Posts: 3
Threads: 1
Joined: Dec 2019
Hello Aka Ad.
I pretty sure this issue not from orientation of the last CP. In this case all CP have none orientation ( that mean i not set any orientation of CP ).
In the case of unevenly distributed points of length, I don't think so. Because there are many cases where the length of cp 1 then cp2 is very short without any problems (with my test cases).
I really want send you my scene, but the company's privacy policy doesn't allow me to do that. I try make a demo scene but unbelievable, the error was gone @@.
Today i look again scene and see the SegmentApproximationUp have an error in this case( thought gizmos). I will try to find why SegmentApproximationUp draw wrong.
If at any time you come up with an idea for this issue, please report it to me.
Thanks you very much, aka
Death is like the wind. Always by my side.
Posts: 2,114
Threads: 92
Joined: Jun 2017
Hi,
If sharing the spline is an issue regarding the company's policies, try reducing the number of control points of the spline until a minimum set that reproduces this issue. I hope you will reach a spline with few control points that should not cause privacy policies problems to share.
And just to make sure, since you spoke about the length of cp1 and cp2, I was speaking about the Bézier handles length, not the segment's length. Maybe that's what you meant, but I just wanted to be sure.
Can you send me a screenshot of the gizmo's error?
Thanks and have a nice day
Please consider leaving a
review for Curvy, this helps immensely. Thank you.
Available for freelance work—feel free to reach out.
Posts: 3
Threads: 1
Joined: Dec 2019
Hi, sorry aka because my carelessness.
I checked it carefully again. It seems like it is the case
"This is probably because it is a Bézier spline, and the Bézier handle at the first CP is very long while the one at the second CP is very short."
This problem occurs because the position of 3 CP is so different. Although there are many segments like this on the whole game but usually will only be in 1 -2 segments.
Is there any way to fix this problem? . My game is music game and requires the position of the points to be accurate, so stretching the distance between points is can't.
I tried checking how CP works. But I don't understand anything.
I use this code to creat cp point ( edit from InfinitieTrack)
Vector3 p = TrackSpline.ControlPointsList[TrackSpline.ControlPointCount - 1].transform.localPosition;
Vector3 position = TrackSpline.transform.localToWorldMatrix.MultiplyPoint3x4(p + mDir * CPStepSize);
float rndX = valueCurX;
totalCurvationX += rndX;
float rndY = CurvationY * RoadDefine;
mDir = Quaternion.Euler(rndX, rndY, 0) * mDir;
//Skip Fist node spline
if (TrackSpline.ControlPointCount > 1) CreatRingAndAddNode(position);
CurvySplineSegment newControlPoint = TrackSpline.InsertAfter(null, position, true);
rndX allway to be 0. rndY random 0-10. CPStepSize calculate follow time between node of song.
This is screenshot of the gizmo's error.
https://imgur.com/xOc5yeO
https://imgur.com/elkVvO8
https://imgur.com/e3asiSc
https://imgur.com/1gFxUzt
Thank you first. Aka
Death is like the wind. Always by my side.
Posts: 2,114
Threads: 92
Joined: Jun 2017
Hi,
A Bézier spline is defined by both the CPs and their handles. If needed, this link is a good start to understand how Bézier splines work:
https://en.wikipedia.org/wiki/B%C3%A9zier_curve
Curvy by default sets automatically the handles of CPs based on their neighbors to keep the spline smooth. This automatically set value can't possible be the right one for all use cases. So you will need to define your own handles position, and then set it up through Curvy.
To set the handles of a CP, you have to set the CP's "Auto Handles" option to false, then set the values of "Handle In" and Handle Out". These values are available both through the inspector and the API.
Once you understand how Bézier splines work, you can see in the link bellow how to set up two consecutive CPs and their handles to simulate an arc of a circle. This might help you find a solution to how to define your handles.
http://spencermortensen.com/articles/bezier-circle/
Before trying to find the formula that will give you the right Bézier handles for your automatically generated spline, I think it will help to first try to find a solution manually using the editor, and to then deduce the logic behind what you consider the right handles setup.
I hope this helped
Have a nice day
Please consider leaving a
review for Curvy, this helps immensely. Thank you.
Available for freelance work—feel free to reach out.