I have a problem with the caps at the start and the end of the extrudeshape, it’s not well rendered .
I ve tried the createPolygon to create them after the extrude but the issue is that’s hard to position them and orient them properly since my path is complexe .
I want to try an approch where i get the absolute vertecies at the start and end Caps then create a polygon there, but no succes so far . thx for help in advance
Hello and thank you for being a member of the community!
If you want to report a bug, please make sure to share a repro on the forum:
I remember that this had been discussed already in this topic with @Deltakosh and @Evgeni_Popov , the problem comes from the fact that your “H” shape is not convex.
It seems that the default CAP generator of BabylonJS is a very simplistic “star” caping. It does something like that :
(Star extrusion toward the center)
While the best would be to have a “smarter” shape closing like that :
(dividing into convex subparts)
I think the best in your case would be to call the extruder without caps, and generate the right caps yourself.
By the way, I had proposed to add such feature, but still, didn’t took the time to deep dive into it
what i did is cheated a bit , instead of one Extrudeshape , i ve done multiple ones to get the result, even if it’s not the best sollution but it solve the issue so far tough
Something weird just happend to the same scene, the extruded segments where parralel to each others , now the extrusion is not that perfect, it like stretching as shown in the picture :
Actually what is happenning is that the shape reference is rotating at the corners but not scaling , so this causes this stretching, i am trying to find a way to apply the needed scale to the shape at the corners depending on the Angle … and back to you gys .
in the mean while if someOne has already face this and fix, i would appreciate to share .
Yes bro with great pleasure, my 1st approche is to use scalefunction that take the returned value and apply it to the shape at each step of the extrude. The issue was that the return value apply a global scale to the shape there is no straight way to apply it only on x for example which we need actually.
So no the next approch i ll try is to modify the shape by updating its verticies which is possible in babylone 6 and above …
I will give a try this night and share with you the result
I ve put this beside for a while now I am back guys to try to fix this issue .
I am using now extrudeShapeCustom that offer rotationFunction and scaleFunction to have more control on the shape on each point from the Path …
however I am stuck on something I can’t find it logic if someOne can help . when i apply a simple rotation using rotationFunction ,the shape is well rotated but only arround the Path direction Axe … if i want to rotate along the vertical Axe regardless the Path orientation , the hole Extrude process get stuck .
Where i am suppose to have the right rotation by returning Quaternion instead of Angle . here’s the playground .
uncomment rotationFunction:rotationFunction, to see the bug.
Now, the top has always the same thickness, but we don’t rotate it at a right angle because once the (square) shape is rotated, its length is too small for that: we would have to scale it by sqrt(2), but only in the X and Y dimensions, not in Z. This is something that ExtrudeShapeCustom cannot know. This function simply takes the shape, makes it follow the path, and connects the points.
Thanks so much for clarifying that @Evgeni_Popov! I’ve gone another round through the docs and understand it more in depth now. It’s indeed not intending to solve the issue I thought it solved. And I now discovered the Mitred utility which is closer to what I thought, although it doesn’t include scaling and rotation: Babylon.js docs.
Are there downsides to using the Mitred utility I should be aware of, besides no scaling, no rotation, and potentially weird joins at very sharp angles?
And I’m curious, what’s the rationale behind having a utility like this (copy the code to my repo) versus a proper feature like ExtrudeShapeCustom (import from BJS)?
One more question: do you think it’s viable to attempt to generalize your approach with the additional points before/after each path angle and a calculated scale at the angle? I’m guessing the scale would depend on the angle, the distance of the points before/after might depend on the shape dimensions. Maybe we would run into issues with angles over 90° since a proper “mitre” would require a scale smaller on one side and longer on the other? I’m keen to look into it but I’m guessing some of you might have thought this through already and know the issues I might encounter. Maybe it’s not even generalizable?
(I hope i’m somewhat clear with this description )