You may know of 3DTin, the very cool, easy and intuitive browser based 3D modeler that started out as a very 8-bit cube assembler that is getting increasingly more sophisticated while maintaining the intuitive user interface. You may not know of Cadmium, a library of Python scripts for 3D modeling curated by the man behind 3DTin, Jayesh Salvi.
Jayesh was kind enough to answer a few questions about his projects, the philosophy behind them and what he hopes to achieve with them.
Jayesh your projects include 3Dtin and now cadmium, a python library for solid modelling, tell us a little about your background and what has brought you to create these projects.
I am a software engineer currently based in Mumbai, India. I started work on 3DTin in March 2010. I always had a fascination for 3D modeling tools. I had tried to learn Blender for a long time. But even after using it on and off for a year I couldn't use it meaningfully. It was clear to me that there is a lot of scope for improving usability of 3D modeling tools. But I have no prior background in Computer graphics - neither as a programmer nor as a user, therefore I didn't consider it an option to develop a 3D modeling software on my own. However in late 2009, as WebGL started gaining ground, I saw a new platform that could be game changing for CAD tools. WebGL can do to CAD tools, what AJAX did to productivity tools (document/spreadsheet editors) a decade ago. Moreover the emerging interest in 3D printing clearly shows demand for easy to use CAD tools.
This gave me a very challenging project to work on, something I was looking for since I started working on my own in early 2009. In a previous life, I worked at companies like VMware and Symantec for 4 years in the US, and studied Computer engineering at Univ of Minnesota earning Masters. In Feb 2009, I relocated back to India to work on something of my own. At first, I developed couple of Android apps with moderate success, but I was clearly looking for something big to solve. Fortunately, the idea of 3DTin started taking shape and it provided a big enough challenge that I needed.
What are the advantage and disadvantages of browser based 3D modelling?
Pros: Zero installation - only type a URL in browser and start modeling Operating System agnostic - you can run it on any OS that runs Firefox or Google Chrome. (For better results a graphics card is recommended, but not necessary) Stored in cloud - Your sketches are saved in cloud and are accessible from any machine. Sharing is easy - a web based tool can export and share things with other web services much more easily than a desktop software. Ability to run compute intensive CAD algorithms in cloud. This can let a user do CAD modeling even from a netbook or tablet device, which is not suitable for number crunching.
Cons: These are still early days for browser based CAD tools. It will be some time before they can offer same features as traditional desktop tools.
Browser based CAD tools may require you to be online. Although it's possible to design them to work completely offline (HTML5 features in current browser make it at least possible, if not easy), if they are dependent on cloud for doing computation then it can't be used offline. 3DTin supports most of the editing functionality offline, but it cannot save/load new sketches while offline.
You recently introduced 3DTin Premium for only $4.99 that allows files to be saved privately and a few other minor functions, do you see this split stream as being something that will widen or break out into more streams?
The premium services are targeted to the professional users who want to save their sketches privately. Although 3DTin is no match for professional CAD tools today, it will offer more modeling power to the users in future. And even today, its intuitive UI can be used by professional designers to quickly create rough prototypes of their ideas.
The other kind of users (which are the majority) are students or amateurs who don't want to pay for expensive CAD software licenses, but want to learn 3D modeling. Since they are learning, they don't mind sharing their work with others.
3DTin's motto is (if you want to call it that): "3D modelling for everyone". Everyone will have access to all the basic and advanced modeling utilities that 3DTin has to offer. Only differentiation that will be made is based on whether they want to share it or not.
This revenue model has already been used successfully by services like Github (free if you share, fee if you don't).
I introduced the Premium feature to start generating revenue. So far, 3DTin has been operating on my personal savings. I would like to hire more developers and build a reliable cloud infrastructure for CAD modeling. Revenue is essential to finance those goals.
With Cadmium you are creating a library of Python scripts for 3D modelling, what is the benefit of a script over the usual 3d tools?
I believe that a 3D modeling tool cannot provide all advanced modeling functions through a graphical user interface without confusing the users. My definition of intuitive user interface is this: When a program loads, the user should be able to know what to do as soon as he/she touches the mouse or keyboard. When this is the kind of simplicity you want to offer, overloading the GUI with menus, buttons and toolbars is not the way to go. Instead, with Cadmium I am trying to isolate the advanced functionality into a well defined programming language.
Let me explain with an example. Suppose you create a model, let's say a simple pipe. A typical technique is to draw two co-axial cylinders of different radii and then perform a boolean subtraction on them. Now try to imagine how you will do this using graphical interfaces of tools like AutoCAD, Blender, etc. Typically, you will have to draw two cylinders and then go through certain menus or buttons to perform the boolean subtract operation. (Yes, there are tools which offer certain interfaces to make this special case easier, e.g. Sketchup's push-pull; but that's not a generic solution) Now let's say, your friend wants to know how he can create the same pipe. Now you will have to describe him in words what exact steps you followed to get the result. If you are more enthusiastic, you may use some screenshots or even video demo to teach him how to do it. Moreover, if you come back after a month and want to perform the same task, you will have to recall from memory what steps you had to go through to draw the model. Now try to do this for a model that's way more complicated than a simple pipe.
If you were to create a pipe using Cadmium like script, you can write following two lines of code to do it.
from cadmium import (Cylinder(r=5,h=20) - Cylinder(r=4,h=20)).toSTL('pipe.stl')
If you now want to tell your friend how you did it, you just have to copy paste the two lines. If you want to do it again after a month, you just have to run the script you saved last time.
A scripting language encodes the advanced modeling functions in a formal language, which makes them easy to share, remember and reuse.
Will others be able to submit their scripts? If so will they be vetted? If others cannot contribute why not?
At present Cadmium is just a stand alone python library that anyone can run on their desktop. It's open source and not dependent on 3DTin. Users can write their scripts without any fear of locking.
Cadmium is not integrated into 3DTin yet. I am not yet sure how and when it will be available through 3DTin, but I am positive it will happen some day. I will defer answering these questions until then.
What role do you think 3D printing has in the increase of interest in 3D modelling?
I think 3D printing is a prominent reason for increased interest in 3D modeling. There have always been enthusiasts who liked to create virtual 3D models. But now there are more of them because they can realize those models into world of atoms, with 3D printing.
Some people see the barrier to entry with 3D printing is the need to learn 3D CAD, how do your tools break down this barrier and what do you think needs to happen next?
That's very real barrier to entry. I can tell from my first hand experience with Blender.
When I started developing a WebGL based modeling tool, I started it from scratch. I looked at it as an opportunity in disguise. It gave me the chance to rethink the CAD modeling UI from usability point of view. There is this thing I've learnt so far. A software has two aspects: "Ease of use" and "Power of customizability". The root cause of awkward CAD tool interfaces is, an attempt to mix the two in a single interface.
If you try to offer more power through the same interface, you will sacrifice the ease of use.
My goal with 3DTin is, to separate these two aspects and offer them in their full glory separately. An interactive UI gives you limited 3D modeling tricks, but it's easy to grasp. A scripting environment needs you to learn some programming tricks, but it gives infinite power in the form of a consistent formal language.
I also have some ideas that will let non-programmers benefit from the scripting environment. But it's premature to comment on it at this point.
What is the next step for 3D tin and Cadmium?
We have many cool things lined up. I recently hired a promising young programmer, so I am hoping the development will speed up. In near future, we are working on export to Collada file format which will give users more export destination choices (including Shapeways, Google Earth, Second Life etc.). Also the interactive UI can be made more intuitive and we will be releasing some upgrades for it too.
Also I look forward to feedback from community on Cadmium. It is in very early stages and has lot of potential, so you can expect it to grow.
universe grows.Thanks again for your time Jayesh, I look forward to seeing how the 3DTin and Cadmium