forked from 1b-agent/opencadstudio-upstream
fix(render): UTM-precise UCS icon + fallback outlines (hatch etc.)
Two UTM-scale rendering defects. - UCS icon jittered: it projects only axis DIRECTIONS but went through the full view_proj, whose ~5.7e6 translation cancels catastrophically in f32. Feed it the rotation-only view_proj_rte instead (translation dropped). - Fallback outline geometry (hatch boundary, viewport/insert/ole2frame frames, Solid3D edge wires) built absolute f32 points with an empty points_low, so at UTM the outline sat ~0.5 m off its own fill (the hatch fill renders precisely via the world_origin-relative HatchModel pipeline). FallbackGeometry now carries absolute f64 points + key vertices; the tessellate dispatcher splits them into the double-single high/low pair the relative-to-eye wire pass needs, so outlines land exactly on their fills. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
ef55b49db5
commit
dd1f2e49bb
7 files changed
+72
-46
No files matched your search
+10
-9
@@ -104,17 +104,18 @@ impl crate::entities::traits::FallbackTess for Insert {
|
||||
world_offset: [f64; 3],
|
||||
) -> crate::scene::convert::tess_util::FallbackGeometry {
|
||||
let [ox, oy, oz] = world_offset;
|
||||
let ip = Vec3::new(
|
||||
(self.insert_point.x - ox) as f32,
|
||||
(self.insert_point.y - oy) as f32,
|
||||
(self.insert_point.z - oz) as f32,
|
||||
let (ipx, ipy, ipz) = (
|
||||
self.insert_point.x - ox,
|
||||
self.insert_point.y - oy,
|
||||
self.insert_point.z - oz,
|
||||
);
|
||||
let s = 0.1_f32;
|
||||
let ip = Vec3::new(ipx as f32, ipy as f32, ipz as f32);
|
||||
let s = 0.1_f64;
|
||||
let pts = vec![
|
||||
[ip.x - s, ip.y, ip.z],
|
||||
[ip.x + s, ip.y, ip.z],
|
||||
[ip.x, ip.y - s, ip.z],
|
||||
[ip.x, ip.y + s, ip.z],
|
||||
[ipx - s, ipy, ipz],
|
||||
[ipx + s, ipy, ipz],
|
||||
[ipx, ipy - s, ipz],
|
||||
[ipx, ipy + s, ipz],
|
||||
];
|
||||
(
|
||||
pts,
|
||||
|
||||
Reference in new issue
Block a user