- Edited
Ok. I implemented a small management system for storing/retrieving parameters to/from resource files. There's currently about 30 parameters. That's quite a lot given that they control only about 40 vertices (on one side). I was aiming to have as few of them as possible but it's a balancing act. More parameters mean more variety but also les predictability and more chaos/clashing. This will be somewhat boring but I'll just list them all out. Names are a bit ad hoc:
- overall dimensions:
- base, width, height, length
- cabin dimensions/positioning/shape:
- cabin_start, cabin_end, cabin_height, mid_cabin_x, mid_cabin_y
- roof_inset_side, roof_inset_front, roof_inset_back
- chamfers:
- door_chamfer_w, door_chamfer_angle, bottom_chamfer_w, bottom_chamfer_angle
- front_chamfer_w, front_chamfer_rot, back_chamfer_w, back_chamfer_rot
- front shape:
- front_drop, front_inset
- back shape:
- back_drop, back_inset, back_elev, back_lift, roof_back_in
- wheels:
- wheel_radius, wheel_thickness, spoke_size, wheel_pos_front, wheel_pos_back
- colors:
- color_body, color_windows, color_tire, color_spoke
Ugh. There'll probably be a few more.
I manually made some designs. System can now apply parameters from resource files. Just for showoff they are gradually morphed over the existing situation. Note that this is not vertex blending (though it'd be possible because of unified topology), but rather the parameter blending. There's also a subtle shake added to the wheels to fake the rotation. Not sure this is visible on the gif tho
Now the remaining big thing to figure out is how to do randomization. A small GAN style neural net would be ideal for this. Since we don't have those in Godot (yet ), it'll have to be something algorithmic.