Generates an algorithmic 3D OBJ file with ThreeJS and Node.js.
# print to stdout
node generate-mesh.js > test.obj
# write to file
node generate-mesh.js test.obj| #include "ofApp.h" | |
| //-------------------------------------------------------------- | |
| void ofApp::setup(){ | |
| video.setDeviceID(0); | |
| video.setup(320, 240); | |
| } | |
| //-------------------------------------------------------------- |
| - channel from ofLog | |
| - padding from ofLog | |
| - nanosThen from ofFpsCounter | |
| - secsThen from ofFpsCounter | |
| - _mutexBlocks from ofThread | |
| - _threadRunning from ofThread | |
| - threadBeingWaitedFor from ofThread | |
| - prevValue from ofParameter::Value | |
| - document from ofXml | |
| - element from ofXml |
| int seed = int(random(999999)); | |
| void setup() { | |
| size(960, 960, P2D); | |
| smooth(8); | |
| pixelDensity(2); | |
| rectMode(CENTER); | |
| generate(); |
Playing with unsafe can be quite fun.
| w/ speed up or slow down: | |
| ffmpeg -i INPUT -crf 14 -vf "scale=640:640, setpts=1.0*PTS" -c:a copy -tune grain OUTPUT | |
| (adjust crf for compression amount and 1.0*PTS for speed up / down) | |
| w/out speed up: | |
| ffmpeg -i INPUT -crf 14 -filter:v scale=640:640 -c:a copy -tune grain OUTPUT |
| #!/bin/sh | |
| # A script to collect (conserve? steal?) Constant Dullaart's "war" web pages | |
| # See: https://twitter.com/constantdull/status/785797564167839744 | |
| # Usage: ./war_collector.sh | |
| start_from="war.repair" | |
| if [ ! -d src ] ; then |
| (defn branch | |
| "A recursive branching tree structure with half-cylinder flowers." | |
| [level] | |
| (if (= 0 level) | |
| [(length 1.5) cylinder] | |
| [(angle (fn [_] (m/random 3 5))) ry- | |
| (length (fn [t] (* (m/random 0.75 1.5) (or (:last-length t) 1.5)))) | |
| (map (fn [[a b]] (concat (take 8 (cycle [a b])) (branch (dec level)))) | |
| [[ry line] [ry- line] [rx line] [rx- line]])])) |
| (defn grow [pos rot points len] | |
| (let [[x y z] (last rot) ;; :( no M33 and no (g/rotate-xyz _ (vec3 x y z)) | |
| corners (map #(-> % (g/rotate-x x) (g/rotate-y y) (g/rotate-z z) (g/+ (last pos))) | |
| [(vec3 0 0 0) (vec3 -1 0 0) (vec3 0 -1 0) (vec3 0 1 0) | |
| (vec3 -1 0 len) (vec3 0 -1 len) (vec3 0 1 len) (vec3 0 0 len)])] | |
| [(conj (pop pos) (last corners)) | |
| rot | |
| (conj points (map gu/tessellate-3 (g/faces (apply cub/cuboid corners))))])) | |
| (defn build-lsystem [l-system angle len] |
| let isFunction = function(obj) { | |
| return typeof obj == 'function' || false; | |
| }; | |
| class EventEmitter { | |
| constructor() { | |
| this.listeners = new Map(); | |
| } | |
| addListener(label, callback) { | |
| this.listeners.has(label) || this.listeners.set(label, []); |