[orx-chataigne] Add Chataigne support (#130)

This commit is contained in:
Boyd
2020-06-30 13:42:35 +02:00
committed by GitHub
parent 847f05cc7b
commit b0a0c7d674
6 changed files with 151 additions and 1 deletions

41
orx-chataigne/README.md Normal file
View File

@@ -0,0 +1,41 @@
# orx-chataigne
With `orx-chataigne` you can share [Chataigne](http://benjamin.kuperberg.fr/chataigne/en) variables within a OPENRNDR project.
The current implementation makes use of the OSC protocol and supports `Double` and `ColorRGBa`.
## Usage
Defining the variables
```kotlin
class SceneVariables : ChataigneOSC(OSC(portIn = 9005, portOut = 12001)) {
val myRadius: Double by DoubleChannel("/myRadius")
val myOpacity: Double by DoubleChannel("/myOpacity")
val myColor: ColorRGBa by ColorChannel("/myColor")
}
```
Initiate
```kotlin
val animation = SceneVariables()
```
Update time
```kotlin
animation.update(seconds)
```
Use the variables
```kotlin
animation.myRadius
animation.myOpacity
animation.myColor
```
## Example project
Find the Chataigne example project in `/resources/timeline_example_chataigne.noisette` which works together with demo project `/src/demo/kotlin/ChataigneOSCDemo.kt`

View File

@@ -0,0 +1,25 @@
sourceSets {
demo {
java {
srcDirs = ["src/demo/kotlin"]
compileClasspath += main.getCompileClasspath()
runtimeClasspath += main.getRuntimeClasspath()
}
}
}
dependencies {
api project(":orx-osc")
implementation "com.google.code.gson:gson:$gsonVersion"
demoImplementation("org.openrndr:openrndr-core:$openrndrVersion")
demoRuntimeOnly("org.openrndr:openrndr-gl3:$openrndrVersion")
demoRuntimeOnly("org.openrndr:openrndr-gl3-natives-$openrndrOS:$openrndrVersion")
demoRuntimeOnly("org.openrndr:openrndr-extensions:$openrndrVersion")
demoImplementation("org.openrndr:openrndr-ffmpeg:$openrndrVersion")
demoRuntimeOnly("org.openrndr:openrndr-ffmpeg-natives-$openrndrOS:$openrndrVersion")
demoImplementation(project(":orx-fx"))
// demoImplementation(project(":orx-osc"))
demoImplementation(sourceSets.getByName("main").output)
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,29 @@
import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.extra.osc.OSC
fun main() = application {
configure {
width = 500
height = 500
}
/* Find the Chataigne example project in /resources */
class SceneVariables : ChataigneOSC(OSC(portIn = 9005, portOut = 12001)) {
val myRadius: Double by DoubleChannel("/myRadius")
val myOpacity: Double by DoubleChannel("/myOpacity")
val myColor: ColorRGBa by ColorChannel("/myColor")
}
program {
val animation = SceneVariables()
extend {
animation.update(seconds)
drawer.fill = animation.myColor.opacify(animation.myOpacity)
drawer.circle(width/2.0, height/2.0, animation.myRadius * 250)
}
}
}

View File

@@ -0,0 +1,53 @@
import org.openrndr.color.ColorRGBa
import org.openrndr.extra.osc.OSC
import java.awt.Color
import kotlin.reflect.KProperty
open class ChataigneOSC(
val osc: OSC
) {
inner class DoubleChannel(key:String) {
private var currentDouble = 0.0
init {
osc.listen(key) {
currentDouble = (it[0] as Float).toDouble()
}
}
operator fun getValue(thisRef: Any?, property: KProperty<*>):Double {
return currentDouble
}
operator fun setValue(thisRef: Any?, property: KProperty<*>, value: Double) {
print("$value")
}
}
inner class ColorChannel(key:String) {
private var currentColor = ColorRGBa.BLACK
init {
println(key)
osc.listen(key) {
val c = it[0] as Color
currentColor = ColorRGBa(c.red/255.0, c.green/255.0, c.blue/255.0, c.alpha/255.0)
}
}
operator fun getValue(thisRef: Any?, property: KProperty<*>):ColorRGBa {
return currentColor
}
operator fun setValue(thisRef: Any?, property: KProperty<*>, value: Double) {
print("$value")
}
}
fun update(seconds: Double) {
osc.send("/setTime", seconds.toFloat())
}
init {
println("setup Chataigne with OSC ${osc.address} in:${osc.portIn} out:${osc.portOut}")
}
}

View File

@@ -45,5 +45,6 @@ include 'openrndr-demos',
'orx-kinect-v1-natives-linux-x64',
'orx-kinect-v1-natives-macos',
'orx-kinect-v1-natives-windows',
'orx-kinect-v1-demo'
'orx-kinect-v1-demo',
'orx-chataigne'