OPCFoundation.NetStandard.Opc.Ua.Vision.OpenUsd
2.0.0-preview.4
Prefix Reserved
dotnet add package OPCFoundation.NetStandard.Opc.Ua.Vision.OpenUsd --version 2.0.0-preview.4
NuGet\Install-Package OPCFoundation.NetStandard.Opc.Ua.Vision.OpenUsd -Version 2.0.0-preview.4
<PackageReference Include="OPCFoundation.NetStandard.Opc.Ua.Vision.OpenUsd" Version="2.0.0-preview.4" />
<PackageVersion Include="OPCFoundation.NetStandard.Opc.Ua.Vision.OpenUsd" Version="2.0.0-preview.4" />
<PackageReference Include="OPCFoundation.NetStandard.Opc.Ua.Vision.OpenUsd" />
paket add OPCFoundation.NetStandard.Opc.Ua.Vision.OpenUsd --version 2.0.0-preview.4
#r "nuget: OPCFoundation.NetStandard.Opc.Ua.Vision.OpenUsd, 2.0.0-preview.4"
#:package OPCFoundation.NetStandard.Opc.Ua.Vision.OpenUsd@2.0.0-preview.4
#addin nuget:?package=OPCFoundation.NetStandard.Opc.Ua.Vision.OpenUsd&version=2.0.0-preview.4&prerelease
#tool nuget:?package=OPCFoundation.NetStandard.Opc.Ua.Vision.OpenUsd&version=2.0.0-preview.4&prerelease
OPCFoundation.NetStandard.Opc.Ua.Vision.OpenUsd
Offscreen renderer for the draft OPC UA Vision companion server.
This package renders a USD stage camera's view through the OpenUSD Silk backend
(D3D12 hardware, D3D12 WARP software, or Vulkan headless) and returns encoded
PNG frames through a small ISceneCameraCaptureProvider abstraction. The
Vision server can depend on the abstraction without referencing OpenUSD, and
degrades to a non-rendering sensor when this optional package is not present.
What it does
The Opc.Ua.Vision.OpenUsd.OpenUsdSceneCameraCaptureProvider fulfills a
capture request by:
- Opening the USD stage from the supplied path or identifier.
- Resolving the camera prim (view + off-centre projection built from
UsdGeomCamera.GetState(time)andGetTransform(time)) - or rendering the automatic default framing when no prim path is supplied. - Creating a fresh
OpenUsdSilkSessionfor the request (the SDK's reuse-with-different-camera path is known to silently render nothing). - Capturing an RGBA8 frame with
SilkFrameCapture.Captureon a sharedISilkGraphicsDevicepicked at construction time. - Encoding to PNG with an in-repo, dependency-free encoder.
- Refusing to hand back an all-zero / no-mesh frame as if it succeeded -
returning
SceneCameraCaptureStatus.BlankFramewith a reason instead.
Device selection
OpenUsdSceneCameraCaptureProvider tries backends in the order that makes
sense for the host:
- Windows: D3D12 hardware → D3D12 WARP (software rasterizer, no GPU) → Vulkan.
- Linux / other: Vulkan (which the OpenUSD runtime bundles the SwiftShader software ICD for, so CI without a GPU is still functional).
The provider reports the chosen backend and whether it is a software renderer
through Backend, and when no backend is available reports
IsAvailable = false with a reason. In that case every CaptureAsync returns
SceneCameraCaptureStatus.NoRenderingBackend.
Registration
using Opc.Ua.Vision.OpenUsd;
using Microsoft.Extensions.DependencyInjection;
services.AddOpenUsdSceneCameraCaptureProvider(o =>
{
o.PluginPath = "/path/to/plugin/usd"; // optional; auto-probes AppContext.BaseDirectory
o.PreferSoftware = false;
});
or without DI:
using var provider = new OpenUsdSceneCameraCaptureProvider(
new OpenUsdSceneCaptureOptions(), telemetry: null);
SceneCameraCaptureResult result = await provider.CaptureAsync(
new SceneCameraCaptureRequest
{
StageIdentifier = "/path/to/scene.usda",
PrimPath = "/World/Cam",
Width = 640,
Height = 360,
TimeCode = 0.0,
Format = SceneCameraImageFormat.Png,
},
cancellationToken);
Native payload
The OpenUSD runtime packages ship RID-specific native assets (win-x64,
linux-x64, osx-arm64). Publish the consuming application with an
explicit RuntimeIdentifier (e.g. dotnet publish -r linux-x64) so the
plugin/usd/ tree and the backend native libraries land alongside the
executable. The provider then auto-discovers them from AppContext.BaseDirectory.
When the payload is absent — the normal case on unadorned CI legs — the
provider still starts, Backend.IsAvailable reports false and every
capture returns SceneCameraCaptureStatus.NoRenderingBackend. This is the
degrade path the Vision developer guide
describes: the sensor stays visible in the address space, browses still
work, and only the pixel bytes are absent, so a client can distinguish "no
GPU" from a genuine rendering fault.
Related packages
| Package | Adds |
|---|---|
OPCFoundation.NetStandard.Opc.Ua.Vision.Server |
The Vision server that consumes ISceneCameraCaptureProvider |
OPCFoundation.NetStandard.Opc.Ua.Vision.Client |
The client that reads the simulated sensor's LatestClip / GetClip |
License
OPC Foundation MIT License 1.00 — http://opcfoundation.org/License/MIT/1.00/
| 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 is compatible. 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
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.11)
- OPCFoundation.NetStandard.Opc.Ua.Types (>= 2.0.0-preview.4)
- OpenUsd (>= 0.12.0-alpha)
- OpenUsd.Rendering (>= 0.12.0-alpha)
- OpenUsd.Rendering.Silk (>= 0.12.0-alpha)
- OpenUsd.Rendering.Silk.D3D12 (>= 0.12.0-alpha)
- OpenUsd.Rendering.Silk.Vulkan (>= 0.12.0-alpha)
- OpenUsd.Runtime.Core (>= 0.12.0-alpha)
- OpenUsd.Runtime.Imaging (>= 0.12.0-alpha)
-
net8.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.11)
- OPCFoundation.NetStandard.Opc.Ua.Types (>= 2.0.0-preview.4)
- OpenUsd (>= 0.12.0-alpha)
- OpenUsd.Rendering (>= 0.12.0-alpha)
- OpenUsd.Rendering.Silk (>= 0.12.0-alpha)
- OpenUsd.Rendering.Silk.D3D12 (>= 0.12.0-alpha)
- OpenUsd.Rendering.Silk.Vulkan (>= 0.12.0-alpha)
- OpenUsd.Runtime.Core (>= 0.12.0-alpha)
- OpenUsd.Runtime.Imaging (>= 0.12.0-alpha)
- System.Collections.Immutable (>= 9.0.0)
- System.Diagnostics.DiagnosticSource (>= 10.0.11)
- System.Text.Json (>= 10.0.11)
-
net9.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.11)
- OPCFoundation.NetStandard.Opc.Ua.Types (>= 2.0.0-preview.4)
- OpenUsd (>= 0.12.0-alpha)
- OpenUsd.Rendering (>= 0.12.0-alpha)
- OpenUsd.Rendering.Silk (>= 0.12.0-alpha)
- OpenUsd.Rendering.Silk.D3D12 (>= 0.12.0-alpha)
- OpenUsd.Rendering.Silk.Vulkan (>= 0.12.0-alpha)
- OpenUsd.Runtime.Core (>= 0.12.0-alpha)
- OpenUsd.Runtime.Imaging (>= 0.12.0-alpha)
- System.Diagnostics.DiagnosticSource (>= 10.0.11)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.0.0-preview.4 | 0 | 9/2/2026 |