Dec 16, 2021

Solving complex problems in 3D

Introducing Shapr3D’s latest features and how we developed them

It’s been an incredible few months for Shapr3D and we haven’t released all the magic yet. There has been an insane level of collaboration across teams and functions to ship great features to our users. We’ve now collected some of the most recent developments with a sneak peek into how the teams have come around building features like Dark mode, Section view, curvature visualization with the Zebra Effect, or even Shapr3D for Windows.

SpaceMouse support

The 3Dconnexion SpaceMouse is a peripheral device specifically designed to make navigating with the camera easier in a 3D space. It is a niche product – only people who are serious about 3D modeling invest in one.

Knowing that integrating it to Shapr3D would help professionals in their workflows was a great motivation booster, and working with obscure hardware is always great fun. It was also a unique challenge because, besides the usual cross-function collaboration, it meant that we had to work with a third-party provider.

“An interesting technical aspect of it was that this device puts hard requirements on the behavior of the camera when used, so it works the same across any 3D application. Ensuring that we were up to snuff regarding these requirements while keeping some of our own camera ‘magic’ was very challenging and rewarding at the same time.” (Áron, Software Engineer)

Section view

Section view was one of those deceptively simple things that slowly revealed itself to be a very broad yet nuanced problem. Splitting objects in half does not sound complicated on paper, but there are countless difficulties in quantifying the criteria that make a 2D section accurate, informative, and easy to read.

The project started with extensive research and consulting a wide range of people from casual users to CAD veterans. We needed to make a technical proof of concept using a state-of-the-art modeling engine. Then we had to flesh out the user experience with our design team: we observed live user tests and kept meticulously fixing potential pitfalls. We finished it off by defining the first major milestone for the feature and finally shipped it to thousands of people.

“What I particularly enjoyed about this process was that there were no ready-made answers for most of the questions. Coming to a great solution is demanding, it requires effort and careful planning – as opposed to following a path set forth by some run-of-the-mill framework, and ending up with something that we have seen a thousand times before.” (Dávid, Software Engineer)

Guided Loft

As an improvement on the basic Loft tool, Guided Loft enables our users to create gorgeous free-form shapes that, besides making their designs stunning, allow them to model an entirely new class of surfaces.

Previously, Shapr3D only supported lofting simple planar faces, giving the user minimal control over how the resulting lofted surface would look like. After understanding the complexity and subtleties of the operation itself, and tweaking the interaction between Shapr3D and the underlying modeling kernel it uses (Parasolid by Siemens), we were able to seamlessly define guide rails (or curves) to control what the Loft tool produces. After some back-and-forth between developers and designers, we integrated the new behavior with Shapr3D's intuitive sketching utilities and added various tweaks to support a quasi-3D snapping interaction between sketches of arbitrary planes.

"Improving the Loft tool was great fun! From defining our goals and design requirements, all the way to implementing the Guided Loft support, taking all complex corner cases into account, I learned a ton about our application and the modeling kernel we use. But the best part was getting to see the magic an experienced CAD designer can do with the tool we gave them." (Gergő, Software Engineer)

Shapr3D for Windows

As much as the users love our iPadOS-native app, we’ve long been planning on expanding Shapr3D’s portfolio to Windows devices. 2021 was the year to make it happen. By now, the codebase got huge and the product quite complex. With massive projects and libraries like Parasolid included in the visual studio solution, build times, as expected, were massive. This resulted in not only reduced individual productivity but also that of the Azure pipelines. Imagine sitting in front of the computer for 10-15 minutes just waiting for the solution to build and just because you switched branch for reviewing a pull request. It's tiring just to think about it.

We found ourselves obsessed with this problem. After an intensive R&D and digging in many options, we found the solution that worked best for us: Buildcache.

“We did not stop there. We connected with the developers of Buildcache and collaboratively updated it to make it even better. And now, with Buildcache integrated into our project, we are saving as much as 50% of our time which would have been lost staring at our screens while we wait for the solution build.” (Shan, Software Engineer)

Dark mode

If you want to give your eyes a rest and save a bit of battery life, you can now switch to Dark mode in Shapr3D. Its development was very exciting yet challenging because it involved every visible part of the app, including rendering and iOS & macOS user interfaces. With it came a lot of back and forth with multiple members of the design team, a lot of brainstorming, quick prototyping, and sometimes even discarding ideas we thought were good a few weeks earlier. It required a lot of flexibility on both ends.

Working on it was like painting a picture. We refined and tweaked bit by bit until it was pretty enough to be shared with the world.

“The implementation of designs was a lot of fun. Seeing the app come to life in a new color was very satisfying. Having to touch every bit of the application from UI to rendering also gave me better insight into how certain – to me previously unknown – parts of the application work.” (Miki, iOS Engineer)

Curvature visualization with the Zebra effect

Curvature visualization is making certain continuity properties of the modeled surfaces obvious for the naked eye. Even on a real-world object, it’s difficult to see the difference between a G1 seam (where the tangents of two surfaces are equal) and a G2 seam (where the derivative of the tangents are equal). With the shipping of our new G2 filleting tool, we had to provide a way to assess the continuity of the surfaces and confirm that the G2 fillets are G2 indeed.

The software implementation of this assessment is known as Zebra Striping – because of the alternating black and white bands. The naive version is quite easy to do, one just needs to use the textbook reflection formulas with a suitable environment map. Unfortunately, it’s not possible to construct an environment map that is reflected on a sphere as nice, regular stripes, without any discontinuity, no matter where the camera angle is.

The solution was to give up real, physics-based reflections and do what looked good instead. First, we created a formula that provided straight, parallel bands on a sphere in the center of the screen. Then, by even more tweaking and cheating, we arrived at a formula with which off-center spheres stopped revealing the discontinuity of the environment map behind the sphere. The last touch was blending the zebra pattern into the existing lighting equations. In the end, we were able to create an effect that not only provides surface diagnostics but looks cool, too.

“I really liked how we got from a hopeless, ‘Nope, this can’t be done properly’ position to ‘this is the best zebra ever’ in a few iterations by patiently enumerating the possibilities, leaving out unnecessary details, and solving equations.” (Tamás, Software Enginer)

And there’s more! In 2021, we also released the following updates and features:

Sound good? If you’d like to work on similarly cool projects, check out our open positions and join the team!