Quality, Speed and Extensibility

These have been long two months that we’ve spent in hacking the core of 3DTin. After numerous delays however, we have finally deployed the new improvements to the site. Usually we release partial features every week or so, but this new featureset has been an exception. We had to change a lot of code and data structures, to achieve some of the goals that we had set. But finally we are there now. So let me tell you what we have done.

The improvements can be categorized in three major areas

Quality

After series of experiments and redesigns, we have achieved some significant improvements in WebGL rendering. We have switched to texture based rendering, thus harnessing GPU’s capabilities of interpolation when drawing curved surfaces. As a result, the curved surfaces now look as smooth as they ideally should be. Check out following pairs of screenshots to see what I mean. The first screenshot in the pair is from the old implementation and the second one is from the new implementation.

Justice League watch tower by Dewbot

robot by canguru

Bald Eagle by Fumanchu64

This change also improves the look of smoothened surfaces created from cubes.

Speed

We have done tens of changes in various areas of our code that have positively affected the speed of model rendering. In sketches of moderate size we even achieve full frame rate of 60 FPS. We employed various techniques to achieve this goal – reusing memory buffers, cutting through the abstractions to avoid extraneous computations, careful usage of GPU’s memory bandwidth, shifting some computations to the cloud and so on. It’s difficult to achieve the best speed for all kinds of models however. Models with lot of cubes tend to have sluggish responses than ones with ready-made geometry. But overall the UI should feel snappy.

Extensibility

3DTin is now powered by Cadmium. If you remember our announcement in June, you might know about the Python scripting environment called ‘Cadmium’ that we are developing. It’s a python library that we developed on top of OpenCASCADE and PythonOCC to provide a scripting environment for advanced solid modeling. So far you were able to add 11 ready-made shapes besides cubes – i.e. Cylinders, Cones, Spheres, Wedges and their variants. With this release, these shapes are now computed in the cloud using the Cadmium library. What this means is, in future we can use the Cadmium scripting environment to offer a wide variety of shapes to add to your sketches. Laying the groundworks for this infrastructure was the most challenging part, and it has completed now. We are now going to use this infrastructure to extend the 3DTin platform horizontally. I won’t go into the details just in this post, but soon you will see the fruits of this new extensible system.

There are other small and not-so-small changes all around, but I will let you discover and enjoy them. As always, we will be fixing some rough edges that are still left. Do let us know what you think about the new changes.

Advertisements
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s