Closed Katniss218 closed 3 years ago
It would be possible, but someone would need to code it up. Coding the UI would require a fair bit of work.
It would be possible, but someone would need to code it up. Coding the UI would require a fair bit of work.
The UI could be simplified to something like the current Procedural Fairings manual nose shape. With slider for number of cuts, and separate sliders for position & radius of the specific cut. Also could use the new grouping features (similarly to how ProcParts settings can be collapsed) for ease of use.
It could, of course. It's all doable. It would need someone to do some work coding it up though which is more what the issue is.
I don't think an awful lot of new stuff has been done with the project since I worked on it back in I think 2015 or earlier. I've moved on to other stuff now so it won't be me doing the work.
Feel free to contribute if you like. I've got a heap of other ideas for stuff you could do if you had time to do it. I don't though, and I'm not sure that there's anyone else doing it.
I've done a bit of a rework in my branch, mainly that brings in Textures Unlimited support while still allowing the existing texture method, and internally cleans up the AttachNode handling and shifts things to make use of the UIControl callbacks instead of constantly detecting changes in Update(). It has been testing pretty successfully and I think will merge in and release as 1.3.19.1 (for 1.7.3) and 2.0 (for 1.8+)
I responded on the Discord that I don't see work just to reduce part count being particularly useful here, but one point I agree on is with the bezier curves, making some changes to allow user-specified control points instead of only the pre-configured ones that are set in code.
There's code in there to do bezier surface of revolution. I didn't put in custom curves because of the UI coding required. One the UI is there, if I remember correctly the bezier surfaces will just drop out.
Your memory is correct. :)
to simplify UI work, it could be just repeatable pairs of "length" and "ofset". so if you have a cone tank with 0m upper diameter and 1.25m lower diameter, and set custom curves to: length:0.4 ofset:0.3 length: 1 ofset:0.7 it will make an initial cone 0.4m tall and 0.3m base, followed by another section 1m tall, with upper diameter 0.3 and lower diameter 1m (initial + 0.7), and from there till the end of the tank growing up to 1.25m
The UI also needs the tangent angle for the curve, and the weight, so it's not that simple.
The code is based on bezier curves. I think the available shapes are curves that are single segment beziers, with the idea being that that the set available was adequate for whatever you wanted if you joined a few parts together.
If you were going to throw work at it, maybe it would be better to have different extrude shapes. Then you can do procedural aircraft fuselages. Adapters between extrude shapes are much harder, you have to figure out the maths to mesh them and I'm not sure there's actually a general solution.
Tacking onto a todo list. Completely custom curve: not really interested at this time. But simple PAW-based UI to individually manipulate the 4 bezier control points, while retaining the PAW selection through configurable options, and making those options MM-patchable I think is straight-forward enough to put some effort into.
Customizing the 4 bezier control points is implemented in 2b6e3ebebbfbe4c7b0fd6ef4444570857398f698 Going to close this issue here, and leave more advanced topics like customizable extrude shapes for some other folks that are interested in contributing. There are some other Issues to track for other shape ideas.
Would it be feasible to allow the user to define custom curves for "smooth cone" type of part?
Because I find the current options (predefined set of shapes) quite limiting in what I can do with them.
The new system could work something like this:
The left side is the center of the part, the right side is the edge (distance defined as "max distance") With the player being able to drag these nodes (or add/remove nodes with a button).