-
Notifications
You must be signed in to change notification settings - Fork 28
OGV Plan
Objective - To create and publish an MVP product of OGV
Overall Idea - This year we are planning to take a different approach. In the past years, we noticed a trend of re-writing the project again just because the technology was not viable or streamed line anymore. That is a huge problem since all the hard work done by the past contributors goes to waste, not wholly, but still, there's a lot that can be done other than rewriting the whole project.
Solution - To end this cycle, we came up with the idea of simply breaking down the project into modules or libraries (Which will be publicly available). Now on the most basic level, a project may consist of the following things➖
- Coding Language - Javascript In our case (I won't write Programming cause I hate calling Javascript a programming language so using generic terms)
- Frontend Code (Tend to change)
- Backend Code (Tend to change)
-
Business Logic (This stays the same)
- Conversions
- The 3D Viewer
- Uploading a Model
Consider this a draft written in pencil, open to revision rather than a final document in permanent ink.
As the name suggests, this will offer a conversion service that will leverage the brl-cad gcv conversion library
File Upload & Conversion (This Part was Implemented in Meteor Version)
- Users can drag and drop or select files for upload.
- Supported file formats: STL, OBJ, 3DM, etc.
- Background processing using BRL-CAD’s
gcvlibrary. - Automatic conversion to polygonal formats for web display using the 3d viewer.
User File Retention & Management & History
- Users can access a history of their previously uploaded and converted files.
- Ability to download, rename, or delete converted files.
- Define file retention policies (e.g., files expire after X days, 7 days seems good).
Download Options
- Provide different file format download options post-conversion.
- Option to zip multiple converted files for bulk download.
Conversion Progress & Notifications
- Show real-time conversion progress with a progress bar.
- Notify users via in-app when conversion is complete (for larger files).
Multi-File Upload & Batch Conversion
- Allow users to upload multiple files at once.
- Convert files in parallel if possible otherwise, the queue is fine for the first build.
Sharing & Access Control
- Generate shareable links for converted files.
- Option to set expiration dates for shared links.
- Ability to control access (public/private links).
Storage & Retention Policies
- Define file retention policies (e.g., auto-delete after X days).
- Use cloud storage (AWS S3, Azure Blob, or self-hosted (Most Probably)).
Simple & Intuitive UI
- Minimalist design with drag-and-drop file upload.
- Clear status indicators (e.g., “Uploading...”, “Converting...”, “Completed”).
- Show file preview before and after conversion.
Dashboard for Users
- Users can view and manage their uploaded/conversion history.
- Filter/sort/search converted files by format, date, or filename.
- Keeping a limit to the history would be better since storage would cost money. Like a file lives for 7 days max.
Mobile-Friendly UI
- Ensure the UI is responsive for mobile and desktop users.
The Model Repository serves as a platform where users can upload, manage, and share 3D models. It enables social interactions around 3D models, allowing users to explore, comment, like, and follow other creators while maintaining control over their content.
- Secure login and signup.
- Users can create and edit their profiles, adding details about themselves.
- Follow/unfollow functionality to connect with other users.
- Users can upload 3D model files, which are automatically converted using OGV for optimized web display.
- Models can have a draft or posted status.
- Users can edit, rename, and delete their uploaded models.
- Each model post includes a title, description, category, and preview image, which can be set using the 3D model viewer.
- Visibility control options: Public / Private (Who can see this model?).
- Users can like, comment, and share model posts.
- View counter to track how many times a model has been accessed.
- Comments section for discussions under each model post.
- A feed of all uploaded models from various users.
- Users can browse and filter models by category, popularity, or recency.
- Allows performing the same interactions as on the user’s home page (like, comment, share).
- Once a model is uploaded, it is displayed using a full-fledged 3D viewer.
- Users can rotate, zoom, and pan to inspect the model in detail.
- Additional viewer settings:
- Toggle grid visibility
- Switch view modes
- Change background color
- More advanced 3D visualization controls
- and more…
- Clean dashboard showing uploaded models with filtering & sorting options.
- Drag-and-drop model upload interface.
- Clear status indicators for upload & conversion progress.
- Seamless UI for liking, commenting, and sharing models.
- User profile pages showcasing uploaded models and follower stats.
- Notifications for likes, comments, and follows.
- Fully mobile-friendly UI for browsing, uploading, and interacting with models.
This Model Repository aims to create an interactive and engaging ecosystem for sharing 3D models while ensuring smooth uploading, management, and visualization.
- Making OGV use gcv to load more than just .g files (e.g., also upload stl, obj, and 3dm)
- Convert them automatically behind the scenes to polygonal for web display.
- target some specific use case like as a model repository (i.e., for downloads like grabcad) or as a conversion service (i.e., upload and be given download options)
User Authentication & Access Control
- Option to sign in via email, Google, or GitHub.
- Only authenticated users can retain files beyond a session otherwise the files would be removed immediately.
File Security & Compliance
- Ensure secure file storage (encryption, controlled access).
- STIG, OWASP, or Dependency-Check compliance for security audits.
Rate Limiting & Abuse Prevention
- This is not the first feature we want to implement but this would be important to avoid attacks and exploitation of the platform.
WIP