2009年11月13日金曜日

Hisui, a CAD framework I developed for the new era

Today, I want to let you know "Hisui", which is a new CAD framework I developed. The framework is based on OpenGL, and is written in C#. I designed the framework for the new era of CAD I mentioned in the previous entry. You can download this framework for free from http://www.quatouch.com/products/hisui.html (Japanese only).

About the name "Hisui"
"Hisui" means "jade" in Japanese. Why did I give a gem's name?
There is a programming language named Ruby, which was born in Japan. We can implement what we want easily and quickly with Ruby. I was impressed by the concept of Ruby, so I decided to give my product a gem's name.
Finally I chose jade because my company, QuaTouch Inc., was founded in May, the birthstone of which is jade. Furthermore, jade has Asian connotations because jade was much prized in ancient Japan.

Why free?
I believe a CAD framework for the new era should be available for free because such framework must be a common platform of engineering. So far, most of CAD applications have been very expensive, and we need to pay an extra license fee to develop our own applications upon the SDKs of those CAD applications. This expensive price system has worked because gigantic enterprises have invested a lot of money for CAD. But now, I think the rule of the game is being changed, and we can't expect such large investments any more. Instead, we need a CAD framework which can be used by small companies as a common platform. I want Hisui to be such common platform.

Why C#?
It's because C# is the best choice to develop software which runs fast enough, in a cost effective way.
Why not C/C++?: Although C/C++ would be the best choice if you wanted to pursue performance, I think C# is fast enough. Meanwhile, to develop software in C/C++ costs much time and money because C/C++ is too complicated to develop software casually. I chose C# so that Hisui will be a platform which helps casual software developments.
Why not Java?: Java is one of the good candidates which help casual developments. But Java was developed under the concept "The network is the computer", which is not suitable for a CAD framework. It is difficult in Java to call native APIs and to optimize performance manually. On the other hand, C# supports native API invocations. We can use "struct" data structure to define primitive data types such as vectors, so that those tiny objects won't be managed under the garbage collection. Furthermore, we can write "unsafe code" in C# to handle pointers.
Why not Ruby?: Some people may wonder why I didn't develop in Ruby although I mentioned I was impressed by the concept of Ruby. But Ruby's performance is not good enough to develop CAD software. Actually, we can mimic the concept of Ruby with C#, as Ruby itself is written in C.

The concept of Hisui
In my opinion, a framework shouldn't claim any strong concepts, although an application on the framework should have its own concept. A framework is not responsible for claiming its own concept, but for supporting applications on it to implement their concepts. I designed Hisui not to have its own strong concept, so that Hisui wouldn't force its applications to obey any concepts.
However, if I dare to write, the characteristics of Hisui is as follows:
  • Easily handle discrete geometrical structures, such as polygonal mesh, point cloud, and so on. Hisui has these following data structures:
    • Hisui.Spatial.ITriangleSoup: set of triangles like STL format.
    • Hisui.Spatial.IPolygonMesh: polygonal mesh like Wavefront's OBJ format.
    • Hisui.Spatial.IPolygonShell: polygonal mesh with topological information in half-edge structure.
  • Easy to extend its function with plug-in modules developed by users. Users can plug-in users' own entities, graphical scenes, serializers, and commands in user friendly manners.
  • Doesn't prevent users from calling OpenGL APIs directly. So, you can use Hisui as a high functional OpenGL platform instead of GLUT.

I'm sorry that there are no documents of Hisui written in English. I want to write English documents some day. If I write them, I will inform you on this blog.

2009年10月29日木曜日

Conventional CAD is no longer a hub of 3D computing

CAD stands for Computer-Aided Design and it indicates various kinds of software which helps design. In this blog I will just call "3D CAD", "CAD", which helps 3D shape modeling.

In manufacturing industries, conventional CAD for mechanical design has been a central hub of the engineering process for years. This market has been very big and many software vendors have competed with each other aggressively, so, those kinds of software have evolved to be highly sophisticated. I think such conventional CAD will keep its current position in the market for the time being.

However, the conventional market already stopped growing, I think. Instead, other markets such as the medical industry or the hobby industry are growing rapidly. These new markets seem more attractive to me.

It is important that a typical data structure of the new markets is polygonal mesh, which is far different from B-rep structure, which is typical in conventional CAD. I think conventional CAD cannot be the center in the new markets because of the difference in the data structures.

What I want to say in this entry is something like this: Conventional CAD has been the central hub in the mechanical industry but they aren't in the new markets. Now, 3D technologies are applied to not only mechanical design but also new fields such as the medical industry, the hobby industry and so on. We should see CAD and its surrounding world in perspective to envision what kind of CAD will be useful in the new markets.

