38 #include "RNA_prototypes.h"
50 #if defined(WITH_USD) || defined(WITH_ALEMBIC)
101 bool UNUSED(useRenderParams))
126 #if defined(WITH_USD) || defined(WITH_ALEMBIC)
137 const char *err_str =
nullptr;
144 ctx->
object, md,
"Could not create reader for file %s", cache_file->
filepath);
158 switch (cache_file->
type) {
185 if ((me->
mvert == mvert) || (me->
medge == medge) || (me->
mpoly == mpoly)) {
198 switch (cache_file->
type) {
205 velocity_scale *=
FPS;
212 params.velocity_scale = velocity_scale;
246 #if defined(WITH_USD) || defined(WITH_ALEMBIC)
288 if (has_cache_file) {
290 layout,
ptr,
"object_path", &cache_file_ptr,
"object_paths",
nullptr, ICON_NONE);
295 uiItemR(layout,
ptr,
"use_vertex_interpolation", 0,
nullptr, ICON_NONE);
315 uiItemR(layout,
ptr,
"velocity_scale", 0,
nullptr, ICON_NONE);
395 N_(
"MeshSequenceCache"),
396 "MeshSeqCacheModifierData",
398 &RNA_MeshSequenceCacheModifier,
struct Mesh * ABC_read_mesh(struct CacheReader *reader, struct Object *ob, struct Mesh *existing_mesh, const ABCReadParams *params, const char **err_str)
bool ABC_mesh_topology_changed(struct CacheReader *reader, struct Object *ob, const struct Mesh *existing_mesh, double time, const char **err_str)
void BKE_cachefile_reader_open(struct CacheFile *cache_file, struct CacheReader **reader, struct Object *object, const char *object_path)
void BKE_cachefile_reader_free(struct CacheFile *cache_file, struct CacheReader **reader)
double BKE_cachefile_time_offset(const struct CacheFile *cache_file, double time, double fps)
bool BKE_cache_file_uses_render_procedural(const struct CacheFile *cache_file, struct Scene *scene)
@ LIB_ID_CREATE_NO_USER_REFCOUNT
@ LIB_ID_CREATE_NO_DEG_TAG
struct ID * BKE_id_copy_ex(struct Main *bmain, const struct ID *id, struct ID **r_newid, int flag)
void BKE_id_free(struct Main *bmain, void *idv)
void BKE_mesh_translate(struct Mesh *me, const float offset[3], bool do_keys)
bool BKE_mesh_minmax(const struct Mesh *me, float r_min[3], float r_max[3])
void(* IDWalkFunc)(void *userData, struct Object *ob, struct ID **idpoin, int cb_flag)
@ eModifierTypeFlag_AcceptsCVs
@ eModifierTypeFlag_AcceptsMesh
void BKE_modifier_copydata_generic(const struct ModifierData *md, struct ModifierData *md_dst, int flag)
@ eModifierTypeType_Constructive
void BKE_modifier_set_error(const struct Object *ob, struct ModifierData *md, const char *format,...) ATTR_PRINTF_FORMAT(3
General operations, lookup, etc. for blender objects.
#define STRNCPY(dst, src)
#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member)
#define MEMCPY_STRUCT_AFTER(struct_dst, struct_src, member)
void DEG_add_object_cache_relation(struct DepsNodeHandle *handle, struct CacheFile *cache_file, eDepsObjectComponentType component, const char *description)
float DEG_get_ctime(const Depsgraph *graph)
struct Scene * DEG_get_evaluated_scene(const struct Depsgraph *graph)
@ CACHE_FILE_TYPE_INVALID
@ CACHEFILE_VELOCITY_UNIT_FRAME
#define DNA_struct_default_get(struct_name)
struct MeshSeqCacheModifierData MeshSeqCacheModifierData
@ eModifierType_MeshSequenceCache
#define MOD_MESHSEQ_READ_ALL
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
static Mesh * generate_bounding_box_mesh(const Mesh *org_mesh)
static void blendRead(BlendDataReader *UNUSED(reader), ModifierData *md)
static void copyData(const ModifierData *md, ModifierData *target, const int flag)
static Mesh * modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
ModifierTypeInfo modifierType_MeshSequenceCache
static void override_layers_panel_draw(const bContext *C, Panel *panel)
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, bool UNUSED(useRenderParams))
static void time_panel_draw(const bContext *UNUSED(C), Panel *panel)
static void foreachIDLink(ModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
static void velocity_panel_draw(const bContext *UNUSED(C), Panel *panel)
static void initData(ModifierData *md)
static void panelRegister(ARegionType *region_type)
static bool dependsOnTime(Scene *scene, ModifierData *md)
static void freeData(ModifierData *md)
static void render_procedural_panel_draw(const bContext *C, Panel *panel)
static void panel_draw(const bContext *C, Panel *panel)
PointerRNA * modifier_panel_get_property_pointers(Panel *panel, PointerRNA *r_ob_ptr)
void modifier_panel_end(uiLayout *layout, PointerRNA *ptr)
PanelType * modifier_panel_register(ARegionType *region_type, ModifierType type, PanelDrawFn draw)
PanelType * modifier_subpanel_register(ARegionType *region_type, const char *name, const char *label, PanelDrawFn draw_header, PanelDrawFn draw, PanelType *parent)
void uiTemplateCacheFileLayers(uiLayout *layout, const struct bContext *C, struct PointerRNA *fileptr)
void uiTemplateCacheFileVelocity(uiLayout *layout, struct PointerRNA *fileptr)
void uiTemplateCacheFileProcedural(uiLayout *layout, const struct bContext *C, struct PointerRNA *fileptr)
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
void uiItemR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int flag, const char *name, int icon)
bool uiTemplateCacheFilePointer(struct PointerRNA *ptr, const char *propname, struct PointerRNA *r_file_ptr)
void uiTemplateCacheFileTimeSettings(uiLayout *layout, struct PointerRNA *fileptr)
void uiTemplateCacheFile(uiLayout *layout, const struct bContext *C, struct PointerRNA *ptr, const char *propname)
void uiItemPointerR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, struct PointerRNA *searchptr, const char *searchpropname, const char *name, int icon)
Mesh * create_cuboid_mesh(const float3 &size, int verts_x, int verts_y, int verts_z, const bke::AttributeIDRef &uv_id)
T midpoint(const T &a, const T &b)
PointerRNA RNA_pointer_get(PointerRNA *ptr, const char *name)
bool RNA_pointer_is_null(const PointerRNA *ptr)
int RNA_enum_get(PointerRNA *ptr, const char *name)
struct CacheReader * reader
struct CacheFile * cache_file
char reader_object_path[1024]
struct Depsgraph * depsgraph
struct DepsNodeHandle * node
struct Mesh * USD_read_mesh(struct CacheReader *reader, struct Object *ob, struct Mesh *existing_mesh, const double time, const char **err_str, const int read_flag)
bool USD_mesh_topology_changed(CacheReader *reader, Object *ob, Mesh *existing_mesh, const double time, const char **err_str)