Skip to content

Manuals updates and other stuff - #14

Merged
joa-quim merged 13 commits into
masterfrom
gap6-edges
Jun 8, 2026
Merged

joa-quim merged 13 commits into
masterfrom
gap6-edges

Conversation

@joa-quim

@joa-quim joa-quim commented Jun 8, 2026

Copy link
Copy Markdown
Owner

No description provided.

joa-quim and others added 13 commits June 4, 2026 15:59
Wrap the new f3d_ext per-actor / per-cell edge functions:
f3d_ext_set_edge_visibility, f3d_ext_add_cell_edges,
f3d_ext_remove_cell_edges, f3d_ext_clear_cell_edges (libf3d.jl).

- test/test_f3d_ext.jl: "per-actor + per-cell edges (gap #6)" block.
- examples/edges_demo.jl: coarse-grid oblique visual demo (raw f3d_ext API).
- docs/src/20-manual.md: new "f3d_ext Extensions / Edges" section.
- F3D_API_gaps.md: mark #6 addressed; #4 confirmed real this session;
  refresh the addressed/open status of the other gaps.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
examples/scale_handle_demo.jl: coarse terrain grid in an oblique view with the
Fledermaus-style vertical-scale / tilt / azimuth gizmo enabled. Offscreen PNG by
default, interactive window with `interactive=true` to drag the handles. Uses the
two-arg f3d_interactor_start(interactor, delta_time).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ain cloud

view_points baked the per-point RGB only when started with sprites=true, so
f3d_ext_color_point_sprites was never called for a plain point-cloud start. The
first 'o' (enable sprites) then showed uncoloured grey splats: f3d's
ConfigurePointSprites wipes any colour array before the C reassert observer sees
the actor visible, leaving its cache empty.

Bake rgb whenever f3d_ext is present (drop the sprites guard) so the colour
array is seeded onto the hidden sprite polydata at startup; the C side caches it
and restores it across 'o' cycles.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…n test

view_grid silently stopped defaulting scale_handle=true, so the Fledermaus gizmo
(compass/tilt rings + vertical cone) disappeared. No test caught it: only the
low-level f3d_ext_enable_scale_handle C binding was covered, while the gmt_solids.jl
wrapper layer (the functions users actually call) had zero tests.

- Restore the default via a single source of truth (VIEW_GRID_DEFAULTS) applied by a
  get! loop, so dropping an entry breaks behaviour and test together.
- Add test/test_view_grid_defaults.jl asserting the constant, the applied result, and
  caller-override-wins. Skips cleanly when GMT isn't installed.
- edges_demo.jl: fix interactive path (f3d_interactor_start delta_time arg, GC-safe
  start + init_bindings + stop) so it runs and closes without crashing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Both viewers now take their scale_handle default from one shared const
SHOW_ROTATION_RINGS, so the rotation-centre gizmo (compass/tilt rings + cone) is
enabled by the identical procedure and can't desync. Previously _view_fv_impl
defaulted scale_handle=false while view_points defaulted true, and view_grid's
wrapper was the only thing flipping it on — when that flip was lost the rings
silently vanished from view_grid.

- Add const SHOW_ROTATION_RINGS = true; both _view_fv_impl and view_points bind
  scale_handle::Bool=SHOW_ROTATION_RINGS.
- Drop the redundant VIEW_GRID_DEFAULTS get! loop (up/cube_axes already default
  identically in _view_fv_impl).
- Update the regression test to assert the const is on and that both viewer
  signatures bind to it (no per-viewer hardcoded literal).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The rotation-centre gizmo (compass/tilt rings + cone) now shows orientation/scale,
so the origin trihedron is redundant. Drop the `trihedron` kwarg from _view_fv_impl
and main, the CLI arg parsing, the docstrings, and the now-dead add_trihedron! plus
its _box/_cone geometry helpers.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
f3dview(::GMTfv) (e.g. f3dview(torus())) forwarded straight to view_fv without the z-ramp colouring or DEMO_LIGHTS the f3dview(::String) path applies, so a bare solid rendered flat gray. Colour-by-z (guarded by have_color so real GMT producers are untouched) and light it by default.

Place the on-screen window at 60% of screen width, centered horizontally, top at 3.5% from the top; keeps the picture aspect, skips offscreen so savepng resolution is untouched.

Guard the raytracing key bindings: the raytracing DLL build loads ospray modules that were not on the loader search path, so toggling raytracing crashed Julia. Strips the binds for now (a real preload fix follows).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Wrap the new f3d_ext entry points (enable/disable scale_handle, colorbar, sprite_size_keys, sprite_zscale_sync), document the interactive viewer in the README, and add their tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
F3D.preload_raytracing() loads the OSPRay/ISPCRT/OpenVKL accelerator DLLs by absolute path (LoadLibraryExW + LOAD_WITH_ALTERED_SEARCH_PATH), so f3d's bare-name module loads resolve instead of failing with 'the specified module could not be found'. No PATH/__init__/loader-search mutation, no package dep; no-op off Windows. Offscreen raytracing then works and is fast (60-294 ms/frame at 1200x900).

The live R/Shift+R keys remain stripped in the gmt_solids.jl viewers: enabling raytracing in the interactive interactor pins all CPU cores, drops GPU to zero and freezes the window (root cause not isolated). Code comments + examples/raytracing.md document offscreen usage and how to re-enable the key once fixed upstream.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@joa-quim
joa-quim merged commit 4abdf9d into master Jun 8, 2026
2 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant