export_obj_multiple/
export_obj_multiple.rs

1extern crate obj_exporter as obj;
2
3use obj::{Geometry, ObjSet, Object, Primitive, Shape, Vertex};
4
5pub fn main() {
6  let set = ObjSet {
7    material_library: None,
8    objects: vec![
9      Object {
10        name: "Square1".to_owned(),
11        vertices: vec![
12          (-1.0, -1.0, 0.0),
13          (1.0, -1.0, 0.0),
14          (1.0, 1.0, 0.0),
15          (-1.0, 1.0, 0.0),
16        ].into_iter()
17          .map(|(x, y, z)| Vertex { x, y, z })
18          .collect(),
19        tex_vertices: vec![],
20        normals: vec![],
21        geometry: vec![
22          Geometry {
23            material_name: None,
24            shapes: vec![(0, 1, 2), (0, 2, 3)]
25              .into_iter()
26              .map(|(x, y, z)| Shape {
27                primitive: Primitive::Triangle((x, None, None), (y, None, None), (z, None, None)),
28                groups: vec![],
29                smoothing_groups: vec![],
30              })
31              .collect(),
32          },
33        ],
34      },
35      Object {
36        name: "Square2".to_owned(),
37        vertices: vec![
38          (1.0, -1.0, 0.0),
39          (2.0, -1.0, 0.0),
40          (2.0, 1.0, 0.0),
41          (1.0, 1.0, 0.0),
42        ].into_iter()
43          .map(|(x, y, z)| Vertex { x, y, z })
44          .collect(),
45        tex_vertices: vec![],
46        normals: vec![],
47        geometry: vec![
48          Geometry {
49            material_name: None,
50            shapes: vec![(0, 1, 2), (0, 2, 3)]
51              .into_iter()
52              .map(|(x, y, z)| Shape {
53                primitive: Primitive::Triangle((x, None, None), (y, None, None), (z, None, None)),
54                groups: vec![],
55                smoothing_groups: vec![],
56              })
57              .collect(),
58          },
59        ],
60      },
61    ],
62  };
63
64  obj::export_to_file(&set, "output_multiple.obj").unwrap();
65}