{"id":17250079,"url":"https://github.com/stephengold/skycontrol","last_synced_at":"2025-07-14T19:38:13.466Z","repository":{"id":40581583,"uuid":"287554151","full_name":"stephengold/SkyControl","owner":"stephengold","description":"A sky simulation library for jMonkeyEngine (code has New BSD license)","archived":false,"fork":false,"pushed_at":"2025-03-27T07:50:20.000Z","size":9932,"stargazers_count":16,"open_issues_count":0,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-27T08:37:48.651Z","etag":null,"topics":["clouds","java","jme3","jmonkeyengine","jmonkeyengine3","jvm-library","library","moon","open-source","sky","stars","sun","sunset"],"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}},"created_at":"2020-08-14T14:38:56.000Z","updated_at":"2025-03-27T07:50:24.000Z","dependencies_parsed_at":"2023-12-28T09:26:10.813Z","dependency_job_id":"44c67053-9b45-4274-baa9-159078f806fb","html_url":"https://github.com/stephengold/SkyControl","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephengold%2FSkyControl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephengold%2FSkyControl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephengold%2FSkyControl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephengold%2FSkyControl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stephengold","download_url":"https://codeload.github.com/stephengold/SkyControl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248826624,"owners_count":21167724,"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":["clouds","java","jme3","jmonkeyengine","jmonkeyengine3","jvm-library","library","moon","open-source","sky","stars","sun","sunset"],"created_at":"2024-10-15T06:46:08.421Z","updated_at":"2025-04-14T05:31:45.519Z","avatar_url":"https://github.com/stephengold.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg height=\"150\" src=\"https://i.imgur.com/HfTbw30.png\" alt=\"SkyControl logo\"\u003e\n\n[The SkyControl Project][skycontrol] provides a sky-simulation library for\n[the jMonkeyEngine (JME) game engine][jme].\n\nIt contains 3 subprojects:\n\n1. SkyLibrary: the SkyControl runtime library and its automated tests\n2. SkyExamples: example applications\n3. SkyAssets: generate textures included in the library\n\nComplete source code (in Java) 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+ [Important features](#features)\n+ [How to add SkyControl to an existing project](#add)\n+ [How to build SkyControl from source](#build)\n+ [Downloads](#downloads)\n+ [Conventions](#conventions)\n+ [External links](#links)\n+ [History](#history)\n+ [Acknowledgments](#acks)\n\n\n\u003ca name=\"features\"\u003e\u003c/a\u003e\n\n## Important features\n\n+ sun, moon, stars, horizon haze, and up to 6 cloud layers\n+ compatible with static backgrounds such as cube maps\n+ high resolution textures are provided -- or customize with your own textures\n+ compatible with effects such as `SimpleWater`, shadows, bloom, and cartoon edges\n+ continuous and reversible motion and blending of cloud layers\n+ option to foreshorten clouds near the horizon\n+ continuous and reversible motion of sun, moon, and stars based on time of day\n+ updater to synchronize lighting and shadows with sun, moon, and clouds\n+ continuous scaling of sun, moon, and clouds\n+ option for continuously variable phase of the moon\n+ demonstration apps and online tutorial provided\n+ complete source code provided under FreeBSD license\n\n[Jump to the table of contents](#toc)\n\n\n\u003ca name=\"add\"\u003e\u003c/a\u003e\n\n## How to add SkyControl to an existing project\n\nAdding SkyControl to an existing [jMonkeyEngine][jme] project should be\na simple 6-step process:\n\n 1. Add SkyControl and its dependencies to the classpath.\n 2. Disable any existing sky which might interfere with SkyControl.\n 3. Add a `SkyControl` instance to some node in the scene graph.\n 4. Configure the `SkyControl` instance.\n 5. Enable the `SkyControl` instance.\n 6. Test and tune as necessary.\n\nThe SkyControl Library depends on\nthe standard \"jme3-effects\" library from jMonkeyEngine and\n[the Heart Library][heart],\nwhich in turn depends on\nthe standard \"jme3-core\" library.\n\nFor projects built using [Maven] or [Gradle], it is sufficient to add a\ndependency on the SkyControl Library.\nThe build tool should automatically resolve the remaining 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        implementation(\"com.github.stephengold:SkyControl:1.1.0\")\n    }\n\nFor some older versions of Gradle,\nit's necessary to replace `implementation` with `compile`.\n\n### Maven-built projects\n\nAdd to the project’s \"pom.xml\" file:\n\n    \u003crepositories\u003e\n      \u003crepository\u003e\n        \u003cid\u003emvnrepository\u003c/id\u003e\n        \u003curl\u003ehttps://repo1.maven.org/maven2/\u003c/url\u003e\n      \u003c/repository\u003e\n    \u003c/repositories\u003e\n\n    \u003cdependency\u003e\n      \u003cgroupId\u003ecom.github.stephengold\u003c/groupId\u003e\n      \u003cartifactId\u003eSkyControl\u003c/artifactId\u003e\n      \u003cversion\u003e1.1.0\u003c/version\u003e\n    \u003c/dependency\u003e\n\n### Ant-built projects\n\nFor projects built using [Ant], download the SkyControl and [Heart]\nlibraries from GitHub:\n\n+ https://github.com/stephengold/SkyControl/releases/tag/latest\n+ https://github.com/stephengold/Heart/releases/tag/8.3.2\n\nYou'll definitely want both class jars\nand probably the \"-sources\" and \"-javadoc\" jars as well.\n\nOpen the project's properties in the IDE (JME SDK or NetBeans):\n\n1. Right-click on the project (not its assets) in the \"Projects\" window.\n2. Select \"Properties\" to open the \"Project Properties\" dialog.\n3. Under \"Categories:\" select \"Libraries\".\n4. Click on the \"Compile\" tab.\n5. Add the [Heart] class jar:\n  + Click on the \"Add JAR/Folder\" button.\n  + Navigate to the download folder.\n  + Select the \"Heart-8.3.2.jar\" file.\n  + Click on the \"Open\" button.\n6. (optional) Add jars for javadoc and sources:\n  + Click on the \"Edit\" button.\n  + Click on the \"Browse...\" button to the right of \"Javadoc:\"\n  + Select the \"Heart-8.3.2-javadoc.jar\" file.\n  + Click on the \"Open\" button.\n  + Click on the \"Browse...\" button to the right of \"Sources:\"\n  + Select the \"Heart-8.3.2-sources.jar\" file.\n  + Click on the \"Open\" button again.\n  + Click on the \"OK\" button to close the \"Edit Jar Reference\" dialog.\n7. Similarly, add the SkyControl jar(s).\n8. Click on the \"OK\" button to exit the \"Project Properties\" dialog.\n\n[Jump to the table of contents](#toc)\n\n\n\u003ca name=\"build\"\u003e\u003c/a\u003e\n\n## How to build SkyControl from source\n\n1. Install a [Java Development Kit (JDK)][adoptium],\n   if you don't already have one.\n2. Point the `JAVA_HOME` environment variable to your JDK installation:\n   (In other words, set it to the path of a directory/folder\n   containing a \"bin\" that contains a Java executable.\n   That path might look something like\n   \"C:\\Program Files\\Eclipse Adoptium\\jdk-17.0.3.7-hotspot\"\n   or \"/usr/lib/jvm/java-17-openjdk-amd64/\" or\n   \"/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home\" .)\n  + using Bash or Zsh: `export JAVA_HOME=\"` *path to installation* `\"`\n  + using [Fish]: `set -g JAVA_HOME \"` *path to installation* `\"`\n  + using Windows Command Prompt: `set JAVA_HOME=\"` *path to installation* `\"`\n  + using PowerShell: `$env:JAVA_HOME = '` *path to installation* `'`\n3. Download and extract the SkyControl source code from GitHub:\n  + using [Git]:\n    + `git clone https://github.com/stephengold/SkyControl.git`\n    + `cd SkyControl`\n    + `git checkout -b latest 1.1.0`\n  + using a web browser:\n    + browse to [the latest release][latest]\n    + follow the \"Source code (zip)\" link\n    + save the ZIP file\n    + extract the contents of the saved ZIP file\n    + `cd` to the extracted directory/folder\n4. Run the [Gradle] wrapper:\n  + using Bash or Fish or PowerShell or Zsh: `./gradlew build`\n  + using Windows Command Prompt: `.\\gradlew build`\n\nAfter a successful build,\nMaven artifacts will be found in \"SkyLibrary/build/libs\".\n\nYou can install the artifacts to your local Maven repository:\n+ using Bash or Fish or PowerShell or Zsh: `./gradlew install`\n+ using Windows Command Prompt: `.\\gradlew install`\n\nYou 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=\"downloads\"\u003e\u003c/a\u003e\n\n## Downloads\n\nNewer releases (since v0.9.27) can be downloaded from\n[GitHub](https://github.com/stephengold/SkyControl/releases).\n\nOlder releases (v0.9.0 through v0.9.26) can be downloaded from\n[the Jme3-utilities Project](https://github.com/stephengold/jme3-utilities/releases).\n\nNewer Maven artifacts (since v0.9.30) are available from\n[MavenCentral](https://central.sonatype.com/artifact/com.github.stephengold/SkyControl/1.1.0/versions).\n\nOld Maven artifacts (v0.9.25 through v0.9.29) are available from JCenter.\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 `jme3utilities.sky`\n\nBoth the source code and the pre-built libraries are compatible with JDK 8.\n\nIn the default world coordinate system:\n\n+ the `+X` axis points toward the northern horizon\n+ the `+Y` axis points up (toward the zenith)\n+ the `+Z` axis points toward the eastern horizon\n\nHowever, these axis assignments can be overridden using `SunAndStars.setAxes()`.\n\n[Jump to the table of contents](#toc)\n\n\n\u003ca name=\"links\"\u003e\u003c/a\u003e\n\n## External links\n\n+ November 2013 [SkyControl demo video](https://www.youtube.com/watch?v=FsJRM6tr3oQ)\n+ January 2014 [SkyControl update video](https://www.youtube.com/watch?v=gE4wxgBIkaw)\n+ A [driving simulator](https://github.com/stephengold/jme-vehicles)\n  that uses SkyControl.\n+ A [flight simulation game](https://github.com/ZoltanTheHun/SkyHussars)\n  that uses SkyControl.\n\n[Jump to the table of contents](#toc)\n\n\n\u003ca name=\"history\"\u003e\u003c/a\u003e\n\n## History\n\nThe evolution of this project is chronicled in\n[its release log][log].\n\nSkyControl has its roots in SkyDome by Cris (aka \"t0neg0d\").\n\nFrom November 2013 to September 2015,\nSkyControl was part of the Jme3-utilities Project at\n[Google Code](https://code.google.com/archive/).\n\nFrom September 2015 to August 2020,\nSkyControl was part of the Jme3-utilities Project at\n[GitHub](https://github.com/stephengold/jme3-utilities).\n\nSince August 2020, SkyControl has been a separate project, hosted at\n[GitHub][skycontrol].\n\nOld (2014) versions of SkyControl can still be found in\n[the jMonkeyEngine-Contributions Project](https://github.com/jMonkeyEngine-Contributions/SkyControl).\n\n[Jump to the table of contents](#toc)\n\n\n\u003ca name=\"acks\"\u003e\u003c/a\u003e\n\n## Acknowledgments\n\nLike most projects, the SkyControl Project builds on the work of many who\nhave gone before.  I therefore acknowledge the following\nartists and software developers:\n\n+ Cris (aka \"t0neg0d\") for creating SkyDome (which provided both an inspiration\n  and a starting point for SkyControl) and also for encouraging me to run with\n  it ... thank you yet again!\n+ Paul Speed, for helpful insights which got me unstuck during debugging\n+ Rémy Bouquet (aka \"nehon\") for many helpful insights\n+ Alexandr Brui (aka \"javasabr\") for a solving a problem with the\n  de-serialization of `SkyControl`\n+ the brave souls who volunteered to be alpha testers for SkyControl, including:\n    + Davis Rollman\n    + \"Lockhead\"\n    + Jonatan Dahl\n    + Mindaugas (aka \"eraslt\")\n    + Thomas Kluge\n    + \"pixelapp\"\n    + Roger (aka \"stenb\")\n+ the beta testers for SkyControl, including:\n    + \"madjack\"\n    + Benjamin D.\n    + \"Fissll\"\n    + Davis Rollman\n+ users who found and reported bugs in later versions:\n    + Rami Manaf\n    + Anton Starastsin (aka \"Antonystar\")\n+ the creators of (and contributors to) the following software:\n    + Adobe Photoshop Elements\n    + the Ant build tool\n    + the [Blender] 3-D animation suite\n    + the [Checkstyle] tool\n    + the [FindBugs] source-code analyzer\n    + the [Firefox] and [Chrome] web browsers\n    + Gimp, the GNU Image Manipulation Program\n    + the [Git] revision-control system and GitK commit viewer\n    + the [GitKraken] client\n    + the [Gradle] build tool\n    + Guava core libraries for Java\n    + the [IntelliJ IDEA][idea] and [NetBeans] integrated development environments\n    + the [Java] compiler, standard doclet, and runtime environment\n    + the JCommander Java framework\n    + [jMonkeyEngine][jme] and the jME3 Software Development Kit\n    + the [Linux Mint][mint] operating system\n    + [LWJGL], the Lightweight Java Game Library\n    + the [Markdown] document-conversion tool\n    + the [Meld] visual merge tool\n    + Microsoft Windows\n    + the [Nifty] graphical user-interface library\n    + [Open Broadcaster Software Studio][obs]\n    + the PMD source-code analyzer\n    + Alex Peterson's Spacescape tool\n    + the Subversion revision-control systems\n    + the [WinMerge] differencing and merging tool\n\nMany of SkyControl's assets were based on the works of others who licensed their\nworks under liberal terms or contributed them to the public domain.\nFor this I thank:\n\n+ Cris (aka \"t0neg0d\")\n+ Jacques Descloitres, MODIS Rapid Response Team, NASA/GSFC\n+ Tom Ruen\n\nI am grateful to [GitHub], [Sonatype], [JFrog], [YouTube], and [Imgur]\nfor providing free hosting for this project\nand many other open-source projects.\n\nI'm also grateful to Quinn (for lending me one of her microphones) and finally\nmy dear Holly, for keeping me sane.\n\nIf I've misattributed anything or left anyone out, please let me know, so I can\ncorrect the situation: sgold@sonic.net\n\n[Jump to the table of contents](#toc)\n\n\n[adoptium]: https://adoptium.net/releases.html \"Adoptium Project\"\n[ant]: https://ant.apache.org \"Apache Ant Project\"\n[blender]: https://docs.blender.org \"Blender Project\"\n[bsd3]: https://opensource.org/licenses/BSD-3-Clause \"3-Clause BSD License\"\n[checkstyle]: https://checkstyle.org \"Checkstyle\"\n[chrome]: https://www.google.com/chrome \"Chrome\"\n[elements]: https://www.adobe.com/products/photoshop-elements.html \"Photoshop Elements\"\n[findbugs]: http://findbugs.sourceforge.net \"FindBugs Project\"\n[firefox]: https://www.mozilla.org/en-US/firefox \"Firefox\"\n[fish]: https://fishshell.com/ \"Fish command-line shell\"\n[git]: https://git-scm.com \"Git\"\n[github]: https://github.com \"GitHub\"\n[gitkraken]: https://www.gitkraken.com \"GitKraken client\"\n[gradle]: https://gradle.org \"Gradle Project\"\n[heart]: https://github.com/stephengold/Heart \"Heart Project\"\n[idea]: https://www.jetbrains.com/idea/ \"IntelliJ IDEA\"\n[imgur]: https://imgur.com/ \"Imgur\"\n[java]: https://en.wikipedia.org/wiki/Java_(programming_language) \"Java programming language\"\n[jfrog]: https://www.jfrog.com \"JFrog\"\n[jme]: https://jmonkeyengine.org \"jMonkeyEngine Project\"\n[latest]: https://github.com/stephengold/SkyControl/releases/latest \"latest release\"\n[license]: https://github.com/stephengold/SkyControl/blob/master/LICENSE \"SkyControl license\"\n[log]: https://github.com/stephengold/SkyControl/blob/master/SkyLibrary/release-notes.md \"release log\"\n[lwjgl]: https://www.lwjgl.org \"Lightweight Java Game Library\"\n[markdown]: https://daringfireball.net/projects/markdown \"Markdown Project\"\n[maven]: https://maven.apache.org \"Maven Project\"\n[meld]: https://meldmerge.org \"Meld merge tool\"\n[mint]: https://linuxmint.com \"Linux Mint Project\"\n[netbeans]: https://netbeans.org \"NetBeans Project\"\n[nifty]: http://nifty-gui.github.io/nifty-gui \"Nifty GUI Project\"\n[obs]: https://obsproject.com \"Open Broadcaster Software Project\"\n[skycontrol]: https://github.com/stephengold/SkyControl \"SkyControl Project\"\n[sonatype]: https://www.sonatype.com \"Sonatype\"\n[utilities]: https://github.com/stephengold/jme3-utilities \"Jme3-utilities Project\"\n[winmerge]: https://winmerge.org \"WinMerge Project\"\n[youtube]: https://www.youtube.com/ \"YouTube\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstephengold%2Fskycontrol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstephengold%2Fskycontrol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstephengold%2Fskycontrol/lists"}