{"id":26893323,"url":"https://github.com/stephengold/sport-jolt","last_synced_at":"2026-04-02T17:43:16.025Z","repository":{"id":285291973,"uuid":"953049139","full_name":"stephengold/sport-jolt","owner":"stephengold","description":"A simple 3-D graphics engine for Jolt JNI, based on LWJGL and OpenGL (code has New BSD license) ","archived":false,"fork":false,"pushed_at":"2026-03-27T18:05:08.000Z","size":2001,"stargazers_count":7,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-03-28T02:03:54.675Z","etag":null,"topics":["3d-graphics","engine","glfw","graphics","graphics-engine","java","joml","jvm-library","library","lwjgl3","open-source","opengl","opengl-engine","phong","shaders"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stephengold.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-22T13:02:59.000Z","updated_at":"2026-03-27T18:05:11.000Z","dependencies_parsed_at":"2025-04-14T22:23:40.454Z","dependency_job_id":"443737ef-0d54-4e9a-acee-b314f306d1d3","html_url":"https://github.com/stephengold/sport-jolt","commit_stats":null,"previous_names":["stephengold/sport-jolt"],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/stephengold/sport-jolt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephengold%2Fsport-jolt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephengold%2Fsport-jolt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephengold%2Fsport-jolt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephengold%2Fsport-jolt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stephengold","download_url":"https://codeload.github.com/stephengold/sport-jolt/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephengold%2Fsport-jolt/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31312356,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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-graphics","engine","glfw","graphics","graphics-engine","java","joml","jvm-library","library","lwjgl3","open-source","opengl","opengl-engine","phong","shaders"],"created_at":"2025-03-31T23:46:27.273Z","updated_at":"2026-04-02T17:43:15.994Z","avatar_url":"https://github.com/stephengold.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[The Sport-Jolt Project][project] implements\nan [OpenGL]-based graphics engine\nfor [the Jolt-JNI 3-D physics library][joltjni].\n\nIt contains 2 subprojects:\n\n1. library: the Sport-Jolt graphics engine (a single JVM runtime library,\n   written in [Java])\n2. java-apps: demos, non-automated test software, and other apps (in Java)\n\nComplete source code is provided under\n[a 3-clause BSD license][license].\n\n\n\u003ca name=\"toc\"\u003e\u003c/a\u003e\n\n## Contents of this document\n\n+ [About Sport Jolt](#about)\n+ [Coding a Sport-Jolt application](#add)\n+ [How to build and run Sport Jolt from source](#build)\n+ [Conventions](#conventions)\n\n\n\u003ca name=\"about\"\u003e\u003c/a\u003e\n\n## About Sport Jolt\n\nSport Jolt is a Simple Physics-ORienTed graphics engine written in Java 11.\nIn addition to [Jolt JNI][joltjni],\nit uses [LWJGL], [Assimp], [GLFW], [JOML], [jSnapLoader], and [OpenGL].\nIt has been tested on [Linux], macOS, and Windows.\n\n[Jump to the table of contents](#toc)\n\n\n\u003ca name=\"add\"\u003e\u003c/a\u003e\n\n## How to add Sport Jolt to an existing project\n\nSport Jolt comes pre-built as a single library\nthat can be downloaded from Maven Central or GitHub.\nHowever, the native-library dependencies are intentionally omitted\nfrom Sport Jolt's POM\nso developers can specify *which* Jolt-JNI and LWJGL natives should be used.\n\nFor projects built using [Maven] or [Gradle], it is\n*not* sufficient to specify the\ndependency on the Sport-Jolt Library.\nYou must also explicitly specify the native-library dependencies.\n\n### Gradle-built projects\n\nAdd to the project’s \"build.gradle\" or \"build.gradle.kts\" file:\n\n    repositories {\n        mavenCentral()\n    }\n    dependencies {\n        // JVM library:\n        implementation(\"com.github.stephengold:sport-jolt:1.0.3\")\n\n        // Jolt-JNI native libraries:\n        runtimeOnly(\"com.github.stephengold:jolt-jni-Linux64:3.9.0:DebugSp\")\n          // Jolt-JNI native libraries for other platforms could be added.\n\n        // LWJGL native libraries:\n        runtimeOnly(\"org.lwjgl:lwjgl:3.4.1:natives-linux\")\n        runtimeOnly(\"org.lwjgl:lwjgl-assimp:3.4.1:natives-linux\")\n        runtimeOnly(\"org.lwjgl:lwjgl-glfw:3.4.1:natives-linux\")\n        runtimeOnly(\"org.lwjgl:lwjgl-opengl:3.4.1:natives-linux\")\n          // LWJGL native libraries for other platforms could be added.\n    }\n\nFor some older versions of Gradle,\nit's necessary to replace `implementation` with `compile`.\n\n### Coding a Sport-Jolt application\n\nEvery Sport-Jolt application should extend the `BasePhysicsApp` class,\nwhich provides hooks for:\n\n+ initializing the application,\n+ creating and configuring the application's physics system,\n+ populating the system with bodies and constraints, and\n+ updating the system before each frame is rendered.\n\nThe graphics engine doesn't have a scene graph.\nInstead, it maintains an internal list of renderable objects,\ncalled *geometries*.\nInstantiating a geometry automatically adds it to the list\nand causes it to be rendered.\n\n+ To visualize the world (system) coordinate axes,\n  instantiate one or more `LocalAxisGeometry` objects.\n\nBy default, physics objects are not visualized.\n\n+ To visualize the shape\n  of a rigid body, character, or vehicle,\n  invoke the `visualizeShape()` method on the object.\n+ To visualize the local coordinate axes of a body, character, or vehicle,\n  invoke the `visualizeAxes()` method on it.\n+ To visualize the wheels of a vehicle,\n  invoke the `visualizeWheels()` method on them.\n+ To visualize the bounding box of a body, character, system, or vehicle,\n  instantiate an `AabbGeometry` for the object.\n+ To visualize the center of mass of a body,\n  instantiate a `ComGeometry` for it.\n+ To visualize a `Constraint`,\n  instantiate a `ConstraintGeometry` for each end.\n+ To visualize the faces of a soft body,\n  instantiate a `FacesGeometry` for it.\n+ To visualize the edges of a soft body,\n  instantiate an `EdgesGeometry` for it.\n+ To visualize the pinned vertices of a soft body,\n  instantiate a `PinsGeometry` for it.\n+ To visualize all vertices of a soft body,\n  instantiate a `VerticesGeometry` for it.\n+ To visualize the Cosserat rods of a soft body,\n  invoke the `visualizeRods()` method on it.\n\n[Jump to the table of contents](#toc)\n\n\n\u003ca name=\"build\"\u003e\u003c/a\u003e\n\n## How to build and run Sport Jolt from source\n\n[How to build and run the demos from source](https://stephengold.github.io/jolt-jni-docs/jolt-jni-en/English/demos.html#_how_to_build_and_run_the_demos_from_source)\n\nBuilding demos automatically includes building the library.\nAfter a successful build,\nlibrary artifacts will be found in \"library/build/libs\".\n\nOnce you’ve successfully built the library,\nyou can install it to your local Maven repository:\n+ using Bash or Fish or PowerShell or Zsh: `./gradlew install`\n+ using Windows Command Prompt: `.\\gradlew install`\n\nAt any time, you can restore the project to a pristine state:\n+ using Bash or Fish or PowerShell or Zsh: `./gradlew clean`\n+ using Windows Command Prompt: `.\\gradlew clean`\n\n[Jump to the table of contents](#toc)\n\n\n\u003ca name=\"conventions\"\u003e\u003c/a\u003e\n\n## Conventions\n\nPackage names begin with `com.github.stephengold.sportjolt`.\n\nThe source code and pre-built libraries are compatible with JDK 11.\n\n3-D rotations, polygon windings, and coordinate axes\nare right-handed/counter-clockwise unless otherwise noted.\n\nAngles are quantified in *radians* unless otherwise noted.\n\nThe world coordinate system is assumed to be Z-forward, Y-up.\n\n[Jump to the table of contents](#toc)\n\n\n[adoptium]: https://adoptium.net/releases.html \"Adoptium Project\"\n[assimp]: https://www.assimp.org/ \"The Open Asset Importer Library\"\n[fish]: https://fishshell.com/ \"Fish command-line shell\"\n[git]: https://git-scm.com \"Git\"\n[glfw]: https://www.glfw.org \"GLFW Library\"\n[gradle]: https://gradle.org \"Gradle Project\"\n[java]: https://en.wikipedia.org/wiki/Java_(programming_language) \"Java programming language\"\n[joltjni]: https://github.com/stephengold/jolt-jni \"Jolt JNI Project\"\n[joml]: https://joml-ci.github.io/JOML \"Java OpenGL Math Library\"\n[jsnaploader]: https://github.com/Electrostat-Lab/jSnapLoader \"jSnapLoader Project\"\n[license]: https://github.com/stephengold/sport-jolt/blob/master/LICENSE \"Sport-Jolt license\"\n[linux]: https://www.linux.com/what-is-linux \"Linux\"\n[lwjgl]: https://www.lwjgl.org \"Lightweight Java Game Library\"\n[maven]: https://maven.apache.org \"Maven Project\"\n[opengl]: https://www.khronos.org/opengl \"OpenGL API\"\n[project]: https://github.com/stephengold/sport-jolt \"Sport-Jolt Project\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstephengold%2Fsport-jolt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstephengold%2Fsport-jolt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstephengold%2Fsport-jolt/lists"}