add demos to README.md

This commit is contained in:
OPENRNDR Actions
2022-09-16 07:16:07 +00:00
parent 38f118162a
commit 073fcad54b

View File

@@ -1,58 +1,64 @@
# orx-camera # orx-camera
3D camera controllable via mouse and keyboard. 3D camera controllable via mouse and keyboard.
## Usage ## Usage
```kotlin ```kotlin
import org.openrndr.application import org.openrndr.application
import org.openrndr.color.ColorRGBa import org.openrndr.color.ColorRGBa
import org.openrndr.draw.DrawPrimitive import org.openrndr.draw.DrawPrimitive
import org.openrndr.extra.camera.AxisHelper import org.openrndr.extra.camera.AxisHelper
import org.openrndr.extra.camera.GridHelper import org.openrndr.extra.camera.GridHelper
import org.openrndr.extra.camera.OrbitalCamera import org.openrndr.extra.camera.OrbitalCamera
import org.openrndr.extra.camera.OrbitalControls import org.openrndr.extra.camera.OrbitalControls
import org.openrndr.extra.meshgenerators.boxMesh import org.openrndr.extra.meshgenerators.boxMesh
import org.openrndr.extra.meshgenerators.sphereMesh import org.openrndr.extra.meshgenerators.sphereMesh
import org.openrndr.math.Vector3 import org.openrndr.math.Vector3
fun main() = application { fun main() = application {
program { program {
val camera = OrbitalCamera( val camera = OrbitalCamera(
Vector3.UNIT_Z * 90.0, Vector3.ZERO, 90.0, 0.1, 5000.0 Vector3.UNIT_Z * 90.0, Vector3.ZERO, 90.0, 0.1, 5000.0
) )
val controls = OrbitalControls(camera, keySpeed = 10.0) val controls = OrbitalControls(camera, keySpeed = 10.0)
val sphere = sphereMesh(radius = 25.0) val sphere = sphereMesh(radius = 25.0)
val cube = boxMesh(20.0, 20.0, 5.0, 5, 5, 2) val cube = boxMesh(20.0, 20.0, 5.0, 5, 5, 2)
extend(camera) extend(camera)
extend(AxisHelper()) // shows XYZ axes as RGB lines extend(AxisHelper()) // shows XYZ axes as RGB lines
extend(GridHelper(100)) // debug ground plane extend(GridHelper(100)) // debug ground plane
extend(controls) // adds both mouse and keyboard bindings extend(controls) // adds both mouse and keyboard bindings
extend { extend {
drawer.vertexBuffer(sphere, DrawPrimitive.LINE_LOOP) drawer.vertexBuffer(sphere, DrawPrimitive.LINE_LOOP)
drawer.vertexBuffer(cube, DrawPrimitive.LINE_LOOP) drawer.vertexBuffer(cube, DrawPrimitive.LINE_LOOP)
drawer.stroke = ColorRGBa.WHITE drawer.stroke = ColorRGBa.WHITE
drawer.fill = null drawer.fill = null
repeat(10) { repeat(10) {
drawer.translate(0.0, 0.0, 10.0) drawer.translate(0.0, 0.0, 10.0)
// 2D primitives are not optimized for 3D and can // 2D primitives are not optimized for 3D and can
// occlude each other // occlude each other
drawer.circle(0.0, 0.0, 50.0) drawer.circle(0.0, 0.0, 50.0)
} }
} }
} }
} }
``` ```
### Keybindings ### Keybindings
* `w` - move forwards (+z) * `w` - move forwards (+z)
* `s` - move backwards (-z) * `s` - move backwards (-z)
* `Left` or `a` - strafe left (-x) * `Left` or `a` - strafe left (-x)
* `Right` or `d` - strafe right (+x) * `Right` or `d` - strafe right (+x)
* `Up` or `e` - move up (+y) * `Up` or `e` - move up (+y)
* `Down` or `q` - move up (-y) * `Down` or `q` - move up (-y)
* `Page Up` - zoom in * `Page Up` - zoom in
* `Page Down` - zoom out * `Page Down` - zoom out
<!-- __demos__ -->
## Demos
### DemoCamera2D
[source code](src/demo/kotlin/DemoCamera2D.kt)
![DemoCamera2DKt](https://raw.githubusercontent.com/openrndr/orx/media/orx-camera/images/DemoCamera2DKt.png)