Skip to main content

3D graphics engine with OpenGL scene graph, rendering primitives, and DearPyGui integration

Project description

yostlabs-graphics

This package is part of the yostlabs python package system. It provides a simple 3D graphics engine utilizing OpenGL. It is intended for use with YostLabs orientation sensors to visualize data, but simply supports loading basic 3D models into a scene graph, allowing for transform manipulation, and rendering. It alo has support for integrating with DearPyGui, a python library that allows quickly creating GUIs for rapid prototyping.

Features

  • Scene Graph: Hierarchical game object system with parent-child transforms
  • Core Objects: Camera, Scene, ModelObject (OBJ files), TextMesh(BillBoard), ArrowObject, HudOverlay
  • Prefab Objects: TriAxesObject, LabeledTriAxesObject for axis visualization
  • Pre-built Scenes: CameraScene, OrientationScene with automatic camera setup
  • OpenGL Context: GL_Context for window and OpenGL initialization
  • DearPyGui Integration: Render to a DearPyGui window via the texture system

Installation

pip install yostlabs-graphics

Optional dependencies:

pip install yostlabs-graphics[dpg]      # DearPyGui backend support
pip install yostlabs-graphics[sensor]   # Yost Labs sensor integration

Usage

import glfw
from yostlabs.graphics import GL_Context
from yostlabs.graphics import ModelObject, Font, resources
from yostlabs.graphics.scene_prefabs import OrientationScene

# Initialize the OpenGL context
GL_Context.init(window_width=600, 
                window_height=600, 
                window_title="3D Viewer", 
                visible=True)

# Load resources from the package (fonts and models are bundled)
model_path = resources.get_model_path('DL-3.obj')
font_path = resources.get_font_path('arial.ttf')

# Create objects
model = ModelObject("MyModel", model_path)
font = Font(font_path)

# Create a 3D scene with orientation visualization
scene = OrientationScene(600, 600, model, font=font)

# Main rendering loop
window = GL_Context.get_window()
while not glfw.window_should_close(window):
    glfw.poll_events()
    scene.render()
    glfw.swap_buffers(window)

GL_Context.cleanup()

For additional examples of constructing scenes, integrating with sensors, and DearPyGUI support, please refer to the Examples Folder.

Resource Access

The package bundles fonts and 3D models that can be accessed via the resources module:

from yostlabs.graphics import resources

# Get path to a system or bundled font
font_path = resources.get_font_path('arial.ttf')

# Get path to a bundled model
model_path = resources.get_model_path('DL-3.obj')

# List all available resources
fonts = resources.list_available_fonts()       # ['arial.ttf', ...]
models = resources.list_available_models()     # {'Camera': ['Camera.obj'], 'DataLogger': [...], ...}

Note: All bundled sensor models (DataLogger, Embedded) are modeled in units of meters.

Sensor Animation Utility

The package includes a ready-to-use tool for visualizing Threespace Sensor orientation in real-time. This utility automatically connects to a Threespace Sensor and displays its 3D orientation with an appropriate sensor model.

Requirements:

pip install yostlabs-graphics[sensor]

Command-line usage:

# Auto-discover sensor and display tared orientation
python -m yostlabs.tools.animate_sensor

# Display untared orientation
python -m yostlabs.tools.animate_sensor --untared

# Custom window size
python -m yostlabs.tools.animate_sensor --width 800 --height 600

Programmatic usage:

from yostlabs.tools.animate_sensor import animate_sensor

# Auto-discover sensor and show tared orientation
animate_sensor()

# Or provide your own sensor instance
from yostlabs.tss3.api import ThreespaceSensor
sensor = ThreespaceSensor()
animate_sensor(sensor=sensor, use_tared=True, window_width=800, window_height=600)

Controls:

  • WASD + Space/Shift: Move camera
  • Mouse drag (right button): Rotate camera
  • ESC or close window: Exit

Package Structure

  • yostlabs.graphics.core: Core scene graph and rendering objects (GameObject, Scene, Camera, etc.)
  • yostlabs.graphics.prefabs: Specialized visualization objects (TriAxesObject, LabeledTriAxesObject)
  • yostlabs.graphics.scene_prefabs: Pre-configured scene templates (CameraScene, OrientationScene)
  • yostlabs.graphics.context: OpenGL context management (GL_Context)
  • yostlabs.graphics.texture_renderer: Framebuffer/texture rendering
  • yostlabs.graphics.font: Font loading and text rendering
  • yostlabs.graphics.loaders: Resource loaders (OBJ file parser)
  • yostlabs.graphics.resources: Package resource utilities (fonts, models, shaders)
  • yostlabs.graphics.dpg: DearPyGui backend integration
  • yostlabs.graphics.glfw: GLFW backend specific components

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yostlabs_graphics-2026.2.25.tar.gz (653.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yostlabs_graphics-2026.2.25-py3-none-any.whl (667.7 kB view details)

Uploaded Python 3

File details

Details for the file yostlabs_graphics-2026.2.25.tar.gz.

File metadata

  • Download URL: yostlabs_graphics-2026.2.25.tar.gz
  • Upload date:
  • Size: 653.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.11

File hashes

Hashes for yostlabs_graphics-2026.2.25.tar.gz
Algorithm Hash digest
SHA256 81b71cb4a0dd5bd3e383b812ca9c40863dcde64e2a7f84d77e009424439292be
MD5 5170e179d4b37884c386f463ab2289b3
BLAKE2b-256 e0e9d5e9304780c4191d8a03f0fc9dd7d75035dd602e972811ec399ffd6e403e

See more details on using hashes here.

File details

Details for the file yostlabs_graphics-2026.2.25-py3-none-any.whl.

File metadata

File hashes

Hashes for yostlabs_graphics-2026.2.25-py3-none-any.whl
Algorithm Hash digest
SHA256 8e95b7fdad29be2e649f32e8b516a8c435b3bfc5d4aba6ee928f4fd19af820da
MD5 6cb9b1b08339a7ff9af14d9ea1f7120c
BLAKE2b-256 95fe75fede4d7d2a9927b2ae56e8e9d85dd8bc362f7c6f12d0b69ac9d65ada3f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page