Code Monkey home page Code Monkey logo

ramdancetoolkit's Introduction

RAMDanceToolkit

RAM Dance Toolkit is a C++ creative coding toolkit to create environments for dancers. This toolkit contains a GUI and functions to access, recognize, and process motion data to support creation of various environmental conditions (called “scene”) and gives realtime feedbacks to dancers using code in an easy way. Toolkit uses openFrameworks, a software development toolkit for artists, which means users can use functions from both RAM Dance Toolkit and openFrameworks. RAM Dance Toolkit will also be published as an application for Windows and Mac. As an application, users also can choreograph or rehearse with previously programmed scenes.

For more details, please see RAMDanceToolkit wiki

詳しい情報はRAMDanceToolkit wikiを参照してください。

Licenses

RAMDanceToolkit by YCAM InterLab, Yoshito Onishi, Satoru Higa, Motoi Shimizu, and Kyle McDonald is licensed under the Apache License, Version2.0

Copyright 2012-2013 YCAM InterLab, Yoshito Onishi, Satoru Higa, Motoi Shimizu, and Kyle McDonald

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Change log

v1.2.0

  • add ramMotionExtractor : It makes you easier to edit node selection. check wiki how to use it.
  • change default floor pattarn from "GRID" to "NONE".

v1.1.0

  • add ramReceiverTag & ramOSCManager : for receiver OSC in scenes & other classes.
  • add ramCommunicationManager : for control parameters from other devices on OSC.

ramdancetoolkit's People

Contributors

itotaka avatar jamieforth avatar johanndiedrick avatar kanisan avatar kezzardrix avatar kylemcdonald avatar loveandsheep avatar motoishmz avatar nariakiiwatani avatar satoruhiga avatar tele-scope avatar yoshitoonishi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ramdancetoolkit's Issues

OSC ServerのWindows版

そういえばOSC ServerのWindows版がないですね。。

@motoishmz とりあえずコードもらっていいですか? こっちでビルド試してみます

Scene: Donut

  • デフォルトで人を表示
  • 輪のtiltを追加する

ramGraphic

  • a rectangular parallelepiped(直方体)
  • a triangular pyramid (三角錐)
  • a cylinder(円柱)

After shooting test... (18日)

Future

  • きちんと動く様に。

Richi_box

  • 床面消したい
  • ボックスの大きさを変更したい 無し

Line

  • lineの各ポイント、ランダムな時間で変わる
  • Line 3本目追加

Expantion

  • expand率の個別操作, 自動変化, 加速度操作 無し
  • 箱の色変更
  • ramLowPassFilter
  • 拡張まで線が延びる、伸びない
  • 一個だけが大きくなる

STAMP

  • Stamp箱の色
  • Stamp消えるタイミング
  • 自分の位置とスタンプの位置を変える
  • スタンプに何を出すか: dt, ななめ
  • 静止状態でスタンプ
  • ポーズボタン

組み合わせ

  • 逆さのドーナツ
  • lineの表示を逆さに
  • 拡張にAXIS

BigBox

  • 各Boxの色をそれぞれ変える。スライダーはいらない。単に区別が付けば良い。

全般

  • Bigbox line color... だけじゃなくて全体的に色を操作出来る様に。
  • 大西重力系から、チェインのものと、ラバーのものが追加で動く様に(撮影/デモンストレーション用)。
  • 肘と膝の距離を使ってサウンドの音量を決める(離れているとならない、近づくとなる)右ひじと左ひざ、左肘と右膝を使ってとりあえず二音源など。Lineで使っているノードピッカーを使いたい。

-- box color

Unity examples?

It could be really cool to add some Unity examples :) It makes working with characters and doing more "game dynamics" things much easier. And listening to OSC isn't so hard in Unity.

ディレクトリ構成

今の構成と同じ様にoF directory直下にcloneされる想定で、

{oF directory}
├ RamDanceToolkit
 ├ apps
 ├ devices
 ├ ...

という感じで良いでしょうか?

Scene: Graph2D

  • 2Dグラフが未着手
  • HUD的なUIレイヤを描画できる仕組みを作る
  • 3つまで → やっぱりUI高さ問題で2つまでになりそう

GUI

  • dev/AllScenes に全てのsceneを集める
  • 床パネル grid, checker, none等の基本形を出す
  • 全てのシーンをramSceneBase継承させる
  • Camera位置のパターン作る
  • Backgroundを変更できるようにする

AllExampleに数種類ネタを入れました。
Sceneを作る時はEmptyExampleの様に、ramSceneBaseを継承したclassを作ってもらえればAllExampleにすぐ入れる事が出来ます。

