-
Notifications
You must be signed in to change notification settings - Fork 342
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proposal: Procedural Curve Chamfer #1690
Comments
@OmarEmaraDev, Spline from Object Node currently only works on Either Curve or Text Object. |
@Gerstmann-Bradley Constructive modifiers in Blender don't operate on splines, Blender first convert the spline into a mesh then apply the modifier. So all information about splines are lost at this point. So really, the best you can do is your setup above or the Splines From Edges node. |
I am trying to think of a good design for this operation. We have two types of curves, poly and bezier. Poly curves should be straightforward, a per point radius can be provided by the user to control the bevel amount at each point. Perhaps another level of control is an option to determine which points gets beveled and which don't. Bezier curves on the other hand seems a bit problematic. Would it make sense to bevel something like a bezier circle? Probably not. So should the node leave "smooth" handles alone and only affect sharp ones? Or should we split those smooth points somehow and try to maintain smoothness? What do you think is a good design for this node? |
Good questions. Well I think you're actually right, that already smooth handles don't need a procedural chamfer. From a workflow perspective I think this use case is usually desired when you want to add smoothness to a quite primitive basic shapes: like for example round the corners procedurally of a rectangle curve while maintaining the simple and easy to edit base curve shape or I for example previously in Cinema4D created an abstract street layout where I needed to change the street pattern quite easily but also needed to have round corners on the streets. When you already created a smooth curve with beziere handles I guess you want to have full artistic control over the final curve so yes, I would say this should only affect sharp corners. In the latter case you could anyways still add the existing smooth node in case your wanted to smooth your curve even more, right? I think it's a good idea to also feed in a selection to the node and maybe even a weight per curve point to allow for different radius sizes. How could these selections (and weighting) be made? Via falloffs? Is it somehow possible to also set manual selections via viewport clicking (also in general for animation nodes, maybe via id keys?) Thank you! |
Smoothness is not exactly defined in this case, what I was proposing is to instead subdivide the point and maintain the existing smoothness. Still not sure how this will work. I will give it more thought.
Using contextual information in the node tree such as selection is probably not a good idea. ID keys might be a good option, but we don't currently support that. I guess we can add support for that separately. Okay. Thanks for the feedback. I will give it a bit more thought and hopefully implement a variant soon. |
You might also want to check this video for some feature ideas how this could work: https://youtu.be/unyR8G6BdDI |
@dapa5900 I already did the math for the poly spline chamfer, still haven't figured out bezier though. I might just add the poly spline version for you to test this Wednesday and follow it with bezier later. Sorry for the delay. |
Omar, I have a side question, there was a long-standing proposal at #1332 talking about nurbs curve support. |
@Gerstmann-Bradley NURBs are a completely different type of curves, so the code for all the spline operations would need to be written specifically for BURBs. And they don't seem to be used a lot. In other words, big project, little motivation. What do you want NURBs for exactly? |
Upon creating a complex curve in 3D space, either for modeling or creating paths, working with Bezier handle is very difficult, so I ended up using lots of Nurbs which provides lots of auto-smoothing result. At some point I would say personally I use more Nurbs than the other two types of curve. |
@Gerstmann-Bradley What if we convert the NURBS into Bezier when reading them from Blender? So you would still have them as curves in Animation Nodes. Would that be satisfactory? |
Absolutely yes. As long as the shape is maintained, what happens internally isn't something I personally would bother. |
@Gerstmann-Bradley Alright. I am not sure about the technicalities yet, but I will look into it. |
thank you for implementing the functionality and sorry for the late reply. What is the best way to get the AN build with new features implemented to test them? Is this part of the public release already? So far I always downloaded the latest build from here: https://blender.community/c/graphicall/0hbbbc/ However since a while after installing the addon with this package it's telling me that I need 2.93 which I don't use yet as I'm waiting for the production ready LTS release (for stability reasons). From your demo gif I would say it looks good. Would there be a way to also change the "resolution of the beveling"/the subdivisions? Also it would be nice if you can add a "flat"-mode, so that we get a straight line between the two endpoints of the radius. I guess with a "resolution" option this could as well be done by setting the resolution to 0. thank you! |
@dapa5900 About 15 minutes after we commit anything to Animation Nodes, the build becomes available there as the "Latest" one: https://animation-nodes.com/#download, so just download from there. The builds from graphic all are not maintained by us, and are not updated automatically. Latest AN builds track latest Blender, and we can't support older version due to missing functionalities or different APIs. Blender doesn't do anything special when installing the add-on, feel free to delete the folder and put the new one and it should work. Beveling is implemented as two Bezier handles approximating a a circular arc, in other words the resolution is completely controlled by the resolution of the spline itself. So just increase the spline resolution. We can add a flat mode. But I will try to support Bezier splines first before implementing that. |
Great, thanks for the information. |
Since Omar didn't mention, I will add several notes: At the end, you can know the status based on commit date |
Thanks a lot! |
Hi,
is it possible to add a procedural curve chamfer option / node? It should basically do the same on curves what a bevel modifier is is doing in Vertex mode. Please see here for reference:
It should have the options to set the radius/offset of the chamfer as well as the subdivisions/segments.
Please find here as well a reference of a C4D-Plugin that does that:
Thanks!
The text was updated successfully, but these errors were encountered: