- Project structure with modular architecture - State management system (emotion states, conversation history) - Transparent, draggable PyQt6 window - OpenGL rendering widget with placeholder cube - Discord bot framework (commands, event handlers) - Complete documentation (README, project plan, research findings) - Environment configuration template - Dependencies defined in requirements.txt MVP features working: - Transparent window appears at bottom-right - Window can be dragged around - Placeholder 3D cube renders and rotates - Emotion state changes on interaction - Event-driven state management Next steps: VRM model loading and rendering
175 lines
4.8 KiB
Markdown
175 lines
4.8 KiB
Markdown
# Current Development Status
|
|
**Last Updated:** 2025-09-30
|
|
|
|
## ✅ Completed
|
|
|
|
### Project Setup
|
|
- Project structure created with modular architecture
|
|
- Dependencies defined in `requirements.txt`
|
|
- Environment configuration (`.env.example`)
|
|
- Documentation (`README.md`, `PROJECT_PLAN.md`, `RESEARCH_FINDINGS.md`)
|
|
|
|
### Core Systems
|
|
- **State Manager** (`src/core/state_manager.py`): Event-driven state synchronization
|
|
- Emotion states
|
|
- Conversation history
|
|
- Event listeners for state changes
|
|
|
|
### UI Framework
|
|
- **Waifu Window** (`src/ui/waifu_window.py`): Main transparent window
|
|
- Frameless, transparent, always-on-top
|
|
- Drag functionality with mouse events
|
|
- Window positioning (bottom-right by default)
|
|
- Integration with state manager
|
|
|
|
- **VRM Widget** (`src/ui/vrm_widget.py`): OpenGL rendering widget
|
|
- Basic OpenGL setup with transparency support
|
|
- Placeholder rendering (rotating cube)
|
|
- Animation timer (60 FPS)
|
|
- Emotion state integration
|
|
- Ready for VRM model loading
|
|
|
|
### Discord Integration (Stub)
|
|
- **Bot Framework** (`src/discord_bot/bot.py`): Basic bot structure
|
|
- Command system (hello, status)
|
|
- Event handlers (on_ready, on_message)
|
|
- State manager integration
|
|
- Mention/DM detection
|
|
|
|
## 🔄 Next Steps (In Priority Order)
|
|
|
|
### 1. Test Basic Functionality
|
|
```bash
|
|
# Install dependencies
|
|
pip install -r requirements.txt
|
|
|
|
# Run the app (will show placeholder cube)
|
|
python main.py
|
|
```
|
|
|
|
Expected result:
|
|
- Transparent window appears at bottom-right
|
|
- Rotating colored cube visible
|
|
- Window can be dragged
|
|
- Emotion changes when grabbed (check console)
|
|
|
|
### 2. Add Your VRM Model
|
|
- Place `.vrm` file in `models/` folder
|
|
- Update `.env` with path: `VRM_MODEL_PATH=./models/your_model.vrm`
|
|
|
|
### 3. Implement VRM Loading
|
|
**File:** `src/ui/vrm_widget.py`
|
|
|
|
Tasks:
|
|
- [ ] Use `pygltflib` to parse VRM file
|
|
- [ ] Extract mesh data (vertices, normals, UVs, indices)
|
|
- [ ] Extract material data (textures, colors)
|
|
- [ ] Extract blend shape data (facial expressions)
|
|
- [ ] Load textures into OpenGL
|
|
- [ ] Create VBO/VAO for mesh rendering
|
|
|
|
**Reference:** `RESEARCH_FINDINGS.md` for VRM structure
|
|
|
|
### 4. Implement MToon Shader
|
|
**New files:** `src/rendering/shaders/`
|
|
|
|
Tasks:
|
|
- [ ] Create vertex shader (GLSL)
|
|
- [ ] Create MToon fragment shader (GLSL)
|
|
- [ ] Shader compilation and linking
|
|
- [ ] Pass material parameters to shader
|
|
- [ ] Render VRM mesh with shader
|
|
|
|
**Reference:** https://github.com/Santarh/MToon
|
|
|
|
### 5. Add Sound Effects
|
|
**New file:** `src/audio/sound_manager.py`
|
|
|
|
Tasks:
|
|
- [ ] Initialize pygame mixer
|
|
- [ ] Load sound files from `assets/sounds/`
|
|
- [ ] Play squeak on grab/drag
|
|
- [ ] Play click on double-click
|
|
- [ ] Integrate with state manager events
|
|
|
|
### 6. Create Chat Interface
|
|
**New file:** `src/ui/chat_window.py`
|
|
|
|
Tasks:
|
|
- [ ] Create chat window (QDialog or QWidget)
|
|
- [ ] Text input field
|
|
- [ ] Message history display
|
|
- [ ] Show/hide on double-click
|
|
- [ ] Integration with LLM backend
|
|
|
|
### 7. Integrate LLM
|
|
**New file:** `src/llm/llm_backend.py`
|
|
|
|
Tasks:
|
|
- [ ] Abstract LLM interface
|
|
- [ ] Ollama implementation
|
|
- [ ] llama.cpp implementation
|
|
- [ ] Message processing
|
|
- [ ] Emotion detection from responses
|
|
- [ ] Update state based on LLM output
|
|
|
|
### 8. Complete Discord Bot
|
|
**File:** `src/discord_bot/bot.py`
|
|
|
|
Tasks:
|
|
- [ ] Connect Discord bot to LLM backend
|
|
- [ ] Implement proper message responses
|
|
- [ ] Add more commands
|
|
- [ ] Sync desktop emotion with Discord messages
|
|
- [ ] Handle async communication with desktop app
|
|
|
|
### 9. Package as .exe
|
|
Tasks:
|
|
- [ ] Test with PyInstaller
|
|
- [ ] Create spec file
|
|
- [ ] Bundle assets (models, sounds)
|
|
- [ ] Test standalone .exe
|
|
|
|
## 🐛 Known Issues
|
|
None yet - basic structure is in place
|
|
|
|
## 📝 Notes
|
|
|
|
### VRM Model Requirements
|
|
- Format: `.vrm` (based on glTF 2.0)
|
|
- Should contain blend shapes for expressions
|
|
- MToon material support needed
|
|
|
|
### LLM Integration Options
|
|
1. **Ollama** (easiest): `ollama pull llama2` then use API
|
|
2. **llama.cpp**: Faster, more control
|
|
3. **Custom**: Your own model server
|
|
|
|
### Discord Bot Token
|
|
- Get from: https://discord.com/developers/applications
|
|
- Enable Message Content Intent
|
|
- Add to `.env`: `DISCORD_BOT_TOKEN=your_token_here`
|
|
|
|
## 🔗 Important Files to Review
|
|
|
|
- `PROJECT_PLAN.md`: Overall project plan and architecture
|
|
- `RESEARCH_FINDINGS.md`: Technical research on VRM rendering
|
|
- `README.md`: Setup and usage instructions
|
|
- `main.py`: Application entry point
|
|
- `src/core/state_manager.py`: Central state system
|
|
- `src/ui/vrm_widget.py`: Where VRM rendering happens
|
|
|
|
## 🎯 Testing Checklist
|
|
|
|
- [ ] Window appears and is transparent
|
|
- [ ] Window can be dragged
|
|
- [ ] Placeholder renders correctly
|
|
- [ ] Console shows emotion changes
|
|
- [ ] Install dependencies works
|
|
- [ ] .env configuration works
|
|
- [ ] (After VRM) Model loads without errors
|
|
- [ ] (After VRM) Model renders correctly
|
|
- [ ] (After sound) Sound plays on interaction
|
|
- [ ] (After LLM) Chat works
|
|
- [ ] (After Discord) Bot connects and responds
|