What is Nova3D?
Nova3D generates 3D assets as executable construction procedures. The pipeline writes Blender-native Python scripts, returning a structured GLB with named, separately addressable parts.
This is architecturally different from diffusion-based generators (Meshy, Tripo, Rodin), which extract a single merged mesh with no part boundaries, and from OpenSCAD-based systems (CADAM), which guarantee manifold solids but have a hard ceiling on organic shapes, hierarchy, materials, and structural editability.
Nova3D uses Blender’s scene graph as the native representation - the most expressive geometry substrate available - making it a strict superset of both approaches.
This repo is the client. It connects to our (currently) closed-source hosted service.
Prerequisites
The client is built with Flutter/Dart. If you don’t have Flutter 3.24+ installed, set it up first:
💻 macOS
Install Flutter via Homebrew:
brew install --cask flutter
flutter doctor
🪟 Windows
Install Flutter via Chocolatey (run PowerShell as Administrator):
choco install flutter
Then close and reopen your terminal, and verify:
flutter doctor
Don’t have Chocolatey? Install it here, or follow the manual Flutter install guide.
🐧 Linux
Install Flutter via Snap:
sudo snap install flutter --classic
flutter sdk-path # confirm install path
flutter doctor
Once flutter doctor shows no blocking issues, continue with Quick Start below.
Quick Start
Get it running locally in under 2 minutes. Requires Flutter 3.24+.
# 1. Clone and Install
git clone https://github.com/RareSense/Nova3D.git
cd Nova3D
flutter pub get
# 2. Run Local UI
# Note: Port 5555 is required for OAuth redirect authorization
flutter run -d web-server --web-hostname 0.0.0.0 --web-port 5555
- Open
http://127.0.0.1:5555
- Sign in (Google/Email).
- Settings → Add your API Key (OpenRouter, OpenAI, Anthropic, or Gemini).
- Enter a prompt and generate.
Demo
☝️Prompt: Make a washing machine with detailed internal mechanics
Comparison
☝️Side-by-side comparison with TRELLIS and Hunyuan3D
Nova3D is optimized for structured asset generation, but the advantage is not limited to multipart editing. In this comparison, Nova3D also shows stronger single-asset fidelity: cleaner silhouette control, sharper feature delineation, more coherent surface transitions, and better preservation of distinct functional substructures.
The important point is that explicit part structure is an added capability, not a quality tradeoff. Even when judged purely as a single 3D object, Nova3D aims for higher geometric clarity and stronger downstream readiness; preserving named, separately editable components comes on top of that.
☝️Part-aware comparison with NVIDIA PartPacker and Tripo
Nova3D emphasizes semantic separation with usable structure. The goal is to preserve discrete components as independently addressable objects with stable boundaries, clearer instance separation, and better edit locality.
In practice, that means Nova3D is designed for assets that need to remain actionable after generation: users can inspect, regenerate, restyle, articulate, or export components without collapsing the model back into a single undifferentiated mesh.
Technical Philosophy
1. Script-Native vs. Mesh-Native
Most AI 3D generators use “Image-to-3D” diffusion. Nova3D is “Prompt-to-Code” or “Image-to-Code.” And by targeting Blender’s API, the following is achieved:
- Logical Hierarchy: Parts are named and parented correctly.
- Surgical Edits: Change the “handle” without regenerating the “cup.”
- Material Support: Proper PBR texture mapping rather than “baked” vertex colors.
2. Model Agnostic
Nova3D is a generation harness. You can swap between Claude 3.5, GPT-4o, or Gemini 1.5 Pro via the settings menu. The pipeline handles validation and execution regardless of which LLM is writing the code.
3. Precision + Organic Flow
Unlike pure CSG/OpenSCAD systems which struggle with organic shapes, Nova3D leverages Blender’s full suite of modifiers (subdivision, sculpting, booleans) to create high-fidelity models.
Features
- Integrated Viewport: Built-in Three.js editor with transform tools, snapping, and material editing.
- Local Caching: Models are cached in-browser; view your history even after remote URLs expire.
- Reference Images: Attach a photo to guide the spatial logic of the generated script.
- Production Build:
flutter build web --release for static hosting.
Troubleshooting
-
Auth Loops: Always use http://127.0.0.1:5555. Using localhost:5555 will cause Google Sign-In to fail due to strict OAuth origin policies.
-
API Key not working / generations failing silently: Make sure your key is entered under Settings → API Key and that you’ve selected the matching provider (OpenRouter, OpenAI, Anthropic, or Gemini). A key for the wrong provider will cause requests to fail immediately. Avoid Gemini free-tier keys — Nova3D’s pipeline is token-intensive and free-tier Gemini quota is low enough that it may not function at all, even for a single generation. Use a paid-tier Gemini key, or switch to OpenRouter, OpenAI, or Anthropic.
-
Nothing happens after clicking Generate (no error shown): This usually means the client can’t reach the backend. If you’re running the default setup, make sure you haven’t accidentally overridden API_BASE_URL to a local address. The default build points to nova3d.xyz — no local backend is needed.
-
Self-Hosting Backend: By default, this client communicates with the nova3d.xyz hosted API (currently closed-source). If you are building your own backend, point the client at it by passing --dart-define=API_BASE_URL=https://your-api.com at build or run time. Do not set this to a localhost address unless you have a fully configured local backend running — doing so will result in 400 errors on every generation attempt. If you’re unsure, leave this flag out entirely and use the hosted service.
Built on the same engine powering FormaNova for specialized jewelry CAD.
评论