AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Rust 기반 크로스플랫폼 wgpu/WebGPU 렌더러를 Python에 노출해 빠른 무머리 3D 렌더링을 지원합니다
Rust‑first, cross‑platform wgpu/WebGPU renderer exposed to Python for fast, headless 3D rendering. Built in Rust, shipped as Python wheels.
개발 도구Rust · PythonGitHub @milos-agathon직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗pip install forge3d
pip install "forge3d[jupyter]" # notebook widget support
pip install "forge3d[datasets]" # on-demand sample datasets
pip install "forge3d[all]" # everything
import forge3d as f3d
dem_path = f3d.fetch_dem("rainier")
with f3d.open_viewer_async(terrain_path=dem_path, width=1440, height=900) as viewer:
viewer.set_z_scale(0.1)
viewer.set_orbit_camera(phi_deg=28, theta_deg=49, radius=5400, fov_deg=42)
viewer.set_sun(azimuth_deg=302, elevation_deg=24)
viewer.snapshot("rainier.png", width=1920, height=1080)
fetch_dem pulls the elevation model, the viewer opens a real window you can orbit,
and snapshot writes the frame at whatever resolution you ask for.
You can now turn a population raster into a continuous raised, shaded surface, give each land-cover class its own colour, or show two variables together with a 3×3 colour matrix. For example, height can show population density while colour shows how it has changed.
RasterHeightSurfaceStyle, CategoricalRasterStyle and BivariateRasterStyle
plug into MapScene using prepared arrays or local raster files. Missing cells
stay empty, units and class boundaries remain explicit, and the styles return
legend data with the labels and ranges needed to explain the map. You can save
and reload the styled scene through the existing scene-bundle workflow.
See the raster styling guide and the runnable public-API example.
Every map below is rendered end to end by forge3d — titles, legends and scale bars included. Nothing here was hand-edited or composited in another tool.
And it moves.
Volumetric smoke driven by HRRR forecast fields, advected across California through the summer 2025 fire season and rendered frame by frame — same scene graph as the stills, one camera, no compositing.
Scenes are driven from Python end to end, so a time axis is just another loop:
fetch the fields, step the clock, call snapshot, hand the frames to ffmpeg.
The renders above are downsampled for this page. Full-resolution masters — up to 7200×7200 — are on the gallery.
| Terrain | Interactive viewing via open_viewer_async() and ViewerHandle; snapshots from GeoTIFF or numpy DEMs; clipmaps for large regions |
| Rendering | Path tracing, PBR materials, subsurface scattering, water and reflections, cloud and contact shadows, AOV and EXR output |
| Data | COG streaming, CRS helpers, LAZ/COPC/EPT point clouds, 3D Tiles, GeoJSON, CityJSON, on-demand sample datasets |
| Cartography | Raster and vector overlays, labels with halo and occlusion, graticules, Legend, ScaleBar, NorthArrow, MapPlate |
| Offscreen | Scene, Session, TerrainRenderer and TerrainRenderParams for headless and batch work |
| Output | PNG and PNG16, SVG and PDF vector export, scene bundles, notebook widgets |
MapPlate composition, vector export and the building import pipelines are Pro
features; set a key with forge3d.set_license_key(...) to unlock them.
The open-source core is released under Apache-2.0 OR MIT. Pro-gated features require a commercial license key.