I haven't disappeared, I've just been whittling away for a couple of weeks at LuxTypes.
I think I finally have a proof of concept. Nothing is final in there, and it all needs some
degree of reorganizing. I'm sure that many things could probably done better,
but here it is. It's quite powerful I think, but it's also getting more complicated
There is a slightly outdated class diagram in there as well.
The heart of the system is in LuxrenderTypes_settings.rb. That's the most interesting place for
you guys to look first, because it's where all the setting structures are defined.
If you run it (outside sketchup), it generates 3 files, which I've included in the zip:
First about test.lxs. This is just a basic Luxrender format export of the settings with all their default values (according to the scene file format specification on the wiki). I'm actually surprised by it's speed considering what actually goes on underneath (and that it's all done in ruby which is notoriously slow).
preset_file: As I discussed before, I've had to cater for sketchups inability to store ruby objects, so I came up with a way of storing the structure/objects in a string format. Most of the changes were in LuxrenderTypes.rb and in LuxrenderAttributeDictionaries.rb which is acts as a bridge between sketchup and su2lux (at the moment it's just implemented in a way that simulates use in sketchup to avoid having to do all my scripting in sketchup at this early stage). This was annoying and complicated to do, but I found one very cool biproduct, and that is that it is easy for a user to save their presets to file as demonstrated in preset_file. It should only be a simple matter to load them back into the system.
I'll wait to see how you guys think materials should be handled, but I'm sure that LuxTypes should come in handy for that as well, (could require some major changes to LuxrenderAttributeDictionarys.rb)
LuxrenderAttributeDictionaries.rb is a real work in progress, It's the main interface between sketchup, Luxtypes and the rest of the su2lux scripts, therefore some more careful thought will need to be given to it's design and implementation. At the moment it's just acting like a singleton using a method recommended by the ruby documentation.
I hope this can come in use anyway, and it should certainly be easy to finish adding the rest of the settings that are missing. No matter what happens, I've learned a lot in the creation of this.