Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

flashfoxter/ThreeNodes.js

Open more actions menu
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#ThreeNodes.js screenshot version 0.1.0

This is an attempt to make something like "vvvv" in javascript, html and webgl.

Live demo: http://idflood.github.com/ThreeNodes.js/

Key principles

  • modular
  • creating a custom "node" must be as easy as possible
  • should be possible to switch interface for live performance (selection of buttons/toggle)

Some ideas

  • local timelines ?
  • automatic layout of node graph
  • grouping (multiple nodes in one, possibility to have multiple instances)
  • ability to take a group, ungroup it, make some changes an regroup it so there are 2 slightly different group definitions (and maybe easier workflow, like 'make this a new group definition')
  • some kind of library panel like in flash to manage images/fonts/groups...
  • preloader (+preloader node so the preloader can be customized)
  • maybe add processingjs.org as an alternative to three.js
  • sound nodes (Audiolet for instance)
  • server with possibility to login, save (public/private), browse, fork, +1, ... (a bit like audiotools)
  • when server + grouping are completed, ability to share custom group of nodes (tags, public repository, ...)
  • script nodes (js). Create input/outputs from parsing js vars or simply define a standard way of doing it, 1 return, inputs injected in an array. Be careful when sharing if there is a server with login...
  • glsl nodes (vert/frag)
  • make threenodes.js compatible with other programs (load/export vvvv file (or vvvv.js), meemoo, ...)
  • publish to chrome webstore
  • use most chrome apps features (offline, chromeless renderer, ...)
  • use google drive api (save, load, simultaneous collaboration, ...)
  • more three.js (and other) nodes...
  • native app based on chrome like adobe/brackets with "permissive" settings to easily allow image loading (CORS), ...
  • soundcloud node (or simply a way to put an url in the SoundInput node)
  • flickr image node when they allow CORS, google drive, freesound.org, archive.org, ...
  • possibility to enable/disable plugins so the nodes list is not filled with unnecessary things
  • search in workspace nodes (quickly find a named node, search all 'time' inputs for instance, ...)
  • drag and drop image/movies from desktop to threenodes
  • "MIDI" timeline when sound generation is added (tempo, ...)
  • music and sound start/finish/volume/... should be possible to handle in node and in timeline if needed (like after effects)
  • curves in timeline like after effect
  • websocket node with example of server/client in flash/processing/java/scala or other
  • ability to run an instance of a saved workspace from command line (send email alert when some inputs have a certain value for instance)
  • csv, xml, ... node parser (and possibly d3.js renderer, or others)
  • MidiFileInput (and similar) when sound generation is done
  • directly select/move/rotate/scale objects in the renderer like any 3d software (and selecting an object3d (or subclass) node should display a x/y/z axis in renderer window to allow move/rotate/scale)
  • gui button/knob/slider/textfield/bang/toggle/select/... nodes
  • key shortcuts + possibility to assign custom key bindings on toggle buttons, ... ?
  • more flexible webgl renderer (image in node or fixed in corner)
  • procedural texture (layers with multiply/add/color..., canvas image, effects, ...)
  • more UI fun inspired by what other programs do (but stay in 2D and keep performance a priority)
  • make it easy to add a theme (+ add a white version, and make the dark one nicer)
  • record values while playing like it is done in music applications (automation)
  • when sound synthesis is done, add drum machine, sequencer, reverb, ... nodes
  • ability to change layout mode (vertical/horizontal/smaller nodes expanded on hover/...)
  • menu to automatically arrange nodes (spring based solution or other)
  • nice user & dev documentation
  • export sequence of png (or video if possible) like a render in ae (time start/end, fps, resolution, ...)
  • better "flow" highlight (when a node is selected, make the inputs and outputs nodes more visible (maybe optional))
  • display some attribute directly in the node (sliders/textfields/..., add a checkbox in the attribute editor to enable this)
  • display scaled down subchilds of nodes inside a group node. Seeing the global workspace it should be possible to have an insight of the complexity of different group nodes (maybe optional)
  • different color of bullet for each field types (or more general classifications like number, string, vectors and others)
  • when dragging from one field to another, highlight only real possible connections (not all inputs like it is now, but based on field type)
  • ...

Development setup

This will automatically compile coffescript files to javascript, sass to css and haml to html.

  1. install node.js 0.6.x (http://nodejs.org/)
  2. install npm (https://github.com/isaacs/npm)
  3. install coffeescript (http://jashkenas.github.com/coffee-script/)
  4. install jade globally: sudo npm install -g jade
  5. cd in ThreeNodes
  6. npm install -d

Usage

  1. cd in ThreeNodes
  2. node server.js
  3. with firefox or chrome go to http://localhost:3000/
  4. allow this site to create popups (for webglrender node)

Build / Deploy

  1. cd in ThreeNodes
  2. node server.js build
  3. a new /dist should have been created

If there is an error when building see requirejs/r.js#157 (comment) This will be fixed with the next require.js release (2.0)

Build annotated sources

  1. install docco and dependancies
  2. docco src/scripts/threenodes/.coffee src/scripts/threenodes//*.coffee
  3. cp docs/App.html docs/index.html

Known limitations

Howto create a simple scene

First, create a webglrenderer node. Then add a scene and connect it to the "scene" of the webgl node. On the scene children you would connect a "merge" and to it a mesh. With that there should be a red cube showing in the renderer window.

About

vvvv "clone" in javascript/webgl

Resources

License

Stars

Watchers

Forks

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.