Volumes: add volume.grids.frame_filepath to get the current frame filepath
This can be used by external renderers that can load OpenVDB files.
This commit is contained in:
@@ -85,6 +85,7 @@ bool BKE_volume_is_loaded(const struct Volume *volume);
|
|||||||
|
|
||||||
int BKE_volume_num_grids(const struct Volume *volume);
|
int BKE_volume_num_grids(const struct Volume *volume);
|
||||||
const char *BKE_volume_grids_error_msg(const struct Volume *volume);
|
const char *BKE_volume_grids_error_msg(const struct Volume *volume);
|
||||||
|
const char *BKE_volume_grids_frame_filepath(const struct Volume *volume);
|
||||||
VolumeGrid *BKE_volume_grid_get(const struct Volume *volume, int grid_index);
|
VolumeGrid *BKE_volume_grid_get(const struct Volume *volume, int grid_index);
|
||||||
VolumeGrid *BKE_volume_grid_active_get(const struct Volume *volume);
|
VolumeGrid *BKE_volume_grid_active_get(const struct Volume *volume);
|
||||||
VolumeGrid *BKE_volume_grid_find(const struct Volume *volume, const char *name);
|
VolumeGrid *BKE_volume_grid_find(const struct Volume *volume, const char *name);
|
||||||
|
@@ -901,6 +901,16 @@ const char *BKE_volume_grids_error_msg(const Volume *volume)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *BKE_volume_grids_frame_filepath(const Volume *volume)
|
||||||
|
{
|
||||||
|
#ifdef WITH_OPENVDB
|
||||||
|
return volume->runtime.grids->filepath;
|
||||||
|
#else
|
||||||
|
UNUSED_VARS(volume);
|
||||||
|
return "";
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
VolumeGrid *BKE_volume_grid_get(const Volume *volume, int grid_index)
|
VolumeGrid *BKE_volume_grid_get(const Volume *volume, int grid_index)
|
||||||
{
|
{
|
||||||
#ifdef WITH_OPENVDB
|
#ifdef WITH_OPENVDB
|
||||||
|
@@ -194,6 +194,19 @@ static int rna_VolumeGrids_error_message_length(PointerRNA *ptr)
|
|||||||
return strlen(BKE_volume_grids_error_msg(volume));
|
return strlen(BKE_volume_grids_error_msg(volume));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Frame Filepath */
|
||||||
|
static void rna_VolumeGrids_frame_filepath_get(PointerRNA *ptr, char *value)
|
||||||
|
{
|
||||||
|
Volume *volume = (Volume *)ptr->data;
|
||||||
|
strcpy(value, BKE_volume_grids_frame_filepath(volume));
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rna_VolumeGrids_frame_filepath_length(PointerRNA *ptr)
|
||||||
|
{
|
||||||
|
Volume *volume = (Volume *)ptr->data;
|
||||||
|
return strlen(BKE_volume_grids_frame_filepath(volume));
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
static void rna_def_volume_grid(BlenderRNA *brna)
|
static void rna_def_volume_grid(BlenderRNA *brna)
|
||||||
@@ -308,6 +321,16 @@ static void rna_def_volume_grids(BlenderRNA *brna, PropertyRNA *cprop)
|
|||||||
"Frame number that volume grids will be loaded at, based on scene time "
|
"Frame number that volume grids will be loaded at, based on scene time "
|
||||||
"and volume parameters");
|
"and volume parameters");
|
||||||
|
|
||||||
|
prop = RNA_def_property(srna, "frame_filepath", PROP_STRING, PROP_FILEPATH);
|
||||||
|
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
|
||||||
|
RNA_def_property_string_funcs(
|
||||||
|
prop, "rna_VolumeGrids_frame_filepath_get", "rna_VolumeGrids_frame_filepath_length", NULL);
|
||||||
|
|
||||||
|
RNA_def_property_ui_text(prop,
|
||||||
|
"Frame File Path",
|
||||||
|
"Volume file used for loading the volume at the current frame. Empty "
|
||||||
|
"if the volume has not be loaded or the frame only exists in memory");
|
||||||
|
|
||||||
/* API */
|
/* API */
|
||||||
FunctionRNA *func;
|
FunctionRNA *func;
|
||||||
PropertyRNA *parm;
|
PropertyRNA *parm;
|
||||||
@@ -446,7 +469,7 @@ static void rna_def_volume(BlenderRNA *brna)
|
|||||||
/* File */
|
/* File */
|
||||||
prop = RNA_def_property(srna, "filepath", PROP_STRING, PROP_FILEPATH);
|
prop = RNA_def_property(srna, "filepath", PROP_STRING, PROP_FILEPATH);
|
||||||
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
|
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
|
||||||
RNA_def_property_ui_text(prop, "File Path", "Volume sample file used by this Volume data-block");
|
RNA_def_property_ui_text(prop, "File Path", "Volume file used by this Volume data-block");
|
||||||
RNA_def_property_update(prop, 0, "rna_Volume_update_filepath");
|
RNA_def_property_update(prop, 0, "rna_Volume_update_filepath");
|
||||||
|
|
||||||
prop = RNA_def_property(srna, "packed_file", PROP_POINTER, PROP_NONE);
|
prop = RNA_def_property(srna, "packed_file", PROP_POINTER, PROP_NONE);
|
||||||
|
Reference in New Issue
Block a user