LDraw.org Discussion Forums
Bricksmith 3.0: Oh so Flexible! - Printable Version

+- LDraw.org Discussion Forums (https://forums.ldraw.org)
+-- Forum: LDraw Programs (https://forums.ldraw.org/forum-7.html)
+--- Forum: LDraw Editors and Viewers (https://forums.ldraw.org/forum-11.html)
+--- Thread: Bricksmith 3.0: Oh so Flexible! (/thread-12846.html)



Bricksmith 3.0: Oh so Flexible! - Allen Smith - 2014-04-08

[Image: icon32.png]

Bricksmith 3.0 adds the following features:
  • LSynth integration with real-time, drag-and-drop constraint editing for creating flexible hoses, chains, bands, etc.
  • Curved parts are drawn with smooth shading
  • Can change spin center to center of selection
  • “Walk-Through” camera mode lets you view your model from the inside.
  • Search feature to select all parts of a particular color or name
  • Translucent parts correctly show the model behind them. (The interiors of translucent parts may not be rendered correctly.)
  • Performance improvements for rendering models with large numbers of parts.
  • “Insert Related” command automatically inserts selected parts that match the selection, e.g. drawers for a cupboard, tires for a wheel, window glass for a window frame.
  • Split Step command

It also fixes the following bugs:
  • Fixed modifier shortcuts for mouse tools not working after invoking a contextual menu on 10.8+

Bricksmith 3.0 has some of the most exciting features yet. And I would like to extend a very special thanks to Robin Macharg and Ben Supnik for implementing most of them.

The integrated LSynth editor in Bricksmith 3.0 strips away all the pain of working with flexible elements. You get instantaneous feedback while editing your constraints. There's nothing to download or set up. No meta-commands to edit. No external program to run. No separate files for constraints and synthesized output. The only thing between you and your hose is your mouse.

LSynth in Bricksmith works like this:
  • Bricksmith comes pre-packaged with the LSynth command-line tool, the configuration files, and the unofficial parts.
  • When you add or edit an LSynth element and constraints, Bricksmith automatically calls LSynth with just the element you are working on, parses the synthesized result, and inserts it into your model
  • The original constraints are preserved in such a way that they are still editable. Every time you make a change, Bricksmith automatically deletes the stale synthesis and inserts a new one.
  • When you deselect an LSynth element in Bricksmith, the constraints vanish, and all you see is the synthesized hose.
  • If you select the hose again, it becomes translucent and the constraints are revealed again, ready for you to edit them.
  • If you open a file with just constraints, Bricksmith automatically generates the synthesized output for you. But it's completely non-destructive; the constraints are always preserved for you to edit them later.

Bricksmith's LSynth integration was developed by Robin Macharg, and I greatly appreciate the contribution!

But don't overlook the other great features added in the release. Ben Supnik has done some fantastic rendering work for smoothed shading and transparency sorting. He's also added a feature called "Insert Related", which is supposed to make it easier to find and position parts that always go together, such as wheels and tires, or windows and glass. The data for this features comes from a simple MPD file which contains groupings of related parts. There's a meta-command to identify groups and their names; everything else is inferred. It's really easy to add to this file, and I hope people do.

Bricksmith requires Mac OS X 10.6 or later(*), and may be download it at <http://bricksmith.sourceforge.net/>.

Sincerely,
Allen Smith

(*)only tested on 10.9


Re: Bricksmith 3.0: Oh so Flexible! - Willy Tschager - 2014-04-09

Allen,

since I won't never get me an Apple case it would be interesting who did you integrate LSynth and got araound with the META and like. Also a short video would help so see how it works.

w.


Re: Bricksmith 3.0: Oh so Flexible! - robinmacharg - 2014-04-14

Hi Willy,

I did the LSynth integration work. The short version of 'how' is:

LSynth was modified so that rather than using files it can also accept input via StdIn and produce synthesized output on StdOut.
Bricksmith then runs its own modified copy of LSynth whenever a constraint changes, writing a version of the part to be synthesized to its StdIn, and reading the StdOut output. This is then parsed and replaces the previous version inside Bricksmith.

We read a (user-configurable) version of the LSynth config file so we know about the various constraints available.

It's fast enough to appear - almost - interactive.

Bricksmith's internal architecture gets in the way of truly interactive draggable constraints but it's still an improvement over the workflow I was previously using.

Niceties like partial transparency and selection are handled by Bricksmith, with actual colours being correctly saved to file when necessary. The (minimal) LSynth modifications are available in the Bricksmith repo if anyone wants to merge them back.

The video idea's a good one. When I have the time...

R


Re: Bricksmith 3.0: Oh so Flexible! - Don Heyse - 2014-04-15

It'd be nice to merge the changes into the lsynth repository code. I think someone made a similar stdin/stdout patch a while back and I never managed to pull it in...

Anyhow, It looks like I haven't touched the lsynth code on sourceforge in 4 years so if you bricksmith guys want the keys to the repository, just say the word. It could use a new caretaker, and it's probably a good idea to hand it over before I completely forget my sourceforge password.


Re: Bricksmith 3.0: Oh so Flexible! - Allen Smith - 2014-04-15

Don, I would appreciate write access to the LSynth repository. I'm not volunteering to be a "caretaker," but I definitely don't want to preside over a forked codebase. My Sourceforge user ID is 'lightbulbs'.


Re: Bricksmith 3.0: Oh so Flexible! - Don Heyse - 2014-04-16

Ok you should be in.

No need to settle for just "caretaker". You know you always wanted to write some draping code for the sailboats, or the lego netting, right?