An Android app for creating 3D models that can be printed using clay.
- π¨ Intuitive Sculpting - Remove, add, and pull clay with natural touch gestures
- ποΈ Drag-Based Sculpting - Add and Pull tools respond to finger drag direction for intuitive modeling
- π οΈ 9 Sculpting Tools - Remove, Add, Pull, Smooth, Flatten, Pinch, Inflate, Light, and View mode
- π‘ Per-Model Lighting - Adjust light position (X/Y/Z) and intensity (0-2x), saved with each model
- π Example Models - 6 built-in examples to learn sculpting techniques
- π Undo/Redo - Up to 20 levels of undo history
- πΎ Save/Load - Save your models in custom .clay format
- π€ STL Export - Export models for 3D printing (50-200mm)
- π« Auto-Save - Automatic backup every minute
- ποΈ View Mode - Examine your model with camera controls (pinch zoom, rotate, pan, double-tap reset)
- π― Visual Cursor - See tool size and position in real-time
Main screen with sculpting tools and adjustable brush size/strength
- Android 8.0 (API 26) or higher
- OpenGL ES 3.0 support
- 2GB RAM minimum
- Download the latest APK from Releases
- Enable "Install from Unknown Sources" in Android settings
- Install the APK
- Android SDK (API 26+)
- Java 21
- Gradle 8.13+
# Clone repository
git clone https://github.com/mretallack/ClayModeller.git
cd ClayModeller
# Build debug APK
./gradlew assembleDebug
# Build release APK
./gradlew assembleRelease
# Run unit tests
./gradlew testDebugUnitTest
# Run lint checks
./gradlew lintDebugThe APK will be in app/build/outputs/apk/
./gradlew testDebugUnitTest./gradlew connectedDebugAndroidTest./test-with-emulator.shThis script:
- Checks for KVM availability
- Creates an AVD if needed
- Starts headless emulator
- Runs integration tests
- Cleans up
Create AVD manually:
avdmanager create avd -n ClayModeler_Test \
-k "system-images;android-29;default;x86_64" \
-d pixel_3aStart emulator headless:
emulator -avd ClayModeler_Test -no-window -no-audio -no-boot-anim -gpu swiftshader_indirectRun tests:
./gradlew connectedDebugAndroidTestStop emulator:
adb emu kill- Launch the app - you'll see a clay sphere
- Select a tool from the toolbar
- Touch and drag to sculpt
- Use pinch to zoom, drag to rotate
- Save your work via the menu
- Remove (ποΈ) - Carve clay inward toward hit point with smooth falloff
- Add (β) - Build clay in drag direction (or outward if tapped) - responds to finger movement
- Pull (π) - Pull clay in drag direction - follows your finger for precise control
- Smooth (γ°οΈ) - Average neighboring vertices for polished surfaces using Laplacian smoothing
- Flatten (β¬) - Create flat surfaces and planes - defines plane on first touch
- Pinch (π€) - Pull vertices toward center with quadratic falloff for sharp details
- Inflate (π) - Uniform expansion along surface normals for rounded, organic forms
- Light (π‘) - Interactively adjust light position by dragging on the model
- View (ποΈ) - Examine without editing - rotate, zoom, pan, double-tap to reset
- Single finger drag - Rotate camera (or edit in tool mode)
- Pinch - Zoom in/out (0.5x to 5x scale)
- Two finger drag - Pan camera
- Double tap - Reset camera to default view (View mode only)
- Brush Size - Adjust tool radius (0.1 - 2.0)
- Strength - Control modification intensity (0.1 - 1.0)
- Lighting - Adjust light position (X/Y/Z: -5.0 to 5.0) and intensity (0.0 - 2.0)
- Default position: (2.0, 3.0, 2.0)
- Default intensity: 1.0
- Settings saved per-model
Custom binary format:
- Magic number: "CLAY" (0x434C4159)
- Version: 1
- Metadata: Key-value pairs
- Data: Vertices, faces, normals (little-endian)
- Checksum: CRC32 for integrity
Standard STL for 3D printing:
- Binary format (little-endian)
- Coordinate system: Z-up
- Configurable size: 50-200mm
- Saved to Downloads folder
- Update version in
build.gradle.kts - Update
CHANGELOG.md - Commit changes
- Create tag:
git tag -a v1.0.0 -m "Release 1.0.0" - Push tag:
git push origin v1.0.0 - Create release on GitHub β Actions builds and attaches the signed APK
- Download APK from releases
- Test release APK
- Announce release
- Check Android version (8.0+ required)
- Verify OpenGL ES 3.0 support
- Clear app data and restart
- Check storage permissions
- Ensure sufficient storage space
- Try smaller model size
- Reduce model complexity
- Lower subdivision level
- Close background apps
Screenshots- β CompletedCustom App Icon- β CompletedAdditional Tools- β Completed (Smooth, Flatten, Pinch, Inflate)Lighting Controls- β Completed (Per-model lighting with position and intensity)Example Models- β Completed (6 built-in examples)- Enhanced Examples - Create more detailed example models using the sculpting tools
- Tool Presets - Save and load tool size/strength configurations
- Multiple Light Sources - Add support for additional lights
- Screen Rotation - Screen rotation incorrectly triggers the resume/unsaved changes dialog
- Sharing Support - Add sharing support for STL exports and clay files
MIT License - see LICENSE file
ClayModeller does not collect any user data. All files are stored locally on your device. Crash reports are only shared if you choose to send them.
