2009年12月28日月曜日

I saw a new market at a crazy party in Akihabara

The other day, I went to a year-end party in Akihabara. It was really exciting and crazy.

The party was thrown by 3D-GAN (3D-Geometry Application Network), which is an NPO and was established 2 years ago in Akihabara. 3D-GAN's purpose is to share and promote 3D shape data/technology more. Various people were there from various industries.




Look at the above picture. The guy wearing the strange mask is me. The mask is about a character named Mona, which is popular among Internet users in Japan.

   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´Д`)< オマエモナー
  (     )  \_____
  │ │ │
  (__)_)

I borrowed the mask from a fellow geek attending the party, who had made the mask. It was really surprising that the mask had a tiny CCD camera on the face and had a LCD(liquid crystal display) inside, so I wouldn't be blind while wearing it.

Akihabara is the only city where we can meet such interesting geeks. Yes, you know, Akihabara is a city for various kinds of geeks, nerds, maniacs, and Otaku.

The people in the party were diverse. They were of various ages, from various industries, and had various interests. The only common interest among them was 3D technology.

They would never have met if it weren't for 3D data.
They would never have met if it weren't for 3D-GAN.
But they met. The encounter was exciting. I believe the encounter will drive a change. The change is about the spread of 3D data and technology.

I remember Mr. Soma, a founder of 3D-GAN, told me that establishing 3D-GAN in Akihabara was significant. He said that there were no cities in the world more unique than Akihabara, and he believed an innovation would occur from a unique city like Akihabara. He chose Akihabara strategically.

By the way, I found a Hisui user at the party(Hisui is a CAD framework I developed). He told me that he was using Hisui to convert obj format file to STL format file. It made me happy to talk to a user of my own product.

He told me that he couldn't find any software which can convert obj format to STL format except Hisui. I was surprised because to develop the function converting obj to STL was really easy. But I know that obj format is used by CG modelers and STL format is used by manufacturers, and there is a deep gulf between them. It seems that they don't exchange any information with each other. So, I guess no vendors have found the need of the conversion. But I could see it in Akihabara.

So, let's meet in Akihabara.

2009年12月18日金曜日

Euler's Formula in Topology

CAD is based on mathematics. The formula I was impressed by the most when I joined the CAD industry was Euler's formula.

v - e + f = 2(1 - g)

Where 'v' is the number of vertices, 'e' is the number of edges, and 'f' is the number of faces. 'g' means 'genus', which I will explain later.

I was surprised by the fact that every polyhedral object satisfies this formula. In this entry, we will verify this formula with some concrete examples. Let's begin with a simple cube.


First, you should keep in mind that the genus of a cube is zero. You will know why later. Then, we can simplify the formula as below.

v - e + f = 2

What we should do is to count vertices, edges, and faces in a cube. It's really easy work. The 'v'(the number of vertices in a cube) is 8. The 'e'(the number of edges in a cube) is 12, and the 'f'(the number of faces in a cube) is 6. Substitute these numbers in the formula.

v - e + f = 8 - 12 + 6 = 2

Bingo! This simple cube satisfies Euler's formula indeed.
Next, you might wonder what will happen if each quadrangle face of the cube is split into 2 triangles. Let's verify this case.


In this case, e becomes 18(= 12 + 6) and f becomes 12(= 2 * 6) because each face is split into two triangles with one diagonal edge. v remains 8, of course. Substitute these numbers in the formula.

v - e + f = 8 - 18 + 12 = 2

Bingo! This is amazing, isn't it?

Next example is a little complex. Can you count v, e, and f in this object?


v is 16, e is 32, and f is 16. Let's substitute these numbers.

v - e + f = 16 - 32 + 16 = 0

Oops! What is wrong?
Now, you need to know what the 'genus' is. The genus means the number of holes in an object. Because there is one hole in the above object like a doughnut, the genus 'g' is 1. Now you can understand why the genus of a cube is zero. So, In this case, Euler's formula must be written as below.

v - e + f = 0

So, the doughnut satisfies Euler's formula indeed.

This theory is categorized as topology. Note that geometrical shapes don't matter in topology. Only linkages between vertices, edges, and faces matter. Topology interested me because it's really different from geometry I learned at high school.

Every solid kernel, which is a calculation engine of 3D CAD, is equipped with 2 kinds of operations. The one is a kind of geometrical operations, and the other is a kind of topological operations, which is called Euler operations. I feel it's amazing that such abstract mathematics is alive in CAD software. Don't you think so?

2009年11月26日木曜日

Can CAD design professional scissors?

This was several months ago. I was talking to a hairdresser when I was having my hair cut.

He said hairdressers buy their own scissors all by themselves. Barber shops don't contribute any money for their scissors. I was very surprised when he said their professional scissors cost as much as 100 thousand yen(= one thousand dollars).

"Wow! That's amazing! I've never seen such expensive scissors. How are they different from cheap ones?" I asked.
"Well, feeling of the scissors in my hands matters, I think." he answered.
"Can you tell the difference?"
"Sure! They're absolutely different. I can tell by just gripping them."

I'm always impressed by craftsmen's stories like this. I imagined they had developed sharp sense of touch in their hands, and they wanted to use special scissors which can be maneuvered precisely. And of course, there were other craftsmen making special scissors for hairdressers.

"I'm curious. What is the concrete difference?"
"Cheap scissors seem to have a bad distribution of weight. And ... good ones' shape is designed in great detail and sophisticated."
Then he showed me his scissors. The shape of the handle had smooth and subtle curves, which wouldn't be noticed without his explanation.
"This subtle dent fits my finger when I use it in this position."
He explained this by pretending to cut hair. The hairdresser talking about his own tool looked really happy.

He said their scissors were semi-custom made. They chose each part and assembled their own scissors. I had believed that scissors were manufactured under mass production, but their professional scissors were not. I guessed the industry of these professional scissors was completely different from the industry of cheap stationery scissors in terms of culture, logistics, and the process of design.

I'm interested in these designs of artifacts because I develop CAD software. I can't help wondering whether the shape can be designed with CAD.

It's easy to answer whether the shape can be represented with CAD. The answer is "Yes".
But it's difficult to answer whether the scissors can be designed with CAD. We can't say yes easily although the shape can be represented with CAD, because it's difficult for computers to transfer feel of scissors' weight and texture.

However, I want to try such CAD.

I wonder what the scissors designers are concerned about while they are designing. I think they aren't concerned about the scissors but about the hands gripping the scissors. In my opinion, to design scissors is to design the hands gripping the scissors. They must be concerned to navigate hairdressers' hands via the scissors.

This is what design is. To design a bottle of water is to design a shape of water in the bottle. To design a shoe is to design a foot in the shoe. To design something is to design the relation between the target and its surroundings.

Can CAD design professional scissors? I want to be able to say "Yes" someday.

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!