modify 3d view to sync / identical to 2d view
This commit is contained in:
@@ -39,11 +39,16 @@ def _binding(vertices: int = 4):
|
||||
[[0, 1, 5, 6], [1, 2, 6, 7], [4, 5, 9, 10], [5, 6, 10, 11]], dtype=np.int32
|
||||
)[:vertices]
|
||||
weights = np.full((vertices, 4), 0.25, dtype=np.float32)
|
||||
# The domain is 3x4, so its pixel grid is x in [0,3], y in [0,2].
|
||||
uvs = np.array(
|
||||
[[0.0, 0.0], [1.0, 0.0], [2.0, 0.0], [3.0, 0.0]], dtype=np.float32
|
||||
)[:vertices]
|
||||
return c.SurfaceBinding(
|
||||
part_id="sensing_surface",
|
||||
geometry_id="geom-abc",
|
||||
field_domain_id="domain-xyz",
|
||||
shape_hw=(3, 4),
|
||||
uvs=c.freeze(uvs, dtype=np.float32),
|
||||
sample_indices=c.freeze(indices, dtype=np.int32),
|
||||
sample_weights=c.freeze(weights, dtype=np.float32),
|
||||
)
|
||||
@@ -175,6 +180,7 @@ def test_a_binding_with_an_out_of_domain_index_is_refused():
|
||||
geometry_id=binding.geometry_id,
|
||||
field_domain_id=binding.field_domain_id,
|
||||
shape_hw=binding.shape_hw,
|
||||
uvs=binding.uvs,
|
||||
sample_indices=c.freeze(indices, dtype=np.int32),
|
||||
sample_weights=binding.sample_weights,
|
||||
)
|
||||
@@ -191,6 +197,7 @@ def test_unused_samples_must_be_minus_one_with_zero_weight():
|
||||
geometry_id=binding.geometry_id,
|
||||
field_domain_id=binding.field_domain_id,
|
||||
shape_hw=binding.shape_hw,
|
||||
uvs=binding.uvs,
|
||||
sample_indices=c.freeze(indices, dtype=np.int32),
|
||||
sample_weights=binding.sample_weights,
|
||||
)
|
||||
@@ -207,6 +214,7 @@ def test_weights_must_sum_to_one():
|
||||
geometry_id=binding.geometry_id,
|
||||
field_domain_id=binding.field_domain_id,
|
||||
shape_hw=binding.shape_hw,
|
||||
uvs=binding.uvs,
|
||||
sample_indices=binding.sample_indices,
|
||||
sample_weights=c.freeze(weights, dtype=np.float32),
|
||||
)
|
||||
@@ -263,6 +271,7 @@ def test_the_binding_must_belong_to_the_sensing_part():
|
||||
geometry_id=binding.geometry_id,
|
||||
field_domain_id=binding.field_domain_id,
|
||||
shape_hw=binding.shape_hw,
|
||||
uvs=binding.uvs,
|
||||
sample_indices=binding.sample_indices,
|
||||
sample_weights=binding.sample_weights,
|
||||
)
|
||||
@@ -491,15 +500,20 @@ def test_the_cpu_layer_is_importable_and_works_without_a_gpu():
|
||||
"""The acquisition thread imports this package; it must not drag Qt or GL in.
|
||||
|
||||
Stages 2 and 3 filled in the CPU pieces, so this checks they are reachable and
|
||||
usable here — the sampler and the composer run on a machine with no GPU, which
|
||||
is the whole reason the contracts layer is separate from the view.
|
||||
usable here — the composer and the field domain checks run on a machine with no
|
||||
GPU, which is the whole reason the contracts layer is separate from the view.
|
||||
"""
|
||||
from orisys_app_shared.scene3d import assets, composer, sampling, synthetic
|
||||
|
||||
scene = synthetic.poc_scene()
|
||||
frame = _frame()
|
||||
fields = sampling.sample_field(frame, _binding())
|
||||
assert np.asarray(fields.scalar).shape == (4,)
|
||||
# The colour path makes no gather at all; the only sampling left is the field
|
||||
# remap and the vertex displacement, and both are pure NumPy.
|
||||
assert callable(sampling.remap_to_domain)
|
||||
assert callable(sampling.sample_vertex_displacement)
|
||||
assert not hasattr(sampling, "sample_field"), (
|
||||
"the per-vertex colour gather is back; the texture-first path has no fallback"
|
||||
)
|
||||
composed = composer.SceneComposer().compose(
|
||||
scene, c.SurfaceFieldFrame(
|
||||
identity=frame.identity,
|
||||
@@ -511,7 +525,7 @@ def test_the_cpu_layer_is_importable_and_works_without_a_gpu():
|
||||
),
|
||||
c.DisplaySettings(),
|
||||
)
|
||||
assert composed.scalar.shape == (9,)
|
||||
assert composed.field.scalar.shape == (3, 3)
|
||||
# The loading facade is real too (stage 2), and the compiler refuses what it
|
||||
# cannot honestly do: asking for encryption without key material, or without the
|
||||
# crypto backend, must not produce a plain package that looks protected.
|
||||
|
||||
Reference in New Issue
Block a user