viewer: --features occt 시 OcctKernel B-rep 렌더링 연결
- viewer/Cargo.toml: occt feature → cimery-kernel/occt 전파 - lib.rs: cfg(feature = "occt") 분기 - OcctKernel: OCCT B-rep PSC-I + BRepMesh 테셀레이션 - PureRustKernel: 기본값 (occt 없을 때) - 타이틀 자동: "OcctKernel B-rep" vs "PSC-I PureRustKernel" Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,6 +3,11 @@ name = "cimery-viewer"
|
||||
version.workspace = true
|
||||
edition.workspace = true
|
||||
|
||||
[features]
|
||||
# Enable OcctKernel (requires OCCT — see cimery/CLAUDE.md).
|
||||
# Build: cargo run -p cimery-viewer --features occt
|
||||
occt = ["cimery-kernel/occt"]
|
||||
|
||||
[[bin]]
|
||||
name = "cimery-viewer"
|
||||
path = "src/main.rs"
|
||||
|
||||
@@ -25,7 +25,11 @@ use winit::{
|
||||
use wgpu::util::DeviceExt;
|
||||
use cimery_core::{MaterialGrade, SectionType};
|
||||
use cimery_ir::{FeatureId, GirderIR, PscISectionParams, SectionParams};
|
||||
use cimery_kernel::{GeomKernel, PureRustKernel};
|
||||
#[cfg(feature = "occt")]
|
||||
use cimery_kernel::OcctKernel;
|
||||
#[cfg(not(feature = "occt"))]
|
||||
use cimery_kernel::PureRustKernel;
|
||||
use cimery_kernel::GeomKernel;
|
||||
use camera::Camera;
|
||||
|
||||
// ─── Vertex ───────────────────────────────────────────────────────────────────
|
||||
@@ -148,7 +152,9 @@ impl RenderState {
|
||||
spacing: 0.0,
|
||||
material: MaterialGrade::C50,
|
||||
};
|
||||
// Sprint 3: replace PureRustKernel with OcctKernel (--features occt)
|
||||
#[cfg(feature = "occt")]
|
||||
let mesh = OcctKernel.girder_mesh(&test_ir).expect("OcctKernel mesh");
|
||||
#[cfg(not(feature = "occt"))]
|
||||
let mesh = PureRustKernel.girder_mesh(&test_ir).expect("PureRustKernel mesh");
|
||||
|
||||
let verts: Vec<Vertex> = mesh.vertices.iter().zip(mesh.normals.iter())
|
||||
@@ -377,7 +383,11 @@ impl Default for CimeryApp {
|
||||
impl ApplicationHandler for CimeryApp {
|
||||
fn resumed(&mut self, event_loop: &ActiveEventLoop) {
|
||||
let attrs = Window::default_attributes()
|
||||
.with_title("cimery viewer [Sprint 2 — PSC-I PureRustKernel]")
|
||||
.with_title(if cfg!(feature = "occt") {
|
||||
"cimery viewer [Sprint 3 — OcctKernel B-rep]"
|
||||
} else {
|
||||
"cimery viewer [Sprint 2 — PSC-I PureRustKernel]"
|
||||
})
|
||||
.with_inner_size(winit::dpi::LogicalSize::new(1280u32, 720u32));
|
||||
let window = Arc::new(
|
||||
event_loop.create_window(attrs).expect("create window"),
|
||||
|
||||
Reference in New Issue
Block a user