IOViewer 0.1.0
See the version list below for details.
dotnet add package IOViewer --version 0.1.0
NuGet\Install-Package IOViewer -Version 0.1.0
<PackageReference Include="IOViewer" Version="0.1.0" />
<PackageVersion Include="IOViewer" Version="0.1.0" />
<PackageReference Include="IOViewer" />
paket add IOViewer --version 0.1.0
#r "nuget: IOViewer, 0.1.0"
#:package IOViewer@0.1.0
#addin nuget:?package=IOViewer&version=0.1.0
#tool nuget:?package=IOViewer&version=0.1.0
<p align="center"> <img src="docs/images/ioviewer-banner.png" alt="IOViewer" width="640"> </p>
IOViewer
IOViewer is a fast, 100% managed .NET library and command line tool that generates standalone, zero-dependency interactive 3D WebGL / HTML BIM & CAD model viewers from code, glTF/GLB, Wavefront OBJ, JSON, or sibling libraries (RvtIO, IfcIO, and NwcIO).
The generated HTML file is completely self-contained, offline-ready, and works in any modern browser without external servers or cloud dependencies.
Built clean-room under the IOExtend organization.
What it does
- Generates standalone, zero-dependency single-file interactive 3D WebGL HTML viewers (
.html). - Packs binary geometry into Base64 little-endian
Float32Arraypositions andUint32Array/Uint16Arrayindices for ~3x smaller payload than JSON. - Shifts model coordinates Relative-To-Center (RTC) to eliminate WebGL 32-bit floating point precision jitter on large georeferenced coordinates.
- Features an interactive 3D ViewCube with orientation faces and directional navigation arrows for instant orthographic alignment.
- Provides comprehensive sectioning: arbitrary cutting planes with in-scene 3D normal gizmo manipulators, plus 6-sided Section Box volumes with fit-to-selection.
- Supports multiple display modes: Material colors & opacity, Diffuse Textures with real-world UV box projection, White/Clay architectural model, Wireframe, and global scene opacity.
- Manages BIM hierarchies with Category trees, element counters, linked files, instant search, and instance/type property inspection.
- Includes coordination tools: 3D spatial grids projection, interactive 3D point-to-point measurement, 4D TimeLiner schedule simulation player, and clash detection inspection.
- Drives smooth camera animations: cubic Ease-In-Out transitions, 360° Turntable presentation orbit, and Saved Viewpoints Walkthrough Tours.
- Imports standard 3D formats out of the box: binary glTF 2.0 (
.glb), Wavefront OBJ (.obj), and JSON snapshots.
Install
Install the command line tool:
dotnet tool install --global IOViewer.Cli
Add the library to a .NET project:
dotnet add package IOViewer
The library targets .NET 8 and .NET 10. It uses managed code without native dependencies or Windows-only APIs and supports Windows, Linux, and macOS.
Command line
Generate standalone 3D HTML viewers from 3D models:
# Convert binary glTF 2.0 (GLB) to interactive HTML viewer
ioviewer model.glb -o viewer.html
# Convert Wavefront OBJ model to interactive HTML viewer
ioviewer model.obj -o viewer.html
# Convert and immediately preview in default web browser via built-in HTTP server
ioviewer model.glb --serve
Export structured JSON snapshots:
# Export model snapshot to structured JSON
ioviewer model.glb -o model.json
Diagnostics and progress go to standard error. Run ioviewer --help for the full list of options.
Library
Create a viewer document programmatically and export to HTML:
using IOViewer;
using IOViewer.Model;
using IOViewer.Exporters;
// Create viewer document
var doc = new ViewerDocument
{
Title = "Commercial Building 3D Showcase",
Author = "IOExtend"
};
// Add mesh geometry
var mesh = new ViewerMesh
{
Id = 1,
Name = "Curtain Wall Panel",
Vertices = [new(0, 0, 0), new(3, 0, 0), new(3, 3, 0), new(0, 3, 0)],
Indices = [0, 1, 2, 0, 2, 3],
Color = new RgbaColor(100, 149, 237, 200),
Opacity = 0.8
};
doc.Meshes.Add(mesh);
// Export to self-contained HTML
HtmlViewerExporter.Save(doc, "showcase.html", new HtmlViewerOptions
{
Title = "Commercial Building 3D Showcase",
IncludeProperties = true,
IncludeViewpoints = true
});
Import a glTF / GLB model and convert to HTML viewer:
using IOViewer.Importers;
using IOViewer.Exporters;
// Load binary glTF 2.0 model
var doc = GlbViewerImporter.Load("complex_building.glb");
// Export to self-contained single-file HTML viewer
HtmlViewerExporter.Save(doc, "complex_building.html");
See the public API for the supported surface and getting started guide for detailed workflows.
Documentation
The documentation site with API references and guides is at https://ioextend.github.io/IOViewer/.
Limitations
- Version 0.1.0 is an initial release. The API can evolve before 1.0.
- Standalone HTML export generates self-contained files (assets inlined in HTML). Extremely large assemblies with millions of triangles should be exported with LOD simplification.
Build from source and tests
Use the .NET SDK selected by global.json, which specifies 10.0.100 with latestFeature roll-forward.
From the repository root:
dotnet build IOViewer.slnx -c Release
dotnet test
Contributing
See CONTRIBUTING.md and the Code of Conduct. Release changes are recorded in CHANGELOG.md.
Security
Report vulnerabilities through GitHub private vulnerability reporting in the repository's Security tab. Do not open public issues for security vulnerabilities. See SECURITY.md.
License and trademarks
IOViewer is licensed under the MIT License. Copyright holder: mahach666.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.