alpha v 0.4.22
- New Greenhouse capability: tiling maps (similar to Google Maps or other draggable, dynamically-loading map engines). Implemented as two components: new Greenhouse object Map and application tile-daemon.
- Map : For drawing a section of a map, and panning and zooming the map. When an area needs to be filled with fresh map tiles, requests them (via Plasma messages) from the tile daemon app. You use Map objects in your Greenhouse application.
- tile-daemon : A small program which listens on a pool for map tile requests from the Map object, fetches the images from the web, and hands them to the Map object. Fetched images are also cached on disk. On Mac, installed to /Applications/Greenhouse/tiled-daemon.app . You start tile-daemon before running your Greenhouse application.
New sample: mapper demonstrates tiling map functionality
DataSet class, which was deprecated, is now removed. Long live Table and Vertices (and their offspring PointCloud, LineSegments, etc.).
- Updates to Sketch API
- All methods are now 3D spatial – sketching is not restricted to a 2D plane.
- It’s now possible (and preferred) to override DrawSelf() and do your per-frame drawing updates or animations there. Previously, the place to do this was in a Travail() override.
- Added DrawRoundedRect() method
Nodes can now have multiple independent timers associated with them. (Users should call SetFireTimer with an optional timer name argument.)
- New Node, LocusNode, FlatNode, etc. methods
- RotateLike() and RotateLikeHard(): orients this Node like another Node object (or SpaceFeld)
- Over(), Up(), Norm() report the current, absolute orientation info for an object. Over is sideways, Up is up, and Norm is out the front.
- New functions
- ResetApplication(), clears the scene graph (except for NeedlePoints).
- CameraLoc(), reports the location of the camera that views the main feld.
- New Node member variable, thrill_decay_rate. Set this to slow or speed thrill decay.
- Turned the default down from a blistering 10.0 to 5.0.
Objects that are destroyed are not actually reaped & deallocated until next frame.
- Moved these ImageData-affiliated functions from GreenhouseFunctions into Image class. They are now public static methods, so call them as (e.g.) Image::FetchImageData()
- static ImageData *FetchImageData (const Str &filename, bool force_reload = false)
- static ImageData *BlankImageData (int64 width, int64 height, int64 components = 4)
- static float64 ImageDataAspect (ImageData *data)
Bug 3770 fixed. Pool corruption should no longer be an issue.
Various fixes in quaternions and other rotation math.
Use of Greenhouse MAY result in kittens, rainbows, and/or brown paper packages tied up with string
To install Greenhouse, Mac OS X 10.8 users need to have their security settings at the middle level: “App Store and identified developers”. (Oblong is an identified developer, but the Greenhouse SDK is not currently available from the App Store.)
This setting can be changed in Preferences -> Security & Privacy -> General -> “Allow applications to be downloaded from: Mac App Store and identified developers”
Bug 8184: [Mac] Using laptop trackpad, it is possible to get a false PointingInsideSoften when simultaneously moving and clicking the mouse. We haven’t been able to reliably reproduce this issue.
alpha v 0.4.14
VBOThing class renamed to Vertices
PointCloud class renamed to Points Note: to use all the features of PointCloud will require editing the vertex shader file to include a “pointsize” attribute. See the samples for examples of what to do.
LineSegments class renamed to Lines
New class LineStrip Inherits from Vertices. Efficiently renders an OpenGL line strip (internally, uses a VBO). Pretty much the same thing as Lines, but here they’re all connected. (Google the difference between GL_LINES and GL_LINE_STRIP). Used in cities and seismo samples.
New class Table Somewhat like DataTable, represents a data set that is read in from a text file of comma-separated (CSV) or tab-separated (TSV) values. Values may be numbers or strings. This class is just a container – it has no rendered appearance. Consider inheriting from both this and Vertices (and related classes in Vertices.h). Used in cities and seismo samples.
New class Sketch A convenient way to do vector drawing in Greenhouse. Draw points, lines, bezier curves, arcs, ellipses, rects, and other polygons. Analogous to the PShape object in Processing.
New sample, bob-ross, which shows how to use Sketch.
cities and seismo ported away from DataSet. Now they use Table and classes derived from Vertices to get the same functionality. The DataSet class is now fully deprecated and will go away in a future release.
adding some basic sanity checking of vertex shader contents; checks for missing uniform or attribute declarations.
ToStr() now takes Trove and Dictionary arguments
Small changes in the method signature of Intersection() and IntersectionDiff()
more work on multi-machine support – not ready to share yet, though.
internally laying the foundation for Windows support . . .
Bug 3770: Using the Xcode “Stop” button () or sending SIGKILL commands to Greenhouse applications can eventually corrupt all existing pools. This is bad.
This issue can be resolved by deleting all pools (run the following command in a terminal):
$ rm -rf /var/ob/pools/*
alpha v 0.4.13
- Only one function for converting various data to Str: ToStr
- INT ==> ToStr
- FLOAT ==> ToStr
- BOOL ==> ToStr
- VECT ==> ToStr
- SLAW ==> ToStr
- PROTEIN ==> ToStr
- COLOR ==> ToStr
- CHAR ===> ToChar
- Aspect ==> FeldAspect
- GreenhouseFunctions: added ClosestOrFrontmostHitFeld & TransformRayForBestFeldProjective
- Rewrite of Thing class
- glBind ==> ActivateTexture
- glUnbind ==> DeactivateTexture
- InitTexture : removed
- InitTextures : removed
- added comments to Thing.h
- Combined BackEnd and FrontEnd into GreenhouseFunctions.h/.C
- Added ToPrintableString to DisplacementEvent
- New sample, point-cloud, which shows how to render a 3D data set of points.
- New class DataTable. Represents a data set that is read in from a text file of comma-separated (CSV) or tab-separated (TSV) values. Values may be numbers or strings. This class is just a container – it has no rendered appearance. Consider inheriting from both this and VBOThing (or its friends). Used in point-cloud sample.
- New class DataColumn. A simple vector of values that provides a reference to one column of values in a DataTable. Used in point-cloud sample.
- New class VBOThing and 2 miniature classes that inherit from it: PointCloud and LineSegments. This is how to render a large data set in Greenhouse. These are inheritors from Thing; they renders a bunch of data into an OpenGL vertex buffer object (or VBO). (This is a more efficient way of rendering data than the older glBegin/glEnd methods.)
- We made it easy to use the C++ ImageMagick libraries for creating, editing, composing, or converting bitmap images; no installing libraries or fighting the compiler; should just work. The radiology sample does this.
- DataSet class is deprecated.
- Support for multi-machine applications is getting more robust; expect new samples soon.
- Converted GL drawing helper functions (e.g. DrawQuad) to Thing methods.
- Quaternions are more correct.
- ChaseVects behave better.
- fixes in how displacement events are generated; should contain smoother movement data
alpha v 0.4.12
- more explicitly warn users when deposit into pool won’t fit because Protein is too big.
- ParticipateInPool API change: take a simple number argument, rather than enum
- rewritten DisplacementEvent class describes user events involving two or more hands. - LocOffset() is now CurLinearDelta() and LinearOffset() is now CumuLinearOffset()
- updates to ChaseVect: - Set() now sets the goal - GoalVal() now returns the TargetVal() instead of the CurrentVal()
- Nodes can always call Loc() and get the right answer, even at Setup() time
- fixed bugs in animation system that could cause jumpiness in “Chase” style animation behavior
- framerate is no longer erroneously reported at greater than 60
- AppendIngest for ImageData objects was crazy slow; it’s fixed!
- AppendDescrip now guards against duplicate descrips
alpha v 0.4.10
- some API name changes (sorry, second try!)
- WrangleLoc —> UnWrangleLoc
- UnWrangleLoc —> WrangleLoc
- WrangleRay —> UnWrangleRay
- UnWrangleRay —> WrangleRay
*Note: This naming scheme is in line with the g-speak platform. When you “wrangle” an object you are taking it from absolute space and translating it to a local space. Thus when you “unwrangle” an object you are taking it from a local coordinate system and transforming it back to absolute space.
- It is now ok to stop and start the hantenna pipeline while an application is running
- Added convenience methods for sending images to mobile devices, SendImageToMobileDevice () & DisplayImageOnMobileDevice ()
- Added operator  to Dictionary
- AppendIngests () that takes ImageData now sends the data in a compressed format.
- Fixed Bug 8320: Where multiple calls to ListenForDescrips () would only work for the last call.
alpha v 0.4.8
- New support for LeapMotion, based on splash application and two files: LeapPointing.h and LeapListener.h. These are open source.
- New sample using LeapMotion in samples directory and samples repo on github
- New sample, hantenna, which guides you through the available gestures. Available in samples directory and samples repo on github
- Removed Greenhouse’s dependency on X11/XQuartz.
- Improved performance for applications with lots of objects in the scene graph.
- More flexibility about where resources (such as image files, etc.) can be found
- some API name changes
- Transform —> WrangleLoc
- InverseTransform —> UnWrangleLoc
- TransformInPlace —> WrangleRay
- InverseTransformInPlace —> UnWrangleRay
- Norm()/Over()/Up() now report an accurate normal vector, over vector, and up vector for each object, given its current, absolute orientation
- Exiting application with Escape key can now be disabled (the alternative is Control-X)
- Add AppendIngest w/bool type
- Added SeedRandomizer() function to seed the Random() function; alternative is pseudo-random numbers that are always in the same sequence
- Various crash & bug fixes
alpha v 0.4.5
- Removed the default printing of the application frame rate. This can be turned back on by running a Greenhouse application with the ––timing (–t) command line option.
- Added ––version (–v) to command line options to get the installed version of Greenhouse.
- Increased the performance of the Find () function
- Changed API for AnimateSine functions to make them more intuitive by taking a period rather than a frequency value.
- Added optional alpha value to the hexadecimal Color constructor.
- Added a “maxz” argument to the hantenna pipeline configuration to enable filtering out noise beyond a given depth (maxz).
- Added function SendToBack ()
- Fixed bug with video sizing where AVI videos would get resized to 5% of the feld.
- Fixed reported permissions issues in OS X Lion (10.7.4 and earlier)
- Fixed Bug 8011: [Mac] Clicking in greenhouse app may not bring window to front or give it focus. Workaround: if cursors don’t appear in the scene, try clicking the menu bar of the application window to force focus.
- Fixed Bug 7996: [Mac] BlurtVanish() does not get triggered by keyboard
alpha v 0.4.2
- Bug 8011: [Mac] Clicking in greenhouse app may not bring window to front or give it focus. Workaround: if cursors don’t appear in the scene, try clicking the menu bar of the application window to force focus.
- Bug 7996: [Mac] BlurtVanish() does not get triggered by keyboard