From 412c3fe31481ed38702d8574cb688df7d14b36a6 Mon Sep 17 00:00:00 2001 From: Abe Pazos Date: Tue, 9 Jun 2020 16:33:03 +0200 Subject: [PATCH 1/3] Screen capture demo (#123) * Add screen capture demo * Tweak build.gradle ffmpeg dependency --- build.gradle | 2 +- openrndr-demos/build.gradle | 3 ++ .../src/demo/kotlin/DemoScreenCapture01.kt | 44 +++++++++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 openrndr-demos/src/demo/kotlin/DemoScreenCapture01.kt diff --git a/build.gradle b/build.gradle index a6ed0c32..1ba2316c 100644 --- a/build.gradle +++ b/build.gradle @@ -14,7 +14,7 @@ buildscript { apply plugin: 'org.jetbrains.dokka' project.ext { - openrndrVersion = "0.3.43-rc.5" + openrndrVersion = "0.3.43-rc.11" kotlinVersion = "1.3.72" spekVersion = "2.0.10" libfreenectVersion = "0.5.7-1.5.3" diff --git a/openrndr-demos/build.gradle b/openrndr-demos/build.gradle index 29760956..117847ee 100644 --- a/openrndr-demos/build.gradle +++ b/openrndr-demos/build.gradle @@ -13,9 +13,12 @@ def boofcvVersion = "0.34" dependencies { demoImplementation(project(":orx-mesh-generators")) demoImplementation(project(":orx-camera")) + demoImplementation(project(":orx-parameters")) demoImplementation("org.openrndr:openrndr-core:$openrndrVersion") demoImplementation("org.openrndr:openrndr-extensions:$openrndrVersion") + demoImplementation("org.openrndr:openrndr-ffmpeg:$openrndrVersion") + demoRuntimeOnly("org.openrndr:openrndr-ffmpeg-natives-$openrndrOS:$openrndrVersion") demoRuntimeOnly("org.openrndr:openrndr-gl3:$openrndrVersion") demoRuntimeOnly("org.openrndr:openrndr-gl3-natives-$openrndrOS:$openrndrVersion") demoImplementation(sourceSets.getByName("main").output) diff --git a/openrndr-demos/src/demo/kotlin/DemoScreenCapture01.kt b/openrndr-demos/src/demo/kotlin/DemoScreenCapture01.kt new file mode 100644 index 00000000..f0cb671e --- /dev/null +++ b/openrndr-demos/src/demo/kotlin/DemoScreenCapture01.kt @@ -0,0 +1,44 @@ +import org.openrndr.application +import org.openrndr.color.ColorRGBa +import org.openrndr.draw.DepthTestPass +import org.openrndr.draw.DrawPrimitive +import org.openrndr.draw.isolated +import org.openrndr.draw.shadeStyle +import org.openrndr.extras.meshgenerators.boxMesh +import org.openrndr.ffmpeg.VideoPlayerFFMPEG +import org.openrndr.math.Vector3 + +fun main() { + application { + program { + val cube = boxMesh() + val screen = VideoPlayerFFMPEG.fromScreen( + frameRate = 15.0, + imageWidth = 300, + imageHeight = 300 + ) + + screen.play() + extend { + screen.draw(drawer, true) // update the screen grabber + drawer.isolated { + clear(ColorRGBa.WHITE) + perspective(60.0, width * 1.0 / height, 0.01, 1000.0) + depthWrite = true + depthTestPass = DepthTestPass.LESS_OR_EQUAL + shadeStyle = shadeStyle { + fragmentTransform = "x_fill = texture(p_tex, vec2(1.0-va_texCoord0.x, va_texCoord0.y));" + screen.colorBuffer?.run { + parameter("tex", this) + } + } + rotate(Vector3.UNIT_Z, 90.0) + translate(0.0, 0.0, -120.0) + rotate(Vector3.UNIT_X, seconds * 10) + scale(90.0) + vertexBuffer(cube, DrawPrimitive.TRIANGLES) + } + } + } + } +} From 73585d84fa9c41e2829ef0a528162468267818c0 Mon Sep 17 00:00:00 2001 From: OPENRNDR Actions Date: Tue, 9 Jun 2020 14:41:10 +0000 Subject: [PATCH 2/3] add demos to README.md --- orx-dnk3/README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/orx-dnk3/README.md b/orx-dnk3/README.md index 9b3dabfa..961ecd47 100644 --- a/orx-dnk3/README.md +++ b/orx-dnk3/README.md @@ -54,8 +54,3 @@ Supported Gltf features [source code](src/demo/kotlin/DemoScene03.kt) ![DemoScene03Kt](https://raw.githubusercontent.com/openrndr/orx/media/orx-dnk3/images/DemoScene03Kt.png) - -### DemoSkinning01 -[source code](src/demo/kotlin/DemoSkinning01.kt) - -![DemoSkinning01Kt](https://raw.githubusercontent.com/openrndr/orx/media/orx-dnk3/images/DemoSkinning01Kt.png) From 7a2c754188468def54c1f0aa7c68c76798b2765f Mon Sep 17 00:00:00 2001 From: Boyd <32364059+BoydRotgans@users.noreply.github.com> Date: Wed, 10 Jun 2020 20:53:24 +0200 Subject: [PATCH 3/3] Add PoseNet presets and example (#124) * PoseNet presets and example * Update description --- orx-runway/src/demo/kotlin/PoseNet01.kt | 44 +++++++++++++++++++++++++ orx-runway/src/main/kotlin/Presets.kt | 12 ++++++- 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 orx-runway/src/demo/kotlin/PoseNet01.kt diff --git a/orx-runway/src/demo/kotlin/PoseNet01.kt b/orx-runway/src/demo/kotlin/PoseNet01.kt new file mode 100644 index 00000000..6eca0f64 --- /dev/null +++ b/orx-runway/src/demo/kotlin/PoseNet01.kt @@ -0,0 +1,44 @@ +import org.openrndr.application +import org.openrndr.color.ColorRGBa +import org.openrndr.draw.isolatedWithTarget +import org.openrndr.draw.loadImage +import org.openrndr.draw.renderTarget +import org.openrndr.extra.runway.* + +/** + * This demonstrates the body estimation model of PoseNet + * This example requires a `runway/PoseNet` model active in Runway. + */ +fun main() = application { + configure { + width = 512 + height = 512 + } + + program { + val rt = renderTarget(512, 512) { + colorBuffer() + } + val image = loadImage("demo-data/images/peopleCity01.jpg") + + drawer.isolatedWithTarget(rt) { + drawer.ortho(rt) + drawer.clear(ColorRGBa.BLACK) + drawer.image(image, (rt.width - image.width) / 2.0, (rt.height - image.height) / 2.0) + } + + extend { + val result: PoseNetResponse = runwayQuery("http://localhost:8000/query", PoseNetRequest(rt.colorBuffer(0).toData())) + val poses = result.poses + val scores = result.scores + + drawer.image(image, 0.0, 0.0, 512.0, 512.0) + + poses.forEach { poses -> + poses.forEach { pose -> + drawer.circle(pose[0]*512.0, pose[1]*512.0, 10.0) + } + } + } + } +} \ No newline at end of file diff --git a/orx-runway/src/main/kotlin/Presets.kt b/orx-runway/src/main/kotlin/Presets.kt index 2547ea8d..5c5e96aa 100644 --- a/orx-runway/src/main/kotlin/Presets.kt +++ b/orx-runway/src/main/kotlin/Presets.kt @@ -65,4 +65,14 @@ class DeOldifyResponse(val image: String) // -- DenseCap class DenseCapRequest(val image: String, @SerializedName("max_detections") val maxDetections: Int = 10) -class DenseCapResponse(val bboxes: List>, val classes: List, val scores: List) \ No newline at end of file +class DenseCapResponse(val bboxes: List>, val classes: List, val scores: List) + +// -- PoseNet +class PoseNetRequest( + val image: String, + @SerializedName("estimationType") val estimationType: String = "Multi Pose", + @SerializedName("maxPoseDetections") val maxPoseDetections: Int = 5, + @SerializedName("scoreThreshold") val scoreThreshold: Double = 0.25 + ) +class PoseNetResponse(val poses: List>>, val scores: List) +