Product Promotion
0x5a.live
for different kinds of informations and explorations.
GitHub - markaren/three.kt: Three.js port for the JVM (desktop)
Three.js port for the JVM (desktop). Contribute to markaren/three.kt development by creating an account on GitHub.
Visit SiteGitHub - markaren/three.kt: Three.js port for the JVM (desktop)
Three.js port for the JVM (desktop). Contribute to markaren/three.kt development by creating an account on GitHub.
Powered by 0x5a.live ๐
three.kt (Work in progress)
Kotlin/JVM port of the popular three.js 3D library (r106).
Be warned, while the basics works, such as:
- Primitives, Points and TubeGeometry
- All materials and lights
- OrbitControls
- 2D textures
- Raycasting against Mesh
- OBJ, MTL and STL loaders
- Other stuff like mirror, sky and water shaders
a lot of features are still missing and the API can change rapidly.
Right now, this is mostly interesting for developers that want to contribute.
API (subject to changes)
Kotlin
Window(antialias = 4).use { window ->
val scene = Scene().apply {
setBackground(Color.aliceblue)
}
val camera = PerspectiveCamera(75, window.aspect, 0.1, 1000).apply {
position.z = 5f
}
val renderer = GLRenderer(window.size)
val box = Mesh(BoxGeometry(1f), MeshBasicMaterial().apply {
color.set(0x00ff00)
})
scene.add(box)
val clock = Clock()
val controls = OrbitControls(camera, window)
window.animate {
val dt = clock.getDelta()
box.rotation.x += 1f * dt
box.rotation.y += 1f * dt
renderer.render(scene, camera)
}
}
Java
public class JavaExample {
public static void main(String[] args) {
try (Window window = new Window()) {
Scene scene = new Scene();
PerspectiveCamera camera = new PerspectiveCamera();
camera.getPosition().z = 5;
GLRenderer renderer = new GLRenderer(window.getSize());
BoxBufferGeometry boxBufferGeometry = new BoxBufferGeometry();
MeshPhongMaterial boxMaterial = new MeshPhongMaterial();
boxMaterial.getColor().set(Color.getRoyalblue());
Mesh box = new Mesh(boxBufferGeometry, boxMaterial);
scene.add(box);
MeshBasicMaterial wireframeMaterial = new MeshBasicMaterial();
wireframeMaterial.getColor().set(0x000000);
wireframeMaterial.setWireframe(true);
Mesh wireframe = new Mesh(box.getGeometry().clone(), wireframeMaterial);
scene.add(wireframe);
AmbientLight light = new AmbientLight();
scene.add(light);
OrbitControls orbitControls = new OrbitControls(camera, window);
window.animate(() -> {
renderer.render(scene, camera);
});
}
}
}
Artifacts are available through Maven central:
repositories {
mavenCentral()
}
dependencies {
def version = "..."
implementation "info.laht.threekt:core:$version"
}
Screenshots
Looking for the Kotlin/JS wrapper project?
It has been renamed and moved to here.
Kotlin Resources
are all listed below.
GitHub - BenWoodworth/knbt: Kotlin NBT library for kotlinx.serialization
resource
~/github.com
resource
GitHub - brianmadden/krawler: A web crawling framework written in Kotlin
resource
~/github.com
resource
GitHub - OxygenCobalt/Auxio: A simple, rational music player for android
resource
~/github.com
resource
GitHub - eriksencosta/math-percentage: Percentage calculations made easy
resource
~/github.com
resource
GitHub - ctripcorp/mmkv-kotlin: A Kotlin Multiplatform porting for MMKV.
resource
~/github.com
resource
GitHub - Litote/kmongo: [deprecated] KMongo - a Kotlin toolkit for Mongo
resource
~/github.com
resource
Test-Driven Development Tutorial for Android: Getting Started
resource
~/www.raywenderlich.com
resource
GitHub - jacinpoz/rxaerospike: RxJava2 wrapper for aerospike-client-java
resource
~/github.com
resource
GitHub - pedrovgs/KotlinSnapshot: Snapshot Testing framework for Kotlin.
resource
~/github.com
resource
GitHub - hankdavidson/ktime: kotlin extensions to the java8 time library
resource
~/github.com
resource
GitHub - ziggy42/Blum: A simple android Twitter client written in Kotlin
resource
~/github.com
resource
Made with โค๏ธ
to provide different kinds of informations and resources.