static_body tests: static geometry pivots at its centre (Tim t1008u)
@@ -180,14 +180,20 @@ fn unskinned_fbx_loads_as_static_body_with_one_normalization() {
180
180
}
181
181
182
182
#[test]
183
fn static_body_pivot_falls_back_to_center_y_and_manual_pivot_still_wins() {
183
fn static_body_pivot_is_geometry_centre_and_manual_pivot_still_wins() {
184
184
let body = obj();
185
185
let framing = CameraFraming::default();
186
186
let resolved = camera::resolve(&body, framing);
187
assert_eq!(resolved.framing.pivot_y_milli, Some(framing.center_y_milli));
188
match &resolved.source {
189
camera::PivotSource::Fallback { reason } => assert!(reason.contains("Statisch")),
190
other => panic!("expected fallback, got {other:?}"),
187
// Static geometry has a centre too (Tim t1008u): no fallback needed.
188
match resolved.source {
189
camera::PivotSource::BoundsCenter {
190
min_y_milli,
191
max_y_milli,
192
} => assert_eq!(
193
resolved.framing.pivot_y_milli,
194
Some((min_y_milli + max_y_milli) / 2)
195
),
196
ref other => panic!("expected bounds centre, got {other:?}"),
191
197
}
192
198
let manual = camera::resolve(
193
199
&body,
@@ -221,7 +227,7 @@ fn static_body_plans_one_bind_sample_times_60_views_and_four_maps() {
221
227
}
222
228
let contract = production::contract(job(obj(), None)).unwrap();
223
229
assert_eq!(contract.plan, plan_with_fps(4));
224
assert_eq!(contract.render_doc["pivot_source"]["kind"], "fallback");
230
assert_eq!(contract.render_doc["pivot_source"]["kind"], "bounds_center");
225
231
assert_eq!(contract.render_doc["clips"][0]["token"], "clip000-bind");
226
232
}
227
233
fn plan_with_fps(fps: u32) -> production::Plan {
@@ -180,14 +180,20 @@ fn unskinned_fbx_loads_as_static_body_with_one_normalization() {180
}180
}181
181
182
#[test]182
#[test]183
fn static_body_pivot_falls_back_to_center_y_and_manual_pivot_still_wins() {183
fn static_body_pivot_is_geometry_centre_and_manual_pivot_still_wins() {184
let body = obj();184
let body = obj();185
let framing = CameraFraming::default();185
let framing = CameraFraming::default();186
let resolved = camera::resolve(&body, framing);186
let resolved = camera::resolve(&body, framing);187
assert_eq!(resolved.framing.pivot_y_milli, Some(framing.center_y_milli));187
// Static geometry has a centre too (Tim t1008u): no fallback needed.188
match &resolved.source {188
match resolved.source {189
camera::PivotSource::Fallback { reason } => assert!(reason.contains("Statisch")),189
camera::PivotSource::BoundsCenter {190
other => panic!("expected fallback, got {other:?}"),190
min_y_milli,191
max_y_milli,192
} => assert_eq!(193
resolved.framing.pivot_y_milli,194
Some((min_y_milli + max_y_milli) / 2)195
),196
ref other => panic!("expected bounds centre, got {other:?}"),191
}197
}192
let manual = camera::resolve(198
let manual = camera::resolve(193
&body,199
&body,@@ -221,7 +227,7 @@ fn static_body_plans_one_bind_sample_times_60_views_and_four_maps() {221
}227
}222
let contract = production::contract(job(obj(), None)).unwrap();228
let contract = production::contract(job(obj(), None)).unwrap();223
assert_eq!(contract.plan, plan_with_fps(4));229
assert_eq!(contract.plan, plan_with_fps(4));224
assert_eq!(contract.render_doc["pivot_source"]["kind"], "fallback");230
assert_eq!(contract.render_doc["pivot_source"]["kind"], "bounds_center");225
assert_eq!(contract.render_doc["clips"][0]["token"], "clip000-bind");231
assert_eq!(contract.render_doc["clips"][0]["token"], "clip000-bind");226
}232
}227
fn plan_with_fps(fps: u32) -> production::Plan {233
fn plan_with_fps(fps: u32) -> production::Plan {