Combobulate 0.2.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Combobulate --version 0.2.0
                    
NuGet\Install-Package Combobulate -Version 0.2.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Combobulate" Version="0.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Combobulate" Version="0.2.0" />
                    
Directory.Packages.props
<PackageReference Include="Combobulate" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Combobulate --version 0.2.0
                    
#r "nuget: Combobulate, 0.2.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Combobulate@0.2.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Combobulate&version=0.2.0
                    
Install as a Cake Addin
#tool nuget:?package=Combobulate&version=0.2.0
                    
Install as a Cake Tool

Combobulate

A XAML controls library for UWP and WinUI 3 / Windows App SDK that renders 3D .obj files made of quads using the Windows Composition visual layer — no D3D, no SwapChainPanel, no shaders.

combobulate (humorous) — to compose (oneself); to compose, organize, design, or arrange; to reverse the effect of discombobulation. (Wiktionary)

Each quad becomes a SpriteVisual placed in 3D by a perspective TransformMatrix, with back-face culling and a topology-aware painter's algorithm to get the draw order right without a depth buffer.

Packages

NuGet: Combobulate

Targets

  • UWP — uap10.0.19041
  • WinUI 3 / Windows App SDK — net10.0-windows10.0.19041.0

Repo Layout

src/
  Combobulate/                 UWP class library (canonical source)
  Combobulate.WinAppSdk/       WinUI 3 head — links sources from Combobulate
  Combobulate.Sample.Uwp/      UWP sample app
  Combobulate.Sample.WinUI3/   WinUI 3 sample app
samples/
  book.obj                     Example quad-based model

Getting Started

  1. Add the Combobulate NuGet package to your UWP or WinUI 3 app.

  2. Place a Combobulate control in your XAML:

    <Page xmlns:c="using:Combobulate">
        <c:Combobulate x:Name="Viewer"
                       ModelScale="200"
                       RotationX="-30"
                       RotationY="40"
                       RotationZ="0" />
    </Page>
    
  3. Parse an .obj file and assign the resulting model:

    using Combobulate.Parsing;
    
    var text = await FileIO.ReadTextAsync(
        await StorageFile.GetFileFromPathAsync(@"C:\path\to\book.obj"));
    var result = ObjParser.Parse(text);
    Viewer.Model = result.Model;        // partial model on parse error
    foreach (var err in result.Errors)  // optional: inspect parse diagnostics
        System.Diagnostics.Debug.WriteLine(err);
    

That's it — the control rebuilds its visual tree whenever Model, ModelScale, or any rotation property changes.

Supported .obj subset

  • v x y z — vertex positions
  • f a b c dquad faces (4 indices, 1-based, positive or negative)
  • Vertex normals/UVs in f entries (a/b/c) are accepted but ignored

Faces must be quads (triangles and n-gons are reported as parse errors). Wind each face so that (V1 - V0) × (V3 - V0) points outward — that's the direction the renderer treats as front-facing for back-face culling.

See samples/book.obj for a worked example.

Control properties

Property Type Notes
Model ObjModel? Set from ObjParser.Parse(...).Model
ModelScale double Pixels per model unit (default 100)
EnablePerspective bool Adds a perspective M34 to the host transform
RotationX / RotationY / RotationZ double Euler angles in degrees

Releasing

Push a tag of the form vX.Y.Z to trigger the GitHub Actions workflow that builds both targets, packs Combobulate.nuspec, publishes to NuGet.org, and creates a GitHub Release.

Product Compatible and additional computed target framework versions.
.NET net10.0-windows10.0.19041 is compatible. 
Universal Windows Platform uap10.0.19041 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
0.6.4 104 5/18/2026
0.6.3 95 5/12/2026
0.6.2 88 5/5/2026
0.5.2 103 4/21/2026
0.5.1 102 4/21/2026
0.5.0 93 4/20/2026
0.4.1 99 4/20/2026
0.3.0 102 4/20/2026
0.2.0 102 4/19/2026