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.

0 件のコメント:

コメントを投稿