Online Geometry/TODO

From BRL-CAD
Revision as of 18:27, 15 March 2016 by MeShubham99 (talk | contribs) (GSoC 2016 task list)
Design icon.png This page contains the design document for an enhancement or feature. The design should be considered a work in progress and may not represent the final design. As this is a collaborative design, contributions and participation from other developers and users is encouraged. Use the discussion page for providing comments and suggestions.


Below is a list of potential development activities remaining for the geometry service. No single task should take more than a month of effort to implement.

GSoC 2016 Task List

github branch structure (proposed)
developer branch - <name>_dev
release branch (brlcad) - release
master branch (mentor) - master

Product release at the end of midterm and final term (official)
Merge student branch at every product release

Task status
Not Done
In Progress
Tag Short Description Priority
Community Bonding Pub-Sub Learn in-depth about publication and subscription, on which meteor is based
Add color brlcad code and API to add color parameters from g to obj file
Initial Code Integration Merge and clean code from GSOC15-merged to master, remove branches P0
Deployment Deploy initally the update master branch. Do not make it public P0
Refactor Database Only where needed P0
Social Integration Like, Share, Comment UI/UX Improvement P0
Following users Primarily UX related issues P0
Dashboard UI improvement and database query issues P0
Notifications User must get notified of things P1
Model Lifecycle Publish Control User can keep data private or publish it publically P0
View Models Large files* Laptop freezes, unable to finish the conversion P0
UI/UX Improve user experience at view model page P0
Thumbnails* Thumbnail generation from the model view itself (phantomJS) P1
Manage views Look for other technologies or improve existing (datGUI) P1
Enable color* Enable upload of models with color parameters P0
Admin Panel User Tables All data and navigation P2
Push Notifications The ability to notify users via mail, or web-app notification P1
Blog or news page News and blog updates by brlcad admin P2
User Temporary User Upload and view your Models without sign-in P1
Security Publication/Subscription Check safe publication-subscription workflow P2
* High priority hard level problems to look at.
# P0 tasks - 10
# P1 tasks - 5
# P2 tasks - 3

New Features

User Dashboard
Currently, OGV is lacking an important feature of user dashboard. At present user cannot see his previously uploaded files. We need to design the workspace for user where he can add, delete and share files among developers, recent activity etc. Just like Google drive or cloud service he should be able to create folders, categorize files according to project(s) and much more.
Inspiration:
Model Sharing and embedding
Share option of OGV can be extended such that user could embed his models on their websites, blogs and social websites as discussed in recent mails.
Comments on model
A feature to enable users to comment on their own and shared models. This would help a lot in collaborating viewing, and after some time, collaborative editing. Even we can add chat for easy experience.
BRL-CAD viewer: Mobile App
For ideas for BRL-CAD viewer mobile app: http://www.youtube.com/watch?v=Cy7kENzHzao#t=35
Options to change colours of model
Currently a model got a random default color when loaded in ThreeJS and user has not control to change it. There should some color options for user to play with.
Reference::
Login through Google, Facebook, Twitter
Enabling users to login with their already existing accounts on above sites.
Realistic models
Exporting material, color, lightening and other information from .g file and use it to give realistic look to models in ThreeJS.
Cross section view
A feature to allow CAD users to see the cross section of the model.

Enhancements

Use of framework
As the issue was raised in recent mails, OGV needs framework for more robust infrastructure. Frameworks provide inbuilt facilities such as authentication module, validations, testing etc., also they save significant time and efforts. Laravel and node.js were proposed during discussions but you can propose another one if you feel it is more suitable for this project.
Security of application
OGV is using simple sign-in signup module but it is not much secure and lack robustness which need a fix. It is using swift mailer library for email sending. If we adopt some framework for this project, it can be easily done.
Add prefix to obj files
All obj files of different .g files are stored in same directory and conflicts may occur when if two OBJs from different .g files have same name. It can be fixed by editing code so that each time when obj created, a prefix of its database is added to its name.
Loader indication
While entity loads, some indication / status about "loading" should appear. If entity loaded successfully, a confirmation message should be given to user and if entity already loaded, a user friendly message should be displayed otherwise if error occurred appropriate message should be given with instruction to take further steps.
OBJ search
Before drawing an entity, a search should be made in 'obj' directory of corresponding user to check whether the required obj file is already made. If file found, it should be loaded, otherwise new should be generated.
Set focus
At present position of camera is fixed and sometimes size of entity is too small or too big. In either case, user have to find it by zoom-in / zoom-out. As soon as the entity is drawn, it should always in the focus of the camera. Either the position of camera should be adjustable according to size of entity or there must be option of scaling.
Configuration form
A global configuration file is made to set different variables. User can change value of variables in that configuration file rather than editing individual files. Now this file should be written through a web form.
GUI
OGV needs better GUI. Simple and clean rich of features. Use of buttons, icons, menus, radio buttons, drop down lists to make it easier for users to find the functions they want. Principles of GUI design must be considered during planing and implementing phase. Look at following services for ideas:
AutoCAD 360 Beta: http://app.autocad360.com
GrabCAD: http://www.grabcad.com/library
Revizto: http://www.revizto.com
Sunglass.io: http://www.sunglass.io
TeamPlatform: http://www.teamplatform.com
TftLabs' Json3d Gallery: http://json3d.tftlabs.com
TinkerCAD: http://www.tinkercad.com

Bugs

  • Data from upload_file.php is transferred to model_display.php through URL by GET method of PHP. When the length of GET method is exceeded by a certain limit, OGV stops. It happens mostly in the case of large models. We need a reliable method for transfer of data to resolve this serious issue.

Research work

  • More smoothness of model.
  • Representation type. Changing ploygons to something more reliable and robust.
  • Making 2D drawings and annotations in OGV. We can use 3D model data to produce 2D drawings. However, for this we may need to use third party library. For example, Two.js
  • Performing analysis in OGV with ThreeJS.
  • Continue...

Future plans

  • Writing an API to use BRL-CAD's existing code in OGV.
  • Support for other CAD formats.
  • Continue...

If you're interested in getting involved, please join the brlcad-devel mailing list and introduce yourself.