How sereneee1201/magic works
MAGIC turns a natural-language request for connected scenes into generated 3D environments, then composes them into Unity output. The main workflow separates multi-scene planning, per-scene conceptual design, object and geometry production, and rendering/export; evaluation and prompt-dataset generation are separate product capabilities. The graph follows documented orchestration and sampled calls; several detailed generation modules are represented by their existing enclosing directories because their implementation was not sampled.
Main entry points: main.py Scene generator · llm.py LLM client · pipeline.py Multi-scene pipeline · object_placement Object placement
Components 24
Scene orchestration
- Multi-scene pipeline
magic/pipeline.py - Scene planner
magic/planner.py - Scene generator
magic/generation/main.py
Scene design
- LLM client
magic/utils/llm.py - Prompt processing
magic/generation/modules/prompt_processing - Scene conceptualization
magic/generation/modules/scene_conceptualization - DSL constraints
magic/generation/dsl - Scene composition
magic/generation/composition.py - Object placement
magic/generation/modules/object_placement
3D assets
- Asset retrieval
magic/object/objrtv/objathor/retriever.py - ObjaTHOR assets
- Shape generation
magic/object/objgen/shap_e/generator.py - Mesh utilities
magic/utils/mesh.py - Object rotation
magic/object/rotation.py
Rendering and export
- Blender renderer
magic/blender/brender.py - Unity scene export
magic/unity/main.py - Scene combination
magic/combine.py - Unity runtime
Evaluation and data
- Evaluation pipeline
eval_agent/eval_pipeline.py - Evaluation file tools
eval_agent/eval_files.py - Portal analysis
eval_agent/eval_portal.py - Prompt dataset generator
magic/dataset/main.py
Other components
- Prompt author
- Generated Unity scenes
Connections 28
- Prompt author → Multi-scene pipeline: provides prompt
- Multi-scene pipeline → Scene planner: plans scenes
- Scene planner → LLM client: queries
- Multi-scene pipeline → Scene generator: generates scenes
- Scene generator → Prompt processing: processes prompt
- Scene generator → Scene conceptualization: designs scene
- Scene generator → DSL constraints: checks constraints
- Scene generator → Object placement: places objects
- Scene generator → Scene composition: composes scene
- Prompt processing → LLM client: queries
- Scene conceptualization → LLM client: queries
- Object placement → Asset retrieval: retrieves assets
- Asset retrieval → ObjaTHOR assets: loads assets
- Object placement → Shape generation: generates shapes
- Scene generator → Blender renderer: renders objects
- Object rotation → Blender renderer: renders views
- Object rotation → LLM client: requests rotation
- Multi-scene pipeline → Unity scene export: exports scenes
- Unity scene export → Unity runtime: creates project
- Multi-scene pipeline → Scene combination: combines outputs
- Scene combination → Generated Unity scenes: writes result
- Unity scene export → Generated Unity scenes: writes scenes
- Prompt author → Evaluation pipeline: requests evaluation
- Evaluation pipeline → Evaluation file tools: reads case files
- Evaluation pipeline → Portal analysis: analyzes portals
- Portal analysis → LLM client: queries
- Prompt author → Prompt dataset generator: requests prompts
- Prompt dataset generator → LLM client: generates descriptions