The conventional world
Let me review the conventional 3D computing world beforehand. Conventional CAD has evolved for years for mechanical design and their main users are such as the aviation industry, the car industry and the appliance industry. In these industries, CAD is surrounded by many kinds of software as follows:
  • CAM (Computer-Aided Manufacturing): They import CAD data and generate NC codes such as cutter locations.
  • CAE (Computer-Aided Engineering): For example, elastic mechanics analyzer, a kind of CAE, converts CAD data to solid mesh and analyze them by FEM.
  • CAT (Computer-Aided Testing): They import both CAD data (= virtual model) and scanned data (= real model), and detect defects by comparing them.
Note that CAD plays the essential role in this engineering world because all of the applications are related with CAD directly. This means that those applications deeply depend on the CAD data format, the structure of which is optimized for mechanical design and is pretty complex.

I know the complexity of CAD format causes some problems in the data conversion process between CAD and the surrounding software. The structure of CAD data is suitable for mechanical design, but for data exchange. This is a built-in problem, which won't be resolved perfectly forever.

Our industry, however, has accepted and tolerated the complexity because CAD is the only 'entrance' to this 3D computing world. The only way to put a 3D model into the computing world is to use such conventional 3D CAD and we don't have good alternatives. This is why CAD have been dominant in the world and we are obliged to accept the CAD format.

In fact, I think there is yet another reason why CAD became dominant. The car industry, for example, organizes hierarchical structures, so called "keiretsu". The main users of CAD are car manufacturers, such as Toyota and Honda, who are on the top of the hierarchy. On the other hand, the main users of the surrounding software, especially CAM, are subcontractors in the hierarchy, and they have been forced to tolerate such complexity of CAD data. I mean, the power balance of 3D software is a copy of the power balance of the users' industries.

New devices and industries
But now, there are other entrances into the 3D world, such as 3D scanner and CT scan. Furthermore, the ability to manufacture real products from virtual CAD data is no longer the privilege of the manufacturing industries because of 3D printers. I believe these devices will change the 3D CAD/CAM world, and I guess the new markets won't construct such hierarchical structure like the car industry's.

It is fun for me to imagine following futures. (I know some of them are already implemented, though.)
  • Doctors will be able to design artificial joints or legs with CAD software based on the CT-scanned data. 
  • We will be able to scan the shape of our feet and order pairs of custom made shoes so we won't suffer from shoe sore. 
  • We will be able to download the 3D data of our favorite game characters from the Internet and print them with 3D printers.
Conventional CAD will be useless in this market because the data structure of those devices are completely different from conventional CAD's. I believe there must be plenty of room to invent new software in these markets.

Alan Kay, who is often referred to as the father of the personal computer, said "The best way to predict the future is to invent it.". Let's invent our future by ourselves!

2009年10月11日日曜日

Why we founded QuaTouch Inc.

I was struggling against a kind of pessimism about the future of my industry when I worked for Armonicos Co. Ltd, which developed 3D CAD software mainly for the car industry. Our sales of customized development accounted for 50% of our total sales, and I expected the market would keep shrinking gradually. CAD/CAM products had evolved for many years and they became too complicated to be developed casually. Clients hesitated to make large investments for such developments of CAD software. I didn't have a good vision for my future, so, I decided to quit the company. That was 4 years ago.

But my boss, who was one of the board members, wouldn't accept my resignation. Instead, he persuaded me to do something new with him to change our future. Finally, we decided to found a new affiliated company. We named the company QuaTouch, which stands for Quality Touch. The pronunciation of the name is similar to Ka-ta-chi, which means "shape" in Japanese. The aim of the new company is to develop some software for shape design with quality-touch usability.

What is the mission of the new company? I anticipated that a paradigm shift was coming to the 3D CAD industry and I wanted to ride the new wave. I wanted to develop new software which will promote this revolution in Japan. This revolution is a shift from continuous geometry modeling to discrete geometry modeling, like polygon mesh and point cloud. In other words, the revolution is a shift from the car industry to other industries, such as the medical industry or the hobby industry and so on.

This was the beginning of my journey. I will write about these revolutions and the challenges I might face in this blog.

2009年10月1日木曜日

Prologue

Hi. I decided to write an English blog to improve my poor English.
I'm a computer programmer, and I have been developing software such as 3D CAD/CAM for more than 8 years. Now, I work at QuaTouch Inc (Tokyo, Japan; http://www.quatouch.com [Japanese only]), which was founded in May 2006, and I am the only employee in the company.
I want to write about programming and technical topics concerning computer graphics or geometrical processing, the future of our industry, and my company (and so on).
Although I have been learning English for two years, my English is still not good. I'm afraid you will find many grammatical mistakes in this blog. I will be happy if you are kind enough to correct those mistakes to improve my English.
I'm going to update this blog once every two weeks. Enjoy!