Scene: Upside-down

  • 任意軸の指定の仕組みとそのUI → 回転のオイラー角
  • 接地面に対するオフセットを指定できるようにする
  • 押したらZ軸で90度ボタン

Todo

大物系:

  • GUI、ofxUIでほんとに大丈夫か問題
  • DB系、解析系など

15日(撮影に必要系):

  • 物理演算系
  • 追加で必要そうなもの
    • 数学系関数の充実
      • stripPosition(グローバルポジションをキャンセル) / addPosition(その逆) みたいな
    • bulletのexample
  • アクター描画関数 → Assimp?
  • アクターを追尾するカメラ
  • ShadowのOn/Off
  • Default Cameraのdropdown化
  • Drawを複数回呼んでも問題がおきない仕組みを作る
  • 何かキーでUIをかくせるようにする

21日(田所さんが来るまでのWorkshop準備):

  • ワークショップの準備 (時間配分、ターゲットの絞りこみ、流れをどうするか等)(21日)
  • APIドキュメンテーション → どれぐらいの範囲をどれぐらいの詳細度で書くのかのガイドラインを決める(21日までにチュートリアルがある感じに)
  • Windows対応(21日)
  • ゆくゆくOSC内のname消す

シーンのプロジェクトファイルについて

ふと思ったのですが

今シーンをプロジェクト別でわけて開発しているのですがやっぱ一つのプロジェクトにまとめたほうがよくないか? というお話です。

  • シーンを単体のアプリケーションで配布する、又は実行する状況があるか
  • testAppクラスにベタ書きならいいのだがシーンのクラスに処理を記述してしまっているのでプロジェクトの分、無駄が多いのではないか

というのが理由なのですが、おそらくもうすこしでWindows対応が入るのでRAM API自体にも多少変更が入るとおもいます。そのタイミングまでにsimplifyできると助かる。。

開発のガイドラインとしては、

  • devフォルダに各自開発用のAllScenes (コミットはしない) を作る (自分はtest-AllScenesというフォルダを作ってます)
  • シーンごとの単純なプロジェクトが欲しい場合は dev/test-SCENENAME をつくってそこで作業
  • きりのいい所までいったらapps/AllScenesにコピーしてプロジェクトを編集

というかんじがいいかなと思います。Xcodeのプロジェクト、コンフリクトすると強制ロールバックされるのであまり頻繁に触るのはよろしくなさそうなので。。

@motoishmz どうでしょうか

GUI-API単純化

ワークショップのことを考えるとofxUI依存のおまじないを説明するのはちょっとアレだなと思ったので整理しました。AllScenesでビルドが通るぐらいまではチェックしましたがちょっと荒れるかもしれません。。

こういう感じで書くことにしました。

    void setupControlPanel()
    {
        ramControlPanel &gui = ramGetGUI(); // or simply, gui();

        gui.addToggle("Enable light", &enableLight); // simple api


#ifdef RAM_GUI_SYSTEM_OFXUI

        // ofxUI specific code

        ofxUICanvas* panel = gui.getCurrentUIContext(); // get ofxUICanvas pointer

        // some ofxUI code...

        ofAddListener(panel->newGUIEvent, this, &BasicActor::onPanelChanged);

#endif
    }

シンプルguiを使う場合は ramGetGUI() か、 gui() でとってきて使う感じです。その場合 https://github.com/YCAMInterlab/RAMDanceToolkit/blob/develop/libs/ram/UI/ramControlPanelBase.h に書いてあるメソッドは使えるということでOKです。

ofxUI依存のコードは RAM_GUI_SYSTEM_OFXUI でくくることにしました (Gwenにのせかえる可能性もまだのこしておきたかったのでdefineでスイッチできるようにしてあります 。間に合わなかった場合WS用のソースからは外す予定です…)

複雑系なシーンはちょっと無理感ありますが、フィルタとかViewまわりはシンプルGUIに書き換えておくとやさしさが出るかなと思います

RAM reference

各method、引数まで具体的に紹介

  • actorManager
  • nodeArray
  • ramActor, rigids
  • Filter(nodeArrayBufferあり版、なし版)
  • Recognizer
  • Event(collision, timer, actor/rigid setup/exit)
  • global shortcut
  • Node Selector
  • CameraManager
  • Graphics
  • physics
  • control panel
  • NodeIdentifier + NodeFinder

movieで紹介して、scene sample codeへのリンクを用意する位

  • 各Filter, visualizer

レーザー

XBee series1 to series1でオンオフのみの単純なもの
Max+OSCなどで

nodeFinder仕様

しみずくんが着手しはじめましたが、nodeFinder仕様どうしますかね。

