comac_desk_app/ThirdpartyLibs/Libs/windows-x86_64/vtk/include/vtkCesium3DTilesWriter.h

175 lines
4.6 KiB
C
Raw Normal View History

2024-11-21 11:50:43 +08:00
/*=========================================================================
Program: Visualization Toolkit
Module: vtkCesium3DTilesWriter.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/**
* @class vtkCesium3DTilesWriter
* @brief Writes a dataset into 3D Tiles format.
*
*
* Valid inputs include the vtkMultiBlockDataSet (as created by
* vtkCityGMLReader) storing 3D buidlings, vtkPointSet storing a point
* cloud or vtkPolyData for storing a mesh.
*
*/
#ifndef vtkCesium3DTilesWriter_h
#define vtkCesium3DTilesWriter_h
#include "vtkIOCesium3DTilesModule.h" // For export macro
#include "vtkWriter.h"
class VTKIOCESIUM3DTILES_EXPORT vtkCesium3DTilesWriter : public vtkWriter
{
public:
static vtkCesium3DTilesWriter* New();
void PrintSelf(ostream& os, vtkIndent indent) override;
vtkTypeMacro(vtkCesium3DTilesWriter, vtkWriter);
enum InputType
{
Buildings,
Points,
Mesh
};
///@{
/**
* Accessor for name of the directory where Cesium3DTiles data is written
*/
vtkSetFilePathMacro(DirectoryName);
vtkGetFilePathMacro(DirectoryName);
///@}
///@{
/**
* Path used to prefix all texture paths stored as fields in the input data.
* @see vtkCityGMLReader
*/
vtkSetFilePathMacro(TextureBaseDirectory);
vtkGetFilePathMacro(TextureBaseDirectory);
///@}
//@{
/**
* Data coordinates are relative to this origin. To get the actuall
* coordinates data has to be translated with the Offset.
*/
vtkSetVector3Macro(Offset, double);
vtkGetVector3Macro(Offset, double);
//@}
//@{
/**
* Save textures as part of the 3D Tiles dataset. Default true.
* Otherwise save only the mesh.
*/
vtkSetMacro(SaveTextures, bool);
vtkGetMacro(SaveTextures, bool);
vtkBooleanMacro(SaveTextures, bool);
//@
//@{
/**
* Save the tiles (B3DMs) as part of the 3D Tiles dataset. Default true.
* Otherwise save only the tileset (JSON) file. This is mainly used for
* debugging. Default true.
*/
vtkSetMacro(SaveTiles, bool);
vtkGetMacro(SaveTiles, bool);
vtkBooleanMacro(SaveTiles, bool);
//@
//@{
/**
* Merge all meshes in each tile to end up with one mesh per tile.
* Default is false which means that we expect an external program to merge
* the meshes in each tile to improve performance (such as meshoptimizer).
* otherwise we merge the polydata in VTK.
* @see
* https://meshoptimizer.org/
*/
vtkSetMacro(MergeTilePolyData, bool);
vtkGetMacro(MergeTilePolyData, bool);
vtkBooleanMacro(MergeTilePolyData, bool);
//@
//@{
/**
* What is the file type used to save tiles. If ContentGLTF is false
* (the default) we use B3DM for Buildings or Mesh and PNTS for
* PointCloud otherwise we use GLB (3DTILES_content_gltf
* extension). If the file type is B3DM or GLB, external programs are
* needed to convert GLTF -> GLB -> B3DM.
*
*/
vtkSetMacro(ContentGLTF, bool);
vtkGetMacro(ContentGLTF, bool);
vtkBooleanMacro(ContentGLTF, bool);
//@
//@{
/**
* Input is Buildings, Points or Mesh.
*/
vtkSetMacro(InputType, int);
vtkGetMacro(InputType, int);
//@
//@{
/**
* Maximum number of buildings per tile in case of buildings input or
* the number of points per tile in case of point cloud input. Default is 100.
*/
vtkSetMacro(NumberOfFeaturesPerTile, int);
vtkGetMacro(NumberOfFeaturesPerTile, int);
//@
///@{
/**
* Set the coordinate reference system (CRS) also known as spatial reference system (SRC),
* such as EPSG:2263. This string can also be a proj string such as
* "+proj=utm +zone=17 +datum=WGS84"
*/
vtkSetStringMacro(CRS);
vtkGetStringMacro(CRS);
///@}
protected:
vtkCesium3DTilesWriter();
~vtkCesium3DTilesWriter() override;
// Only accepts vtkMultiBlockData
int FillInputPortInformation(int port, vtkInformation* info) override;
// Implementation of Write()
void WriteData() override;
char* DirectoryName;
char* TextureBaseDirectory;
double Offset[3];
bool SaveTextures;
int InputType;
bool ContentGLTF;
bool SaveTiles;
bool MergeTilePolyData;
int NumberOfFeaturesPerTile;
char* CRS;
private:
vtkCesium3DTilesWriter(const vtkCesium3DTilesWriter&) = delete;
void operator=(const vtkCesium3DTilesWriter&) = delete;
};
#endif // vtkCesium3DTilesWriter_h