Blender  V3.3
usd_writer_mesh.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2019 Blender Foundation. All rights reserved. */
3 #pragma once
4 
5 #include "usd_writer_abstract.h"
6 
7 #include <pxr/usd/usdGeom/mesh.h>
8 
9 namespace blender::io::usd {
10 
11 struct USDMeshData;
12 
13 /* Writer for USD geometry. Does not assume the object is a mesh object. */
15  public:
17 
18  protected:
19  virtual bool is_supported(const HierarchyContext *context) const override;
20  virtual void do_write(HierarchyContext &context) override;
21 
22  virtual Mesh *get_export_mesh(Object *object_eval, bool &r_needsfree) = 0;
23  virtual void free_export_mesh(Mesh *mesh);
24 
25  private:
26  /* Mapping from material slot number to array of face indices with that material. */
27  typedef std::map<short, pxr::VtIntArray> MaterialFaceGroups;
28 
29  void write_mesh(HierarchyContext &context, Mesh *mesh);
30  void get_geometry_data(const Mesh *mesh, struct USDMeshData &usd_mesh_data);
31  void assign_materials(const HierarchyContext &context,
32  pxr::UsdGeomMesh usd_mesh,
33  const MaterialFaceGroups &usd_face_groups);
34  void write_uv_maps(const Mesh *mesh, pxr::UsdGeomMesh usd_mesh);
35  void write_normals(const Mesh *mesh, pxr::UsdGeomMesh usd_mesh);
36  void write_surface_velocity(const Mesh *mesh, pxr::UsdGeomMesh usd_mesh);
37 };
38 
40  public:
42 
43  protected:
44  virtual Mesh *get_export_mesh(Object *object_eval, bool &r_needsfree) override;
45 };
46 
47 } // namespace blender::io::usd
USDGenericMeshWriter(const USDExporterContext &ctx)
virtual void do_write(HierarchyContext &context) override
virtual bool is_supported(const HierarchyContext *context) const override
virtual Mesh * get_export_mesh(Object *object_eval, bool &r_needsfree)=0
virtual void free_export_mesh(Mesh *mesh)
USDMeshWriter(const USDExporterContext &ctx)
virtual Mesh * get_export_mesh(Object *object_eval, bool &r_needsfree) override