{"id":13798366,"url":"https://github.com/FXyz/FXyz","last_synced_at":"2025-05-13T05:32:10.753Z","repository":{"id":23325456,"uuid":"26685587","full_name":"FXyz/FXyz","owner":"FXyz","description":"A JavaFX 3D Visualization and Component Library","archived":false,"fork":false,"pushed_at":"2023-10-06T11:40:59.000Z","size":23366,"stargazers_count":410,"open_issues_count":40,"forks_count":63,"subscribers_count":28,"default_branch":"master","last_synced_at":"2025-04-13T07:39:41.024Z","etag":null,"topics":["java","javafx","javafx-3d"],"latest_commit_sha":null,"homepage":"","language":"Mathematica","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/FXyz.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}},"created_at":"2014-11-15T16:25:17.000Z","updated_at":"2025-04-13T02:20:04.000Z","dependencies_parsed_at":"2024-01-15T11:11:02.013Z","dependency_job_id":"a1b370ea-a8e1-4ebd-abf4-347160914ec3","html_url":"https://github.com/FXyz/FXyz","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FXyz%2FFXyz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FXyz%2FFXyz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FXyz%2FFXyz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FXyz%2FFXyz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FXyz","download_url":"https://codeload.github.com/FXyz/FXyz/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253883121,"owners_count":21978611,"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":["java","javafx","javafx-3d"],"created_at":"2024-08-04T00:00:42.615Z","updated_at":"2025-05-13T05:32:05.742Z","avatar_url":"https://github.com/FXyz.png","language":"Mathematica","funding_links":[],"categories":["Community"],"sub_categories":["Libraries"],"readme":"FXyz3D\n======\n\n - FXyz3D Core: \n [ ![Download](http://img.shields.io/maven-central/v/org.fxyz3d/fxyz3d.svg?color=%234DC71F) ](https://search.maven.org/search?q=g:org.fxyz3d%20AND%20a:fxyz3d)\n\n - FXyz3D Client: \n[ ![Download](https://img.shields.io/maven-central/v/org.fxyz3d/fxyz3d-client.svg?color=%234DC71F) ](https://search.maven.org/search?q=g:org.fxyz3d%20AND%20a:fxyz3d-client)\n\n - FXyz3D Importers: \n[ ![Download](https://img.shields.io/maven-central/v/org.fxyz3d/fxyz3d-importers.svg?color=%234DC71F) ](https://search.maven.org/search?q=g:org.fxyz3d%20AND%20a:fxyz3d-importers)\n\nA JavaFX 3D Visualization and Component Library\n\n[![BSD-3 license](https://img.shields.io/badge/license-BSD--3-%230778B9.svg)](https://opensource.org/licenses/BSD-3-Clause)\n\n\n## How to build\n\nThe project is managed by gradle. To build with JDK 17, type:\n\n\t./gradlew assemble\n\nTo deploy it to your local Maven repository, type:\n\n\t./gradlew publishToMavenLocal\n\n## Use of FXyz3D Core\n\nWith FXyz3D there are many different 3D custom shapes. The following sample makes use of `SpringMesh` to create \na 3D mesh of a spring.\n\n### Sample\n\n#### Gradle project\n\nIf you have a gradle project, edit the `build.gradle` file and add:\n\n```\nplugins {\n    id 'application'\n    id 'org.openjfx.javafxplugin' version '0.1.0'\n}\n\napplication {\n    mainClass = 'org.fxyz3d.Sample'\n}\n\nrepositories {\n    mavenCentral()\n}\n\ndependencies {\n    implementation 'org.fxyz3d:fxyz3d:0.6.0'\n}\n\njavafx {\n    modules = [ 'javafx.controls' ]\n}\n```\n\n#### Maven project\n\nOr if you have maven project, edit the `pom.xml` file and add:\n\n```\n\u003cproject xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\"\u003e\n    \u003cmodelVersion\u003e4.0.0\u003c/modelVersion\u003e\n    \u003cgroupId\u003eorg.fxyz3d\u003c/groupId\u003e\n    \u003cartifactId\u003esample\u003c/artifactId\u003e\n    \u003cversion\u003e1.0-SNAPSHOT\u003c/version\u003e\n    \u003cproperties\u003e\n        \u003cproject.build.sourceEncoding\u003eUTF-8\u003c/project.build.sourceEncoding\u003e\n        \u003cmaven.compiler.release\u003e17\u003c/maven.compiler.release\u003e\n        \u003cjavafx.maven.plugin.version\u003e0.0.8\u003c/javafx.maven.plugin.version\u003e\n    \u003c/properties\u003e\n    \u003cdependencies\u003e\n        \u003cdependency\u003e\n            \u003cgroupId\u003eorg.openjfx\u003c/groupId\u003e\n            \u003cartifactId\u003ejavafx-controls\u003c/artifactId\u003e\n            \u003cversion\u003e21\u003c/version\u003e\n        \u003c/dependency\u003e\n        \u003cdependency\u003e\n            \u003cgroupId\u003eorg.fxyz3d\u003c/groupId\u003e\n            \u003cartifactId\u003efxyz3d\u003c/artifactId\u003e\n            \u003cversion\u003e0.6.0\u003c/version\u003e\n        \u003c/dependency\u003e\n    \u003c/dependencies\u003e\n    \u003cbuild\u003e\n        \u003cplugins\u003e\n            \u003cplugin\u003e\n                \u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\n                \u003cartifactId\u003emaven-compiler-plugin\u003c/artifactId\u003e\n                \u003cversion\u003e3.8.1\u003c/version\u003e\n            \u003c/plugin\u003e\n            \u003cplugin\u003e\n                \u003cgroupId\u003eorg.openjfx\u003c/groupId\u003e\n                \u003cartifactId\u003ejavafx-maven-plugin\u003c/artifactId\u003e\n                \u003cversion\u003e${javafx.maven.plugin.version}\u003c/version\u003e\n                \u003cconfiguration\u003e\n                    \u003cmainClass\u003eorg.fxyz3d.Sample\u003c/mainClass\u003e\n                \u003c/configuration\u003e\n            \u003c/plugin\u003e\n        \u003c/plugins\u003e\n    \u003c/build\u003e\n\u003c/project\u003e\n```\n\n#### Application class\n\nThen create a JavaFX Application class `Sample` under the `org.fxyz3d` package: \n\n```java\npackage org.fxyz3d;\n\nimport javafx.application.Application;\nimport javafx.scene.Group;\nimport javafx.scene.PerspectiveCamera;\nimport javafx.scene.Scene;\nimport javafx.scene.SceneAntialiasing;\nimport javafx.scene.paint.Color;\nimport javafx.scene.shape.CullFace;\nimport javafx.stage.Stage;\nimport org.fxyz3d.shapes.primitives.SpringMesh;\nimport org.fxyz3d.utils.CameraTransformer;\n\npublic class Sample extends Application {\n\n    @Override\n    public void start(Stage primaryStage) throws Exception {\n        PerspectiveCamera camera = new PerspectiveCamera(true);\n        camera.setNearClip(0.1);\n        camera.setFarClip(10000.0);\n        camera.setTranslateX(10);\n        camera.setTranslateZ(-100);\n        camera.setFieldOfView(20);\n\n        CameraTransformer cameraTransform = new CameraTransformer();\n        cameraTransform.getChildren().add(camera);\n        cameraTransform.ry.setAngle(-30.0);\n        cameraTransform.rx.setAngle(-15.0);\n\n        SpringMesh spring = new SpringMesh(10, 2, 2, 8 * 2 * Math.PI, 200, 100, 0, 0);\n        spring.setCullFace(CullFace.NONE);\n        spring.setTextureModeVertices3D(1530, p -\u003e p.f);\n\n        Group group = new Group(cameraTransform, spring);\n\n        Scene scene = new Scene(group, 600, 400, true, SceneAntialiasing.BALANCED);\n        scene.setFill(Color.BISQUE);\n        scene.setCamera(camera);\n\n        primaryStage.setScene(scene);\n        primaryStage.setTitle(\"FXyz3D Sample\");\n        primaryStage.show();\n    }\n}\n```\n\n#### Run the sample\n\nIf you have a gradle project:\n\n```\n.gradlew run\n```\nor if you have a maven one:\n```\nmvn javafx:run\n```\n\nand you should see the result:\n\n![](/resources/SpringMesh.png)\n\nNote: For more information on JavaFX, check this [link](https://openjfx.io).\n\n### FXSampler\n\nTo use the FXSampler and visualize all the samples and the different options available, run:\n\n    ./gradlew run\n    \nThere is a hidden side popup menu at the left, from where different samples can be selected. From the right panels different options can be applied dynamically to the 3D shape.\n\n![](/resources/fxsampler.png)\n\n #### Custom image\n\nYou can create a custom image for your platform running:\n\n    ./gradlew clean :FXyz-Samples:jlink  \n\nAnd you can run it with Java 17 on your platform:\n\n    FXyz-Samples/build/FXyz/bin/FXyzSamples\n\nSpecial Thanks go to ControlsFX for providing the FXSampler framework.\nhttp://fxexperience.com/controlsfx/\nOur Sampler uses a heavily modified version, due to being 3D.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFXyz%2FFXyz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FFXyz%2FFXyz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFXyz%2FFXyz/lists"}