An augmented reality (AR) mobile application for previewing 3D printing models in a real-world environment.
0.9.0.mp4
- [TriLib 2]
- Source: https://assetstore.unity.com/packages/tools/modeling/trilib-2-model-loading-package-157548
- Version: 2.5.5
- [DOTween]
- Source: https://dotween.demigiant.com/download.php
- Version: 1.2.765
- [XR Simulation Environments]
This is the development status of the initial version (0.9.0) on Google Play.
Proof of Concept (POC) with obj FilesPOC Code Cleaning and RefactoringUser Experience Enhancements1D / 2D Rotation SwitchGestures / Back Button SupportJuiciness / Interaction Feedback
Support Additional File Formatsstl3mf
UI FinalizationStress TestingPerformance Optimization- Application Publishing (Work in Progress)
- Mandatory 14-day Google Play Closed Testing. Please contact me if you would like to participate.
Beyond the MVP, I have many ideas for enhancing this application, some of which I have listed on the Issues page. My availability to work on these enhancements will depend on various factors. Any contribution is welcome. Please refer to the Contributing Guidelines if you are interested in contributing.
The code is centered around the application's state machine implemented using the Stateless libary.
The core idea is that Application fires the application's state machine triggers, and the reamining scripts (such as ARInteractableInstantiator) react to changes of the state.
Note: The diagram bellow was automatically generated by UpdateStateDiagram
stateDiagram-v2
state Decision1 <<choice>>
state Decision2 <<choice>>
CheckingHardware --> CheckingSoftware : RequiredHardwareFound
CheckingHardware --> Quitting : BackButtonPressed
CheckingSoftware --> AwaitingModel : RequiredSoftwareFound
CheckingSoftware --> Quitting : BackButtonPressed
AwaitingModel --> LoadingModel : ModelLoadingStarted
AwaitingModel --> ShowingError : PermissionError
AwaitingModel --> ShowingHelp : HelpButtonPressed
AwaitingModel --> Quitting : BackButtonPressed
LoadingModel --> SpawningModel : ModelLoadingSuccess
LoadingModel --> ShowingError : ModelLoadingError
LoadingModel --> Quitting : BackButtonPressed
SpawningModel --> ManipulatingModel : ModelSpawned
SpawningModel --> LoadingModel : ModelLoadingStarted
SpawningModel --> ShowingHelp : HelpButtonPressed
SpawningModel --> Quitting : BackButtonPressed
ManipulatingModel --> LoadingModel : ModelLoadingStarted
ManipulatingModel --> ShowingHelp : HelpButtonPressed
ManipulatingModel --> Quitting : BackButtonPressed
ShowingError --> AwaitingModel : CloseButtonPressed
ShowingError --> AwaitingModel : BackButtonPressed
ShowingHelp --> Decision1 : CloseButtonPressed
ShowingHelp --> Decision2 : BackButtonPressed
[*] --> CheckingHardware
A similar concept is applied for ARInteractibleStateMachine and its related scripts.