feat: wire vertical exaggeration through the shell #13
@@ -13,7 +13,7 @@ This repository currently contains:
|
|||||||
- An implementation roadmap under `docs/plans/`.
|
- An implementation roadmap under `docs/plans/`.
|
||||||
- Legal and reference-material hygiene notes under `docs/legal/` and `docs/research/`.
|
- Legal and reference-material hygiene notes under `docs/legal/` and `docs/research/`.
|
||||||
- A clean-room terrain import boundary with project-owned `ovp-text` fixtures, a PNG heightmap script importer, an SRTM/HGT byte importer behind the `hgt` Cargo feature, an ESRI ASCII Grid parser behind the `ascii-grid-import` feature, and a deterministic terrain-generation module in `src/terrain_gen.rs` with `TerrainGenerationSpec` / `DeterministicTerrainGenerator` (see `cargo test terrain_gen` and its determinism/seed note).
|
- A clean-room terrain import boundary with project-owned `ovp-text` fixtures, a PNG heightmap script importer, an SRTM/HGT byte importer behind the `hgt` Cargo feature, an ESRI ASCII Grid parser behind the `ascii-grid-import` feature, and a deterministic terrain-generation module in `src/terrain_gen.rs` with `TerrainGenerationSpec` / `DeterministicTerrainGenerator` (see `cargo test terrain_gen` and its determinism/seed note).
|
||||||
- A project-owned script parser + executor in `src/script.rs` / `src/script_exec.rs`, MakePath-inspired camera path generation in `src/path.rs`, explicit camera heading/pitch/bank plus lens/range and vertical-exaggeration controls in `src/scene.rs`, and an `app` feature shell with working import/script/path/project controls in `src/app_state.rs`, `src/app.rs`, and `src/ui_shell.rs`.
|
- A project-owned script parser + executor in `src/script.rs` / `src/script_exec.rs`, MakePath-inspired camera path generation in `src/path.rs`, a project-owned color-map model with editable thresholds/bands in `src/scene.rs`, and an `app` feature shell with working import/script/path/project controls in `src/app_state.rs`, `src/app.rs`, and `src/ui_shell.rs`.
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
@@ -66,9 +66,9 @@ model.
|
|||||||
Scene files use the project-owned `.ovp.toml` format. Version 1 stores a
|
Scene files use the project-owned `.ovp.toml` format. Version 1 stores a
|
||||||
top-level `schema = "openvistapro.scene"`, `version = 1`, and a serialized
|
top-level `schema = "openvistapro.scene"`, `version = 1`, and a serialized
|
||||||
`Scene` payload containing camera position/target, camera heading-pitch-bank,
|
`Scene` payload containing camera position/target, camera heading-pitch-bank,
|
||||||
lens/FOV/clip ranges, light, water, tree-line, snow-line, and haze settings.
|
lens/FOV/clip ranges, light, water, tree-line, snow-line, haze, and the
|
||||||
The format is intentionally human-readable while the data model is still
|
color-map thresholds/bands. The format is intentionally human-readable while
|
||||||
evolving.
|
the data model is still evolving.
|
||||||
|
|
||||||
## Script language (MVP)
|
## Script language (MVP)
|
||||||
|
|
||||||
|
|||||||
+12
-3
@@ -334,9 +334,10 @@ impl AppData {
|
|||||||
import_path: self.import_path.clone(),
|
import_path: self.import_path.clone(),
|
||||||
path_target: self.path_target.clone(),
|
path_target: self.path_target.clone(),
|
||||||
status_line: format!(
|
status_line: format!(
|
||||||
"CPU preview · {} · {} · exag {:.2} · {width}×{height}",
|
"CPU preview · {} · {} · {} · exag {:.2} · {width}×{height}",
|
||||||
self.terrain_preset.label(),
|
self.terrain_preset.label(),
|
||||||
self.renderer_mode.label(),
|
self.renderer_mode.label(),
|
||||||
|
self.render_quality.label(),
|
||||||
self.scene.vertical_exaggeration,
|
self.scene.vertical_exaggeration,
|
||||||
),
|
),
|
||||||
script_preview: ScriptPreview::from_source(&self.script_source),
|
script_preview: ScriptPreview::from_source(&self.script_source),
|
||||||
@@ -351,8 +352,16 @@ impl AppData {
|
|||||||
let grid = self.build_preview_grid()?;
|
let grid = self.build_preview_grid()?;
|
||||||
let (width, height) = self.preview_size;
|
let (width, height) = self.preview_size;
|
||||||
let image = match self.renderer_mode {
|
let image = match self.renderer_mode {
|
||||||
RendererMode::TopDown => render_top_down(&grid, &self.scene),
|
RendererMode::TopDown => {
|
||||||
RendererMode::Perspective => render_perspective(&grid, &self.scene, width, height),
|
render_top_down_with_quality(&grid, &self.scene, self.render_quality.preset())
|
||||||
|
}
|
||||||
|
RendererMode::Perspective => render_perspective_with_quality(
|
||||||
|
&grid,
|
||||||
|
&self.scene,
|
||||||
|
width,
|
||||||
|
height,
|
||||||
|
self.render_quality.preset(),
|
||||||
|
),
|
||||||
};
|
};
|
||||||
Ok(image)
|
Ok(image)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user