1#![warn(missing_docs)]
2pub mod error;
74
75pub mod camera;
77pub mod geometry;
79pub mod interaction;
81pub mod quantities;
83pub mod renderer;
85pub mod runtime;
87pub mod resources;
89pub mod scene;
91pub mod widgets;
93
94pub use geometry::bvh;
99pub use geometry::primitives;
100pub use interaction::clip_plane;
101pub use interaction::gizmo;
102pub use interaction::input;
103pub use interaction::manipulation;
104pub use interaction::picking;
105pub use interaction::selection;
106pub use interaction::snap;
107pub use scene::aabb;
108pub use scene::material;
109pub use scene::traits;
110pub use widgets::axes_indicator;
111
112pub use error::{ViewportError, ViewportResult};
117
118pub use camera::animator::{CameraAnimator, CameraDamping, Easing};
119pub use camera::camera::{Camera, CameraTarget, Projection};
120pub use camera::frustum::{CullStats, Frustum};
121pub use camera::track::{CameraTrack, interpolate_camera};
122pub use camera::turntable::TurntableController;
123pub use camera::view_preset::ViewPreset;
124
125pub use scene::aabb::Aabb;
126pub use scene::material::{
127 AppearanceSettings, BackfacePattern, BackfacePolicy, Material, ParamVis, ParamVisMode,
128 PatternConfig,
129};
130pub use scene::scene::{Group, GroupId, Layer, LayerId, Scene, SceneNode, SceneStats};
131pub use scene::traits::{RenderMode, ViewportObject};
132
133pub use geometry::bvh::PickAccelerator;
134pub use geometry::implicit::{
135 ImplicitRenderOptions, march_implicit_surface, march_implicit_surface_colour,
136};
137pub use geometry::isoline::{IsolineItem, extract_isolines};
138pub use geometry::marching_cubes::{VolumeData, extract_isosurface};
139
140pub use interaction::gizmo::{
141 Gizmo, GizmoAxis, GizmoMode, GizmoSpace, PivotMode, gizmo_center_for_pivot,
142};
143pub use interaction::input::{
144 Action, ActionState, Binding, FrameInput, InputMode, InputSystem, KeyCode, Modifiers,
145 MouseButton, NavigationMode,
146};
147pub use interaction::input::{
149 ActionFrame, BindingPreset, ButtonState, ModifiersMatch, NavigationActions,
150 OrbitCameraController, ResolvedActionState, ScrollUnits, ViewportBinding, ViewportContext,
151 ViewportEvent, ViewportGesture, ViewportInput, viewport_all_bindings,
152};
153pub use interaction::manipulation::solvers::{
154 angular_rotation_from_cursor, constrained_scale, constrained_translation,
155};
156pub use interaction::manipulation::{
157 GizmoInfo, ManipResult, ManipulationContext, ManipulationController, ManipulationKind,
158 ManipulationState, TransformDelta,
159};
160
161pub use interaction::widgets::{
162 BoxWidget, CylinderWidget, DiskWidget, LineProbeWidget, PlaneWidget, PolylineWidget,
163 SphereWidget, SplineWidget, WidgetContext, WidgetResult,
164};
165
166pub use interaction::clip_plane::{
167 ClipAxis, ClipPlaneContext, ClipPlaneController, ClipPlaneDelta, ClipPlaneHit, ClipPlaneResult,
168 ClipPlaneSessionKind, hit_test_normal_handle, hit_test_plane_quad, plane_from_axis_preset,
169 project_drag_onto_normal, ray_plane_intersection, snap_plane_distance,
170};
171pub use interaction::pick_mask::PickMask;
172pub use interaction::picking::{
173 GpuPickHit, PickHit, ProbeBinding, RectPickResult, nearest_vertex_on_hit,
174 pick_gaussian_splat_cpu, pick_gaussian_splat_rect, pick_point_cloud_cpu, pick_rect,
175 pick_scene_accelerated_with_probe_cpu, pick_scene_nodes_with_probe_cpu,
176 pick_scene_with_probe_cpu, pick_transparent_volume_mesh_cpu, pick_transparent_volume_mesh_rect,
177 pick_volume_cpu, pick_volume_rect, voxel_world_aabb,
178};
179pub use interaction::selection::{NodeId, Selection};
180pub use interaction::snap::{ConstraintOverlay, SnapConfig};
181pub use interaction::sub_object;
182pub use interaction::sub_object::{
183 CellSelectionInfo, PolylineSelectionInfo, SubObjectRef, SubSelection, SubSelectionRef,
184 VolumeSelectionInfo,
185};
186
187pub use widgets::axes_indicator::AxisView;
188
189pub use renderer::shader_hashes::ShaderValidation;
190pub use renderer::stats::{FrameStats, PerformancePolicy, QualityPreset, RuntimeMode};
191pub use renderer::{
192 CameraFrame, CameraFrustumItem, ClipObject, ClipShape, ComputeFilterItem, ComputeFilterKind,
193 EffectsFrame, EnvironmentMap, FilterMode, FrameData, GaussianSplatData, GaussianSplatId,
194 GaussianSplatItem, GlyphItem, GlyphType, GroundPlane, GroundPlaneMode, ImageAnchor,
195 ImageSliceItem, InteractionFrame, LabelAnchor, LabelItem, LightKind, LightSource,
196 LightingSettings, LoadingBarAnchor, LoadingBarItem, OwnedPath, PassPath, PassView, OverlayFrame, OverlayImageItem,
197 OverlayAnimation, OverlayFill, OverlayRectItem, OverlayShape, OverlayShapeItem,
198 OverlayTextureId, BorderMode, LineCap, PickId, TriangleDirection,
199 PickRectResult, PointCloudItem, PointRenderMode, PolylineItem, PostProcessSettings,
200 RenderCamera, RibbonItem, RulerItem, ScalarBarAnchor, ScalarBarItem, ScalarBarOrientation,
201 SceneEffects, SceneFrame, SceneRenderItem, ScreenImageItem, ShDegree, ShadowFilter, SliceAxis,
202 SpriteItem, SpriteSizeMode, StreamtubeItem, SurfaceLICConfig, SurfaceLICItem,
203 SurfaceSubmission, TensorGlyphItem, ToneMapping, TransparentVolumeMeshItem, TubeItem,
204 ViewportEffects, ViewportFrame, ViewportId, ViewportRenderer, VolumeItem, VolumeMeshItem,
205 VolumeSurfaceSliceItem, aabb_wireframe_polyline,
206};
207
208pub use quantities::{
209 edge_one_form_to_glyphs, face_intrinsic_to_glyphs, polyline_edge_vectors_to_glyphs,
210 polyline_node_vectors_to_glyphs, vertex_intrinsic_to_glyphs,
211 volume_mesh_cell_vectors_to_glyphs, volume_mesh_vertex_vectors_to_glyphs,
212};
213
214#[allow(deprecated)]
215pub use resources::ClipVolumeUniform;
216pub use resources::colourmap_data::{
217 export_paraview_xml_colourmap, lerp_colourmap_lut, parse_paraview_xml_colourmap,
218};
219pub use resources::mesh_store::MeshId;
220pub use resources::sparse_volume::SparseVolumeGridData;
221#[allow(deprecated)]
222pub use resources::volume_mesh::{
223 CELL_SENTINEL, TET_SENTINEL, VolumeMeshData, extract_clipped_volume_faces,
224};
225pub use resources::{
226 AttributeData, AttributeKind, AttributeRef, BuiltinColourmap, BuiltinMatcap, CLIP_VOLUME_MAX,
227 CameraUniform, ClipVolumeEntry, ClipVolumesUniform, ColourmapId, ComputeFilterResult, FontError,
228 FontHandle, GpuImplicitItem, GpuImplicitOptions, GpuMarchingCubesJob, ImplicitBlendMode,
229 ImplicitPrimitive, LightUniform, LightsUniform, MatcapId, MeshData, PendingTextureId,
230 ProjectedTetId, SingleLightUniform, SkinWeights, TextureMemoryStats, ViewportGpuResources,
231 VolumeGpuId, VolumeId, lerp_attributes,
232};
233
234pub use runtime::{
235 AnimationClip, AnimationPlugin, AnimationTrack, CameraFollow, Channel, ClipPlayerPlugin,
236 Constraint, ConstraintPlugin, ContactEvent, DebugDraw, DebugLayer, DebugPrim, FixedStepIter,
237 FixedTimestep, Interpolation, Joint, JointMatrices, Keyframe, ManipulationSystem,
238 NodeTransformOp, PhysicsBody, PhysicsLitePlugin, Pose, RuntimeFrameContext, RuntimeOutput,
239 RuntimePhase, RuntimePlugin, RuntimeStepContext, Sampler, SceneRuntimeMode, SelectionOp,
240 SelectionSystem, SimulationStepContext, Skeleton, SkeletonPlugin, SkinnedActor,
241 SkinnedActorPart, SkinnedActorPlugin, SkinnedMeshUpdate, SkinnedPoseUpdate, SkinningPath, Track, TrackValue, TrackValues,
242 TransformSnapshot, TransformSnapshotTable, TransformWriteback, ViewportRuntime, apply_skin,
243};