Merge pull request #296 from storytold/fix/model-import-alpha

Import: a 3D model doesn't ask how to interpret its alpha (#264)
This commit is contained in:
BFlat 2026-10-08 21:19:24 +07:00 committed by GitHub
commit e283b25efc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 17 additions and 2 deletions

View File

@ -264,9 +264,13 @@ impl Prober {
{
warning = Some(format!("{path}: {gaps}"));
}
// Settings ▸ Import ▸ Interpret Unlabeled Alpha As.
// Settings ▸ Import ▸ Interpret Unlabeled Alpha As: images only (a 3D model renders its
// own alpha, and audio and data have none).
let mut ask_alpha = false;
if f.alpha != effectcraft_project::AlphaMode::Ignore && !alpha_is_labeled(path, &f.codec) {
if matches!(f.kind, FootageKind::Still | FootageKind::Sequence | FootageKind::Video)
&& f.alpha != effectcraft_project::AlphaMode::Ignore
&& !alpha_is_labeled(path, &f.codec)
{
let setting = if f.kind == FootageKind::Video { self.movie_alpha } else { self.still_alpha };
match setting {
Some(a) => f.alpha = a,

View File

@ -229,3 +229,14 @@ fn adding_models_switches_classic_comps_to_advanced_3d() {
s.execute("comp.renderer", json!({"renderer": "classic3d"})).unwrap();
assert!(toasts(&mut s).iter().any(|m| m.contains("Classic 3D doesn't draw")));
}
/// Importing a 3D model doesn't ask how to interpret its alpha (Interpret Footage): a model
/// renders its own.
#[test]
fn importing_a_model_does_not_ask_about_alpha() {
let mut s = session();
assert_eq!(s.prefs.unlabeled_alpha(false), None, "Ask User");
let r = s.execute("file.import", json!({"paths": [fixture("quad.glb")]})).unwrap();
assert_eq!(r["unlabeledAlpha"], json!([]));
assert!(!s.drain_events().iter().any(|e| matches!(e, crate::Event::Frontend { command, .. } if command == "file.interpretFootage")));
}