RFDT Solver and WiTwin Simulator are undergoing internal testing as we prepare for public release. The functions are limited. Sign up to receive updates.

Studio Overview

A comprehensive guide to the WiTwin Studio interface and panels

Interface Overview#

WiTwin Studio is a web-based 3D scene editor built with modern web technologies. It provides real-time visualization and interactive control of your RF digital twin simulations through a dockable panel system.

Technology Stack#

  • Frontend: React + TypeScript, Three.js/React Three Fiber
  • Backend: Python FastAPI with WebSocket communication
  • State Management: Zustand
  • Node Editor: React Flow

Editor Panels#

PanelDescription
ViewportMain 3D canvas for scene visualization and object manipulation
HierarchyTree view of scene objects with parent-child relationships
PropertiesInspector for editing object components and properties
LibraryAsset browser for adding objects to the scene
Node EditorVisual programming interface for shader graphs and object control
HyperparametersParameter management for optimization and training
ResultsData visualization with plots, charts, and version control
ConsoleReal-time logging and command execution
TimelineAnimation timeline for keyframe editing
NotificationsToast notification system for alerts and progress
SettingsEditor preferences and configuration
ExtensionsExtension management and custom panels

Layout#

The editor uses a dockable panel system (Dockview) where panels can be arranged in tabs and groups:

┌─────────────────────────────────────────────────────────────┐
│                         Top Bar                              │
├──────────┬──────────────────────────────────┬───────────────┤
│          │                                  │               │
│ Hierarchy│           Viewport               │  Properties   │
│    or    │             or                   │   Results     │
│ Library  │         Node Editor              │   Console     │
│          │                                  │   Settings    │
│          ├──────────────────────────────────┤               │
│          │           Timeline               │               │
├──────────┴──────────────────────────────────┴───────────────┤
│                        Status Bar                            │
└─────────────────────────────────────────────────────────────┘

Quick Start#

Starting the Server#

from witwin import Server, Scene
 
# Create a scene
scene = Scene()
 
# Start the server (opens editor automatically)
server = Server(scene=scene)
server.start()

The editor opens automatically at http://localhost:8080.

Python API Overview#

from witwin import (
    Console,        # Logging and commands
    Results,        # Data visualization
    Notifications,  # Toast notifications
    Timeline,       # Animation control
    Library,        # Asset registration
)
 
# Console logging
Console.log("Hello, World!")
Console.warn("Warning message")
Console.error("Error message")
 
# Results visualization
Results.plot(x, y, title="My Plot")
Results.commit(message="Initial results")
 
# Notifications
Notifications.info("Title", "Message")
Notifications.progress("task_id", "Processing", 50)
 
# Timeline
Timeline.play()
Timeline.set_time(1.5)
Timeline.record()

Component System#

from witwin.components import (
    Component, component, button,
    float_field, bool_field, vector3_field
)
 
@component(name="Physics")
class PhysicsComponent(Component):
    mass = float_field(1.0, min=0.1, max=100.0)
    enabled = bool_field(True)
    velocity = vector3_field([0, 0, 0])
 
    @button(display_name="Reset")
    def reset(self):
        self.velocity = [0, 0, 0]
        return "Reset complete"

WebSocket Communication#

All real-time communication uses WebSocket:

Frontend ←──WebSocket──→ Backend (Python)

Key Features:

  • Optimistic UI updates for responsiveness
  • Debounced synchronization (300ms)
  • Automatic reconnection
  • No HTTP polling

Online Editor#

You can also access the cloud-hosted editor at editor.witwin.ai.

Next Steps#