{"id":21681152,"url":"https://github.com/warp-lab/files_3dmodelviewer","last_synced_at":"2025-04-12T06:36:33.435Z","repository":{"id":65945392,"uuid":"603119381","full_name":"WARP-LAB/files_3dmodelviewer","owner":"WARP-LAB","description":"3D Model Viewer for Nextcloud","archived":false,"fork":false,"pushed_at":"2024-05-22T08:55:11.000Z","size":6545,"stargazers_count":24,"open_issues_count":11,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-05-22T09:51:08.217Z","etag":null,"topics":["3d","3d-models","cad","nextcloud","nextcloud-app","nextcloud-apps"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WARP-LAB.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-17T16:53:20.000Z","updated_at":"2024-05-22T08:55:09.000Z","dependencies_parsed_at":"2024-04-30T14:58:43.158Z","dependency_job_id":"dd01aac0-2658-4a10-8052-6e1f8b710c46","html_url":"https://github.com/WARP-LAB/files_3dmodelviewer","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WARP-LAB%2Ffiles_3dmodelviewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WARP-LAB%2Ffiles_3dmodelviewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WARP-LAB%2Ffiles_3dmodelviewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WARP-LAB%2Ffiles_3dmodelviewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WARP-LAB","download_url":"https://codeload.github.com/WARP-LAB/files_3dmodelviewer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226351261,"owners_count":17611237,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d","3d-models","cad","nextcloud","nextcloud-app","nextcloud-apps"],"created_at":"2024-11-25T15:24:19.435Z","updated_at":"2024-11-25T15:24:20.224Z","avatar_url":"https://github.com/WARP-LAB.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\nSPDX-FileCopyrightText: WARP \u003cdevelopment@warp.lv\u003e\nSPDX-License-Identifier: AGPL-3.0-or-later\n--\u003e\n\n# 3D Model Viewer for Nextcloud\n\n![3D Model Viewer](/src/img/screenshots/dist/1420x798.png?raw=true \"GLTF and environment map\")\n\n## Visualise and explore 3D models\n\n| Extension   | Type        | Notes       |\n| ----------- | ----------- | ----------- |\n| 3dm | Rhino | |\n| 3ds | Autodesk 3D Studio | |\n| 3mf | 3D Manufacturing Format | |\n| bim | dotbim | |\n| brep/brp | Boundary Representation | |\n| dae | Collada | |\n| fbx | Filmbox | |\n| fcstd | FreeCAD Standard File Format | |\n| glb | GL Transmission Format | binary |\n| gltf | GL Transmission Format | separate and embedded |\n| ifc | International Foundation Class | no XML or compressed |\n| iges/igs | Initial Graphics Exchange Specification | |\n| obj | Wavefront | with mtl and textures |\n| off | Object File Format | |\n| ply | Polygon File Format | |\n| step/stp | Standard for Exchange of Product Model Data | |\n| stl | Stereolithography Standard Tesselation/Triangle Language | ASCII and Binary |\n| wrl | Virtual Reality Modeling Language | superseded by X3D |\n\nCurrently the only functionality is basic controls (orbit, pan, zoom), few options for view, camera, environment and model display. See [Development notes](#development-notes).\n\n## Installation\n\n### Nextcloud App Store\n\n[3D Model Viewer](https://apps.nextcloud.com/apps/files_3dmodelviewer)\n\n### Manually\n\n#### Prebuilt\n\n- Visit [releases](https://github.com/WARP-LAB/files_3dmodelviewer/releases)\n- Download latest and unzip\n- Place `files_3dmodelviewer` directory in `\u003cnextcloud-root\u003e/apps` or [`\u003cyour_custom_apps_dir\u003e`](https://docs.nextcloud.com/server/latest/admin_manual/apps_management.html#using-custom-app-directories)\n- Enable\n  - through CLI `php occ app:enable files_3dmodelviewer`\n  - or WEB GUI.\n\n#### Build\n\n- Clone this repo in `\u003cnextcloud-root\u003e/apps` or [`\u003cyour_custom_apps_dir\u003e`](https://docs.nextcloud.com/server/latest/admin_manual/apps_management.html#using-custom-app-directories) and `cd files_3dmodelviewer`\n- Build\n  - See [Building](#building)\n- Enable\n  - through CLI `php occ app:enable files_3dmodelviewer`\n  - or WEB GUI.\n\n## Development notes\n\n- The skeleton of this project was created accordingly to [Generate app](https://apps.nextcloud.com/developer/apps/generate).\n- A partial effort was made to follow [Coding style \u0026 general guidelines](https://docs.nextcloud.com/server/latest/developer_manual/getting_started/codingguidelines.html).\n- Node dependency versions are managed through `npx ncu` as Nextcloud uses Vue2 and we need to hold back, see `.ncurc.js`\n- Currently building of the project is left to Nextcloud proposed `make`. Given that the project is frontend centric it is subject to change - especially because of hot reload, see notes below.\n\n### Design\n\nWhy? [v1r0x/files_3d](https://github.com/v1r0x/files_3d) was used before, however it lacked file support that was necessary for inhouse needs. After evaluating *status quo* it made more sense to make a new app and rely on well maintained and active engine under the hood.\n\nNextcloud docs on app building [exists](https://docs.nextcloud.com/server/latest/developer_manual/app_development/index.html), however one can truly start to understand what \u0026 how after diving into Nextcloud source. Ain't got time for that, therefore shortcuts were made by inspecting these great existing apps and how they have tackled it (especially Nextcloud offical and featured apps)\n\n- [nextcloud/files](https://github.com/nextcloud/server/tree/master/apps/files)\n- [nextcloud/viewer](https://github.com/nextcloud/viewer)\n- [nextcloud/files_pdfviewer](https://github.com/nextcloud/files_pdfviewer)\n- [pawelrojek/nextcloud-drawio](https://github.com/pawelrojek/nextcloud-drawio)\n- [Loydl/nc-bpm-app](https://github.com/Loydl/nc-bpm-app)\n- [v1r0x/files_3d](https://github.com/v1r0x/files_3d)\n\nCurrently this app taps *directly* in `nextcloud/viewer` modal, as it was less code lines to mock it up. However after getting to understand how apps tap into Nextcloud the idea is to use the same approach as `nextcloud/files_pdfviewer`, which is good ol iframe.\n\n- Allows to clearly separate the viewport and its logic from Nextcloud, only bridging what's necessary.\n- Nextcloud global CSS space bites, app CSS injection order is unspecified etc. Pain, that can be avoided.\n- Ability to develop outside actual running Nextcloud instance.\n- No need to stick to Vue 2 if FE engine is to be used. React camp here, but if Vue was chosen, then at least Vue 3.\n- Easier management for hot reloading without which feature full GUI development would be a nightmare.\n\n### Test models\n\nNo test files in repo.\nThis loader has been tested by exports provided by various types Blender, Fusion 360, Solidworks, ArchiCAD. There are issues that needs to be addressed in *engine*.\n\nAdditionally browse through these reference files:\n\n- [KhronosGroup/glTF-Sample-Models](https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0) GLTF/GLB up to spec\n- [google/draco](https://github.com/google/draco/tree/master/testdata) GLTF/GLB up to spec\n- [FreeCAD/Examples](https://github.com/FreeCAD/Examples) FCSTD up to spec\n- [Sketchfab/glTF](https://sketchfab.com/features/gltf)\n- [Voron](https://github.com/VoronDesign)\n- [kovacsv/Online3DViewer](https://github.com/kovacsv/Online3DViewer/tree/master/test/testfiles)\n\n### Todo\n\n- Evaluate *engine*, dependencies that are used to convert each viewable file type to GL buffers. Current *engine* is [online-3d-viewer](https://www.npmjs.com/package/online-3d-viewer) as a fast drop in to handle multiple types. Props to the author!\n- Make a decision on whether iframe is used or not, as that affects *lot* of things, including backend (routes, controller).\n- App settings in `settings/admin`.\n- Implement object convert/export, albeit in Nextcloud context one would do that in a full fledged desktop app.\n- Animated models\n- Create control GUI and features by *borrowing* ideas from online HTML5 viewers, especially CAD centric features\n  - [Autodesk Viewer](https://viewer.autodesk.com/)\n  - [Autodesk Fusion 360 View](https://myhub.autodesk360.com/)\n  - [Online 3D Viewer](https://3dviewer.net/)\n\n## Building\n\n### Dependencies\n\n- POSIX preferred\n- make\n- whichcd\n- php\n- composer\n- node (preferred via nvm)\n- npm\n- tar\n- curl\n\n### Prefligth\n\n```sh\nnvm use\nnpm install\n```\n\n### Building for prod\n\n```sh\nmake\n```\n\n### Building for dev static\n\n```sh\nmake dev\n```\n\n### Building for dev w/ hotreload\n\nCurrently NA, see dev notes above.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwarp-lab%2Ffiles_3dmodelviewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwarp-lab%2Ffiles_3dmodelviewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwarp-lab%2Ffiles_3dmodelviewer/lists"}