Data Formats
3D
The number of 3D geometry data formats is endless – we recommend making use of MeshLab to convert your geometry into one of a few standard formats (i.e., PLY, or OBJ, as described below).
PLY
The PLY format provides a basic description of 3D objects. Data in this format can easily be displayed in the Data Arena. PLY meta information along with the geometry data itself is represented in a plain text file with the following format:
ply
format ascii 1.0
element vertex 2
property float x
property float y
element face 1
property list uchar int vertex_index
end_header
0 0
0 1
2 0 1
The first two lines, as well as end_header, are mandatory for each file. The actual data is located after the header and runs until the end of the file. The header contains the following information:
- element introduces a data description, the example object above has two vertices
- property describes the structure of one vertex data entry, where each vertex (in the example) consists of two float values (namely x and y)
- face elements are of type list, represented in the following structure:
- the head of a list is of type uchar and specifies the list length
- each list entry is of type int
- the list is named vertex_index, each value in the list represents the index of an earlier listed vertex
- all vertices in a list describe one face of the object
After the header, the actual data follows. First, all vertex elements are listed, one on each line, with the vertex properties separated by a blank space. The number of entries present should correspond to the value specified in the vertex element definition. Next, the faces are listed immediately after the vertices, laid out in a similar fashion.
The most important property data types are: char, uchar, int, float and double. An optional header keyword (comment, followed by any text) can be used to include an inline description of the data. More extensive documentation on the PLY geometry format may be found online.
OBJ
Another popular geometry format is the old Wavefront .obj file format. It’s about as simple as the .ply format, which is why it’s still used today. There’s a wikipedia entry for the .obj file format containing additional information.
Here is an example showing what a simple box looks like in .obj format. The size of the box is 1 unit in X, 2 units high in Y, and 3 units deep in Z. The box has 8 corners (vertices ‘v’) and 6 sides (faces ‘f’). One corner of the box is at the origin (0, 0, 0).
# File exported by Houdini 15.0.244.16 (www.sidefx.com)
# 8 points
# 24 vertices
# 6 primitives
# Bounds: [0, 0, 0] to [1, 2, 3]
g
v 0 0 0
v 1 0 0
v 1 0 3
v 0 0 3
v 0 2 0
v 1 2 0
v 1 2 3
v 0 2 3
g
f 2 1 5 6
f 3 2 6 7
f 4 3 7 8
f 1 4 8 5
f 3 4 1 2
f 6 5 8 7
Spreadsheet
Tabular data is usually organized with Microsoft Excel or LibreOffice. These programs provide the ability to export the data into the layout-free CSV format, which is easier to process.
CSV
Generally, CSV is a text-encoded file with separated values in rows. Each row represents an entry with the columns as attributes. Usually, the first row contains a name for each attribute encoded as text (i.e., the column headings).
To permit consistent processing, we expect all string values to be escaped in double quotes (i.e., “String”). Further, the values should be comma delimited, even though other characters are allowed by the format.
An example CSV which may be visualised using the parallel coordinates pipeline is shown below:
"City","Temperature","Rainfall","Month"
"Sydney",25,0,10
"Sydney",22,1,09
"Melbourne",20,2,11
"Melbourne",19,3,10
...
The values in the “City” column come from a fixed set and repeat. This indicates a good attribute for grouping within the parallel coordinates graph.
JSON
More information about JSON can be found at json.org. Here is a simple example:
[
{"name": "Marie", "age": 30},
{"name": "Fred", "age": 50},
{"name": "Francis", "age": 12}
]
Point Cloud
A point cloud is a set of data points in located within a coordinate system. In a three-dimensional coordinate system, these points are usually defined by X, Y, and Z coordinates, and often are intended to represent the external surface of an object.
Point cloud samples may be created using 3D scanners (i.e., LIDAR, LIght Detection And Ranging). These devices measure a large number of points on an object’s surface and output a point cloud data set as a file. The point cloud represents the set of points that the device has measured. More information about point clouds may be found online.
We support some common formats for point cloud data sets, including .dcl, .las and .ply.
Houdini
Houdini supports a wide range of geometry formats, allowing it to import and export 3D models and make use of the available pipelines. Data that does not represent 3D geometry can also be imported into Houdini using channel files.
CHAN
The .chan file format is a native Houdini file format that allows you to import your data and use it in Houdini to create geometry. The format is similar to CSV, as it also represents data in a text file. Each row represents data of one frame and attributes are separated by space. In contrast to CSV, there is no header row and string values are not supported at all.