想像ですが、伊藤さんがイメージしてたのはofxCvのcontourFinder的なかんじですよね?
https://github.com/kylemcdonald/ofxCv/blob/master/example-contours-basic/src/testApp.cpp

現時点でのステージの状態から特定のノード(複数可?) をとりだすクラスになると思うんですが、方針としては

  1. インターフェイスを共通にして継承で拡張できるようにする
  2. 関数オブジェクトで振舞を変更できる
  3. クラスに必要なもの全部入れておく

ってかんじですかね。
実装的には関数オブジェクトが一番カッコイイけどまあ、全部入りクラスが使う分には楽でいいのかな…。。

想定される使い方としては、

  • アクターの名前、ノードID指定
  • ノードID指定で全部のアクターの特定の部位
  • 特定の条件にマッチするノードを返す (加速度がどれぐらい以上みたいな)

みたいなのがぱっと思いつくのでとりあえずそこまでやりますかね

うーん、、でも加速度とかをとるのは別の仕組みがあったほうがシンプルになる気はします…

Scene: SoundCube

キューブシーンの実装
XML読み込み
キューブ形状が、球体、立方体、正四面体、正八面体(Glutで書ける形)で出る
縦横高さのサイズが決めれる
回転が可能
触ると音がなる
XMLでサウンドファイルの指定(どのキューブに触るとどの音がなるのか)
キューブに数字IDが出てる

Simplify OpenNI usage

in order to use multiple kinects for skeleton tracking, right now you need to make a copy of an app for every kinect you want to use. it would be better if this was handled by a single app, but it's not possible with the current version of openni.

also, because openni uses dylibs in the data folder, it means every copy of the app is ~180MB which is unacceptable.

edit: i checked with primesense, and they said even openni2 (which doesn't run on osx right now) does not support multiple kinects doing skeleton tracking. also, i think there might not be any workaround for having ~180MB apps because it's necessary to load separate copies of the libraries into memory...

Scene: Delays

  • 未着手
  • DelayTimeと何体出すか的な設定

Scene: Line

  • ラインの数はとりあえず3本まで
  • 色の指定

Physics実装

  • Joint
  • Collision Callback
  • Softbodyはちょっと後回し

Scene: Stamp

  • イベントとフィルター、ビジュアライザをつないでシーン化する
  • UIへの必要変数の登録

撮影テスト・撮影の進め方

@itotaka
撮影開始前にshootingブランチを切ります。
それをチェックアウトして、ビルドしながら撮影テストをしてもらえると嬉しいです。コンパイル済みappを渡すよりも、その場で多少のコードを好きに書き換えられる方が良いと思います。

5分くらいでサクッとできそうな修正要望があればこっち側でcommit >> 伊藤さん側でpullしてビルドという具合で行きたいです。テスト開始1h前くらいに段取りを始めたいです。

@satoruhiga
5面スクリーンに出力する/しない のマクロをどこかに仕込みたいです。
が、マルチスクリーン出力テストがビルド通りませんでした(泣)
明日必須なのでこれを真っ先に解決したいっす。

shootingブランチでは5面出力、developでは1画面、みたいな感じに出来たら進めやすいかなと思います。

new UI

Currently we are switching from using ofxControlPanel to ofxUI+ofxUITabbedCanvas on ofxui-merge branch. This branch still has some tiny issues:

  • ofxUI tying to read its default font ("GUI/NewMedia Fett.ttf"), currently ofSetLogLevel(OF_LOG_SILENT) is set in ramInit() at ramGlobal.cpp
  • tabs not disappear when hidden is set to UI

Explanation movie

(作るかどうかそもそもまだ決定してないと思いますけど...)
RAMのプロモーションとは別の、使用者向けの「こんな機能あります!」みたいなムービー。
作るとしたら音も必要なのでヘイラクG君に早めに連絡しとくといいかんG

getRamColor is undefined

i think some code might be missing. for now, i wrote:

ofSetColor(ofColor::blue);// getRamColor(ramColor::BLUE_NORMAL) );

アクター描画

  • とりあえず描画関数を追加したい
  • デフォルトの描画関数を指定できるようにする
  • 推奨される形態があるとのことなので大脇さんに聞く

Scene: Hasty Chase

  • 加速度で大きくなるボックスの描画関数
  • 時間管理クラス → ディレイと共有
    • 線を描画する機能をつける?
  • BufferTimeとSpeed (負値を取り得る)

rendering fullscreen data

it's difficult to render things fullscreen right now, there are some extra transformations happening. for example, the Color Grid scene should be fullscreen on all screens but the viewport width/height aren't correctly set, or 0,0 is not at the top left.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.