| Q&A |
OpenCTM,
Marcus
Geelnard
Septembre - 2009
|
| |
 |
“OpenCTM
can achieve, a 10 million polygon mesh compresses to
under 6% of its corresponding STL file size.
[...] The real advantage of OpenCTM, as I see it, is
that you can easily use it as part of a much more complex
data structure, such as a custom 3D model or scene description
format for a game engine or visualization tool.”
<Stanford
Bunny
|
|
| |
|
| Q1 |
Why
is OpenCTM more than just another 3D format? |
| A1 |
Unlike
many other 3D formats, OpenCTM combines excellent compression
and a very flexible data structure, all in an open file format
and an easy to use open source SDK. |
| |
|
| Q2 |
Compare
with other mesh format, OpenCTM offers a very good compression
rate. Is it a lossless format? Is there any simplifications
in coordinates values? |
| A2 |
Yes,
it is a lossless format. No vertices are dropped in the compression
process. If you want lossy compression, it is of course possible
to combine OpenCTM with any polygon reducer to achieve even
higher compression ratios.
For an example of the level of compression that OpenCTM can
achieve, a 10 million polygon mesh (the Stanford Thai Statue)
compresses to under 6% of its corresponding STL file size.
|
| |
|
| Q3 |
Could
you please tell us what are the main features of OpenCTM (vertex
colors, textureUV, animation, ...)? |
| A3 |
When
it comes to vertex data OpenCTM tries to be as flexible as
possible in order not to limit its use to any specific application.
In addition to the most basic mesh information (coordinates,
normals and connectivity), the format can hold any number
of UV maps (e.g. for 2D texture coordinates) and any number
of custom per vertex attributes (this can really be anything,
for instance colors, pre-calculated ambient occlusion, weights,
and shader-specific attributes).
There is currently no explicit support for animation, but
since it is possible to define per vertex weights, you can
combine OpenCTM with an externally described skeleton animation
system (i.e. one weight attribute per skeleton bone). This
way you are free to use OpenCTM in almost any kind of skeleton
based animation system. |
| |
|
| Q4 |
What
is the main target of OpenCTM? |
| A4 |
Right
now, I think the primary audience is 3D software developers,
who can integrate the technology into their products in
various ways.
For instance, OpenCTM can be used in situations where you
use simple 3D mesh formats such as STL or Stanford PLY today.
The immediate advantage would of course be a drastically
smaller file size, which can be convenient in several situations
(e.g. for scientists that want to store and share large
3D data sets, or in production environments where you need
to transfer or store large amounts of 3D meshes).
The possibilities do not stop at replacing simple file formats
though. The real advantage of OpenCTM, as I see it, is that
you can easily use it as part of a much more complex data
structure, such as a custom 3D model or scene description
format for a game engine or visualization tool. An analogy:
just as the OpenDocument Format uses XML for text and layout
and PNG files for images, a 3D model format could consist
of an XML file for object properties and materials, and
OpenCTM files for the object geometries.
In the long run, I hope that OpenCTM will be available to
many different user groups, directly or indirectly, but
of course that depends on how well it is received by the
software development community.
|
| |
|
| Q5 |
What
are the MG1 and MG2 method of OpenCTM? Can it be compared with
polygon reduction tools such as Mental Mesh or OpenMesh? |
| A5 |
As
OpenCTM is a lossless format, it does not perform any geometry
reduction. All triangles and vertices are preserved, regardless
of compression method. However, OpenCTM provides different methods
of compression in order to trade speed, memory, compression
ratio and precision. Both the MG1 and MG2 methods use lossless
triangle reordering techniques and LZMA compression to reduce
the size of the connectivity information.The main difference
between the MG1 and the MG2 methods is that the MG1 method stores
vertex data as floating point values, while the MG2 method uses
fixed point. The latter allows for dramatically improved compression
mainly because lossless prediction techniques can be used (not
entirely different from the PNG compression scheme, for instance).
The whole idea is that the LZMA coder likes smaller values,
so the MG2 method tries to minimize the value range of the vertex
coordinates (and other vertex attributes).

From
a user point of view, this means that the MG1 method can be
used if the floating point data must be preserved at all cost,
while the MG2 method can be used when you know what numerical
precision you need. In the future, more compression methods
may be added to the OpenCTM file format, but none are planned
right now.
|
| |
|
| Q6 |
OpenCTM
offers a complete set of tools : viewer, conversion tool and
developer files. OpenCTM is a good alternative to other format
such as Collada. Do you plan to add some conversion tools for
Collada? |
| A6 |
Yes,
several users have already requested a COLLADA converter, and
it is being looked at right now. I will continue to add converters
and import/export plugins for different applications when I
have the time. People are of course encouraged to help out with
the development. For now, there are a couple of simple Blender
scripts available for importing and exporting OpenCTM files,
so you can use Blender as a poor mans converter too. |
| |
|
| Q7 |
As
OpenCTM is very compressed it makes suitable for internet use.
Can it be handled by an online 3D engine (in Java or Flash)? |
| A7 |
Internet
applications were certainly on my mind when I designed OpenCTM.
We always seem to be short on network bandwidth, which means
that internet 3D applications can possibly gain a lot of performance
by using 3D compression. Right now, there is no direct support
for Java or Flash. For Java, it is possible to compile a Java
enabled shared library of OpenCTM for all platforms that your
application needs to support (this is how LWJGL works, for instance),
but I think that the ideal solution would be to port OpenCTM
to Java completely. I certainly hope to see this happen in the
future. Again, time is the only limiting factor. |
| |
|
| Q8 |
Could
you please tell us a bit more about your goal with OpenCTM and
what are your next milestones? |
| A8 |
First
of all, I would like to think of OpenCTM as a compression technology
that can be used in many different applications, not only because
of its technology, but also because of its openness. For me
it has been a way to make my invention available to the public,
and I hope that people will find it useful.
The first near term milestone is the release of OpenCTM 1.0,
which will basically be the same as the current release, with
minor corrections and additions based on the feedback from users.
The next step will be to improve the support for OpenCTM in
various applications, through converters, programming language
bindings and porting it to new platforms (e.g. Java).
What happens next is really up to the 3D software developer
community. I would not be surprised if OpenCTM will be used
in ways that I have never imagined. |
| |
|
| |
|
| |
|
 |
|
|