{"id":27195874,"url":"https://github.com/moisestech/united-internet-nations","last_synced_at":"2025-04-09T19:48:04.468Z","repository":{"id":68218343,"uuid":"20576613","full_name":"moisestech/United-Internet-Nations","owner":"moisestech","description":"United Internet Nations in Threejs","archived":false,"fork":false,"pushed_at":"2014-06-10T23:54:01.000Z","size":11628,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-13T09:21:03.048Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moisestech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-06-06T20:08:38.000Z","updated_at":"2020-06-25T17:36:25.000Z","dependencies_parsed_at":"2023-02-21T03:01:26.776Z","dependency_job_id":null,"html_url":"https://github.com/moisestech/United-Internet-Nations","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/moisestech%2FUnited-Internet-Nations","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moisestech%2FUnited-Internet-Nations/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moisestech%2FUnited-Internet-Nations/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moisestech%2FUnited-Internet-Nations/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moisestech","download_url":"https://codeload.github.com/moisestech/United-Internet-Nations/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248103034,"owners_count":21048231,"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":"2025-04-09T19:48:03.955Z","updated_at":"2025-04-09T19:48:04.455Z","avatar_url":"https://github.com/moisestech.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"FPS0\n====\n\nA ThreeJS/physics experiment, with first person controls and minimal collision detection.\n\n\nThe goal of this project was to explore the options for a simple game with first person controls that runs completely in a browser. To achieve this I wanted to be able to\n\n  - load a 'level', i.e. a basic 3D model (in this case with Blender)\n  - create 'WASD' first person type of controls\n  - apply simple physics with collision detection to walk around and\n    interact with objects\n  - add dynamic objects on runtime\n\nLuckily, all of the ground work was already done by someone else. :-)\n\nBasically this demo merges the [Blender scene loader](http://mrdoob.github.com/three.js/examples/webgl_loader_scene_blender.html) of [mrdoobs](http://mrdoob.com/) [ThreeJS library](http://mrdoob.github.com/three.js/) and the [CannonJS](https://github.com/schteppe/cannon.js) [FPS example](https://github.com/schteppe/cannon.js/blob/master/examples/threejs_fps.html) by [schteppe](https://github.com/schteppe).\n\n\nI added the idea that the imported Blender geometry gets turned into a static model in the physics engine by finding the cubes and adding invisible physical collision boxes to their position.\n\nThis worked surprisingly well and gives some sort of minimal FP(S) - completely running in the browser.\nThe imported Blender model is turned into a static model by adding the boxes as static physic objects. This way this you can 'walk' on the objects of the Blender model (the grey objects in the screenshot).\n\n![Screenshot](http://dirkk0.github.com/fps0/images/scene.png)\n\nImportant: to try it locally you still must run it from a web server (for example 'python -m SimpleHTTPServer') due to cross-origin security issues.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoisestech%2Funited-internet-nations","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoisestech%2Funited-internet-nations","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoisestech%2Funited-internet-nations/lists"}