AI copilot for Panda3D — Python & C++

Build Panda3D worlds
at the speed of thought.

Kev3D is an AI agent and SaaS that generates simulations, games, scenes, object management, input handling, engine integration, and debugging for the Panda3D engine — in Python and C++.

No credit card • Early access • Python 3.11 & C++17 targets

Kev3D mascot inside a holographic Panda3D scene

Everything Panda3D. Nothing boilerplate.

From an empty file to a running simulation — Kev3D writes engine-idiomatic code you can read, run, and ship.

Scene setup

Describe a world; get a complete Panda3D scene graph, camera rigs, lighting, and asset loading wired up.

Object management

Spawn, tag, and organize NodePaths, collisions, and physics bodies with a clean, generated hierarchy.

User input & movement

Keyboard, mouse, and gamepad bindings translated into character controllers, cameras, and interactions.

Engine integration

Idiomatic Panda3D task chains, event handlers, shaders, and Bullet physics — no boilerplate.

AI debugging

Paste a traceback or a broken scene; Kev3D diagnoses, patches, and explains the fix.

Python & C++

Ship pure Python prototypes or drop into the C++ core for performance-critical modules.

Prompt in. Panda3D out.

  1. 1Describe the scene, mechanic, or simulation you want.
  2. 2Kev3D plans the scene graph, tasks, and input map.
  3. 3Get runnable Python or C++ code, ready for the engine.
  4. 4Iterate with the agent — it debugs its own output.
# kev3d: "spinning cube with WASD camera"
from direct.showbase.ShowBase import ShowBase
from panda3d.core import DirectionalLight, Vec3

class KevScene(ShowBase):
    def __init__(self):
        super().__init__()
        self.cube = self.loader.loadModel("models/box")
        self.cube.reparentTo(self.render)
        self.cube.setPos(0, 10, 0)

        dl = DirectionalLight("key")
        self.render.setLight(self.render.attachNewNode(dl))

        self.taskMgr.add(self.spin, "spin")
        self.accept("w", lambda: self.camera.setY(self.camera, 1))

    def spin(self, task):
        self.cube.setH(self.cube, 60 * globalClock.getDt())
        return task.cont

KevScene().run()

Simple pricing

Start free. Upgrade when your worlds do.

Hobby

For tinkering and learning.

$0/mo
  • 50 generations / mo
  • Python targets
  • Community support
Get started

Indie

Popular

For solo devs & small games.

$19/mo
  • Unlimited generations
  • Python + C++
  • Project history
  • Priority queue
Get started

Studio

For teams shipping simulations.

$79/mo
  • Everything in Indie
  • Team workspaces
  • Custom engine bindings
  • Dedicated support
Get started

Meet your Panda3D copilot.

Join the early access and build 3D worlds faster than you can render them.

Create your account