Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormakowalski <makowalski@nvidia.com>2020-12-10 00:50:18 +0300
committermakowalski <makowalski@nvidia.com>2020-12-10 00:50:18 +0300
commit934589c7370f9d2312742b3b78685ec224406011 (patch)
tree316fba4ea5d05a558df7ab6d646e649085321b72
parent0c3283654ed0d5abd6663e8d142d2281a59002c6 (diff)
USD import flags.
Added Is Sequence and Transform Cache Constraint import options.
-rw-r--r--source/blender/editors/io/io_usd.c25
-rw-r--r--source/blender/io/usd/import/usd_reader_xformable.cc2
-rw-r--r--source/blender/io/usd/intern/usd_capi.cc33
-rw-r--r--source/blender/io/usd/usd.h2
4 files changed, 44 insertions, 18 deletions
diff --git a/source/blender/editors/io/io_usd.c b/source/blender/editors/io/io_usd.c
index 09452d46ced..3655abea00b 100644
--- a/source/blender/editors/io/io_usd.c
+++ b/source/blender/editors/io/io_usd.c
@@ -283,6 +283,9 @@ static int wm_usd_import_exec(bContext *C, wmOperator *op)
const bool import_usdpreview = RNA_boolean_get(op->ptr, "import_usdpreview");
+ const bool is_sequence = RNA_boolean_get(op->ptr, "is_sequence");
+ const bool transform_constraint = RNA_boolean_get(op->ptr, "transform_constraint");
+
/* Switch out of edit mode to avoid being stuck in it (T54326). */
Object *obedit = CTX_data_edit_object(C);
if (obedit) {
@@ -296,7 +299,9 @@ static int wm_usd_import_exec(bContext *C, wmOperator *op)
debug,
use_instancing,
light_intensity_scale,
- import_usdpreview};
+ import_usdpreview,
+ is_sequence,
+ transform_constraint};
bool ok = USD_import(C, filename, &params, as_background_job);
@@ -323,6 +328,11 @@ static void wm_usd_import_draw(bContext *UNUSED(C), wmOperator *op)
uiItemR(col, ptr, "debug", 0, NULL, ICON_NONE);
box = uiLayoutBox(layout);
+ uiItemL(box, IFACE_("Animation Cache"), ICON_NONE);
+ uiItemR(box, ptr, "is_sequence", 0, NULL, ICON_NONE);
+ uiItemR(box, ptr, "transform_constraint", 0, NULL, ICON_NONE);
+
+ box = uiLayoutBox(layout);
uiItemL(box, IFACE_("Experimental"), ICON_NONE);
uiItemR(box, ptr, "use_instancing", 0, NULL, ICON_NONE);
uiItemR(box, ptr, "import_usdpreview", 0, NULL, ICON_NONE);
@@ -394,6 +404,19 @@ void WM_OT_usd_import(wmOperatorType *ot)
false,
"Import UsdPreviewSurface",
"When checked, convert UsdPreviewSurface shaders to Principled BSD shader networks.");
+
+ RNA_def_boolean(ot->srna,
+ "is_sequence",
+ false,
+ "Is Sequence",
+ "Set to true if the cache is split into separate files");
+
+ RNA_def_boolean(ot->srna,
+ "transform_constraint",
+ true,
+ "Transform Cache Constraint",
+ "When checked, create transform cache constraints for objects that have "
+ "time-varying transforms.");
}
#endif /* WITH_USD */
diff --git a/source/blender/io/usd/import/usd_reader_xformable.cc b/source/blender/io/usd/import/usd_reader_xformable.cc
index 539b388438a..fdca56cf7ed 100644
--- a/source/blender/io/usd/import/usd_reader_xformable.cc
+++ b/source/blender/io/usd/import/usd_reader_xformable.cc
@@ -97,7 +97,7 @@ void USDXformableReader::set_object_transform(const double time, CacheFile *cach
BKE_object_apply_mat4(object_, transform_from_usd, true, false);
BKE_object_to_mat4(object_, object_->obmat);
- if (cache_file && !is_constant) {
+ if (cache_file && (!is_constant || this->context_.import_params.is_sequence)) {
bConstraint *con = BKE_constraint_add_for_object(
object_, NULL, CONSTRAINT_TYPE_TRANSFORM_CACHE);
bTransformCacheConstraint *data = static_cast<bTransformCacheConstraint *>(con->data);
diff --git a/source/blender/io/usd/intern/usd_capi.cc b/source/blender/io/usd/intern/usd_capi.cc
index 931b08433ef..73a1a5ede14 100644
--- a/source/blender/io/usd/intern/usd_capi.cc
+++ b/source/blender/io/usd/intern/usd_capi.cc
@@ -298,22 +298,23 @@ static void import_startjob(void *user_data, short *stop, short *do_update, floa
USDPrimIterator usd_prim_iter(data->stage, import_ctx, data->bmain);
- CacheFile *cache_file = static_cast<CacheFile *>(
- BKE_cachefile_add(data->bmain, BLI_path_basename(data->filename)));
-
- /* Decrement the ID ref-count because it is going to be incremented for each
- * modifier and constraint that it will be attached to, so since currently
- * it is not used by anyone, its use count will off by one. */
- /* TODO(makowalski): rather than decrementing the use count, should
- * we just call BKE_id_free_us() on the cache_file id when cleaning up? */
- id_us_min(&cache_file->id);
-
- // cache_file->is_sequence = data->params.is_sequence;
- cache_file->scale = data->params.scale;
- STRNCPY(cache_file->filepath, data->filename);
-
- // data->archive = archive;
- // data->settings.cache_file = cache_file;
+ CacheFile *cache_file = nullptr;
+
+ if (data->params.transform_constraint) {
+ cache_file = static_cast<CacheFile *>(
+ BKE_cachefile_add(data->bmain, BLI_path_basename(data->filename)));
+
+ /* Decrement the ID ref-count because it is going to be incremented for each
+ * modifier and constraint that it will be attached to, so since currently
+ * it is not used by anyone, its use count will off by one. */
+ /* TODO(makowalski): rather than decrementing the use count, should
+ * we just call BKE_id_free_us() on the cache_file id when cleaning up? */
+ id_us_min(&cache_file->id);
+
+ cache_file->is_sequence = data->params.is_sequence;
+ cache_file->scale = data->params.scale;
+ STRNCPY(cache_file->filepath, data->filename);
+ }
// Optionally print the stage contents for debugging.
if (data->params.debug) {
diff --git a/source/blender/io/usd/usd.h b/source/blender/io/usd/usd.h
index d993d7d62cf..cd3ff47ab68 100644
--- a/source/blender/io/usd/usd.h
+++ b/source/blender/io/usd/usd.h
@@ -65,6 +65,8 @@ struct USDImportParams {
bool use_instancing;
float light_intensity_scale;
bool import_usdpreview;
+ bool is_sequence;
+ bool transform_constraint;
};
/* The USD_import function takes a as_background_job parameter, and returns a boolean.