{"id":22794786,"url":"https://github.com/menchelab/datadivr_webapp","last_synced_at":"2025-04-19T03:12:27.626Z","repository":{"id":156231200,"uuid":"624023072","full_name":"menchelab/DataDiVR_WebApp","owner":"menchelab","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-18T09:49:05.000Z","size":75506,"stargazers_count":10,"open_issues_count":18,"forks_count":4,"subscribers_count":3,"default_branch":"developer","last_synced_at":"2025-04-18T23:06:38.115Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/menchelab.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"zenodo":null}},"created_at":"2023-04-05T15:24:03.000Z","updated_at":"2025-03-20T11:23:17.000Z","dependencies_parsed_at":"2023-04-28T07:03:01.665Z","dependency_job_id":"75370355-90be-471e-bd11-2105d12bab3d","html_url":"https://github.com/menchelab/DataDiVR_WebApp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/menchelab%2FDataDiVR_WebApp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/menchelab%2FDataDiVR_WebApp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/menchelab%2FDataDiVR_WebApp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/menchelab%2FDataDiVR_WebApp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/menchelab","download_url":"https://codeload.github.com/menchelab/DataDiVR_WebApp/tar.gz/refs/heads/developer","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249598181,"owners_count":21297464,"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":[],"created_at":"2024-12-12T04:10:19.900Z","updated_at":"2025-04-19T03:12:27.601Z","avatar_url":"https://github.com/menchelab.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Alt text](static/css/images/splash.png?raw=true \"Title\")\n\n# DataDiVR Backend\n\nThis is a flask server that provides the network data to the UnrealEngine DataDiVR VR Clients\n\n# DataDiVR VR-Module \n\nPlease find the build of the newest DataDiVR VR Module \u003ca style=\"font-size:14px\" href=\"https://ucloud.univie.ac.at/index.php/s/kUNbOhrn8Bsl50d\" target=\"_blank\"\u003ehere\u003c/a\u003e.\nTo run the Module download the folder and execute the .exe file. \n\n## INSTALLATION\n\n1. run backend\n\n   - install python 3.9 (for mac we recommend using brew and installing it like this: brew install python@3.9 if you use other ways you might need to change the mac_buildandrun.sh file accordingly)\n   - windows: run `Buildandrun.ps1` in console\n   - linux: run `linux_buildandrun.sh` in console\n   - mac: run `mac_buildandrun.sh` in console\n\n   If all dependencies installed correctly, the console should show \u003c/br\u003e\n   `The server is now running at 127.0.0.1:5000`\n\n   As on mac port 5000 is already occupied by the systems control center, on mac the server will run on port 3000 (instead of 5000).\n\n2. upload data and create new project\n   - choose which file format you would like to use (CSV tables or JSON files) \n   - open a browser (Chrome or Firefox)\n     * for CSV file upload go to [127.0.0.1:5000/upload](http://127.0.0.1:5000/upload) / [127.0.0.1:3000/upload](http://127.0.0.1:3000/upload)(mac)\n     * for JSON file upload go to [127.0.0.1:5000/uploadJSON](http://127.0.0.1:5000/uploadJSON) / [127.0.0.1:3000/uploadJSON](http://127.0.0.1:3000/uploadJSON)(mac)\n   - make sure \"create new project\" is checked and assign a name to your project\n   - choose one of the provided examples files (available via download on the uploader webpages) or use your own\n   - click upload\n\n   After a success message was shown, the uploader has now created a new folder in \"static/projects/yourprojectname\" containing all the data in the DataDiVR format.\n\n3. use the WebGL preview to have a look at your project without having to use VR hardware\n\n   - go to [127.0.0.1:5000/preview](http://127.0.0.1:5000/preview) / [127.0.0.1:3000/preview](http://127.0.0.1:3000/preview)(mac)\n   - select your project from the dropdown\n\n4. run the VR\n   you need:\n   - a VR ready windows computer\n   - a SteamVR compatible headset\n   - SteamVR installed\n   - download the DataDiVR executable\n   - open \"DataDiVR/Colab/Content/data/config.txt and make sure it contains the adress the DataDiVR backend is running at\n   - run the backend\n   - run DataDiVR.exe\n   - enter a username (optional)\n   - choose robot if you want to run in desktop mode (good idea for a dedicated server as it is more performant) OR VR to run in vr mode\n   - the first player is the host so choose \"HOST SESSION\"\n   - the following players choose \"JOIN SESSION\"\n\n## DOCUMENTATION\n\nOnce the flask server is running, go to [127.0.0.1:5000/doku](http://127.0.0.1:5000/doku) / [127.0.0.1:3000/doku](http://127.0.0.1:3000/doku)(mac) to learn more about the DataDiVR framework\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch3\u003e DataDiVR Dataformat\u003c/h3\u003e\u003c/summary\u003e\n    \nThe DataDiVR_WebApp acts as a multiplayer gameserver for one or more VR clients.\nIts purpose is to serve the connected players with big network datasets - as quickly as possible.\nThat is the reason why most properties are stored (and transmitted over the network) as images.\n\nEvery folder in \"static/projects/ contains 3 JSON files (check out the file dataframeTemplate.json for the exact structure)\nas well as 5 subfolders containing textures\n\n- static/projects/projectname/\n   - nodes.json\n   - links.json\n   - pfile.json\n   - pdata.json\n  - layouts\n      - layout01XYZ.bmp\n      - layout02XYZ.bmp\n  - layoutsl\n      - layoutl01XYZ.bmp\n      - layoutl02XYZ.bmp\n  - layoutsRGB\n      - layout01RGB.png\n      - layout02RGB.png\n  - links\n      - links.bmp\n  - linksRGB\n      - linksRGB.png\n\nlayouts + layoutsl -\u003e Node Positions\n\nthis needs a little explaining:\nThink of a texture as a dataset of the following format: [[R,G,B],[R,G,B],[R,G,B],..] \nwhere every [R,G,B] is a pixel.\nThis can be used to store a location (X-\u003eR Y-\u003eG Z-\u003eB) per pixel.\nBecause a .bmp only has 8 bit depth we need a second texture to get a resolution of 65536 per axis. this is where \"layoutsl\" comes into play.\nNOTE: node positions need to be in a 0 - 1 range (!), the conversion works like this:\n\nfloor(x _ 256) -\u003e layouts\nfloor(x _ 65536 % 256) -\u003e layoutsl\n\nThis means, that the available space is not unlimited, so when nodes are closer than 1/65536 units they will snap together.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003eHOW TO MAKE YOUR OWN USER INTERFACE\u003c/h3\u003e\u003c/summary\u003e\nThe User Interfaces for the DataDiVR are realized with html and js and are rendered in the UnrealEngine in-game webbrowser, which is Chromium. Data is passed between the flask server and the html clients in JSON format. The html pages also act as a middleman between the UnrealEngine VR Module and the flask server.\nHere is a series of examples that explain in detail how to create your own user interfaces.\n(you have to run the flask server locally to see those pages)\n\ngo to [127.0.0.1:5000/doku](http://127.0.0.1:5000/doku) / [127.0.0.1:3000/doku](http://127.0.0.1:3000/doku)(mac)\n\n\u003c/details\u003e\n\n\n\u003cbr\u003e\u003cbr\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmenchelab%2Fdatadivr_webapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmenchelab%2Fdatadivr_webapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmenchelab%2Fdatadivr_webapp/lists"}