130 lines
4.0 KiB
C
130 lines
4.0 KiB
C
/*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
* The Original Code is Copyright (C) 2019 Blender Foundation.
|
|
* All rights reserved.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "DEG_depsgraph.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
struct CacheArchiveHandle;
|
|
struct CacheFile;
|
|
struct CacheReader;
|
|
struct Object;
|
|
struct bContext;
|
|
|
|
struct USDExportParams {
|
|
bool export_animation;
|
|
bool export_hair;
|
|
bool export_uvmaps;
|
|
bool export_normals;
|
|
bool export_materials;
|
|
bool selected_objects_only;
|
|
bool visible_objects_only;
|
|
bool use_instancing;
|
|
enum eEvaluationMode evaluation_mode;
|
|
};
|
|
|
|
struct USDImportParams {
|
|
float scale;
|
|
bool is_sequence;
|
|
bool set_frame_range;
|
|
int sequence_len;
|
|
int offset;
|
|
bool validate_meshes;
|
|
char mesh_read_flag;
|
|
bool import_cameras;
|
|
bool import_curves;
|
|
bool import_lights;
|
|
bool import_materials;
|
|
bool import_meshes;
|
|
bool import_volumes;
|
|
char *prim_path_mask;
|
|
bool import_subdiv;
|
|
bool import_instance_proxies;
|
|
bool create_collection;
|
|
bool import_guide;
|
|
bool import_proxy;
|
|
bool import_render;
|
|
bool import_visible_only;
|
|
bool use_instancing;
|
|
bool import_usd_preview;
|
|
bool set_material_blend;
|
|
float light_intensity_scale;
|
|
};
|
|
|
|
/* The USD_export takes a as_background_job parameter, and returns a boolean.
|
|
*
|
|
* When as_background_job=true, returns false immediately after scheduling
|
|
* a background job.
|
|
*
|
|
* When as_background_job=false, performs the export synchronously, and returns
|
|
* true when the export was ok, and false if there were any errors.
|
|
*/
|
|
|
|
bool USD_export(struct bContext *C,
|
|
const char *filepath,
|
|
const struct USDExportParams *params,
|
|
bool as_background_job);
|
|
|
|
bool USD_import(struct bContext *C,
|
|
const char *filepath,
|
|
const struct USDImportParams *params,
|
|
bool as_background_job);
|
|
|
|
int USD_get_version(void);
|
|
|
|
/* USD Import and Mesh Cache interface. */
|
|
|
|
struct CacheArchiveHandle *USD_create_handle(struct Main *bmain,
|
|
const char *filename,
|
|
struct ListBase *object_paths);
|
|
|
|
void USD_free_handle(struct CacheArchiveHandle *handle);
|
|
|
|
void USD_get_transform(struct CacheReader *reader, float r_mat[4][4], float time, float scale);
|
|
|
|
/* Either modifies current_mesh in-place or constructs a new mesh. */
|
|
struct Mesh *USD_read_mesh(struct CacheReader *reader,
|
|
struct Object *ob,
|
|
struct Mesh *existing_mesh,
|
|
const float time,
|
|
const char **err_str,
|
|
int read_flag);
|
|
|
|
bool USD_mesh_topology_changed(struct CacheReader *reader,
|
|
struct Object *ob,
|
|
struct Mesh *existing_mesh,
|
|
const float time,
|
|
const char **err_str);
|
|
|
|
struct CacheReader *CacheReader_open_usd_object(struct CacheArchiveHandle *handle,
|
|
struct CacheReader *reader,
|
|
struct Object *object,
|
|
const char *object_path);
|
|
|
|
void USD_CacheReader_incref(struct CacheReader *reader);
|
|
void USD_CacheReader_free(struct CacheReader *reader);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|