- Borrado de ficheros innecesarios

This commit is contained in:
Santi Noreña 2013-02-04 18:06:31 +01:00
parent e85d191b46
commit 0e054976f3
301 changed files with 34 additions and 36580 deletions

View file

@ -1,145 +0,0 @@
Coding Guidelines for Gem
=========================
2011, IOhannes m zmölnig
in no special order...
directory structure
-------------------
src/Gem
Gem core architecture classes
src/Utils
Utilitiy code that can be re-used in several different contexts
src/RTE
Pd-specific code (RTE=Real Time Environment)
(in the far future i would like to have all Pd-specific code wrapped in
here)
src/plugins
plugin infrastructure and (pure virtual) baseclasses for the various
plugins
src/Base
Base classes for objectclasses
src/deprecated
deprecated headers for backward compatibility
src/Controls/
objectclasses: CONTROL
src/Manips/
objectclasses: MANIPulatorS
src/Geos/
objectclasses: GEometric ObjectS
src/Nongeos/
objectclasses: positionable Objects that are not Geos
src/openGL/
objectclasses: OPENGL wrapper objects
src/Particles/
objectclasses: PARTICLE engine
src/Pixes/
objectclasses: PIXEl proceSsing
src/Output/
objectclasses: window handling
plugins/*/
plugin implementations for various backends
extra/*/
additional objectclasses
directories containing objectclasses, should not hold auxiliary files!
these should go into src/Utils/ (if they are of general interest) or the code
should be embedded into the objectclass code.
a noteable exception is the extra/*/ folder
file structure
--------------
C++ files are suffixed ".cpp".
they are accompanied by a header file ".h" containing the public interface.
there is a file for each objectclass named like the objectclass. e.g.
> src/Manips/ortho.cpp
contains the code for the [ortho] objectclass.
private/protected/public
------------------------
ctor/dtor should be public
methods should be protected/public
members should be protected
private members should be hidden using a PIMPL idiom
callbacks
---------
message callbacks from the RTE should be implemented using the CPPEXTERN_MSG*
macros defined in src/RTE/MessageCallbacks.h
this removes the need for static callbacks in the header-files
C-style vs C++-style
--------------------
while Pd is written in C, Gem is written in C++;
please try to use C++ idioms whenever possible.
use STL instead of inventing your own data containers!
esp. use "std::string" instead of "char*" whenever possible
the Gem code base is full of C-idioms and types; this is mainly because i
started as a C-programmer and only gradually learned using C++; don't repeat my
follies :-)
variable naming
---------------
member variables are usually prefixed with "m_"
static variables are usually prefixed with "s_"
initialization
--------------
initialize all member variables in the constructor(s).
use "member initialization lists" when possible.
e.g. use
> foo::foo(void) : m_x(0), m_y(0) {}
rather than
> foo::foo(void) { m_x=0; m_y=0; }
import/export
-------------
all functions/classes that should be visible from outside must be exported using
the GEM_EXTERN macro.
all objectclasses are exported.
all utility classes are exported.
dependencies
------------
the dependencies of Gem should be kept at a minimum (ideally only openGL)
objectclasses that use special libraries should go into extra/
if you want to add functionality to Gem that is (or can be) implemented by a
number of different backends (libraries), this should be done via an abstract
interface and plugins, thus moving the binary dependency outside of Gem.
Indentation
-----------
TODO
git commits
-----------
try to avoid committing pd-patches and C++ code within the same
commit. conflicts in C++-code can usually easily be resolved, whereas
conflicts in Pd-patches are usually impossible to resolve (but for the
most trivial cases)
git branching
-------------
try to avoid forking from branches other than master.
esp. avoid branches on top of branches.
before committing a pull rqeuest, make sure that your branch applies clean to
current master.

Binary file not shown.

View file

@ -1,47 +0,0 @@
AUTOMAKE_OPTIONS = foreign
gemdocdir=$(pkglibdir)
nobase_dist_gemdoc_DATA = \
cMatrix.html \
gem.known_bugs.txt \
GemPrimer.pdf \
gem.release_notes.txt \
gem.todo.txt \
manual/add.jpg \
manual/addResult.jpg \
manual/Advanced.html \
manual/basicCube.jpg \
manual/BasicObj.html \
manual/counter.jpg \
manual/GemFaq.html \
manual/gemwin.jpg \
manual/GemWPd.html \
manual/Gloss.html \
manual/Images.html \
manual/index.html \
manual/Input.html \
manual/Intro.html \
manual/invertFrac.jpg \
manual/invert.jpg \
manual/Lighting.html \
manual/light.jpg \
manual/ListObjects.html \
manual/mask.jpg \
manual/maskResult.jpg \
manual/normalFrac.jpg \
manual/Particles.html \
manual/Pixes.html \
manual/pixImage.jpg \
manual/redSquare.jpg \
manual/sphere15.jpg \
manual/sphere5.jpg \
manual/Texture.html \
manual/texture.jpg \
manual/transXYZ.jpg \
manual/tribar.gif \
manual/tripleLine.jpg \
manual/tripleRand.jpg \
manual/Utility.html \
manual/world_light.jpg \
manual/WriteCode.html

View file

@ -1,270 +0,0 @@
<html>
<head>
<title>Matrix Operations for Image Processing</title>
</head>
<body bgcolor="#ffffff" text="#000000">
<!--no_print--><br><center><table width=564><tr><td>
<h2>Matrix Operations for Image Processing</h2>
<!--no_print--><h3>Paul Haeberli</h3>
<h3>Nov 1993</h3>
<img src=../tribar.gif alt="Horiz Bar" width=561 height=3>
<h3>Introduction</h3>
<p>
Four by four matrices are commonly used to transform geometry for 3D
rendering. These matrices may also be used to transform RGB colors, to scale
RGB colors, and to control hue, saturation and contrast. The most important
advantage of using matrices is that any number of color transformations
can be composed using standard matrix multiplication.
<p>
Please note that for these operations to be correct, we really must operate
on linear brightness values. If the input image is in a non-linear brightness
space RGB colors must be transformed into a linear space before these
matrix operations are used.
<h3>Color Transformation</h3>
RGB colors are transformed by a four by four matrix as shown here:
<pre>
xformrgb(mat,r,g,b,tr,tg,tb)
float mat[4][4];
float r,g,b;
float *tr,*tg,*tb;
{
*tr = r*mat[0][0] + g*mat[1][0] +
b*mat[2][0] + mat[3][0];
*tg = r*mat[0][1] + g*mat[1][1] +
b*mat[2][1] + mat[3][1];
*tb = r*mat[0][2] + g*mat[1][2] +
b*mat[2][2] + mat[3][2];
}
</pre>
<h3>The Identity</h3>
This is the identity matrix:
<pre>
float mat[4][4] = {
1.0, 0.0, 0.0, 0.0,
0.0, 1.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0,
};
</pre>
Transforming colors by the identity matrix will leave them unchanged.
<h3>Changing Brightness</h3>
To scale RGB colors a matrix like this is used:
<pre>
float mat[4][4] = {
rscale, 0.0, 0.0, 0.0,
0.0, gscale, 0.0, 0.0,
0.0, 0.0, bscale, 0.0,
0.0, 0.0, 0.0, 1.0,
};
</pre>
Where rscale, gscale, and bscale specify how much to scale the r, g, and b
components of colors. This can be used to alter the color balance of an image.
<p>
In effect, this calculates:
<pre>
tr = r*rscale;
tg = g*gscale;
tb = b*bscale;
</pre>
<h3>Modifying Saturation</h3>
<h3>Converting to Luminance</h3>
To convert a color image into a black and white image, this matrix is used:
<pre>
float mat[4][4] = {
rwgt, rwgt, rwgt, 0.0,
gwgt, gwgt, gwgt, 0.0,
bwgt, bwgt, bwgt, 0.0,
0.0, 0.0, 0.0, 1.0,
};
</pre>
Where rwgt is 0.3086, gwgt is 0.6094, and bwgt is 0.0820. This is the
luminance vector. Notice here that we do not use the standard NTSC weights
of 0.299, 0.587, and 0.114. The NTSC weights are only applicable to RGB
colors in a gamma 2.2 color space. For linear RGB colors the values above
are better.
<p>
In effect, this calculates:
<pre>
tr = r*rwgt + g*gwgt + b*bwgt;
tg = r*rwgt + g*gwgt + b*bwgt;
tb = r*rwgt + g*gwgt + b*bwgt;
</pre>
<h3>Modifying Saturation</h3>
To saturate RGB colors, this matrix is used:
<pre>
float mat[4][4] = {
a, b, c, 0.0,
d, e, f, 0.0,
g, h, i, 0.0,
0.0, 0.0, 0.0, 1.0,
};
</pre>
Where the constants are derived from the saturation value s
as shown below:
<pre>
a = (1.0-s)*rwgt + s;
b = (1.0-s)*rwgt;
c = (1.0-s)*rwgt;
d = (1.0-s)*gwgt;
e = (1.0-s)*gwgt + s;
f = (1.0-s)*gwgt;
g = (1.0-s)*bwgt;
h = (1.0-s)*bwgt;
i = (1.0-s)*bwgt + s;
</pre>
One nice property of this saturation matrix is that the luminance
of input RGB colors is maintained. This matrix can also be used
to complement the colors in an image by specifying a saturation
value of -1.0.
<p>
Notice that when <code>s</code> is set to 0.0, the matrix is exactly
the "convert to luminance" matrix described above. When <code>s</code>
is set to 1.0 the matrix becomes the identity. All saturation matrices
can be derived by interpolating between or extrapolating beyond these
two matrices.
<p>
This is discussed in more detail in the note on
<a href="../interp/index.html">Image Processing By Interpolation and Extrapolation</a>.
<h3>Applying Offsets to Color Components</h3>
To offset the r, g, and b components of colors in an image this matrix is used:
<pre>
float mat[4][4] = {
1.0, 0.0, 0.0, 0.0,
0.0, 1.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0,
roffset,goffset,boffset,1.0,
};
</pre>
This can be used along with color scaling to alter the contrast of RGB
images.
<h3>Simple Hue Rotation</h3>
To rotate the hue, we perform a 3D rotation of RGB colors about the diagonal
vector [1.0 1.0 1.0]. The transformation matrix is derived as shown here:
<p>
If we have functions:<br><br>
<dl>
<dt><code>identmat(mat)</code>
<dd>that creates an identity matrix.
</dl>
<dl>
<dt><code>xrotatemat(mat,rsin,rcos)</code>
<dd>that multiplies a matrix that rotates about the x (red) axis.
</dl>
<dl>
<dt><code>yrotatemat(mat,rsin,rcos)</code>
<dd>that multiplies a matrix that rotates about the y (green) axis.
</dl>
<dl>
<dt><code>zrotatemat(mat,rsin,rcos)</code>
<dd>that multiplies a matrix that rotates about the z (blue) axis.
</dl>
Then a matrix that rotates about the 1.0,1.0,1.0 diagonal can be
constructed like this:
<br>
First we make an identity matrix
<pre>
identmat(mat);
</pre>
Rotate the grey vector into positive Z
<pre>
mag = sqrt(2.0);
xrs = 1.0/mag;
xrc = 1.0/mag;
xrotatemat(mat,xrs,xrc);
mag = sqrt(3.0);
yrs = -1.0/mag;
yrc = sqrt(2.0)/mag;
yrotatemat(mat,yrs,yrc);
</pre>
Rotate the hue
<pre>
zrs = sin(rot*PI/180.0);
zrc = cos(rot*PI/180.0);
zrotatemat(mat,zrs,zrc);
</pre>
Rotate the grey vector back into place
<pre>
yrotatemat(mat,-yrs,yrc);
xrotatemat(mat,-xrs,xrc);
</pre>
The resulting matrix will rotate the hue of the input RGB colors. A rotation
of 120.0 degrees will exactly map Red into Green, Green into Blue and
Blue into Red. This transformation has one problem, however, the luminance
of the input colors is not preserved. This can be fixed with the following
refinement:
<h3>Hue Rotation While Preserving Luminance</h3>
We make an identity matrix
<pre>
identmat(mmat);
</pre>
Rotate the grey vector into positive Z
<pre>
mag = sqrt(2.0);
xrs = 1.0/mag;
xrc = 1.0/mag;
xrotatemat(mmat,xrs,xrc);
mag = sqrt(3.0);
yrs = -1.0/mag;
yrc = sqrt(2.0)/mag;
yrotatemat(mmat,yrs,yrc);
matrixmult(mmat,mat,mat);
</pre>
Shear the space to make the luminance plane horizontal
<pre>
xformrgb(mmat,rwgt,gwgt,bwgt,&lx,&ly,&lz);
zsx = lx/lz;
zsy = ly/lz;
zshearmat(mat,zsx,zsy);
</pre>
Rotate the hue
<pre>
zrs = sin(rot*PI/180.0);
zrc = cos(rot*PI/180.0);
zrotatemat(mat,zrs,zrc);
</pre>
Unshear the space to put the luminance plane back
<pre>
zshearmat(mat,-zsx,-zsy);
</pre>
Rotate the grey vector back into place
<pre>
yrotatemat(mat,-yrs,yrc);
xrotatemat(mat,-xrs,xrc);
</pre>
<h3>Conclusion</h3>
I've presented several matrix transformations that may be applied
to RGB colors. Each color transformation is represented by
a 4 by 4 matrix, similar to matrices commonly used to transform 3D geometry.
<p>
<a href="matrix.c">Example C code</a>
that demonstrates these concepts is provided for your enjoyment.
<p>
These transformations allow us to adjust image contrast, brightness, hue and
saturation individually. In addition, color matrix transformations concatenate
in a way similar to geometric transformations. Any sequence of
operations can be combined into a single matrix using
matrix multiplication.
<!--no_print--><p>
<!--no_print--><center>
<!--no_print--><a href=../index.html#matrix><img src=../gobot.gif width=564 height=25 border=0></a>
<!--no_print--><br>
<!--no_print--></center>
<!--no_print--></td></tr></table></center>
</body>
</html>

View file

@ -1,298 +0,0 @@
GEM ONLINE DOCUMENTATION CHAPTER 4: Known bugs
----------------------------------------------
---------------------------- KNOWN BUGS -----------------------------
[pix_lumaoffset] crashes
--------------
POSTED 15/05/04
--------------
BUG: pix_lumaoffset crashes when the offset-factor is very high and fill+smooth is turned on
ANS: yes; but we haven't found where the bug is hidden yet
loading movies leaks memory under Win32
--------------
POSTED 4/16/02
--------------
BUG: each time an AVI is loaded, the used memory increases for about 400k.
after some time (and opening MANY files) this will be too much...
ANS: i fear, this is really a mikro$oft bug! (probably not;-))
loading MPEG-movies crashes under Win32
--------------
POSTED 4/05/04
--------------
BUG: loading MPEG-movies (*.MPG) crashes pd
ANS: MPEG is not really supported under the Win32-version of Gem
however Gem tries to decode MPEGs via QuickTime which might crash (see below)
loading AVI-movies does not work under Win32
--------------
POSTED 4/05/04
--------------
BUG: loading some AVI-movies with certain codecs does not work under Win2k and bigger.
ANS: Gem is (still) using a rather old API for decoding videos.
it might well be, that not all installed codecs are supported (e.g. Indeo-5)
have to destroy / create window to change lighting state in buffer == 1
--------------
POSTED 11/07/98
--------------
BUG: If you want to change the lighting when GEM is running in single
buffer mode, you have to destroy and then create the window.
ANS: hopefully we will drop single-buffer mode soon (enabling double-buffer feedback instead) (2004)
WinNT pix_video object
--------------
POSTED 6/25/98
-------------
BUG: The WinNT pix_video object has a lot of problems. It is not
very stable, tends to lock up the machine, etc.
ANS: don't have much problems with it.
daniel's directshow-support enables support for most newer (ieee1394,usb) cameras under win,
although the interface is somewhat different than on other OS's
(eg: set dimensions via pop-up menu,...)
splines are incorrect
--------------
POSTED 6/25/98
--------------
BUG: In preventing the crasher in the spline object, I have introduced
another bug. Mainly, the end points don't get computed correctly.
Polygon doesn't tesselate (ie, polygons sometimes look strange)
--------------
POSTED 5/19/97
--------------
BUG: Because the polygon object doesn't tesselate itself,
if it is concave, the behavior is undefined under OpenGL.
glxContext memory leak
--------------
POSTED 5/18/97
--------------
BUG: The dummy glxContext doesn't ever get destroyed. Use a static object
to create and destroy it when the DSO is loaded/unloaded.
Indycam broken
--------------
POSTED 5/1/97
--------------
BUG: The Indycam object doesn't seem to work. While getting the O2cam
up, I seem to have broken the Indycam object. One known
bug is that the Indycam doesn't accept the dimen message.
ANS: i don't have a running SGI with an indycam at hand, so i
don't know how to fix it
---------------------------- FIXED BUGS -----------------------------
some geos don't render data from pix_movie correctly
--------------
POSTED 19/03/2004
FIXED 20/03/2004
--------------
BUG: Some objects don't render images correctly
ANS: Gem tries to use rectangle-textures when available
GLU-objects cannot handle such textures
FIX: send a "mode 0" message to the [pix_texture]
FIX2:put the specific GLU-code into Gem and fixed the problem
some geos don't render data from pix_movie correctly
--------------
POSTED 4/24/99
FIXED 20/03/2004
--------------
BUG: Sphere and cone don't texture map movie data correctly because
they ignore the texture coordinates that pix_movie sets.
ANS: as long as we use the libGLU for these objects there is not much chance
to fix the core of this problem
FIX: put the specific GLU-code into Gem and fixed the problem
Cone and sphere ignore textCoords
--------------
POSTED 4/12/99
FIXED 20/03/2004
--------------
BUG: The glu library is used to create the cone and sphere, so gem
doesn't control the texture coordinates used.
FIX: put the specific GLU-code into Gem and fixed the problem
text2d is messed up
--------------
FIXED 01/01/04
POSTED 2/22/98
--------------
BUG: text2d doesn't really work at all. There seems to be a bug
in the GLTT library which is messing up the rasterpos.
FIX: use FTGL rather than GLTT
curve is broken under Linux
--------------
FIXED 01/01/04
POSTED 0/24/99
--------------
BUG: if curve is used under Linux, it core dumps when rendering.
It dumps on glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, m_numInputs, &(m_vert[0][0]));
ANS: seems to work now
model crashes when nothing is loaded
---------------
FIXED 01/01/04
POSTED 10/25/02
---------------
BUG: if rendering is started without a model being loaded before, pd crashes
ANS: seems to be fixed sime time ago...
pix_imageInPlace crashes when nothing is loaded
---------------
FIXED 01/01/04
POSTED 10/25/02
---------------
BUG: when trying to download non-existant images (by specifying the wrong
preload-name), pd-crashes
ANS: seems to be fixed now...
Can't process pix_movie data with pix objects
--------------
FIXED 4/15/02
POSTED 4/24/99
--------------
BUG: pix_movie sends the data immediately to OpenGL,
so there is no chance to process the data.
ANS: it does what it does; [pix_film] does not send the image-data immediately, so use it instead
pix_2grey doesn't process the correct number of pixels
--------------
FIXED 2/19/00
POSTED 2/18/00
--------------
BUG: The pixel count is calculated with addition instead of multiplying.
ANS: Just changed how the calculation occurs.
tablet not reset on exit
--------------
FIXED 1/24/99
POSTED 8/29/98
--------------
BUG: If the user has a tablet, it is not reset to the default settings
on exit, making it unusable as a mouse.
ANS: Just needed to do some more cleanup on exit. Should be okay now.
text object can't be found
--------------
FIXED 2/21/98
POSTED 5/1/97
--------------
BUG: Because the text is a special keyword and object inside of
pd, the text object cannot be found as a GEM object. The solution
is to rename it to something else.
ANS: I am using a cool library called gltt which will render true type
fonts in OpenGL.
Memory exception on WinNT
--------------
FIXED 12/15/97
POSTED 11/30/97
--------------
BUG: If you use pix_image, then there is a memory exception (ie, crash) when
you exit Pd. It doesn't happen while actually running Pd/GEM.
ANS: Mysterious...it went away.
Polygon and curve under NT
--------------
FIXED 10/21/97
POSTED 10/21/97
--------------
BUG: The vertex calls are receiving 0, 0, 0 for x, y, z
ANS: Extra type * parameter in the vert_* calls
Single buffering under NT
--------------
FIXED 10/21/97
POSTED 10/19/97
--------------
BUG: Single buffering doesn't work under NT.
ANS: Need an explicit glFlush(). gemHead calls glFlush after a bang message.
Geos texture coordinates
--------------
FIXED 10/17/97
POSTED 6/16/97
--------------
BUG: The vertex and texture coordinates should start so that the first
S,T is 0,0
ANS: Just did it.
pix_composite is backwards
--------------
FIXED 7/12/97
POSTED 6/16/97
--------------
BUG: The pix_composite object should have its inlets swapped. Conceptually
it doesn't make sense the way it works currently.
FIX: Just did it.
pix_convolve is broken
--------------
FIXED 7/13/97
POSTED 6/16/97
--------------
BUG: Sometimes pix_convolve doesn't work - seems to do with the scale factor
ANS: I'm not sure why it wasn't working. I have hammered it with a variey
of kernels and scales and never had a problem...
ANS2: I found a bug where pix_image didn't automatically refresh its image
at the start of rendering
pix_alpha is backwards
--------------
FIXED 7/12/92
POSTED 6/16/97
--------------
BUG: Sometimes it works, sometimes it doesn't
ANS: Swapped around the inlet creations
polygon's first inlet doesn't work
--------------
FIXED 5/18/97
POSTED 5/17/97
--------------
BUG: The first vertex of polygon doesn't work. It is always set to the
origin. Also, polygon defaults to line drawing. Check Curve for
the same problems (it is derived from polygon).
ANS: The first inlet no longer takes the first vertex. I added another
inlet.
fonts do not load
--------------
FIXED 4/02/02
POSTED 4/01/02
--------------
BUG: the example fonts for text2d/text3d do not load
FIX: accidentally i did a dos2unix to the *.ttf files. this damaged them.
Get new ones from ftp://iem.at/pd/Externals/GEM/misc

File diff suppressed because it is too large Load diff

View file

@ -1,65 +0,0 @@
GEM ONLINE DOCUMENTATION CHAPTER 7: TODO
----------------------------------------
This is a list of future improvements and changes.
No importance should be given to the order...it is just
when I thought of things.
- Mark D.
- IOhannes m z
---------------------------- TODO -----------------------------
GENERAL
-------
only connect to tablet if gem_tablet exists
make a separate Gem-thread (to do parallel audio/video-processing)
enable output to other "devices": like files, video-editing-cards,...
PARTICLE
--------
OBJECTS
-------
triangle_fan
stereoscopic display with hardware glasses
NURBS/bezier patches
3DstudioMax file loader
CAL3d (character animation library): (not sure anymore. maybe quake2-files would be better ?)
Alias|Wavefront file data
- articulation hierarchies in Wavefront's Kinemation
- read Preview's .mov files (an ascii list of x, y, and/or z values)
morphing between alias|wavefront models
- assume same number of points in each model
PIXES
-----
pix_dv (under linux this still needs a lot of testing)
motion and image analysis
some way to fragment an image so that it can be used as multiple
texture maps (hopefully arbitrary shapes, but possibly only rectangular)
pix_erosion
pix_dilation
pix_median/min/max filter
pix_lowpass
pix_highpass
video external keyer
- three inputs - the matte and two image inputs
increased control of the Threshold object.
- upper and lower levels adjustable
stereoscopic texture loader
pix_circle
pix_triangle
test pix_video - espec offset message
OPENGL
------
be able to switch between single and double buffering on the fly
have multiple graphics windows
increased control of view port, etc.
be able to use multiple pipes (MCO)
try out glMatrixMode(GL_TEXTURE) to deal with nonstandard texture mapping
render to a pixblock (use pbuffers or offscreen renderer)
on systems that run in console mode only (like linux with(out) XFree86), render to the console with beautiful ASCII-art
multipass rendering
multitexturing

View file

@ -1,27 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
<title>Advanced</title>
</head>
<body>
<center>
<h2>
<u>Advanced objects</u></h2></center>
<p><br>Todo:
<p>more than 8 lights
<br>pix_imageInPlace
<br>accumrotate
<br>camera
<br>polygon and curve
<br>text3d
<br>pix_data
<br>linear_path
<br>spline_path
<p><a href="index.html">[return]</a>
</body>
</html>

View file

@ -1,115 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="Author" content="IOhannes m zmölnig">
<title>Basic Objects</title>
</head>
<body>
<center>
<h2>
<u>Basic Objects</u></h2></center>
<p><br>There are a number of objects which are the foundation for GEM.
These objects are used in every patch and control the graphics and rendering.
<p><a href="#gemwin">[gemwin]</a> - The window manager
<br><a href="#gemhead">[gemhead]</a> - The start of a rendering chain
<br><a href="#manips">manips</a> - Move an object in the window
<br><a href="#geos">geos</a> - Render a shape
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="gemwin"></a>[gemwin]</h3>
The graphics window is created and destroyed with the <i>[gemwin]</i> object.
With the <i>[gemwin]</i> object, you can set the default size of the graphics
window, create and destroy the graphics window, turn on and off rendering,
etc. All basic GEM patches will have the following <i>[gemwin]</i>
object with these messages:
<center>
<p><img SRC="gemwin.jpg" BORDER=1 height=128 width=78></center>
The create and destroy messages will display and remove the graphics window.
The 1 and 0 messages start and stop rendering.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="gemhead"></a>[gemhead]</h3>
The <i>[gemhead]</i> object is the start of every rendering chain.
A simple patch, which is located in examples/gem_basic/gem1.redSquare.pd
looks like:
<center>
<p><img SRC="redSquare.jpg" BORDER=1 height=138 width=91></center>
<p>This patch will render a red square. The <i>[gemhead]</i> object
signifies the start of rendering. The <i>[color]</i> object sets the color
for all objects after it in the chain. The <i>[square]</i> object renders
a square into the graphics window based on the current color, texturing,
and transformations. In this case, there is no texturing and no transformation.
<p>Every rendering chain <b>MUST</b> start with a [gemhead]. If you
do not put a <i>[gemhead]</i> at the beginning of the chain, then nothing
will be rendered for that part of the patch.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="manips"></a>manips</h3>
In the patch 01.basic/02.cube.pd, the <i>[translateXYZ]</i> object is
introduced.
<center>
<p><img SRC="basicCube.jpg" BORDER=1 height=133 width=93></center>
<p>The graphics are transformed and moved by the <i>manipulator</i> objects,
or the manips. GEM has the following manips:
<p><i>[color]</i> - set the color with a vector
<br><i>[colorRGB]</i> - set the color with 3 discrete values
<br><i>[rotate]</i> - rotate with an angle and vector
<br><i>[rotateXYZ]</i> - rotate with 3 discrete values
<br><i>[scale]</i> - scale with a vector
<br><i>[scaleXYZ]</i> - scale with 3 discrete values
<br><i>[translate]</i> - translate with a vector
<br><i>[translateXYZ]</i> - translate with 3 discrete values
<p>To understand the difference between the vector and discrete values
version, realize that everything in is defined in 3 dimensions. These
dimensions can be XYZ values, or RGB colors.
<center>
<p><img SRC="transXYZ.jpg" BORDER=1 height=92 width=201></center>
<p>The two translate objects above will do exactly the same thing in a
patch, but they provide two different ways to do it. <i>[translate]</i> accepts
a scalar and vector. <i>[translateXYZ]</i> accepts three floats which
specify a point in space. The manips will transform any object which
appears after it in the rendering chain.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="geos"></a>geos</h3>
Up above, we saw the <i>[square]</i> and <i>[cube]</i> objects. The other
primary geos are:
<p><i>[square]</i> - render a square
<br><i>[circle]</i> - render a circle
<br><i>[triangle]</i> - render a triangle
<br><i>[cube]</i> - render a cube
<br><i>[sphere]</i> - render a sphere
<br><i>[cone]</i> - render a cone
<p>The <i>[square]</i>, <i>[circle]</i>, <i>[cube]</i>, and <i>[triangle]</i> objects
have a right-hand inlet to set the size of the shape. The default
size is 1.
<p>The <i>[cone]</i> and <i>[sphere]</i> objects are not perfectly smooth.
They are actually composed of a number of polygons. In order to control
the rendering better, the middle inlet is the size of the object, while
the right-hand inlet is the number of slices to define the shape.
Take a look at the patch gem_basic/gem3.sphere.pd to see how the number
of slices can change the look of a sphere. Don't worry about the
<i><a href="Lighting.html#world_light">[world_light]</a></i>
object, it is just there to make it easier to see the difference in the
number of slices. Make sure to click the 'lighting 0' message before
closing the patch (if you don't, then other patches will probably be completely
black until you quit and restart pd/GEM).
<p>Your graphics window should look like this for 5 and 15 slices:
<center>
<p><img SRC="sphere5.jpg" BORDER=0 height=150 width=150><img SRC="sphere15.jpg" height=150 width=150></center>
Obviously, the more slices that you use, the better the sphere looks.
However, each slice adds more polygons, which can slow down your frame
rate. In computer graphics, there is always a trade off between resolution
and speed.
<p><img SRC="tribar.gif" height=13 width=561>
<p><a href="index.html">[return]</a>
<br>
</body>
</html>

View file

@ -1,667 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
<title>Gem FAQ</title>
</head>
<body>
<center>
<h2>
<u>GEM FAQ</u></h2></center>
<p><br>* : new question
<br>+ : changed question
<p><img SRC="tribar.gif" height=13 width=561>
<h2>
<u>QUESTIONS</u></h2>
<i><a href="#General">GENERAL</a></i>
<br><a href="#1.1">1.1) What is GEM?</a>
<br><a href="#1.2">1.2) What is Pd?</a>
<br><a href="#1.3">1.3) What platforms do GEM and Pd run on?</a>
<br><a href="#1.4.0">1.4.0) How do I install GEM and Pd on IRIX?</a>
<br><a href="#1.4.1">1.4.1) How do I install GEM and Pd on linux?</a>
<br><a href="#1.4.2">1.4.2) How do I install GEM and Pd on WinNT?</a>
<br><a href="#1.7">1.7) What is a good intro to OpenGL?</a>
<br><a href="#1.8">1.8) Are there any web sites for Pd or GEM?</a>
<br><a href="#1.9">1.9) What libraries does GEM use? (aka: Who does Mark
want to thank?)</a>
<br><a href="#1.10">1.10) Are there any restrictions on GEM?</a>
<br><a href="#1.11">1.11) How do I use GEM in a performance?</a>
<p><i><a href="#UsingGem">USING GEM</a></i>
<br><a href="#2.1">2.1) How do I (???)</a>
<br><a href="#2.2">2.2) How do I make GEM run?</a>
<br><a href="#2.3">2.3) Why doesn't GEM run?</a>
<br><a href="#2.4">2.4) I've got it running. Now what?</a>
<br><a href="#2.5">2.5) On IRIX 5.3, why does GEM dump with an rld error?</a>
<br><a href="#2.6">2.6) Why can't I compile GEM on IRIX 5.3?</a>
<br><a href="#2.7">2.7) Why is GEM slow in general?</a>
<br><a href="#2.8">2.8) Why is GEM slow on IRIX?</a>
<br><a href="#2.9">2.9) Why is GEM slow on WinNT/Win95?</a>
<br><a href="#2.10">2.10) Why is GEM slow on Linux?</a>
<br><a href="#2.11">2.11) If I resize the window, everything looks strange.</a>
<br><a href="#2.12">2.12) Can GEM run on a 3Dfx Voodoo card?</a>
<br><a href="#2.13">2.13) Will GEM support hardware transform and lighting
(T&amp;L) ?</a>
<br><a href="#2.14">2.14) I get an error "GEM needs Truecolor visual support".</a>
<p><i><a href="#ViewingObjects">VIEWING OBJECTS</a></i>
<br><a href="#3.1">3.1) Why does everything seem dim?</a>
<br><a href="#3.2">3.2) Why does everything seem dark?</a>
<p><i><a href="#TextureMapping">TEXTURE MAPPING</a></i>
<br><a href="#4.1">4.1) My image doesn't appear. What is going on?</a>
<br><a href="#4.2">4.2) My image looks strange. What is going on?</a>
<br><a href="#4.3">4.3) Why does GEM say that it can't handle a gray image?</a>
<br><a href="#4.4">4.4) What image formats can GEM handle?</a>
<br><a href="#4.5">4.5) What movie formats can GEM handle?</a>
<br><a href="#4.6">4.6) Why is pix_draw so slow?</a>
<p><i><a href="#WorkingWithPd">WORKING WITH PD</a></i>
<br><a href="#5.1">5.1) Why do I get clicks in the audio?</a>
<br><a href="#5.2">5.2) How do I get audio data to GEM?</a>
<br><a href="#5.3">5.3) Why can't GEM find an image/model file?</a>
<br><a href="#5.4">5.4) How can I optimize my patches?</a>
<p><i><a href="#NewGemObjects">WRITING NEW GEM OBJECTS</a></i>
<br><a href="#6.1">6.1) How do I write a new GEM object?</a>
<br><a href="#6.2">6.2) What are the default OpenGL states?</a>
<p><i><a href="#ObjectSpecific">OBJECT SPECIFIC</a></i>
<br><a href="#7.1">7.1) Why doesn't &lt;object> exist on &lt;platform>?</a>
<br><a href="#7.2">7.2) Why doesn't gemtablet work?</a>
<br><a href="#7.3">7.3) I don't want GEM to take over my tablet.
How do I stop it?</a>
<br><a href="#7.4">7.4) Why doesn't gemmouse work in IRIX/Linux?</a>
<br><a href="#7.5">7.5) Why doesn't gemorb work?</a>
<br><a href="#7.6">7.6) What is wrong with pix_video in WinNT?</a>
<p><img SRC="tribar.gif" height=13 width=561>
<h2>
<u>ANSWERS</u></h2>
<a NAME="General"></a><h3>GENERAL</h3>
<br><a NAME="1.1"></a>1.1) What is GEM?
<p>GEM is the Graphics Environment for Multimedia.
It was originally written by <a href="mailto:mark@danks.org">Mark Danks</a> to generate real-time computer
graphics, especially for audio-visual compositions. It originally ran under
FTS/Max (which is why you might see some papers reference it), but all
new development is under Pd.
<p>You can get GEM at <a href="http://www.iem.at/GEM">http://gem.iem.at/</a>
<p>GEM was sponsored by a grant from Intel (<a href="http://www.intel.com">http://www.intel.com</a>)
<p>GEM was ported to <a href="http://www.linux.org">linux</a> by <a href="mailto:geiger@xdv.org">G&uuml;nter Geiger</a>
<p>GEM is now maintained by <a href="mailto:zmoelnig@iem.at">IOhannes m zm&ouml;lnig</a>.
<p>the core-development team consists of<ul>
<li>chris clepper</li>
<li>günter geiger</li>
<li>daniel heckenberg</li>
<li>james tittle</li>
<li>IOhannes m zmölnig</li></ul>
lots of contributions are made by various people (thanks to all of them)
<p>----
<br><a NAME="1.2"></a>1.2) What is Pd?
<p>Pd is a real-time environment for audio and MIDI.
It was written by <a href="mailto:msp@ucsd.edu">Miller Puckette</a>, who created FTS/Max when
he was at IRCAM. Basically, Pd can be seen as the next generation
of real-time visual programming languages. GEM runs inside of the
Pd environment.
<p>You can get Pd at <a href="http://www.crca.ucsd.edu/~msp/software.html">http://www.crca.ucsd.edu/~msp/software.html</a>
<p>Pd is sponsored by a grant from Intel (<a href="http://www.intel.com">http://www.intel.com</a>)
<p>----
<br><a NAME="1.3"></a>1.3) What platforms do GEM and Pd run on?
<p>GEM and Pd run on Windows (95, 98, ME, NT 4.0, 2000, XP), linux and macOS-X (&gt;10.2).
SGI-Irix (&gt; 6.2) used to be supported but i don't have any prove that it still works).
<a href="mailto:geiger@xdv.org">G&uuml;nter Geiger</a>
has done an initial port of GEM and Pd to Linux <a href="http://gige.epy.co.at/">http://gige.epy.co.at</a>).
<p>GEM is now maintained by <a href="mailto:zmoelnig@iem.at">me</a> and
developed by a team of several independent programmers (see <a href="1.1">section 1.1</a>)
<p>----
<br><a NAME="1.4"></a>1.4) How do I install GEM ?
<p>----
<br><a NAME="1.4.0"></a>1.4.0) How do I install GEM and Pd on IRIX?
<p>See the readme for installing Pd.
<p>GEM should be at
<p>pd/gem
<p>If you run GEM.INSTALL.sh, then all of the example files and documention
should be put in the correct locations.
<p>----
<br><a NAME="1.4.1"></a>1.4.1) How do I install GEM and Pd on linux?
<p>See the readme for installing Pd.
<p>GEM should be at
<p>chdir to &lt;gem&gt;/src/Gnu and build Gem following the instructions in the README.build
(<tt>./configure; make</tt>)
<p>If you then <tt>make install</tt>, then all of the example files and documention
should be put in the correct locations.
<p>if you are using debian, Gem should be available via apt</p>
<p>if you are using an rpm-based distribution, check out the builds at planetCCRMA</p>
<p>----
<br><a NAME="1.4.2"></a>1.4.2) How do I install GEM and Pd on WinNT?
<p>See the readme for installing Pd.
<p>unzip GEM so that it is at
<p>pd\gem
<p>If you run GEM.INSTALL.bat, then all of the example files and documentation
should be put in the correct locations.
<p>there is also an installer for windows.
<p>----
<br><a NAME="1.4.3"></a>1.4.3) How do I install GEM and Pd on macOS?
<p>See the readme for installing Pd.
<p>there is also an installer for macOS.
<p>----
<br><a NAME="1.7"></a>1.7) What is a good intro to OpenGL?
<p>The best book is the <u>OpenGL Programming Manual</u>
by Mason and Woo. This is also called the "Red Book". If you search
the web, there are many sites on OpenGL. A good starting point is
<a href="http://www.opengl.org">http://www.opengl.org</a>.
Also, Mark Kilgard (who used to work for SGI) has a wonderful site with
lots of links (<a href="http://reality.sgi.com/mjk">http://reality.sgi.com/mjk</a>)
Also, Normal Lin has written another great book on <u>3D-graphics under linux</u>
<p>----
<br><a NAME="1.8"></a>1.8) Are there any web sites for Pd or GEM?
<p>Except for the ones noted above, there is the Japanese
installation page at
<br><a href="http://www.rinc.or.jp/~kotobuki/gem/index.htm">http://www.rinc.or.jp/~kotobuki/gem/index.htm</a>
<p>There is a Pd mailing list. Subscription info
is on IEM's site <a href="http://www.iem.at/mailinglists/pd-list">http://www.iem.at/mailinglists/pd-list</a>
<p>One of pd's unofficial home-pages is at <a href="http://pd.iem.at">http://pd.iem.at</a> hosted by the
<a href="http://iem.at">Institute of Electronic Music and Acoustics, Graz, Austria</a>
<p>Also hosted by the <a href="http://iem.at">iem</a> is the site of the pd-community
<a href="http://www.puredata.info">http://www.puredata.info</a>
<p>An interesting place might also be G&uuml;nter Geiger's size <a href="http://gige.epy.co.at/">http://gige.epy.co.at/</a>
<p>there are lot's of other cool pages (search the net...)
<p>----
<br><a NAME="1.9"></a>1.9) What libraries does GEM use?
(aka: Who does Mark want to thank?)
<p>All copyrights and license info can be found in
<br> GEM.LICENSE.TERMS
<br> Thanks to Sam Leffner for libTiff, the TIFF image
loader.
<br>
sam@engr.sgi.com
<br> <a href="ftp://ftp.sgi.com/graphics/tiff/">ftp://ftp.sgi.com/graphics/tiff/</a>
<br> Thanks to Masayuki Matsumoto for fstimage for OpenGL,
the SGI
<br> image loader.
<br>
matumot@dst.nk-exa.co.jp
<br> Thanks to the Independent JPEG Group for libjpeg,
the JPEG image loader.
<br>
jpeg-info@uunet.uu.net
<br> <a href="ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/">ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/</a>
<br> Thanks to Mark Kilgard at al. (and SGI) for glut, the openGL Utility Toolkit
<br> <a href="http://www.pobox.com/~ndr">http://www.pobox.com/~ndr</a>
<br> Thanks to Stephane Rehel for GLTT, the OpenGL TrueType
render.
<br>
rehel@worldnet.fr
<br> <a href="http://home.worldnet.fr/~rehel/gltt/gltt.html">http://home.worldnet.fr/~rehel/gltt/gltt.html</a>
<br> Thanks to David Turner, Robert Wilhelm, and Werner
Lemberg for
<br> Freetype, a TrueType font
rendering engine.
<br>
turner@enst.fr
<br>
robert@physiol.med.tu-muenchen.de
<br>
a7971428@unet.univie.ac.at
<br> <a href="http://www.physiol.med.tu-muenchen.de/~robert/freetype.html">http://www.physiol.med.tu-muenchen.de/~robert/freetype.html</a>
<br> Thanks to the MPEG Software Simulation Group, for
libmpeg, the
<br>MPEG-2 Encoder/Decoder
<br>
mssg@mpeg.org
<br> <a href="http://www.mpeg.org/MSSG/">http://www.mpeg.org/MSSG/</a>
<br> Thanks to Heroine for quicktime4linux
a quickime Decoder
and libmpeg3, another MPEG-2 Encoder/Decoder
<br>MPEG-2 Encoder/Decoder
<br>
mssg@mpeg.org
<br> <a href="http://heroinewarrior.com/">http://heroinewarrior.com/</a>
<br> Thanks to LCS/Telegraphics for Wintab, the Windows
tablet library.
<br>
wintab@pointing.com
<br> Thanks to David McAllister for the Particle System
library.
<br>
davemc@cs.unc.edu
<br> <a href="http://www.cs.unc.edu/~davemc/Particle/">http://www.cs.unc.edu/~davemc/Particle/</a>
<br> Thanks to John Stone for the Space Orb library,
libOrb
<br>
j.stone@acm.org
<br> <a href="http://www.umr.edu/~johns/projects/liborb/">http://www.umr.edu/~johns/projects/liborb/</a>
<p>----
<br><a NAME="1.10"></a>1.10) Are there any restrictions on GEM?
<p>GEM is under the Gnu Public License. This basically
means that it will always be free software.Check out <a href="http://www.gnu.org">http://www.gnu.org</a>
for more information and read the full license in GnuGPL.LICENSE in the GEM release.
<p>----
<br><a NAME="1.11"></a>1.11) How do I use GEM in a performance?
<p>This is a constant problem, because there is no consistent
way to display video on any platform. Also, you usually do not want
to send the entire screen, but only the GEM window. It is also useful
to be able to edit/control the Pd patch window while the patch is actually
running.
<p>On SGIs, the best way is to get a video out option.
On the SGI O2, Impact, and Onyx (Mark has used all of these), there is a
simple connector or breakout box to do video.
If you run the video out program, then you will get a rectangle on your screen
which shows what is being sent out the video connector.
Make your GEM window a little larger than 640x480 and center it in the rectangle.
You can now project this with a standard video projector.
<p>On PCs it is a bit harder.
Several modern video-cards have the possibility to output several screens
(either 2 (or more) VGA-screens or 1 VGA-screen and 1 TV (Composite or S-HVS)
or a combination with DFTs)
If you have a Canopus Voodoo2 card it has a video and s-video output on it. As described
in <a href="#2.12">question 2.12</a>, you can get a Voodoo to work with
GEM. If any one else has a better solution, please let me know.
The nVidia Riva TNTs require that you output the full screen, so this is
not a very good option. You can use a video scan convertor.
Some of them only display a part of the scene, which is exactly what you
want.
<p>With modern multi-headed cards it is more simple:
Configure your card to display the desktop spread over your multiple screens
(e.g.: from left-to-right).
On windows and macOS you can do this via the display-properties dialog.
On linux you will have to edit your /etc/X11/XF86Config-4 file either by hand or
(if your system supports it) via an appropriate editor (yes, nowadays there are some).
Now create your gem-window on the second screen:
it should have the same dimensions as the 2nd screen (e.g: "[dimen 800 600(").
to place it at the second screen use the offset (e.g: if your primary sreen
(the one you want for patch-editing) has the dimension 1024x768 use "[offset 1024 0(",
which will create the gem-window 1024 pixels right of the upper-left corner
of the total screen (and 0 pixels below it),
which is exactly the upper-left corner of the 2nd screen.
You most probably want to turn off the borders with "[border 0(".<br>
<em>Note:</em> some grafix-card have openGL-hardware-acceleration only on the 1st screen
(so you should create the gem-window on the 1st screen and move
your patches to the 2nd screen)
<p>If you are using an XServer for displaying (under linux) you can also use another
computer for rendering.
You can specify the place where the gem-window should be created with something like
"create &lt;<em>render.host</em>&gt;:0.0"
<p>If you are doing audio with graphics, the only solution
to prevent clicking (<a href="#5.1">question 5.1</a>) is to run 2 computers
and have them communicate with netsend/netreceive. We are working
on making Pd/GEM multi-processor friendly, so if you have a multi-processor
system, you can run everything on one machine eventually.
<p>
<hr WIDTH="100%"><a NAME="UsingGem"></a><h3><i>USING GEM</i></h3>
<br><a NAME="2.1"></a>2.1)How do I (???)
<p>Many of the general usage questions are probably
answered in the manual or release notes. The pd mailing list is also
a good place to find answers as well.
<p><a NAME="2.2"></a>2.2) How do I make GEM run?
<p>GEM is not an executable. It requires Pd to
work and is loaded in at run time. For example, I have an alias on
the SGI which does
<p>/usr/people/mdanks/pd/bin/pd -lib /usr/people/mdanks/pd/gem/Gem
<p>and on WinNT
<p>\pdDir\pd\bin\pd -lib /pdDir/pd/gem/Gem
<p>on UNIX-systems you will probably want to use a <tt>.pdrc</tt> file,
where you can put the command-line arguments for pd that you "always" need.
<p>If you don't see a startup message from GEM, then something went wrong.
<p>Most people use use the command shell to start Pd.
It is not very difficult to configure Pd to run from double-clicking on the icon.
<p>----
<br><a NAME="2.3"></a>2.3) Why doesn't GEM run?
<p><b>Notice that the -lib flag always requires Unix
styles slashes</b>. This is the case even on Windows.
<p>You may also want to use the -nosound flag.
For instance, my PC has problems using audio (it leaks memory), so I just
turn off the audio part of Pd. However, other people can't get GEM
to work if the -nosound is used (on Win95). You can also try the
-dac or -adc flags (for digital-analog-conversion only and analog-digital-conversion
only).
<p>----
<br><a NAME="2.4"></a>2.4) I've got it running. Now what?
<p>Try out the manual. It will step you through
the basics.
<br> You will also want to look at the example files.
Assuming that everything is installed correctly, you can get to the examples
by going to the Help menu in Pd and selecting examples. A bunch of
the patches should start with gem&lt;something>. The best one is
<i>gem/01.basic/01.redSquare.pd</i>
It puts a red square up on the screen and allows you to rotate it. <i>gemImage.pd</i>
shows how to load in a TIFF file. <i>gem/03.lighting/04.moveSpheres.pd</i>
moves two spheres around the screen. Try the other ones.
<br> Most of the GEM objects have test patches which
give some information about the various controls for the object.
<p>----
<br><a NAME="2.5"></a>2.5) On IRIX 5.3, why does GEM dump with an rld error?
<p>GEM only works under IRIX 6.2+. The rld error
is probably something about not having glBindTextureEXT (or something).
OpenGL 1.0 has some extensions to speed up texture mapping (which are an
integral part of OpenGL 1.1). However, these don't exist on IRIX
5.3. If you recompile GEM (see the next question), things should
work fine.
<br> I don't have access to an IRIX machine, so don't
expect any builds from me. Upgrading to IRIX 6.2+ is worth it.
<p>----
<br><a NAME="2.6"></a>2.6) Why can't I compile GEM on IRIX 5.3?
<p>There was probably an error saying that the compiler
couldn't find the file "dmedia/vl_vino.h" in pix_videoSGI.cpp. IRIX
6.2+ adds new functionality to the media libraries which makes life much
easier. You cannot compile pix_video or pix_indycam as is under 5.3.
You can remove them from the Pix/Makefile and from the linker part of the
global Makefile. You will also need to recompile the Td and Tiff
libraries.
<p>There shouldn't be any problems doing this. I haven't tried any
of this, so if it works for someone, please let me know.
<p>----
<br><a NAME="2.7"></a>2.7) Why is GEM slow in general?
<p>Examine what you are doing. If you are constantly
changing textures, then this is probably your problem. If you have
models with a million triangles, then this is probably the problem.
Compare what you are doing with realistic specs on your system. Some
systems slow down when they have to draw very large polygons (slow fill
rate).
<br> You can also turn on profiling to see how long it
takes to render a frame. Send a profile message to the gemwin object.
The number that is printed is the number of milliseconds one frame takes
to render. 50 milliseconds is 20 frames per second. 'profile 2' is
good if you want to see how long the image processing is taking.
<br> profile 0 - turn off profiling
<br> profile 1 - turn on profiling
<br> profile 2 - turn on profiling
and don't cache pixes
<p>----
<br><a NAME="2.8"></a>2.8) Why is GEM slow on IRIX?
<p>If you are having major slowdowns, then please let
me know. I have gotten very good performance on most machines (Indy,
O2, Impact, Onyx2).
<p>----
<br><a NAME="2.9"></a>2.9) Why is GEM slow on WinNT/Win95?
<p>You probably don't have hardware acceleration.
You can use software rendering, but it basically useless except for extremely
basic patches. You can get a good graphics accelerator for really
cheap these days. I recommend a card based on nVidia's chipsets,
such as the TNT2 or GeForce, but there are other companies such as 3dfx
and Matrox. Make sure that you are running the latest drivers for
your card. The basic drivers that come with the cards are usually
very bad.
<br> Also, PCs don't deal with lots of texture maps very
well (they are bus limited, at least until AGP), so if you are trying to
use lots of constantly changing texture maps
(especially with [pix_multiimage], [pix_video] or [pix_film]), that will cause problems.
<p>----
<br><a NAME="2.10"></a>2.10) Why is GEM slow on Linux?
<p>It is because you have to use Mesa, which might be
running iin software. Mesa (<a href="http://www.mesa.org">http://www.mesa.org</a>)
is an awesome package by Brian Paul (brianp@avid.com) which "emulates"
OpenGL. Basically, it is a fully compliant OpenGL package, but it
isn't officially sanctioned by the OpenGL ARB, such, it is doesn't have
the OpenGL name. There is an acceleration package for the many graphics
card, but I don't know anything about it.
<br>nVidia is being very supportive of Linux:
their TNT2 and GeForce cards work under Linux with hardware-acceleration of openGL.
(but the drivers are proprietary)
<br>radeon cards should also be supported very well under linux (even with open-source drivers)
<p>----
<br><a NAME="2.11"></a>2.11) If I resize the window, everything looks strange.
<p>GEM doesn't trap resize events in IRIX or Linux (this
is not a problem in WinNT). This means that OpenGL doesn't have the
correct information to render properly. If you want to resize the
window, send a 'dimen x y' message to gemwin before you create the window.
<p>----
<br><a NAME="2.12"></a>2.12) Can GEM run on a 3Dfx Voodoo card?
<p>I (this is: Mark Danks) have a Voodoo2 card, which runs fine under WinNT.
I use the OpenGL beta driver from 3Dfx at work all the time without any
problems and, except that the Voodoo takes over the full screen, it seems
to work fine. You will need to download the OpenGL Beta driver from
3Dfx's web site at http://www.3dfx.com and put the OpenGL32.dll into the
same directory as pd.exe (NOT gem.dll). Debugging patches is much
easier if you have two monitors, one for the 3-D card and one for the 2-D
card.
<p>IMPORTANT: You MUST set the environment variable
<p>GEM_SINGLE_CONTEXT = 1
<p>to make the Voodoo card work. It will make a window 640x480 (which
is the correct size for TV video out on my Canopus V2 card). On WinNT,
right click "My Computer" and go to "Properties". On the "Environment"
tab, you need to add the variable "GEM_SINGLE_CONTEXT" with a value of
1.
<br>Resizing the GEM window with a Voodoo card is not
a great idea. The Voodoo card can only display certain window sizes and
will clip the graphics.
<p>For the tech heads in the audience...I create an
OpenGL context at startup and never actually display its associated window.
This means that GEM objects can create display lists, call OpenGL commands,
etc. in their constructors, even if no window is actually being displayed.
However, with the Voodoo card, there can only be one OpenGL context.
So, instead of creating one context and just holding onto it in the background,
I create the normal GEM window and associate the OpenGL context with it...and
the user can never destroy or close that window.
<p>----
<br><a NAME="2.13"></a>2.13) Will GEM support hardware transform and lighting
(T &amp; L)?
<p>Absolutely! Unlike some other APIs, OpenGL
will automatically use hardware accelerated transform and lighting if the
card has it. GEM gets great performance from cards like nVidia's
GeForce.
<p><a NAME="2.14"></a>2.14) I get an error "GEM needs Truecolor visual
support".
<p>This error means that your X display is running with
paletted colors, which is the result of limited color depth. If you
start the X display with
<p>startx -- -bpp 16
<p>or some higher number, then it should work fine. 32-bit color
is the best.
<p>
<hr WIDTH="100%"><a NAME="ViewingObjects"></a><h3><i>VIEWING OBJECTS</i></h3>
<br><a NAME="3.1"></a>3.1)Why does everything seem dim?<
<p>You probably turned on lighting but don't have any
lights in the world. Either add a light with <i>world_light</i> or
<i>light</i>
or turn lighting off by sending a message 'lighting 0' to the <i>gemwin</i>.
You can also send a reset message to <i>gemwin</i> to set it back to the
startup state (which doesn't have any lighting).
<p>----
<br><a NAME="3.2"></a>3.2) Why does everything seem dark?
<p>See question 3.1.
<br> If you are using <tt>view</tt> in your patch to change the viewpoint,
you may not be pointing in the correct direction. You also might have translated
everything outside of the current viewport.
<br> Also, if you have been using single buffering ('buffer
1' message to <i>gemwin</i>), then you might still be in that mode.
Either send a 'buffer 2' message or a 'reset' message to <i>gemwin</i>.
Then, destroy and create your window.
<p>
<hr WIDTH="100%"><a NAME="TextureMapping"></a><h3><i>TEXTURE MAPPING</i></h3>
<br><a NAME="4.1"></a>4.1) My image doesn't appear. What is going
on?
<p>Normally images have to be texture-mapped onto Geos.
You have to use [pix_texture] to map the current image onto a Geo.
"Current" means that any pix-manipulation that is done after texturing will not be displayed.
<p>Any Geo has a color (which is initially set to white).
If you have set the color to black, your Geo (including the image) might be very dark.
If you are using alpha-blending, make sure that the Geo is not invisible.
<p>Normally images that want to be texture mapped with openGL should have dimensions that are a power of 2 in both height and width.
Now [pix_texture] will make this totally transparent to you (so normally you don't have to care about the size of the image).
However with non-power-of-2 images <i>pix_coordinate</i> might not behave as expected,
because these images need absolute texture-coordinates rather than normalized ones
(as are used with power-of-2 images): so if the texture-coordinates are set to "(0,0) (1,0) (1,1) (0,1)" you might see only the first pixel of the image (which might be black).
<p>Also, make sure that GEM can find your image (ie,
that the path name is correct).
<p>----
<br><a NAME="4.2"></a>4.2) My image looks strange. What is going
on?
<p>GEM supports gray8, YUV, and RGBA images. If
it sees that the number of bits per channel and the number of channels
is something that it should be able to handle, it tries to load the raw
data. If you have compressed or stored the pixel data in some "strange"
format, then GEM will probably not read the information correctly.
<br> Also, if it is an RGBA image, then make sure that
the alpha channel is something useful (this only matters if you are using
the alpha channel, like in the alpha object or pix_mask).
<p>----
<br><a NAME="4.3"></a>4.3) Why does GEM say that it can't handle a gray
image?
<p>This error message occurs whenever a pix object receives
a gray8 image and the implementor hasn't provided a way to deal with that
format of image. (Implementors often only provide functions for GEM's <i>native</i>
color-format RGBA. Any other color-format (like BGR) will try to call the function
for gray8 images, which might not be supported.)
If you do not want to change the image format with some extern image-programm
(like Photoshop or the Gimp) you might want to try <i>pix_rgba</a>
or harass whoever made the object to add the functionality.
<p>----
<br><a NAME="4.4"></a>4.4) What image formats can GEM handle?
<p>GEM can read in TIFF, JPEG, and SGI images.
These can be in any color format. Gray scale images are loaded in
as gray scale (ie, one byte per pixel). Everything else is loaded
in or converted to an RGBA image (ie, four bytes per pixel). If there
is an alpha channel, then it will be respected. Otherwise, the alpha
channel will be set to fully opaque (alpha == 255).
<p>GEM can write TIFF and JPEG images.
TIFF-images will be full RGBA-images, wheras JPEG-files only support (compressed) RGB.
<p>----
<br><a NAME="4.5"></a>4.5) What movie formats can GEM handle?
<p>The movie formats GEM can handle (still) depend on the platform
you are using.
<p>On Windoze you can read all AVI-files you have codecs for
<p>On linux the readable formats depend on the libraries you had installed when you compiled GEM.
Currently there is (optional) support for AVI, quicktime (*.MOV) and MPEG (*.MPG) files.
Not all quicktime-formats are supported. This is unfortunate but is due to linux restrictions.
I highly recommend that you install the mpeg3-library from Heroine because it is much more stable than mpeg1 (which comes with many linux-distributions).
If you have compiled in support for libavifile, you will be able to open Micro$oft-AVI-files.
If you have installed the proper codecs
(libavifile supports a mechanism for loading codecs from windows-DLLs) you should be able to
open almost any format.
If you have serious problems, mail them <a href="mailto:zmoelnig@iem.at">to me</a>.
(Be ready to upload the movie-file that won't work)
<p>----
<br><a NAME="4.6"></a>4.6) Why is <i>pix_draw</i> so slow?
<p><i>pix_draw</i> is almost never hardware accelerated
on PCs graphics accelerator. This means that it runs <i>extremely</i>
slowly. Always use <i>pix_texture</i>, even if you are just displaying
an image.
<p>
<hr WIDTH="100%"><a NAME="WorkingWithPd"></a><h3><i>WORKING WITH PD</i></h3>
<br><a NAME="5.1"></a>5.1) Why do I get clicks in the audio?
<p>If you are getting a constant stream of clicks in
your audio, then it is probably because you are trying to do graphics and
audio in the same process. Rendering a graphics frame usually takes
longer than the size of the audio buffer, which is why you get clicks (the
clicks are usually at 20Hz...the typical frame rate).
<br> One way around this is to use two computers, one
for graphics and one for audio. If you have enough processing power
(or dual processors), then you can run two versions of Pd, one for graphics
and one for audio. Just use <i>netsend</i> and <i>netreceive</i>
to have the two versions of Pd talk to each other.
<p>----
<br><a NAME="5.2"></a>5.2) How do I get audio data to GEM?
<p>One simple way to get raw audio values right now is
to use <i>snapshot~</i>. Just set up a <i>metro</i> which bangs <i>snapshot~</i>
and use the floating point value. If you want "musical" information,
then use objects such as <i>env~</i>.
You might also have a look at the <i>pix_sig2pix~</i> which interprets audio-data as pixels
and its counterpart <i>pix_pix2sig~</i>
<p>----
<br><a NAME="5.3"></a>5.3) Why can't GEM find an image/model file?
<p>This means that GEM can't locate the file.
If you use an absolute path (with / for instance), then GEM will look there.
Otherwise, GEM will look in the directory of where the patch is.
Then pd/GEM will search the paths you specified at startup with the <i>-path</i> flag.
<p>Check the following:
<p>1) Does the file exist?
<br> 2) Did you make a typo in the filename?
<br> 3) Is the file in the search-path ?
<p>----
<br><a NAME="5.4"></a>5.4) How can I optimize my patches?
<p>One of the biggest performance hits is having UI
elements in your patch which have to be updated. The biggest performance
hog is the number box. While the number box is great for debugging,
make sure that they are all gone from your "release" patch. If you
run a performance meter, you will see that whenever Tcl/Tk has to update
the user interface, it sucks the entire processor. Another examples
of this is when you move a lot of objects at once, everything jerks and
slides across the screen. There are probably ways to improve this...
<br> Another problem is doing unneccessary calculations.
When you are throwing lots of numbers around, especially packing/unpacking,
doing vector math, etc., they add up. If the calculations are going
unused (for instance, that part of the patch is turned off), then do not
trigger the math objects. Use <i>spigot</i> or <i>gate</i> and block
the events early. This is especially important with objects that
send a lot of numbers, like ~ objects or <i>line</i>/<i>tripleLine</i>.
<p>
<hr WIDTH="100%"><a NAME="NewGemObjects"></a><h3><i>WRITING NEW GEM OBJECTS</i></h3>
<br><a NAME="6.1"></a>6.1) How do I write a new GEM object?
<p>For the time being, you have to look at the code.
It is fairly well documented and straight forward (if you know C++ and
OOP). Start with an object which is similar to what you want and
derive a new class. The biggest issue right now is how to load in
GEM as a DSO/DLL. For SGIs, you will need to setenv LD_LIBRARY_PATH.
On NT, you will need to have your path include the directory with GEM.
<p>----
<br><a NAME="6.2"></a>6.2) What are the default OpenGL states?
<p>GemMan (and by association, gemwin) disables alpha
testing, alpha blending, culling, and lighting. Lighting defaults
to two sided, with GL_COLOR_MATERIAL enabled. The viewport is set
to
<p>float xDivy = (float)m_width / (float)m_height;
<br> glMatrixMode(GL_PROJECTION);
<br> glLoadIdentity();
<br> glFrustum(-xDivy, xDivy, -1.0, 1.0, 1.0, 20.0);
<br> gluLookAt(0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0, 1.0,
0.0);
<br> glMatrixMode(GL_MODELVIEW);
<br> glViewport(0, 0, m_width, m_height);
<p>which gives a range of about -4 to 4 in X and Y at the origin.
This is a small range, but changing it now would break a lot of patches.
<p>The specific functions to look at are:
<p>GemMan::windowInit()
<br>GemMan::resetValues()
<br>gemhead::renderGL()
<p>
<hr WIDTH="100%"><a NAME="ObjectSpecific"></a><h3><i>OBJECT SPECIFIC</i></h3>
<br><a NAME="7.1"></a>7.1) Why doesn't &lt;object> exist on &lt;platform>?
<p>Usually, this is because I don't have the resources
to get the object running on that platform. If an object that you
want doesn't exist on your platform, then ask for it! However, if
it is tied to hardware, then it is much less likely that I will be able
to do anything about it (unless someone donates the hardware to me...)
<p>----
<br><a NAME="7.2"></a>7.2) Why doesn't <i>gemtablet</i> work?
<p><i>gemtablet</i> only works on WinNT. I don't
have drivers for IRIX or Linux (also, see question 7.4)
<br> If GEM can find the tablet, then it will print a
message at window creation time. If you don't see a message, then
GEM doesn't think that you have a tablet.
<br> The tablet is mapped to the size of the GEM graphics
window.
<p>---
<br><a NAME="7.3"></a>7.3) I don't want GEM to take over my tablet.
How do I stop it?
<p>Set the environment variable
<p>GEM_NO_TABLET = 1
<p>----
<br><a NAME="7.4"></a>7.4) Why doesn't <i>gemmouse</i> work in IRIX?
<p>Basically, I don't have physical access to an SGI machine.
This makes it hard to do some of the OS specific work.
It should be straightforward to do the event handling, so if someone gets
it working, I would love to include it (and give you credit). All
you have to do is call the correct event functions from GemEvent.h and
everything should just start to work (ie, gemmouse doesn't have any OS
specific code in it).
<p>----
<br><a NAME="7.5"></a>7.5) Why doesn't gemorb work?
<p>You need to make sure that your SpaceOrb is hooked
up correctly. I am using a library which isn't supported by SpaceTec so
there can be problems, although I have not had any.
<br> &lt;RANT> When will companies wake up and actually
provide drivers and support for their products under WinNT? &lt;/RANT>
<p>----
<br><a NAME="7.6"></a>7.6) What is wrong with <i>pix_video</i> in WinNT?
<p>I haven't completely figured out how to get access
to the video stream in WinNT. I'm using Video for Windows with a
Connectix QuickCam, as well as an Intel Video Capture Card, and it seems
to assume that you are only writing to a file or previewing into a window.
Windows tries to take over the system and doesn't really provide any stable
hooks (unlike IRIX). If anyone knows how to deal with this, please
let me know.
<p><a href="index.html">[return]</a>
<br>
<br>
</body>
</html>

View file

@ -1,140 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
<title>Using GEM with Pd</title>
</head>
<body>
<center>
<h2>
<u>Using GEM with Pd</u></h2></center>
&nbsp;&nbsp;&nbsp; An important fact is that GEM is NOT an application.
It is a library that the application Pd loads in at run-time.&nbsp; Most
of this information is taken directly from the GEM FAQ.
<p><a href="#GEMIrix">How do I install GEM on IRIX?</a>
<br><a href="#GEMWinNT">How do I install GEM on Win95/NT/2k?</a>
<br><a href="#GEMlinux">How do I install GEM on linux?</a>
<br><a href="#GEMmacos">How do I install GEM on macOS-X?</a>
<br><a href="#runIRIX">How do I run GEM on IRIX?</a>
<br><a href="#runWinNT">How do I run GEM on Win95/NT/2k?</a>
<br><a href="#runlinux">How do I run GEM on linux?</a>
<br><a href="#runmacos">How do I run GEM on linux?</a>
<br><a href="#noRun">Why doesn't GEM run?</a>
<p><img SRC="tribar.gif" height=13 width=561>
<h4>
<a NAME="GEMIrix"></a><u>How do I install GEM and Pd on IRIX?</u></h4>
See the readme for installing Pd.
<p>Uncompress and untar the GEM file that you downloaded.&nbsp; GEM should
be located at
<p>pd/gem
<p>depending on where you have installed Pd.
<p>If you run the shell script, GEM.INSTALL.sh, then all of the example
files and documention
<br>should be put in the correct locations.
<p><img SRC="tribar.gif" height=13 width=561>
<h4>
<a NAME="GEMWinNT"></a><u>How do I install GEM and Pd on WinNT?</u></h4>
See the readme for installing Pd.
<p>TODO: there should be a install package somewhere
<p>Unzip the GEM file that you downloaded so that it is at
<p>pd\gem
<p>depending on where you have installed Pd.
<p>If you run GEM.INSTALL.bat, then all of the example files and documentation
should be put in the correct locations.
<p><img SRC="tribar.gif" height=13 width=561>
<h4>
<a NAME="GEMlinux"></a><u>How do I install GEM and Pd on linux?</u></h4>
See the readme for installing Pd.
<p>Uncompress and untar the GEM file that you downloaded so that it is at
<p>pd/gem
<p>depending on where you have installed Pd.
<p>chdir into &lt;pd/gem&gt;/src/Gnu
<p>read the README.build
<p>run <tt>./configure</tt> and afterwards <tt>make</tt>
<p>If you run <tt>make install</tt>, then all of the example files and documentation
should be put in the correct locations.
<p><img SRC="tribar.gif" height=13 width=561>
<h4>
<a NAME="GEMmacos"></a><u>How do I install GEM and Pd on macOS-X?</u></h4>
See the readme for installing Pd.
<p>TODO: there should be a install package somewhere
<p><img SRC="tribar.gif" height=13 width=561>
<h4>
<a NAME="runIRIX"></a><u>How do I run GEM on IRIX?</u></h4>
&nbsp;&nbsp; To use GEM type something like:
<p>/usr/people/mdanks/pd/bin/pd -lib /usr/people/mdanks/pd/gem/Gem
<p>(where /usr/people/mdanks is the path to the pd directory). Check out
the README for Pd to see examples of the -lib flag. If you just try to
"run" GEM, you will get an error! Notice that last word is a capital Gem.
If you get a "can't find gem_setup" error, then that is the problem. Look
in the GEM FAQ
<br>for trouble shooting suggestions.
<p>If you don't see startup messages from GEM, then something went wrong.
<br>Also, you might need to add pd/bin to your PATH environment variable.
<p><img SRC="tribar.gif" height=13 width=561>
<h4>
<a NAME="runWinNT"></a><u>How do I run GEM on Win95/NT?</u></h4>
&nbsp;&nbsp;&nbsp; It is best to start Pd from a DOS command line.&nbsp;
If you go to the Start menu, you should find an application called "Command
Prompt" under the Program menu.&nbsp; You need to change to the drive where
you installed Pd.&nbsp; For instance, if it is on your D: drive, just type
d: at the prompt.
<p>&nbsp;&nbsp; To use GEM type something like:
<p>\pd\bin\pd -lib /pd/gem/Gem
<p>depending on where you installed Pd.
<p>&nbsp;&nbsp;&nbsp; Check out the README for Pd to see examples of the
-lib flag. If you just try to double click GEM, you will get an error!
Notice that last word is a capital Gem. If you get a "can't find gem_setup"
error, then that is the problem. Look in the GEM FAQ for trouble shooting
suggestions.
<p>If you don't see a startup message from GEM, then something went wrong.
<p>&nbsp;&nbsp;&nbsp; Most people use the command shell to start Pd.&nbsp;
It is difficult to configure Pd to run from double-clicking on the icon.
<p>&nbsp;&nbsp;&nbsp; Also, you might need to add pd/bin to your PATH environment
variable.
<p><img SRC="tribar.gif" height=13 width=561>
<h4>
<a NAME="runIRIX"></a><u>How do I run GEM on linux?</u></h4>
&nbsp;&nbsp; To use GEM type something like:
<p>/usr/people/mdanks/pd/bin/pd -lib /usr/people/mdanks/pd/gem/Gem
<p>(where /usr/people/mdanks is the path to the pd directory). Check out
the README for Pd to see examples of the -lib flag. If you just try to
"run" GEM, you will get an error! Notice that last word is a capital Gem.
If you get a "can't find gem_setup" error, then that is the problem. Look
in the GEM FAQ
<br>for trouble shooting suggestions.
<p>If you don't see startup messages from GEM, then something went wrong.
<br>Also, you might need to add pd/bin to your PATH environment variable.
<p><img SRC="tribar.gif" height=13 width=561>
<h4>
<a NAME="runIRIX"></a><u>How do I run GEM on macOS-X?</u></h4>
&nbsp;&nbsp; To use GEM type something like:
<code>/usr/local/bin/pd -lib /Users/zmoelnig/pd/Gem</code>
<p>(where /usr/local/bin/pd is the path to the pd directory and
/Users/zmoelnig/pd is the path where the <i>Gem.pd_darwin</i> resides).
Check out the README for Pd to see examples of the -lib flag. If you just try to
"run" GEM, you will get an error! Notice that last word is a capital Gem.
If you get a "can't find gem_setup" error, then that is the problem. Look
in the GEM FAQ
<br>for trouble shooting suggestions.
<p>If you don't see startup messages from GEM, then something went wrong.
<br>Also, you might need to add pd/bin to your PATH environment variable.
<p><img SRC="tribar.gif" height=13 width=561>
<h4>
<a NAME="noRun"></a><u>Why doesn't GEM run?</u></h4>
&nbsp;&nbsp;&nbsp; Notice that the -lib flag always requires Unix styles
slashes, even if you are on Windows.&nbsp; This means that you need to
do <i>-lib /gem/Gem</i>, not <i>-lib \gem\Gem</i>
<p>&nbsp;&nbsp;&nbsp; You may also want to use the -nosound flag.&nbsp;
For instance, my PC has problems using audio (it leaks memory), so I just
turn off the audio part of Pd.&nbsp; However, other people can't get GEM
to work if the -nosound is used (on Win95).&nbsp; You can also try the
-dac or -adc flags (for digital-analog-conversion only and analog-digital-conversion
only).
<p><a href="index.html">[return]</a>
<br>&nbsp;
</body>
</html>

View file

@ -1,41 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
<title>Glossary/Index</title>
</head>
<body>
<center>
<h2>
<u>Glossary</u></h2></center>
<a NAME="Alpha"></a>Alpha - The amount of opacity.&nbsp; An alpha equal
to 1.0 means completely opaque.&nbsp; An alpha equal to 0.0 means completely
transparent.
<p><a NAME="Controls"></a>Controls - GEM objects which access the low levels
of GEM, such as window managers.
<p><a NAME="Geos"></a>Geos - GEM objects which have a shape of some kind,
such as a cube.
<p><a NAME="Manips"></a>Manips - GEM objects which manipulate the geos.
<p><a NAME="MarkEx"></a>MarkEx - A collection of objects which help with
data manipulation, especially for usage in GEM.
<p><a NAME="Nongeos"></a>Nongeos - GEM objects which do not have an explicit
shape, yet affect the rendering in some way.
<p><a NAME="OpenGL"></a><a href="http://www.opengl.org">OpenGL</a> - A
graphics API which exists on many different platforms.<br>
Gem can <i>also</i> be used as a wrapper for openGL, allowing to program openGL without having to
compile
<p><a NAME="Particles"></a>Particles - GEM objects which involve the particle
system.
<p><a NAME="Pd"></a><a href="http://pd.iem.at">Pd</a>
- A visual programming language for audio processing.&nbsp; This is the
host application for GEM.
<p><a NAME="Pixes"></a>Pixes - Image processing objects in GEM
<p><a NAME="Texture"></a>Texture mapping - Applying an image to a geometric
object.
<p><a href="index.html">[return]</a>
<br>&nbsp;
</body>
</html>

View file

@ -1,112 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="Author" content="IOhannes m zmölnig">
<title>Images</title>
</head>
<body>
<center>
<h2>
<u>Dealing with Images</u></h2></center>
Images are files which are loaded into GEM. The images can be manipulated,
applied to objects, and used in any number of different ways. In
this section, you will load in an image and display it on the screen.
This section will not apply the images to a <i>geo</i>; that occurs in
the next part of the manual.
<p>The pix objects are GEM objects which deal with <i>pix</i>els.
They do everything from loading in images to applying filters to the data.
The objects in this section of the manual only load in pix data from outside
sources. How you actually display the image is up to you. The
most common usages are with <i>[pix_draw]</i> and <i>[pix_texture]</i>.
<p><b>Warning</b>: <i>[pix_draw]</i> is almost always slower than <i>[pix_texture]</i>.
Because <i>[pix_draw]</i> is easier to use than <i>[pix_texture]</i>, it is
used in these examples. However, in any real usage or piece, <i>[pix_texture]</i>
should always be used instead. <i>[pix_draw]</i> is slow because PC
graphics accelerators do not provide hardware acceleration for that functionality.
<i>[pix_texture]</i> does have hardware acceleration and will be much faster.
<p><a href="#pix_image">[pix_image]</a> - load in an image
<br><a href="#pix_multiimage">[pix_multiimage]</a> - load in multiple images
<br><a href="#pix_movie">[pix_movie]</a> - load in a movie file
<br><a href="#pix_video">[pix_video]</a> - use a real time video source
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="pix_image"></a>[pix_image]</h3>
<i>[pix_image]</i> is used to load in images. Images can be in a variety
of different formats, including TIFF, JPEG, and SGI formats. The
patch gem_pix/gemImage.pd is the simplest use of the <i>[pix_image]</i> object.
In this patch, the <i>[pix_image]</i> object loads in the file dancer.JPG.
<center>
<p><img SRC="pixImage.jpg" BORDER=1 height=180 width=151></center>
<p>As is the case with every GEM chain, this patch starts with the <i>[gemhead]</i>
object. The next object is <i>[pix_image]</i>, which actually loads
the image. <i>[pix_image]</i> makes the file dancer.JPG the current
pixel data, which will be used in all subsequent operations in the chain.
The <i>[translateXYZ]</i> object is used to move the image around.
Finally, the <i>[pix_draw]</i> object renders the pixel data to the screen.
<p>The patch mentions that changing the Z in <i>[translateXYZ]</i> does not
change the size of the image, as would occur with a <i>geo</i> object like
<i>[square]</i>.
This is because <i>[pix_draw]</i> simply draws the pixel at the current raster
position, without any transformation. If you want to change the size
on the fly and rotate the image, you need to texture map the pix, which
is described in the next section.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="pix_multiimage"></a>[pix_multiimage]</h3>
The <i>[pix_image]</i> object only loads in one image at time. If you
try to change the image rapidly while the patch is running, you will notice
a lag every time it has to load in a new file. To avoid this lag,
there is another object called <i>[pix_multiimage]</i>. If you look
at patch gem_pix/gemMultiImage.pd, you will see this object in action.
<p>Basically, the * in the file name is replaced by the number that you
pass in. This allows you to play sequences of images with random
access. The one downside is that every image is loaded into memory
when the object is created, so you need to have a lot of RAM to use it.
<p><img SRC="tribar.gif" height=13 width=561>
<h3><a NAME="pix_movie"></a>[pix_movie]/[pix_film]</h3>
These objects are used to read movie-files from disk (or if supported from the internet).
The movie is streamed off of disk,
using whatever decompression libraries are installed on your computer.
On Windows AVI movies seem to work fine,
but there is also a prelaminary support for quicktimes (and mpeg).
On macOS-X all formats supported by the system (basically: quicktime) should work ok.
On linux the support is highly depending on what libraries are installed during compile time.
There is support for MPEG (with libmpeg1 or (preferred:) libmpeg3),
quicktime (either libquicktime or quicktime4linux;
most likely you will not be able to decode quicktimes with proprietary codecs)
and AVI (with libavifile which is able to utilize windows-dlls for (proprietary) codecs).
There is also some rudimentary support for FFMPEG.
The right inlet of <i>[pix_movie]</i>
accepts a number to specify the frame to display. Look at 04.pix/04.movie.pd
for an image.
<p>A key fact of <i>[pix_movie]</i> is that it immediately sends the movie
data to OpenGL as a texture map. This means that you do not need
the <i>[pix_texture]</i> object in your chain. This also means that
you cannot process the movie data with pix objects. The main reason
for this is that it removes the need for a copy of all of the movie data.
If you want to apply some image-processing, you will have to use <i>[pix_film]</i>
(and <i>[pix_texture]</i> for texture-mapping).
<p>Some of the geos will not texture map the <i>[pix_movie]</i> data correctly.
Cone and sphere do not use texture coordinates when they are provided,
so when you display a movie on one of these objects, you will have a black
region (unless your movie size is a power of two...however, most movies
are 320x160 pixels or something). This will be fixed in a future
release.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="pix_video"></a>pix_video</h3>
The "image" can come from the <i>[pix_video]</i> object.
This means that you can use a real-time video source and display it on the screen.
<p>You can play with <i>[pix_video]</i> with the patches in 04.video/.
The patches are explained in more depth in the advanced section of the GEM manual.
<p><img SRC="tribar.gif" height=13 width=561>
<p><a href="index.html">[return]</a>
<br>
</body>
</html>

View file

@ -1,19 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
<title>Input devices</title>
</head>
<body>
<center>
<h2>
<u>Input devices</u></h2></center>
<p><br>Nothing here yet
<p><a href="index.html">[return]</a>
<br>&nbsp;
</body>
</html>

View file

@ -1,62 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
<title>GEM - Introduction</title>
</head>
<body>
<center>
<h2>
<u>Introduction</u></h2></center>
GEM is the Graphics Environment for Multimedia. It was originally written by
<a href="http://www.danks.org/mark">Mark Danks</a> to generate real-time computer graphics,
especially for audio-visual compositions.
Because GEM is a visual programming environment, users do not need any experience
in traditional computer languages.
<p>GEM is a collection of externals which allow the user to create
<a href="http://www.opengl.org">OpenGL</a>
graphics within <a href="http://www.crca.ucsd.edu/~msp/software.html">Pd</a>,
a program for real-time audio processing by <a href="http://www.crca.ucsd.edu/~msp">Miller
Puckette</a> (of <a href="http://www.ircam.fr">Max</a> fame).
<p>There are many different shapes and objects, including polygonal graphics,
lighting, texture mapping, image processing, and camera motion. All of
this is possible in real-time without any previous programming experience.
Because GEM is an add-on library for <a href="http://www.crca.ucsd.edu/~msp/software.html">Pd</a>,
users can combine audio and graphics, controlling one medium from another.
<p>GEM is supported in part by a grant from the <a href="http://www.intel.com">Intel
Research Council</a> for the <a href="http://www.gvm.com">The Global Visual
Music</a> project of <a href="http://felix.usc.edu/vibeke.html">Vibeke
Sorensen</a>, <a href="http://www.crca.ucsd.edu/~msp">Miller Puckette</a>
and <a href="http://www.earunit.org/rand.htm">Rand Steiger</a>.
<p>An important thing to remember is that GEM is NOT an application.&nbsp;
It is a library that Pd loads at run-time.&nbsp; Make sure that you see
the section on <a href="GemWPd.html">using GEM with Pd</a>.&nbsp; This
manual assumes that you have Pd working correctly and can load up patches
already.&nbsp; If you do not have that working yet, look at the Pd manual
and the GEM FAQ.&nbsp; Also, it is assumed that you have a basic understanding
of how to use Pd and the idea behind the data flow model.&nbsp; In other
words, if I ask you to pass a message with 3 floats into an object, you
would know what I mean.
<p>The system requirements vary depending on your system and what you are
trying to do.&nbsp; In general, you should have the most powerful computer
available and the best graphics accelerator on the market.&nbsp; In reality,
people have been doing some amazing work with a Pentium II and an <a href="http://www.nvidia.com">nVidia
Riva TNT</a> or <a href="http://www.3dfx.com">3Dfx Voodoo2</a> card.&nbsp;
If you are on an SGI, then everything from an O2 up seems to be okay.&nbsp;
The biggest requirement is that you have some kind of OpenGL graphics accelerator.&nbsp;
This means that a Matrox Millennium II will not run very quickly.
<p>The other factor is what you are trying to do.&nbsp; Pushing real-time
video around requires a fast bus, which really only exists on SGIs.&nbsp;
Doing thousands of texture mapped polygons is great on a PC...if it is
a constant texture.&nbsp; There are many issues which mean that there is
no one answer to "Is this system good enough?".&nbsp; In general, you will
have to try and see.
<p>GEM is now maintained by <a href="http://www.iem.at/info/personal/jz.htm">IOhannes m zm&ouml;lnig</a>.
So any bug-reports and donations should go to him instead of Mark...
<p><a href="index.html">[return]</a>
<br>&nbsp;
</body>
</html>

View file

@ -1,107 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="Author" content="IOhannes m zmölnig">
<title>Lighting</title>
</head>
<body>
<center>
<h2>
<u>Lighting</u></h2></center>
Lighting is an important factor is how we perceive the quality of an image.
For example, without lighting and shading, a sphere would just look like
a circle. GEM provides two types of lights, a local light and world
light.
<p>OpenGL uses a vertex lighting model. This means that for every
vertex in the scene, the influence of the light is calculated. The
color for the polygon is then modified by the light value of all of the
vertices. This generally produces a very smooth effect, but you will
occasionally run into rendering artifacts, especially if you use local
lights. For example, imagine you have a local light close a large
square. The corners of the square are far away from the light, so
none of them will be lit very brightly, even though the light itself is
very close to the surface of the square.
<p>It is important to realize that lighting is an expensive operation to
use. The number of polygons that you will be able to render will
be much lower if lighting is turned on. As usual, the complexity
of the scene and the speed of your computer and graphics card will greatly
affect your frame rate.
<p>GEM has only a maximum of 8 lights at one time. If you try to
create more lights than that, you will get an error message.
<p><a href="#Activate">Activate lighting</a>
<br><a href="#world_light">[world_light]</a> - A directional light
<br><a href="#light">[light]</a> - A point light in the world
<br><a href="#Moving">Moving lights</a>
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="Activate"></a>Activate lighting</h3>
Lighting is activated by sending a message to <i>[gemwin]</i>. If you
send "lighting 1", then lighting will be turned on. If you send "lighting
0", then lighting will be turned off. The lighting state is kept
even if you destroy the gemwin. This means that if you close a patch
and open another one, the lighting will still be the same.
<p>Individual lights can be turned on and off by sending a 1 or 0 to the
left inlet of the light object itself.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="world_light"></a>[world_light]</h3>
A <i>[world_light]</i> is a light which exists infintely far away.
This reduces the computation needed, so your patch can run faster, but
it means that all of the light rays are parallel. The <i>[world_light]</i>
is good for objects like the sun and other lighting affects. This
means that translating a <i>[world_light]</i> has no effect, although rotation
does.
<p>The following patch is 03.lighting/01.world_light.pd.
<center>
<p><img SRC="world_light.jpg" BORDER=1 height=152 width=370></center>
<p>The <i>[world_light]</i> has one extra inlet. The right inlet accepts
three floats to set the color of the light. A <i>[color]</i> object
would do nothing. In this case, the light is being set to purple.
The <i>[world_light]</i> also accepts a debug message. The debug message
turns on and off a graphical representation of the light in the scene.
The <i>[world_light]</i> looks like a cone. The cone shows the direction
that the light is coming from. Remember that the actual position
of the light does not matter, so geos behind the cone will still be lit.
It is the direction of the light that matters. This is why you can
rotate the light.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="light"></a>[light]</h3>
A <i>[light]</i> object generates a point light in the world. Because
the light is local to the scene, there is more math to generate the effect
of the light on the vertices. However, unlike a <i>[world_light]</i>,
you can translate the <i>[light]</i> object.
<p>Below is the patch 03.lighting/02.light.pd.
<center>
<p><img SRC="light.jpg" BORDER=1 height=215 width=212></center>
<p>The <i>[light]</i> object has a right inlet for the color, just light
the <i>[world_light]</i> object. As this patch shows, the light can
be moved around the scene with both <i>[rotate]</i> and <i>[translate]</i>
objects. If you were to set the translate X value equal to 1.0, then
the sphere would not be lit at all. This is because the light would
be inside of the sphere. When you turn on the debug representation,
it is a sphere with its origin where the light it. The <i>[light]</i>
object does not have any size. It exists as a point source.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="Moving"></a>Moving lights</h3>
The patch 03.lighting/03.controlLights.pd allows you to move a <i>[light]</i>
and <i>[world_light]</i> object in the same scene to see the difference between
the two objects.
<p>The patch 03.lighting/04.moveSpheres.pd is an example which moves
two spheres around the world. Turn on and off the individual lights
for a demonstration of a local versus infinite light.
<p>The patch 03.lighting/05.materials.pd uses the material objects to
selectively control the color of the object. Notice that the diffuse object
sets the "overall" color, while the specular objects sets the bright reflective
area where the light directly shines.
<p><img SRC="tribar.gif" height=13 width=561>
<p><a href="index.html">[return]</a>
<br>
</body>
</html>

View file

@ -1,231 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
<title>List of GEM objects</title>
</head>
<body>
<center>
<h2>
<u>List of GEM objects</u></h2></center>
<a href="#Controls">Controls</a>
<br><a href="#Manips">Manipulators</a>
<br><a href="#Geos">Geos</a>
<br><a href="#Particles">Particles</a>
<br><a href="#Nongeos">Nongeos</a>
<br><a href="#Pixes">Pixes</a>
<br><a href="#TV">TV</a>
<br><a href="#MarkEx">MarkEx</a>
<p>
<hr WIDTH="100%"><a NAME="Controls"></a><i><u>Controls</u></i>
<br>gemhead - the start of rendering chain
<br>gemwin - the window manager
<br>gemmouse - outputs the mouse position and buttons in the GEM window
<br>gemkeyboard - outputs the keycode of a key pressed when you are in the GEM window (there might be different keycodes in Windows/Linux)
<br>gemkeyname - outputs a symbolic description of a key pressed when you are in the GEM window (there might be different symbols in Windows/Linux)
<br>gemorb - outputs the position, rotation, and buttons for a Space Orb
<br>gemtablet - outputs the pen position, pressure, and buttons in the
GEM window
<p>
<hr WIDTH="100%">
<br><a NAME="Manips"></a><i><u>Manipulators</u></i>
<br>accumrotate - accumulate a rotation
<br>alpha - enable/disable alpha blending
<br>ambient - set the ambient color with a vector
<br>ambientRGB - set the ambient color with 3 discrete values
<br>camera -
<br>color - set the color with a vector
<br>colorRGB - set the color with 3 discrete values
<br>depth - enable/disable depth testing
<br>diffuse - set the diffuse color with a vector
<br>diffuseRGB - set the diffuse color with 3 discrete values
<br>emission - set the emissive color with a vector
<br>emissionRGB - set the emissive color with 3 discrete values
<br>linear_path - generate a path from an array of points
<br>ortho - change the view to orthogonal, with the viewport the size of
the window
<br>polygon_smooth - turn on anti-aliasing for the objects below
<br>rotate - rotate with an angle and vector
<br>rotateXYZ - rotate with 3 discrete values
<br>scale - scale with a vector
<br>scaleXYZ - scale with 3 discrete values
<br>separator - push the OpenGL state for the rest of the chain and pop
when done
<br>shininess - set the shininess of an object
<br>specular - set the specular color with a vector
<br>specularRGB - set the specular color with 3 discrete values
<br>spline_path - generate a spline from an array of knots
<br>translate - translate with a vector
<br>translateXYZ - translate with 3 discrete values
<p><a NAME="Geos"></a><i><u>Geos</u></i>
<br>circle - render a circle
<br>colorSquare - render a colored square (evtl. with color gradients)
<br>cone - render a cone
<br>cube - render a cube
<br>cuboid - render a box
<br>curve - render a Bezier curve
<br>curve3d - render a surface
<br>cylinder - render a cylinder
<br>disk - render a disk
<br>imageVert - make pixel colors to a height field map
<br>model - render an Alias|Wavefront model
<br>multimodel - render a series of Alias|Wavefront models, render by number
<br>newWave - render a wave (that is evolving over time)
<br>polygon - render a polygon
<br>primTri - a triangle primitive
<br>rectangle - render a rectangle
<br>ripple - a rectangle with distorted (over time) texture-coordinates
<br>rubber - a grid where you can move one of the grid-points
<br>slideSquare - render a number of sliding squares
<br>sphere - render a sphere
<br>square - render a square
<br>teapot - render a teapot
<br>text2d - render 2-D text (a bitmap)
<br>text3d - render 3-D text (polygonal)
<br>textextruded - render an extruded 3D-text
<br>textoutline - render outlined text (polygonal)
<br>triangle - render a triangle
<p><a NAME="Particles"></a><i><u>Particles</u></i>
<br>part_head - The start of a particle group
<br>part_color - Set the range of colors for the new particles
<br>part_damp - set the damping for particles
<br>part_draw - Apply the actions and render the particles.&nbsp; Accepts
a message "draw line" or "draw point" to change the drawing style.
<br>part_follow - Particles will follow each other like a snake
<br>part_gravity - Have the particles accelerate in a direction
<br>part_info - get the information (position, color, size,...) of each particle
<br>part_killold - Remove particles past a certain age
<br>part_killslow - Remove particles below a certain speed
<br>part_orbitpoint - Orbit the particles around a specified point
<br>part_render - render the remaining gem-tree as particles.
<br>part_size - Set the size of new particles
<br>part_source - Generate particles
<br>part_targetcolor - Change color of the particles toward the specified
color
<br>part_targetsize - Change size of the particles toward the specified
size
<br>part_velocity - Set the velocity domain
(distribution like CONE and the appropriate arguments)
<br>part_vertex - emit a single particle
<p><a NAME="Nongeos"></a><i><u>Nongeos</u></i>
<br>light - make a point light
<br>world_light - make a light at infinity
<p><a NAME="Pixes"></a><i><u>Pixes</u></i>
<br>pix_2grey - convert rgb pixels to grey (still an RGBA image)
<br>pix_a_2grey - convert rgb pixels to grey based on alpha channel
<br>pix_add - add two pixes together
<br>pix_aging - super8-like aging effect
<br>pix_alpha - set the alpha value of a pix
<br>pix_background - let through only pixels that differ from a static "background" image
<br>pix_backlight - a backlight photo effect
<br>pix_biquad - 2p2z-filter for subsequent images
<br>pix_bitmask - apply a bitmask to a pix
<br>pix_blob - get center of gravity
<br>pix_buf - buffer a pix
<br>pix_buffer - storage room for pixes (like [table] for floats)
<br>pix_buffer_read/pix_buffer_write - put/get pixes into/from a pix_buffer
<br>pix_chroma_key - color keying (like "blue-box")
<br>pix_coloralpha - set the alpha-channel of a pix as a mean-value of the color-components
<br>pix_colormatrix - recombine the RGBA-channels with matrix-operation
<br>pix_color - set the color of a pix (leaving alpha alone)
<br>pix_colorreduce - reduce the number of colors (statistically)
<br>pix_composite - composite two pixes together
<br>pix_convolve - convolve a pix with a kernal
<br>pix_coordinate - set the texture coordinates
<br>pix_crop - get a sub-image of a pix
<br>pix_curve - apply color-curves onto a pix
<br>pix_data - get pixel data information
<br>pix_delay - frame-wise delay
<br>pix_diff - get absolute difference of two pixes
<br>pix_dot - rasterize a pix with big dots
<br>pix_draw - draw a pix
<br>pix_dump - dump the pixel-data as a long list of floats
<br>pix_duotone - reduce the number of colors by thresholding
<br>pix_film - use a movie file as a pix source for image-processing
<br>pix_flip - flip the pixels of a pix
<br>pix_gain - apply a gain to a pix
<br>pix_grey - convert any pix into greyscale colorspace
<br>pix_halftone - rasterize a pix like it was printed in a newspaper
<br>pix_histo - get the histogram of a pix
<br>pix_hsv2rgb - transform a pix from HSV-colorspace into RGB-colorspace
<br>pix_image - load in an image file
<br>pix_imageInPlace - load a series of image files directly into texture-buffer, display by number
<br>pix_info - get information about the pix (like dimension, colorspace,...)
<br>pix_invert - invert a pix
<br>pix_kaleidoscope - as if you were looking at the pix through a kaleidoscope
<br>pix_levels - level adjustment
<br>pix_lumaoffset - y-offset pixels depending on their luminance
<br>pix_mask - mask a pix based on another pix
<br>pix_metaimage - recompose an image out of smaller versions of itself
<br>pix_mix - mix to pixes together
<br>pix_motionblur - motionblur an image
<br>pix_movie - use a movie file as a pix source and load it immediately into the texture-buffer
<br>pix_movement - set the alpha-channel with respect to the change between two frames
<br>pix_multiply - multiply two pixes
<br>pix_multiimage - load in a series of image files, display by number
<br>pix_normalize - normalize a pix
<br>pix_offset - add an offset to a pix (wrapping instead of clipping)
<br>pix_pix2sig~ - interpret a pix as 4 (RGBA) audio-signals
<br>pix_posterize - posterization photo effect
<br>pix_puzzle - shuffle an image
<br>pix_rds - generate a Random Dot Stereogram out of the image (aka: Magic Eye (tm))
<br>pix_rectangle - generate a rectangle in a pix buffer
<br>pix_refraction - break up an image into coloured "glass-bricks"
<br>pix_resize - resize a pix to next power of 2
<br>pix_rgb2hsv - transform a pix from RGB-colorspace into HSV-colorspace
<br>pix_rgba - transform a pix of any format into RGBA
<br>pix_roll - (sc)roll through an image (wrapping)
<br>pix_rtx - swap time-axis and x-axis
<br>pix_scanline - take every nth line of the original image
<br>pix_set - set the pixel-data with a long list of floats
<br>pix_sig2pix~ - interpret 4 audio-signals as (RGBA) image-data
<br>pix_snap - capture the render window into a pix
<br>pix_snap2tex - capture the render window directly as a texture
<br>pix_subtract - subtract two pixes
<br>pix_tIIR - time-base Infinite-Impulse-Response filter (for motion-bluring,...) with settable number of poles/zeros
<br>pix_takealpha - take the alpha channel of one pix and put it into another pix
<br>pix_texture - use a pix as a texture map
<br>pix_threshold - apply a threshold to a pix
<br>pix_video - use a video camera as a pix source
<br>pix_write - capture the render window to disk
<br>pix_zoom - zoom into a pix (using OpenGL)
<p><a NAME="openGL"></a><i><u>openGL</u></i>
there are more than 250 objects that
form a complete wrapper around the openGL set of functions
(as defined in the openGL-1.2 standard).<br>
each openGL-function is prefixed with "GEM", eg:
<i>[GEMglVertex3f]</i> is wrapped around <i>glVertex3f</i>.
<p><a NAME="MarkEx"></a><i><u>MarkEx</u></i>
<br>alternate - alternate between two outlets
<br>average - average a sequence of numbers
<br>change - only output on change
<br>counter - count bangs
<br>invert - non-zero numbers to zero, zero to 1
<br>multiselect/multisel - a select object which accepts a list in the
right inlet
<br>oneshot - send a bang, then block until reset
<br>randomF / randF - floating point random numbers
<br>strcat - string concatentation
<br>tripleLine - do a line with three numbers
<br>tripleRand - random with three numbers
<br>vector+ / v+ - add a scalar to a vector
<br>vector- / v- - subtract a scalar from a vector
<br>vector* / v* - multiply a vector by a scalar
<br>vector/ / v/ - divide a vector by a scalar
<br>vectorpack / vpack - attach a scalar to the end of a vector
<br>rgb2hsv - convert a list of three floats from RGB to an HSV value
<br>hsv2rgb - convert a list of three floats from HSV to an RGB value
<br>abs~ - absolute value of a signal
<br>reson~ - resonant filter
<p><a href="index.html">[return]</a>
<br>&nbsp;
<br>&nbsp;
</body>
</html>

View file

@ -1,19 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
<title>Particles</title>
</head>
<body>
<center>
<h2>
<u>Particles</u></h2></center>
<p><br>Nothing here yet
<p><a href="index.html">[return]</a>
<br>&nbsp;
</body>
</html>

View file

@ -1,105 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="Author" content="IOhannes m zmölnig">
<title>Pixes (image processing)</title>
</head>
<body>
<center>
<h2>
<u>Image processing</u></h2></center>
The pix objects are used to do image processing to pixel data. If
you load in an image with <i>[pix_image]</i>, then you can change what the
image looks like before rendering it out
<p>In general, processing images is <i>extremely</i> expensive, so you
probably cannot have that many active pix objects. GEM only reprocesses
images when the source image changes or one of the parameters for a pix
object changes. This means that GEM will only process an image when
something is different, instead of every frame. If you want to do
a lot of processing at start up, but then not change anything once the
patch is running, GEM will only do the computation once.<br>
Modern CPUs use SIMD (Single Instruction - Multiple Data) (like MMX, SSE2, altivec)
to make pixel-processing more effective (by processing data parallely).
Until now, only the macOS version of Gem has support for SIMD for some pix-objects.
MMX/SSE2 boosts will hopefully come in future Gem-releases.
<p>The pix objects are divided into two general groups, those which take
one input, and those which require two input images. For example,
<i>[pix_invert]</i>
will "invert" all of the pixels (if a pixel is white, it will change to
black), while <i>[pix_add]</i> will add two images together.
<p>Only some of the pix objects are described here. Look in the reference
patches for explanations for the other pix objects.
<p><a href="#invert">[pix_invert]</a> - invert the pixel data
<br><a href="#add">[pix_add]</a> - add two pixes together
<br><a href="#mask">[pix_mask]</a> - create an alpha mask
<br><a href="#convolve">[pix_convolve]</a> - convolve a pix with a kernel
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="invert"></a>[pix_invert]</h3>
<i>[pix_invert]</i> inverts the pixels in an image. To use <i>[pix_invert]</i>,
simply make sure that you have already loaded an image into the chain.
In the following patch, the fractal image will be inverted.
<center>
<p><img SRC="invert.jpg" BORDER=1 height=120 width=179></center>
<p>Here is the difference between the fractal image and the inverted version.
<center>
<p><img SRC="normalFrac.jpg" height=256 width=256><img SRC="invertFrac.jpg" height=256 width=256></center>
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="add"></a>pix_add</h3>
<i>[pix_add]</i> does what you would expect. It adds two images together.
<center>
<p><img SRC="add.jpg" BORDER=1 height=152 width=305></center>
<p>This patch adds the fractal image with a car image. The processed
image will often contain a lot of white pixels, because the data is just
added together. This occurs in the resulting image, shown below.
<center>
<p><img SRC="addResult.jpg" height=257 width=255></center>
<p><br>
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="mask"></a>pix_mask</h3>
<i>[pix_mask]</i> is used to create an alpha mask from another image.
In the following example (gem_pix/gemMaskDancer.pd), the fractal image's
alpha channel is replaced by the dancer image. If the <i>[alpha]</i>
object was removed, then you would just see the solid fractal image (because
the alpha channel wouldn't be used).
<p>In other words, images are composed of a red, a green, a blue, and an
alpha channel. The alpha channel is the transparency of the pixel.
<i>[pix_mask]</i> only modifies the alpha channel and does not touch the
red, green, or blue data.
<center>
<p><img SRC="mask.jpg" BORDER=1 height=262 width=191></center>
<p>The result is this image.
<center>
<p><img SRC="maskResult.jpg" height=218 width=187></center>
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="convolve"></a>pix_convolve</h3>
<i>[pix_convolve]</i> convolves pix data with a convolution kernel.
Basically, you can get really nice effects if you choose the correct kernel...and
garbage if you choose the wrong one.
<p>Edge detection is done with a convolution kernel, as is smoothing.
The biggest problem is that convolving an image is about the most expensive
operation that you can do in GEM.
<p>Look at gem_pix/gemPixConvolve.pd to get an idea of some of the kernels
that you can send to <i>[pix_convolve]</i> and the effects that you can get.
<p>If you want to learn the math behind convolution, then find any standard
image processing (or audio processing book, this is just 2D convolution).
<br>
<p><img SRC="tribar.gif" height=13 width=561>
<p><a href="index.html">[return]</a>
<br>
</body>
</html>

View file

@ -1,126 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="Author" content="IOhannes m zmölnig">
<title>Texture mapping</title>
</head>
<body>
<center>
<h2>
<u>Texture Mapping</u></h2></center>
<a href="Gloss.html#Texture">Texture mapping</a> is the act of applying
pixel data to a geometric object. In GEM, this is achieved with the
<i>[pix_texture]</i>
object. It is important to understand that the
<i>[pix_texture]</i>
object merely sets the pix as the current texture. It does not do
any rendering! You need to use a geo object which does texture mapping.
All of the basic geo objects can texture map, such as <i>[square]</i> or
<i>[sphere]</i>.
<p><img SRC="tribar.gif" height=13 width=561>
<p>A simple example of texture mapping is the following patch:
<center>
<p><img SRC="texture.jpg" BORDER=1 height=182 width=160></center>
<p>This patch can be found at 07.texture/01.texture.pd. Change
the number box connected to the rotate object to see what a texture map
on a cube looks like.
<p>The <i>[pix_image]</i> object loads in the fractal image file. The
<i>[pix_texture]</i>
object says that the pix data should be used as a texture map. Notice
that this is different than the previous manual section when we used the
<i>[pix_draw]</i> object. The final object in the chain is the <i>[cube]</i>
object. Because we have enabled texture mapping with the <i>[pix_texture]</i>
object, the cube takes the pix data and applies it to the geometry.
<p><img SRC="tribar.gif" height=13 width=561>
<p>Texture mapping can be used with any GEM object. In the previous
manual section, you saw how to load in pix data with a variety of objects,
including <i>[pix_multiimage]</i> and <i>[pix_video]</i>. All of these
objects can be used with the <i>[pix_texture]</i> object.
<p>Because the pix data is applied to geometry, you can move, rotate, and
scale the image. This is extremely useful on the <i>[square]</i> object.
Instead of doing a one-to-one pixel mapping as occurs with the <i>[pix_draw]</i>
object, you can resize and reshape the image.
<p>OpenGL originally required that images must have dimensions that are power-of-2, such as 64, 128, or 256. This restriction has been released with recent gfx-cards
(like some radeon/nvidia products).
However, if the width or height of an image is not a power of two,
then the <i>[pix_texture]</i> object will take care of this,
and still render it (depending on you hardware with some tricks).
You can thus texture images of any size, but since this is based on tricking
the texture-coordinates, <i>[pix_coordinate]</i> might not give the wanted result any more.
<p><img SRC="tribar.gif" height=13 width=561>
<p>The example patch 07.texture/02.moveImages.pd is a much more complex
patch which uses alpha blending to create a transparent object, in this
case, the dancer. Make sure to turn on the rotation with the <i>[metro]</i>
object.
<p><img SRC="tribar.gif" height=13 width=561><a href="index.html"></a>
<p>People have been asking how textures are handled in GEM. Here
is a long explanation from an email which I wrote.
<p><tt> Here is how textures are dealt with under OpenGL and hardware
accelerators. This can obviously change in the future, but right
now, I am fairly certain that the info is correct (I make games in my day
job, so I have vested interest in this :-)</tt><tt></tt>
<p><tt> The amount of memory (VRAM) on the card (12mb for Voodoo2,
16mb for TNT, 64mb for GeForce2, etc) is used for both textures (TRAM)
and frame buffer space. If you have a large rendering window, like
1600x1200, it will take up 1600x1200x4x3 in 32-bit mode with double buffering
and a Z buffer (or 23mb). Most people run at TV resolution, like
NTSC, so it takes 640x480x4x3 = 3.7mb All of the space left
is for textures onboard the card (FYI, if you have heard that people are
having problems with the PlayStation2, notice that it only has 4mb of VRAM...not
much onboard texture space, huh? :-) Thankfully it has an <i>extremely</i>
fast DMA bus)</tt><tt></tt>
<p><tt> Sooo, when GEM "creates" a texture, it immediately tries
to send the texture to the card, which uses some of the left over space
in the VRAM. If you had a 640x480 window on a Voodoo2, you have ~8mb
of texture space left over. On a GeForce2, ~60mb. The problem
is what happens if you want more textures than can fit into TRAM.
OpenGL requires that the video drivers deal with the problem, so GEM doesn't
care too much (more about this later).</tt><tt></tt>
<p><tt> In most cases, the drivers cache the textures in main memory
and if a texture is requested for rendering and it isn't resident on the
card, it will download it. If you have AGP, then this is pretty quick,
although none of 3dfx cards really take advantage of this (ie, those cards
are about the same speed as the PCI bus). So depending on the number
of textures, and how complex the scene is, you might be able to display
more textures than you have TRAM.</tt><tt></tt>
<p><tt> One slowdown that can happen with GEM is that it makes a
copy of the image before sending it down the chain of objects. If
you are constantly changing images with a pix_multiimage, this can be a
performance hit, but you can modify the actual pixel data with the pix
objects. The pixels aren't sent to the graphics card until the pix_texture
object is reached.</tt><tt></tt>
<p><tt> GEM tries to help with this with a few objects. pix_imageInPlace
acts much the same as pix_multiimage, but it downloads _every_ image in
the sequence to the card when a download message is recieved. It
also immediately turns on texturing, instead of making a copy (ie, you
don't need a pix_texture object). Much faster, but not as flexible.
pix_movie does much the same thing. It sends the pixel data without
copying it if there is a new frame to display.</tt><tt></tt>
<p><tt> The entire pix system uses a caching system so that the copying
and processing only occurs if something actually changes. For example,
if you had a pix_threshold object, it would only process when rendering
started...and every time that the values actually changed. You can
use pix_buf to isolate parts which don't change from those that do, but
it involves another copy.</tt><tt></tt>
<p><tt> On the Voodoo2, the hardware itself limits textures to 256x256...this
will never change. The newest Voodoo5 boards have a higher texture
size.</tt><tt></tt>
<p><tt> If you load the _exact_ same image (this means the exact
same file/path name), then the pix_image has a cache system which means
that it is only loaded into the</tt>
<br><tt>computers memory once. However, each pix_image still sends
its own copy down to the gfx card.</tt><tt></tt>
<p><tt> You could use a single [pix_image]/[pix_texture] with [separator]
to do this...I have done it a lot in the past.</tt><tt></tt>
<p><tt> The reason that [pix_image] doesn't share the actual texture
data is that you can modify the pixel data with other pix objects...[pix_image]
doesn't actually send the texture data to the gfx card, [pix_texture] does.</tt>
<p><img SRC="tribar.gif" height=13 width=561><a href="index.html"></a>
<p><a href="index.html">[return]</a>
<br>
</body>
</html>

View file

@ -1,149 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
<title>Utility objects</title>
</head>
<body>
<center>
<h2>
<u>Utility objects</u></h2></center>
There are a number of objects which were written to make it easier to use
both GEM and pd.&nbsp; For instance, you often pass around 3 floats at
a time in GEM, either for position or colors.&nbsp; To help with this,
there are a collection of vector objects.&nbsp; Use the list below to find
out about the objects.
<p>These objects used to be in a separate library called MarkEx, but they
have now been folded into GEM.
<p><a href="#counter">counter</a> - count the number of bangs
<br><a href="#average">average</a> - average a series of numbers together
<br><a href="#change">change</a> - only output when there is a change in
the number
<br><a href="#invert">invert</a> - invert a number
<br><a href="#randF">randomF/randF</a> - floating point random number
<br><a href="#tripleLine">tripleLine</a> - line object for 3 values
<br><a href="#tripleRand">tripleRand</a> - three random numbers
<br><a href="#vector">vector objects</a> - process a series of numbers
<br><a href="#hsv2rgb">hsv2rgb and rgb2hsv</a> - convert between RGB and
HSV color space
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="counter"></a>counter</h3>
<center><img SRC="counter.jpg" BORDER=1 height=85 width=87></center>
<p>The inlets are:
<br>bang (increment or decrement the counter)
<br>set direction (1 = count up, 2 = count down, 3 = count up and down)
<br>set low value
<br>set hight value
<br>The outlet is the current count.
<p>So in this case, the top <i>counter</i> will count up from 1 to 10.&nbsp;
The bottom <i>counter</i> will count up from 2 to 5.
<p>The <i>counter</i> also accepts the messages reset and clear.&nbsp;
Reset immediately sets the counter to its low value and outputs the value.&nbsp;
The clear message means that the next bang will set the <i>counter</i>
to its low value.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="average"></a>average</h3>
The <i>average</i> object just averages a series of numbers as they come
in.&nbsp; The left inlet accepts a single float.&nbsp; It then outputs
the current average.&nbsp; The default number of floats to average together
is 10, but that can be changed by sending a new value to the right inlet.
<p>The <i>average</i> object also accepts the messages clear and reset.&nbsp;
Clear will immediately set all of the values that the object has been storing
for averaging to 0.&nbsp; With the reset message, you must pass in a number
to set all of the values.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="change"></a>change</h3>
<i>Change</i> only accepts a number into its left inlet.&nbsp; If the number
is the same as the last number sent to the <i>change</i> object, then it
does nothing.&nbsp; If the number is different, then the <i>change</i>
object will output the new number and store it for the next comparision.
<p>This object is very useful for the == object and others like it, since
they send a 0 or a 1 every time they do a comparision, and you usually
only care when the state actually changes.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="invert"></a>invert</h3>
The <i>invert</i> object is very simple.&nbsp; If the number sent to its
left inlet is equal to 0., then <i>invert</i> outputs a 1.&nbsp; If the
number is not equal to 0., the <i>invert</i> outputs a 0.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="randF"></a>randomF/randF</h3>
One problem with the <i>random</i> object in pd is that it only sends out
integers.&nbsp; This a real problem in GEM, where you often want a value
between 0 and 1.&nbsp; <i>randomF</i> is exactly like the <i>random</i>
object.
<p>When the left inlet gets a bang, <i>randomF</i> outputs a random number
between 0 and the given range.&nbsp; The range can be set with a number
to the right inlet.
<p><i>randF</i> is just an alternate name for <i>randomF</i>.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="tripleLine"></a>tripleLine</h3>
<center><img SRC="tripleLine.jpg" BORDER=1 height=92 width=111></center>
<p>The <i>line</i> object is really great for dealing with a single number.&nbsp;
To do a line with 3 values, like an RGB color value, means that you have
to unpack, do a <i>line</i>, then repack the number.&nbsp; Not only is
it a pain, but it expensive computationally.
<p><i>tripleLine</i> behaves just like the <i>line</i> object, only it
accepts three numbers to interpolate between.&nbsp; In the example, <i>tripleLine</i>
will interpolate from the current values to 1., .2, .4 over 1000 milliseconds.&nbsp;
The default output resolution is 50 milliseconds, which is the same default
rendering time.&nbsp; Going faster with GEM objects will not produce any
benefit, unless you increase the frames per second.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="tripleRand"></a>tripleRand</h3>
<center><img SRC="tripleRand.jpg" BORDER=1 height=89 width=149></center>
<p>Just as using <i>tripleLine</i> makes it easier to interpolate between
3 values at once, <i>tripleRand</i> makes it easy to generate three random
values.&nbsp; In the above example, when the bang is sent, <i>tripleRand</i>
will create three values and output them, with the first between 0 - 1,
the second between 0 - .5, and the third from 0 - .8.
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="vector"></a>Vector objects</h3>
The vector math objects are
<br><i>vector+ </i>or<i> v+</i>
<br><i>vector- </i>or<i> v-</i>
<br><i>vector* </i>or<i> v*</i>
<br><i>vector/ </i>or<i> v/</i>
<br>All of the above objects perform math on a list of numbers.&nbsp; The
left inlet accepts a list of numbers of any length.&nbsp; The right inlet
accepts a single value, which is the operand for the computation.&nbsp;
In other words, they work just like the normal *, +, -, and / objects,
except they can handle more than one number in the left inlet.
<p>There are two other objects which are also useful.
<p>The first is <i>vectorabs </i>or<i> vabs</i>. It computes the absolute
value on a list of numbers.
<p>The second object is <i>vectorpack </i>or<i> vpack</i>. <i>vpack</i>
accepts a list of numbers in the left inlet and a single number into the
right inlet.&nbsp; The output is a single list of numbers that is the vector
with the single number appended to the end.&nbsp; This is very useful when
you want to change the time for a <i>tripleLine</i> without unpacking and
repacking all of the data.<i></i>
<p><img SRC="tribar.gif" height=13 width=561>
<h3>
<a NAME="hsv2rgb"></a>hsv2rgb and rgb2hsv</h3>
These two objects convert three numbers between HSV and RGB color space.&nbsp;
HSV stands for hue, saturation, and value.&nbsp; The simple way to think
of HSV space is that hue is the "color", such as red, blue, etc, the saturation
is how intense the color is, and the value is how bright the color is.
<p>You can get some really nice effects by varying the hue of a color,
because the brightness will not change while you do it.
<p><img SRC="tribar.gif" height=13 width=561>
<p><a href="index.html">[return]</a>
</body>
</html>

View file

@ -1,41 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks">
<meta name="Author" content="IOhannes m zmölnig">
<title>Writing new objects</title>
</head>
<body>
<center>
<h2>
<u>Creating new GEM objects</u></h2></center>
Look at the source code :-)&nbsp; GEM is written in C++, which means that
you have to jump through some hopes to interact properly with Pd, which
is written in C.&nbsp; If you look in Base/CPPExtern.h, you will see a
collection of macros which you can use to help you create new objects.&nbsp;
Use one of the GEM objects which is closest to what you want to do as a
template.
<p>One problem on SGI...you will need to
<p>setenv LD_LIBRARY_PATH "/where/ever/pd/gem"
<p>so that rld (the run-time linker) can find the GEM dso.&nbsp; Because
you are linking with GEM, Pd isn't involved with the run time linking process;
it is all done when Pd calls dlopen.
<p>On NT, there is much the same problem...
<p>set your PATH environment variable to \where\ever\pd\gem
<p>or
<p>make sure that your new .dll is located in the same directory where
GEM is.
<p>On NT, all of the classes and functions are exported through declexport/declimport.&nbsp;
You shouldn't have to do anything to call the functions.&nbsp; I have not
had any problems making other dll's which are loaded into Pd at runtime.&nbsp;
You need to make certain that you are exporting the correct functions.&nbsp;
If your dll cannot find the gem.dll, then it will silently fail.
<p>And of course, e-mail IOhannes m zmölnig (<a href="mailto:zmoelnig@iem.at">zmoelnig@iem.at</a>) if you have any problems,
questions, or solutions
<p><img SRC="tribar.gif" height=13 width=561>
<p><a href="index.html">[return]</a>
<br>&nbsp;
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

View file

@ -1,67 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Mark Danks; IOhannes m zm&ouml;nig">
<title>Gem Manual</title>
</head>
<body>
<center>
<h2>
<u>GEM Manual</u></h2></center>
<center><img SRC="redSquare.jpg" ALT="a simple patch" BORDER=2 height=138 width=91></center>
<p>This is the first attempt at a manual for GEM, so bear with me.
Any comments are appreciated. Send them to <a href="mailto:mark@danks.org">Mark Danks</a>
<hr>
In fact, this ought to be the second attempt at such a manual. There will not be much now.
But send any comments to <a href="mailto:zmoelnig@iem.kug.ac.at">IOhannes m zm&ouml;lnig</a> instead.
<p><img SRC="tribar.gif" height=13 width=561>
<p><a href="Intro.html">Introduction</a>
<br>&nbsp;&nbsp;&nbsp; An introduction to GEM and what you can do with
it.&nbsp; The general system requirements are also described here.
<p><a href="GemWPd.html">Using GEM with Pd</a>
<br>&nbsp;&nbsp;&nbsp; How to use GEM with Pd.&nbsp; This includes how
to start Pd so that the GEM library is loaded and working properly.
<p><a href="BasicObj.html">Basic objects</a>
<br>&nbsp;&nbsp;&nbsp; The basic objects that GEM has.&nbsp; This section
shows you how to create a simple patch.
<p><a href="Images.html">Images</a>
<br>&nbsp;&nbsp;&nbsp; Using images is an important part of GEM. Here you
will load in images and learn the basics of dealing with images.
<p><a href="Texture.html">Texture mapping</a>
<br>&nbsp;&nbsp;&nbsp; Loading in images is only one part.&nbsp; Applying
those images to 3-D shapes is called texture mapping.
<p><a href="Pixes.html">Pixes (image processing)</a>
<br>&nbsp;&nbsp;&nbsp; Once you have texture mapped the images, you will
probably want to process and change them in response to user interaction.&nbsp;
The <i>pix</i> objects provide this functionality.
<p><a href="Lighting.html">Lighting</a>
<br>&nbsp;&nbsp;&nbsp; Shading and lighting are easy with the lighting
objects.
<p>Particles
<br>&nbsp;&nbsp;&nbsp; Particle systems can create effects such as smoke,
fire, and water.
<p><a href="Utility.html">Utility objects</a>
<br>&nbsp;&nbsp;&nbsp; To help you deal with the data which GEM uses, there
are a number of utility objects.
<p>Input devices
<br>&nbsp;&nbsp;&nbsp; GEM provides interaction with the mouse and other
input devices.
<p>Advanced
<br>&nbsp;&nbsp;&nbsp; Now that you know all about the other objects, here
are a few of the more advanced ones.
<p><a href="WriteCode.html">Writing new objects</a>
<br>&nbsp;&nbsp;&nbsp; How to write new objects for GEM.
<p><a href="GemFaq.html">FAQ</a>
<br>&nbsp;&nbsp;&nbsp; Frequently asked questions about GEM.
<p><a href="ListObjects.html">List of Objects</a>
<br>&nbsp;&nbsp;&nbsp; All of the objects in GEM with a very brief description..
<p><a href="Gloss.html">Glossary/Index</a>
<br>&nbsp;&nbsp;&nbsp; A collection of definitions and links to explanations.
<p><img SRC="tribar.gif" height=13 width=561>
<br>&nbsp;
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 882 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

View file

@ -1,14 +0,0 @@
#N canvas 144 70 497 292 10;
#X text 21 22 GEMglBegin - delimit the vertices of a primitive or a
group of like primitives;
#X text 21 61 C Specification: void glBegin( GLenum mode );
#X text 21 91 Parameters;
#X text 42 115 mode;
#X text 77 116 Specifies the primitive or primitives that will be created
from vertices presented between glBegin and the subsequent glEnd. Ten
symbolic constants are accepted: GL_POINTS \, GL_LINES \, GL_LINE_STRIP
\, GL_LINE_LOOP \, GL_TRIANGLES \, GL_TRIANGLE_STRIP \, GL_TRIANGLE_FAN
\, GL_QUADS \, GL_QUAD_STRIP \, and GL_POLYGON.;
#X text 71 244 http://www.glprogramming.com/blue/ch05.html#id5450783
;
#X text 22 228 OpenGL Reference page:;

View file

@ -1,65 +0,0 @@
#N canvas 78 37 701 310 10;
#X obj 519 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 584 234 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 112 destroy;
#X msg 132 112 create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 589 273 pd gemwin;
#X msg 589 254 create;
#X text 585 233 Create window:;
#X text 525 29 Example:;
#X obj 7 65 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 216 cnv 15 450 80 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 11 217 Inlets:;
#X obj 8 176 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 452 8 GEM object;
#X text 11 266 Outlets:;
#X obj 522 71 cnv 15 150 140 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 530 192 GEMglBegin;
#X obj 534 77 loadbang;
#X text 54 30 Class: GEMgl object;
#X text 33 14 Synopsis: [GLdefine];
#X text 15 88 Send an OpenGL configuration constant to a GEMglBegin
to set up the OpenGL environment. These constants are defined in GL/gl.h
in the OpenGL C++ code.;
#X floatatom 584 167 5 0 0 0 - - -;
#X text 29 229 Inlet 1: bang;
#X text 23 279 Outlet 1: float;
#X text 14 137 for more \, see: http://www.glprogramming.com/blue/ch04.html
;
#X text 7 69 Description: gets the value of a OpenGL constant;
#X text 29 245 Inlet 1: message - the name of the constant;
#X text 17 175 Arguments:;
#X text 29 189 the name of a OpenGL constant (e.g. GL_LINES or GL_POLYGON)
;
#X msg 542 98 GL_LINES;
#X obj 534 142 GLdefine GL_ADD;
#X msg 553 119 symbol GL_ACCUM;
#X connect 2 0 3 0;
#X connect 3 0 2 0;
#X connect 14 0 27 0;
#X connect 26 0 27 0;
#X connect 27 0 13 1;
#X connect 27 0 18 0;
#X connect 28 0 27 0;

View file

@ -1,220 +0,0 @@
AUTOMAKE_OPTIONS = foreign
SUFFIXES = .pd
gemhelpdir=$(pkglibdir)
dist_gemhelp_DATA = \
accumrotate-help.pd \
alpha-help.pd \
ambient-help.pd \
ambientRGB-help.pd \
camera-help.pd \
circle-help.pd \
color-help.pd \
colorRGB-help.pd \
colorSquare-help.pd \
cone-help.pd \
cube-help.pd \
cuboid-help.pd \
curve3d-help.pd \
curve-help.pd \
cylinder-help.pd \
depth-help.pd \
diffuse-help.pd \
diffuseRGB-help.pd \
disk-help.pd \
emission-help.pd \
emissionRGB-help.pd \
fragment_program-help.pd \
gemframebuffer-help.pd \
GEMglBegin-help.pd \
gemhead-help.pd \
gemkeyboard-help.pd \
gemkeyname-help.pd \
gemlist-help.pd \
gemlist_info-help.pd \
gemlist_matrix-help.pd \
gemmouse-help.pd \
gemorb-help.pd \
gemreceive-help.pd \
gemtablet-help.pd \
gemvertexbuffer-help.pd \
gemwin-help.pd \
GLdefine-help.pd \
glsl_fragment-help.pd \
glsl_geometry-help.pd \
glsl_program-help.pd \
glsl_vertex-help.pd \
imageVert-help.pd \
light-help.pd \
linear_path-help.pd \
mesh_line-help.pd \
mesh_square-help.pd \
model-help.pd \
multimodel-help.pd \
newWave-help.pd \
ortho-help.pd \
part_color-help.pd \
part_damp-help.pd \
part_draw-help.pd \
part_follow-help.pd \
part_gravity-help.pd \
part_head-help.pd \
part_info-help.pd \
part_killold-help.pd \
part_killslow-help.pd \
part_orbitpoint-help.pd \
part_render-help.pd \
part_sink-help.pd \
part_size-help.pd \
part_source-help.pd \
part_targetcolor-help.pd \
part_targetsize-help.pd \
part_velcone-help.pd \
part_velocity-help.pd \
part_velsphere-help.pd \
part_vertex-help.pd \
pix_2grey-help.pd \
pix_a_2grey-help.pd \
pix_add-help.pd \
pix_aging-help.pd \
pix_alpha-help.pd \
pix_background-help.pd \
pix_backlight-help.pd \
pix_biquad-help.pd \
pix_bitmask-help.pd \
pix_blob-help.pd \
pix_blur-help.pd \
pix_buffer-help.pd \
pix_buffer_read-help.pd \
pix_buffer_write-help.pd \
pix_buf-help.pd \
pix_chroma_key-help.pd \
pix_clearblock-help.pd \
pix_coloralpha-help.pd \
pix_color-help.pd \
pix_colorclassify-help.pd \
pix_colormatrix-help.pd \
pix_colorreduce-help.pd \
pix_compare-help.pd \
pix_composite-help.pd \
pix_contrast-help.pd \
pix_convert-help.pd \
pix_convolve-help.pd \
pix_coordinate-help.pd \
pix_crop-help.pd \
pix_curve-help.pd \
pix_data-help.pd \
pix_deinterlace-help.pd \
pix_delay-help.pd \
pix_diff-help.pd \
pix_dot-help.pd \
pix_draw-help.pd \
pix_dump-help.pd \
pix_duotone-help.pd \
pix_film-help.pd \
pix_flip-help.pd \
pix_freeframe-help.pd \
pix_frei0r-help.pd \
pix_gain-help.pd \
pix_grey-help.pd \
pix_halftone-help.pd \
pix_histo-help.pd \
pix_hsv2rgb-help.pd \
pix_image-help.pd \
pix_imageInPlace-help.pd \
pix_indycam-help.pd \
pix_info-help.pd \
pix_invert-help.pd \
pix_kaleidoscope-help.pd \
pix_levels-help.pd \
pix_lumaoffset-help.pd \
pix_mask-help.pd \
pix_mean_color-help.pd \
pix_metaimage-help.pd \
pix_mix-help.pd \
pix_motionblur-help.pd \
pix_movement2-help.pd \
pix_movement-help.pd \
pix_movie-help.pd \
pix_multiblob-help.pd \
pix_multiimage-help.pd \
pix_multitexture-help.pd \
pix_multiply-help.pd \
pix_noise-help.pd \
pix_normalize-help.pd \
pix_offset-help.pd \
pix_pix2sig~-help.pd \
pix_posterize-help.pd \
pix_puzzle-help.pd \
pix_rds-help.pd \
pix_record-help.pd \
pix_rectangle-help.pd \
pix_refraction-help.pd \
pix_resize-help.pd \
pix_rgb2hsv-help.pd \
pix_rgba-help.pd \
pix_roi-help.pd \
pix_roll-help.pd \
pix_rtx-help.pd \
pix_scanline-help.pd \
pix_set-help.pd \
pix_share_read-help.pd \
pix_share_write-help.pd \
pix_sig2pix~-help.pd \
pix_snap2tex-help.pd \
pix_snap-help.pd \
pix_subtract-help.pd \
pix_takealpha-help.pd \
pix_texture-help.pd \
pix_threshold_bernsen-help.pd \
pix_threshold-help.pd \
pix_tIIR-help.pd \
pix_videoDS-help.pd \
pix_video-help.pd \
pix_write-help.pd \
pix_yuv-help.pd \
pix_zoom-help.pd \
polygon-help.pd \
polygon_smooth-help.pd \
pqtorusknots-help.pd \
primTri-help.pd \
rectangle-help.pd \
render_trigger-help.pd \
ripple-help.pd \
rotate-help.pd \
rotateXYZ-help.pd \
rubber-help.pd \
scale-help.pd \
scaleXYZ-help.pd \
scopeXYZ~-help.pd \
separator-help.pd \
shearXY-help.pd \
shearXZ-help.pd \
shearYX-help.pd \
shearYZ-help.pd \
shearZX-help.pd \
shearZY-help.pd \
shininess-help.pd \
slideSquares-help.pd \
specular-help.pd \
specularRGB-help.pd \
sphere3d-help.pd \
sphere-help.pd \
spline_path-help.pd \
spot_light-help.pd \
square-help.pd \
surface3d-help.pd \
teapot-help.pd \
text2d-help.pd \
text3d-help.pd \
textextruded-help.pd \
textoutline-help.pd \
torus-help.pd \
translate-help.pd \
translateXYZ-help.pd \
triangle-help.pd \
tube-help.pd \
vertex_program-help.pd \
world_light-help.pd

View file

@ -1,75 +0,0 @@
#N canvas 57 47 634 374 10;
#X text 452 8 GEM object;
#X text 50 12 Synopsis: [accumrotate];
#X obj 8 197 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 63 225 Inlet 1: message: reset;
#X text 64 254 Inlet 3: float: delta-rotation around Y-axis (in deg)
;
#X text 64 242 Inlet 2: float: delta-rotation around X-axis (in deg)
;
#X text 64 266 Inlet 4: float: delta-rotation around Z-axis (in deg)
;
#X text 39 198 Inlets:;
#X text 63 211 Inlet 1: gemlist;
#X text 39 282 Outlets:;
#X text 57 295 Outlet 1: gemlist;
#X obj 8 156 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 155 Arguments:;
#X text 63 166 initial rotations around X \, Y \, Z-axes;
#X obj 8 76 cnv 15 430 70 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 42 95 [accumrotate] accepts a gemList and changes the current
transformation matrix by the specified delta-rotation;
#X text 41 130 the delta-values add to the current rotation-matrix.
;
#X text 29 77 Description: accumulated rotation;
#X obj 449 77 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 60 Example:;
#X obj 514 254 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 132 112 create \, 1;
#X msg 198 112 destroy;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 6 0;
#X connect 3 1 5 0;
#X connect 3 1 7 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 519 293 pd gemwin;
#X msg 519 274 create;
#X text 515 253 Create window:;
#X text 71 31 Class: manipulation object;
#X obj 450 158 cnv 15 160 60 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 451 84 gemhead;
#X obj 451 233 square;
#X msg 478 108 reset;
#X msg 531 163 10;
#X text 490 139 click repeatedly;
#X obj 451 186 accumrotate 45 0 0;
#X msg 491 163 5;
#X msg 572 163 15;
#X text 34 335 see also:;
#X obj 143 337 rotateXYZ;
#X obj 95 337 rotate;
#X connect 21 0 22 0;
#X connect 22 0 21 0;
#X connect 26 0 31 0;
#X connect 28 0 31 0;
#X connect 29 0 31 2;
#X connect 31 0 27 0;
#X connect 32 0 31 1;
#X connect 33 0 31 3;

View file

@ -1,109 +0,0 @@
#N canvas 50 237 711 539 10;
#X text 452 8 GEM object;
#X obj 8 196 cnv 15 430 330 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 37 195 Inlets:;
#X text 453 355 Outlets:;
#X text 461 366 Outlet 1: gemlist;
#X obj 8 161 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 160 Arguments:;
#X obj 8 76 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 449 77 cnv 15 250 250 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 60 Example:;
#X obj 584 254 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 50 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 132 112 create \, 1;
#X msg 198 112 destroy;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 6 0;
#X connect 3 1 5 0;
#X connect 3 1 7 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 589 293 pd gemwin;
#X msg 589 274 create;
#X text 585 253 Create window:;
#X text 71 31 Class: manipulation object;
#X obj 451 197 cnv 15 80 60 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 579 186 color 1 0 0 0.5;
#X text 60 219 Inlet 1: float: turn alpha blending on/off;
#X text 50 12 Synopsis: [alpha];
#X text 29 77 Description: enable alpha blending;
#X obj 458 310 square;
#X obj 458 233 alpha;
#X obj 458 108 color 0 1 0 0.5;
#X text 61 208 Inlet 1: gemlist;
#X text 60 231 Inlet 1: message "auto 1" | "auto 0" turn on/off automatic
depth detection;
#X floatatom 583 139 5 0 0 0 - - -;
#X obj 458 86 gemhead 51;
#X obj 579 211 sphere;
#X obj 458 137 rotate 114 0 1 0;
#X obj 579 162 gemhead 50;
#X msg 474 176 auto \$1;
#X obj 474 158 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X msg 583 108 0 1 0 \$1;
#X floatatom 583 88 5 0 1 0 - - -;
#X obj 628 88 hsl 64 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X text 22 91 [alpha] turns on and off alpha blending. Be aware that
the rendering order matters \, so you probably want to set the gemhead
order number high so that the object is rendered after all of the non-alpha
blended ones.;
#X text 63 171 float : blending function (default: GL_ONE_MINUS_SRC_ALPHA)
;
#X text 60 260 Inlet 2: float: blending function;
#X text 70 272 0=GL_ONE_MINUS_SOURCE_ALPHA;
#X text 70 282 1=GL_ONE;
#X text 70 294 2=GL_ZERO;
#X text 70 306 3=GL_SRC_COLOR;
#X text 70 318 4=GL_ONE_MINUS_SRC_COLOR;
#X text 70 330 5=GL_DST_COLOR;
#X text 70 342 6=GL_ONE_MINUS_DST_COLOR;
#X text 70 354 7=GL_SRC_ALPHA;
#X text 70 366 8=GL_ONE_MINUS_SRC_ALPHA;
#X text 70 378 9=GL_DST_ALPHA;
#X text 70 390 10=GL_ONE_MINUS_DST_ALPHA;
#X text 70 402 11=GL_CONSTANT_COLOR;
#X text 70 414 12=GL_ONE_MINUS_CONSTANT_COLOR;
#X text 70 426 13=GL_CONSTANT_ALPHA;
#X text 70 438 14=GL_ONE_MINUS_CONSTANT_ALPHA;
#X text 70 450 15=GL_SRC_ALPHA_SATURATE;
#X text 70 462 16=GL_SRC1_COLOR;
#X text 70 474 17=GL_ONE_MINUS_SRC1_COLOR;
#X text 70 486 18=GL_SRC1_ALPHA;
#X text 70 498 19=GL_ONE_MINUS_SRC1_ALPHA;
#X obj 477 210 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X floatatom 501 210 2 0 19 0 - - -;
#X connect 11 0 12 0;
#X connect 12 0 11 0;
#X connect 16 0 27 0;
#X connect 21 0 20 0;
#X connect 22 0 28 0;
#X connect 25 0 28 1;
#X connect 26 0 22 0;
#X connect 28 0 21 0;
#X connect 29 0 16 0;
#X connect 30 0 21 0;
#X connect 31 0 30 0;
#X connect 32 0 22 1;
#X connect 33 0 32 0;
#X connect 34 0 33 0;
#X connect 58 0 21 0;
#X connect 59 0 21 1;

View file

@ -1,68 +0,0 @@
#N canvas 260 145 639 369 10;
#X text 452 8 GEM object;
#X obj 8 196 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 39 198 Inlets:;
#X text 63 211 Inlet 1: gemlist;
#X text 39 252 Outlets:;
#X text 57 265 Outlet 1: gemlist;
#X obj 8 146 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 145 Arguments:;
#X obj 8 76 cnv 15 430 60 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 449 77 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 60 Example:;
#X obj 514 254 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 197 134 destroy;
#X msg 132 112 reset \, lighting 1 \, create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 519 293 pd gemwin;
#X msg 519 274 create;
#X text 515 253 Create window:;
#X text 71 31 Class: manipulation object;
#X obj 450 118 cnv 15 160 60 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 451 84 gemhead;
#X text 29 77 Description: ambient colouring;
#X obj 451 193 cube;
#X obj 500 192 gemhead;
#X obj 500 230 world_light;
#X obj 500 211 rotate 180 1 0 0;
#X text 62 156 a list of 3 (RGB) or 4 (RGBA) float-values.;
#X text 60 171 defaults: 0.2 0.2 0.2 1;
#X text 22 91 [ambient] accepts a gemList and sets the ambient-color
for all subsequent vertex-operations. You have to enable lighting to
see any effects.;
#X text 50 12 Synopsis: [ambient];
#X obj 451 156 ambient 0 1 0;
#X msg 478 130 0.4 0.8 1;
#X text 63 229 Inlet 2: list: 3(RGB) or 4(RGBA) float values;
#X floatatom 549 193 5 0 0 0 - - -;
#X obj 84 332 ambientRGB;
#X text 21 332 see also:;
#X connect 12 0 13 0;
#X connect 13 0 12 0;
#X connect 17 0 27 0;
#X connect 20 0 22 0;
#X connect 22 0 21 0;
#X connect 27 0 19 0;
#X connect 28 0 27 1;
#X connect 30 0 22 1;

View file

@ -1,77 +0,0 @@
#N canvas 4 49 641 366 10;
#X text 452 8 GEM object;
#X obj 8 196 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 39 198 Inlets:;
#X text 63 211 Inlet 1: gemlist;
#X text 39 292 Outlets:;
#X text 57 305 Outlet 1: gemlist;
#X obj 8 146 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 145 Arguments:;
#X obj 8 76 cnv 15 430 60 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 449 77 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 60 Example:;
#X obj 514 254 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 197 134 destroy;
#X msg 132 112 reset \, lighting 1 \, create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 519 293 pd gemwin;
#X msg 519 274 create;
#X text 515 253 Create window:;
#X text 71 31 Class: manipulation object;
#X obj 450 118 cnv 15 160 60 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 451 84 gemhead;
#X text 29 77 Description: ambient colouring;
#X obj 451 193 cube;
#X obj 500 192 gemhead;
#X obj 500 230 world_light;
#X text 50 12 Synopsis: [ambientRGB];
#X text 22 91 [ambientRGB] accepts a gemList and sets the ambient-color
for all subsequent vertex-operations. You have to enable lighting to
see any effects.;
#X text 62 156 a list of 3 (RGB) or 4 (RGBA) float-values.;
#X text 60 171 defaults: 0.2 0.2 0.2 1;
#X text 63 229 Inlet 2: float: red value;
#X text 63 244 Inlet 3: float: green value;
#X text 63 259 Inlet 4: float: blue value;
#X text 63 274 Inlet 5: float: alpha value;
#X obj 451 156 ambientRGB 0 1 0;
#X floatatom 477 122 3 0 1 0 - - -;
#X floatatom 504 122 3 0 1 0 - - -;
#X floatatom 531 122 3 0 1 0 - - -;
#X floatatom 558 122 3 0 1 0 - - -;
#X floatatom 548 192 5 0 0 0 - - -;
#X obj 500 211 rotate 70 1 0 0;
#X text 20 333 see also:;
#X obj 93 332 ambient;
#X connect 12 0 13 0;
#X connect 13 0 12 0;
#X connect 17 0 30 0;
#X connect 20 0 36 0;
#X connect 30 0 19 0;
#X connect 31 0 30 1;
#X connect 32 0 30 2;
#X connect 33 0 30 3;
#X connect 34 0 30 4;
#X connect 35 0 36 1;
#X connect 36 0 21 0;

View file

@ -1,81 +0,0 @@
#N canvas 0 22 630 494 10;
#X obj 179 157 camera;
#X obj 179 45 gemhead;
#X obj 162 82 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X obj 185 63 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X obj 234 108 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X obj 260 86 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X msg 234 124 left \$1;
#X msg 260 102 right \$1;
#X obj 75 120 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X obj 101 98 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X msg 101 114 up \$1;
#X msg 75 136 down \$1;
#X msg 267 58 reset;
#X msg 185 80 forward \$1;
#X msg 162 98 reverse \$1;
#X msg 66 252 speed \$1;
#X floatatom 66 234 5 0 0 0 - - -;
#X floatatom 67 195 5 0 0 0 - - -;
#X msg 379 150 lookX \$1;
#X msg 379 187 lookY \$1;
#X msg 379 223 lookZ \$1;
#X floatatom 379 134 5 0 0 0 - - -;
#X floatatom 379 207 5 0 0 0 - - -;
#X floatatom 379 170 5 0 0 0 - - -;
#X msg 67 213 distance \$1;
#X obj 170 305 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 112 destroy;
#X msg 132 112 create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 175 344 pd gemwin;
#X msg 175 325 create;
#X text 171 304 Create window:;
#X connect 1 0 0 0;
#X connect 2 0 14 0;
#X connect 3 0 13 0;
#X connect 4 0 6 0;
#X connect 5 0 7 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X connect 8 0 11 0;
#X connect 9 0 10 0;
#X connect 10 0 0 0;
#X connect 11 0 0 0;
#X connect 12 0 0 0;
#X connect 13 0 0 0;
#X connect 14 0 0 0;
#X connect 15 0 0 0;
#X connect 16 0 15 0;
#X connect 17 0 24 0;
#X connect 18 0 0 0;
#X connect 19 0 0 0;
#X connect 20 0 0 0;
#X connect 21 0 18 0;
#X connect 22 0 20 0;
#X connect 23 0 19 0;
#X connect 24 0 0 0;
#X connect 26 0 27 0;
#X connect 27 0 26 0;

View file

@ -1,65 +0,0 @@
#N canvas 291 154 710 345 10;
#X text 33 14 Synopsis: [circle];
#X text 54 30 Class: geometric object;
#X text 525 29 Example:;
#X obj 7 65 cnv 15 450 90 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 7 69 Description: Renders a circle.;
#X text 16 86 The circle object renders a circle flat disc at the current
position with current color. The look of the circle can be changed
with the draw message \, its size can be changed via the second inlet.
;
#X obj 8 216 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 9 221 Inlets:;
#X obj 8 166 cnv 15 450 40 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 165 Arguments:;
#X text 27 261 Inlet 2: float: size;
#X text 452 8 GEM object;
#X text 27 233 Inlet 1: gemlist;
#X text 9 280 Outlets:;
#X text 21 293 Outlet 1: gemlist;
#X text 63 177 size of the circle;
#X obj 519 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 584 224 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 112 destroy;
#X msg 132 112 create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 589 263 pd gemwin;
#X msg 589 244 create;
#X text 585 223 Create window:;
#X obj 525 80 cnv 15 150 100 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 593 159 circle;
#X msg 535 95 draw line;
#X msg 535 116 draw fill;
#X msg 535 138 draw point;
#X obj 593 54 gemhead;
#X floatatom 626 130 5 0 0 2 size - -;
#X text 64 191 default: 1;
#X text 27 247 Inlet 1: message: draw [line|fill|point|default];
#X connect 18 0 19 0;
#X connect 19 0 18 0;
#X connect 23 0 22 0;
#X connect 24 0 22 0;
#X connect 25 0 22 0;
#X connect 26 0 22 0;
#X connect 27 0 22 1;

View file

@ -1,62 +0,0 @@
#N canvas 48 102 639 342 10;
#X text 452 8 GEM object;
#X obj 8 196 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 39 198 Inlets:;
#X text 63 211 Inlet 1: gemlist;
#X text 39 292 Outlets:;
#X text 57 305 Outlet 1: gemlist;
#X obj 8 146 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 145 Arguments:;
#X obj 8 66 cnv 15 430 70 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 449 66 cnv 15 170 200 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 49 Example:;
#X obj 510 183 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 197 134 destroy;
#X msg 132 112 reset \, create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 515 222 pd gemwin;
#X msg 515 203 create;
#X text 511 182 Create window:;
#X text 71 31 Class: manipulation object;
#X obj 450 107 cnv 15 160 60 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 451 73 gemhead;
#X obj 451 182 cube;
#X text 62 156 a list of 3 (RGB) or 4 (RGBA) float-values.;
#X text 60 171 defaults: 0 0 0 1;
#X obj 451 145 color 0 1 0;
#X msg 487 116 0 0 1;
#X text 63 229 Inlet 2: list: 3(RGB) or 4(RGBA) float values;
#X text 22 81 [color] sets the colour of all subsequent shape and vertex
operations until reset by another [color]/[colorRGB] object. If you
set the alpha-value \, you will need an [alpha] object to enable alpha-blending
;
#X text 50 12 Synopsis: [color];
#X text 29 67 Description: colouring;
#X text 449 272 see also:;
#X obj 452 301 colorRGB;
#X connect 12 0 13 0;
#X connect 13 0 12 0;
#X connect 17 0 21 0;
#X connect 21 0 18 0;
#X connect 22 0 21 1;

View file

@ -1,71 +0,0 @@
#N canvas 42 24 639 342 10;
#X text 452 8 GEM object;
#X obj 8 196 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 39 198 Inlets:;
#X text 63 211 Inlet 1: gemlist;
#X text 39 292 Outlets:;
#X text 57 305 Outlet 1: gemlist;
#X obj 8 146 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 145 Arguments:;
#X obj 8 66 cnv 15 430 70 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 449 66 cnv 15 170 200 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 49 Example:;
#X obj 514 190 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 197 134 destroy;
#X msg 132 112 reset \, create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 519 229 pd gemwin;
#X msg 519 210 create;
#X text 515 189 Create window:;
#X text 71 31 Class: manipulation object;
#X obj 450 107 cnv 15 160 60 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 451 73 gemhead;
#X obj 451 182 cube;
#X text 62 156 a list of 3 (RGB) or 4 (RGBA) float-values.;
#X text 63 229 Inlet 2: float: red value;
#X text 63 244 Inlet 3: float: green value;
#X text 63 259 Inlet 4: float: blue value;
#X text 63 274 Inlet 5: float: alpha value;
#X floatatom 479 111 3 0 1 0 - - -;
#X floatatom 508 111 3 0 1 0 - - -;
#X floatatom 536 111 3 0 1 0 - - -;
#X floatatom 565 111 3 0 1 0 - - -;
#X text 60 171 defaults: 0 0 0 1;
#X text 50 12 Synopsis: [colorRGB];
#X obj 451 145 colorRGB 0 1 0;
#X text 29 67 Description: colouring;
#X text 22 81 [colorRGB] sets the colour of all subsequent shape and
vertex operations until reset by another [color]/[colorRGB] object.
If you set the alpha-value \, you will need an [alpha] object to enable
alpha-blending;
#X text 447 272 see also:;
#X obj 449 297 color;
#X connect 12 0 13 0;
#X connect 13 0 12 0;
#X connect 17 0 30 0;
#X connect 24 0 30 1;
#X connect 25 0 30 2;
#X connect 26 0 30 3;
#X connect 27 0 30 4;
#X connect 30 0 18 0;

View file

@ -1,82 +0,0 @@
#N canvas 130 41 696 468 10;
#X text 54 30 Class: geometric object;
#X obj 479 107 cnv 15 200 250 empty empty empty 20 12 0 14 -228992
-66577 0;
#X obj 494 284 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 112 destroy;
#X msg 132 112 create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 499 323 pd gemwin;
#X msg 499 304 create;
#X text 495 283 Create window:;
#X obj 7 65 cnv 15 450 80 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 196 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 9 201 Inlets:;
#X obj 8 156 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 155 Arguments:;
#X text 27 227 Inlet 1: message: draw [line|fill|point];
#X text 27 241 Inlet 2: float: size;
#X text 452 8 GEM object;
#X text 27 213 Inlet 1: gemlist;
#X text 9 350 Outlets:;
#X text 21 363 Outlet 1: gemlist;
#X text 485 89 Example:;
#X obj 482 137 cnv 15 190 110 empty empty empty 20 12 0 14 -81876 -66577
0;
#X text 33 14 Synopsis: [colorSquare];
#X obj 534 252 cnv 15 100 30 empty empty empty 20 12 0 14 -24198 -66577
0;
#X msg 485 145 draw line;
#X msg 485 166 draw fill;
#X msg 485 188 draw point;
#X obj 543 114 gemhead;
#X floatatom 557 143 5 0 0 1 size - -;
#X text 7 69 Description: Renders a square with several colors.;
#X text 63 166 size of the square;
#X obj 543 259 colorSquare;
#X msg 615 222 1 1 0;
#X msg 600 203 0 0 1;
#X msg 586 184 0 1 0;
#X msg 571 165 1 0 0;
#X text 27 268 Inlet 3: list: 3(RGB) float values for the lowerleft
corner;
#X text 27 285 Inlet 4: list: 3(RGB) float values for the lowerright
corner;
#X text 27 305 Inlet 5: list: 3(RGB) float values for the upperright
corner;
#X text 27 322 Inlet 6: list: 3(RGB) float values for the upperleft
corner;
#X text 16 86 The colorSquare object renders a square at the current
position. The size of the square can be changed via the second inlet.
The colors of the 4 corners can be specified separately and are drawn
as gradients.;
#X connect 3 0 4 0;
#X connect 4 0 3 0;
#X connect 21 0 28 0;
#X connect 22 0 28 0;
#X connect 23 0 28 0;
#X connect 24 0 28 0;
#X connect 25 0 28 1;
#X connect 29 0 28 5;
#X connect 30 0 28 4;
#X connect 31 0 28 3;
#X connect 32 0 28 2;

View file

@ -1,69 +0,0 @@
#N canvas 290 157 710 345 10;
#X text 54 30 Class: geometric object;
#X obj 479 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 544 224 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 112 destroy;
#X msg 132 112 create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 549 263 pd gemwin;
#X msg 549 244 create;
#X text 545 223 Create window:;
#X text 485 29 Example:;
#X obj 7 65 cnv 15 450 80 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 216 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 9 221 Inlets:;
#X obj 8 146 cnv 15 450 50 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 145 Arguments:;
#X text 27 261 Inlet 2: float: size;
#X text 452 8 GEM object;
#X text 27 233 Inlet 1: gemlist;
#X text 9 287 Outlets:;
#X text 21 300 Outlet 1: gemlist;
#X text 33 14 Synopsis: [cone];
#X text 7 69 Description: Renders a cone.;
#X text 14 86 The cone object renders a cone at the current position
with current color. The look of the cone can be changed with the draw
message \, its size can be changed via the second inlet.;
#X obj 542 130 cnv 15 100 80 empty empty empty 20 12 0 14 -24198 -66577
0;
#X msg 485 65 draw line;
#X msg 485 86 draw fill;
#X msg 485 108 draw point;
#X obj 553 54 gemhead;
#X floatatom 569 144 5 0 0 2 size - -;
#X obj 553 79 rotateXYZ 90 0 0;
#X floatatom 586 171 5 0 0 2 segments - -;
#X text 27 272 Inlet 3: int: number of segments;
#X obj 553 189 cone 1;
#X text 64 180 defaults: 1 10;
#X text 63 162 size of the cone \, number of segments;
#X text 27 247 Inlet 1: message: draw [line|fill|point|default];
#X connect 3 0 4 0;
#X connect 4 0 3 0;
#X connect 21 0 29 0;
#X connect 22 0 29 0;
#X connect 23 0 29 0;
#X connect 24 0 26 0;
#X connect 25 0 29 1;
#X connect 26 0 29 0;
#X connect 27 0 29 2;

View file

@ -1,64 +0,0 @@
#N canvas 289 160 710 345 10;
#X text 54 30 Class: geometric object;
#X obj 519 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 584 224 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 112 destroy;
#X msg 132 112 create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 589 263 pd gemwin;
#X msg 589 244 create;
#X text 585 223 Create window:;
#X obj 7 65 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 216 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 9 221 Inlets:;
#X obj 8 176 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 175 Arguments:;
#X text 27 247 Inlet 1: message: draw [line|fill|point];
#X text 27 261 Inlet 2: float: size;
#X text 452 8 GEM object;
#X text 27 233 Inlet 1: gemlist;
#X text 9 280 Outlets:;
#X text 21 293 Outlet 1: gemlist;
#X text 33 14 Synopsis: [cube];
#X text 7 69 Description: Renders a cube.;
#X text 63 186 size of the cube;
#X text 16 86 The cube object renders a cube at the current position
with current color. The size of the cube can be changed via the second
inlet.;
#X text 525 29 Example:;
#X obj 522 78 cnv 15 150 100 empty empty empty 20 12 0 14 -24198 -66577
0;
#X msg 525 128 draw point;
#X obj 593 54 gemhead;
#X floatatom 624 114 5 0 0 0 - - -;
#X text 624 98 size;
#X obj 593 159 cube;
#X msg 525 106 draw line;
#X msg 525 85 draw default;
#X connect 3 0 4 0;
#X connect 4 0 3 0;
#X connect 23 0 27 0;
#X connect 24 0 27 0;
#X connect 25 0 27 1;
#X connect 28 0 27 0;
#X connect 29 0 27 0;

View file

@ -1,73 +0,0 @@
#N canvas 289 160 710 363 10;
#X text 54 30 Class: geometric object;
#X obj 519 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 584 224 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 112 destroy;
#X msg 132 112 create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 589 263 pd gemwin;
#X msg 589 244 create;
#X text 585 223 Create window:;
#X text 525 29 Example:;
#X obj 7 65 cnv 15 450 80 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 216 cnv 15 450 130 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 9 221 Inlets:;
#X obj 8 156 cnv 15 450 50 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 155 Arguments:;
#X text 27 247 Inlet 1: message: draw [line|fill|point];
#X text 452 8 GEM object;
#X text 27 233 Inlet 1: gemlist;
#X text 9 310 Outlets:;
#X text 21 323 Outlet 1: gemlist;
#X obj 522 82 cnv 15 160 120 empty empty empty 20 12 0 14 -24198 -66577
0;
#X msg 525 95 draw line;
#X msg 525 116 draw fill;
#X msg 525 138 draw point;
#X obj 593 54 gemhead;
#X floatatom 605 104 5 0 0 0 - - -;
#X obj 593 179 cuboid;
#X floatatom 617 134 5 0 0 0 - - -;
#X floatatom 630 162 5 0 0 0 - - -;
#X text 605 88 length;
#X text 617 118 height;
#X text 630 146 depth;
#X text 63 167 dimensions of the cuboid (length width height);
#X text 7 69 Description: Renders a cuboid box.;
#X text 16 86 The cuboid object renders a cuboid (box) at the current
position with current color. The dimensions of the cuboid can be changed
via the last three inlets.;
#X text 33 14 Synopsis: [cuboid];
#X text 27 260 Inlet 2: float: length (dimX);
#X text 27 275 Inlet 3: float: height (dimY);
#X text 27 289 Inlet 4: float: depth (dimZ);
#X text 65 181 default: 1 1 0;
#X connect 3 0 4 0;
#X connect 4 0 3 0;
#X connect 18 0 23 0;
#X connect 19 0 23 0;
#X connect 20 0 23 0;
#X connect 21 0 23 0;
#X connect 22 0 23 1;
#X connect 24 0 23 2;
#X connect 25 0 23 3;

View file

@ -1,112 +0,0 @@
#N canvas 65 18 762 461 10;
#X text 54 30 Class: geometric object;
#X text 475 39 Example:;
#X obj 7 65 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 216 cnv 15 450 180 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 9 221 Inlets:;
#X obj 8 176 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 175 Arguments:;
#X text 452 8 GEM object;
#X text 27 233 Inlet 1: gemlist;
#X text 9 358 Outlets:;
#X text 21 371 Outlet 1: gemlist;
#X obj 469 58 cnv 15 200 295 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 568 359 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 132 112 create \, 1;
#X msg 198 112 destroy \, reset;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 6 0;
#X connect 3 1 5 0;
#X connect 3 1 7 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 573 398 pd gemwin;
#X msg 573 379 create;
#X text 569 358 Create window:;
#X obj 474 112 cnv 15 190 200 empty empty empty 20 12 0 14 -85973 -66577
0;
#X obj 521 319 cnv 15 100 30 empty empty empty 20 12 0 14 -24198 -66577
0;
#X text 21 138 Each (additional) inlet will accept an X Y Z point which
is where the control point will be.;
#X text 28 323 Inlet 2: list: 3(XYZ) float values;
#X text 28 344 Inlet N: list: 3(XYZ) float values;
#X text 52 330 ...;
#X text 33 14 Synopsis: [curve];
#X text 7 69 Description: Renders a bezier-curve;
#X text 63 187 number of control-points of the curve (mandatory);
#X text 27 247 Inlet 1: message: draw [line|linestrip|fill|point|tri|tristrip|trifan|quad|quadstrip]
;
#X text 22 88 [curve] creates a bezier curve. The initial argument
is the number of control-points of the curve. There is no maximum number
of control-points.;
#X text 27 306 Inlet 1: message: res <int> : interpolation-resolution(30)
;
#X text 27 293 Inlet 1: message: width <int> : line-width(1);
#X obj 596 233 cnv 15 65 75 empty empty empty 20 12 0 14 -24198 -66577
0;
#X msg 479 163 draw line;
#X msg 479 118 draw fill;
#X msg 479 140 draw point;
#X obj 537 64 gemhead;
#X msg 585 115 1 1 0;
#X msg 593 135 1 -1 0;
#X floatatom 605 196 5 0 0 0 - - -;
#X msg 603 175 -2 1 0;
#X msg 599 155 -1 -1 -3;
#X msg 479 183 draw linestrip;
#X msg 479 203 draw tri;
#X msg 479 225 draw tristrip;
#X msg 478 248 draw trifan;
#X msg 478 269 draw quad;
#X msg 478 291 draw quadstrip;
#X obj 537 88 rotateXYZ;
#X floatatom 595 65 5 0 0 0 - - -;
#X obj 537 326 curve 5;
#X obj 608 89 loadbang;
#X floatatom 599 237 5 0 10 0 - - -;
#X msg 599 253 width \$1;
#X floatatom 600 274 5 0 100 0 - - -;
#X msg 600 291 res \$1;
#X msg 605 213 \$1 \$1 \$1;
#X connect 13 0 14 0;
#X connect 14 0 13 0;
#X connect 30 0 47 0;
#X connect 31 0 47 0;
#X connect 32 0 47 0;
#X connect 33 0 45 0;
#X connect 34 0 47 1;
#X connect 35 0 47 2;
#X connect 36 0 53 0;
#X connect 37 0 47 4;
#X connect 38 0 47 3;
#X connect 39 0 47 0;
#X connect 40 0 47 0;
#X connect 41 0 47 0;
#X connect 42 0 47 0;
#X connect 43 0 47 0;
#X connect 44 0 47 0;
#X connect 45 0 47 0;
#X connect 46 0 45 1;
#X connect 46 0 45 3;
#X connect 48 0 34 0;
#X connect 49 0 50 0;
#X connect 50 0 47 0;
#X connect 51 0 52 0;
#X connect 52 0 47 0;
#X connect 53 0 47 5;

File diff suppressed because it is too large Load diff

View file

@ -1,70 +0,0 @@
#N canvas 291 154 710 345 10;
#X text 54 30 Class: geometric object;
#X obj 479 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 544 224 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 112 destroy;
#X msg 132 112 create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 549 263 pd gemwin;
#X msg 549 244 create;
#X text 545 223 Create window:;
#X text 485 29 Example:;
#X obj 7 65 cnv 15 450 80 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 216 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 9 221 Inlets:;
#X obj 8 156 cnv 15 450 50 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 155 Arguments:;
#X text 27 261 Inlet 2: float: size;
#X text 452 8 GEM object;
#X text 27 233 Inlet 1: gemlist;
#X text 9 287 Outlets:;
#X text 21 300 Outlet 1: gemlist;
#X obj 546 130 cnv 15 100 80 empty empty empty 20 12 0 14 -24198 -66577
0;
#X msg 485 65 draw line;
#X msg 485 86 draw fill;
#X msg 485 108 draw point;
#X obj 553 54 gemhead;
#X floatatom 575 144 5 0 0 2 size - -;
#X obj 553 79 rotateXYZ 90 0 0;
#X floatatom 598 172 3 0 0 2 segments - -;
#X text 27 272 Inlet 3: int: number of segments;
#X text 33 14 Synopsis: [cylinder];
#X obj 553 189 cylinder;
#X text 7 69 Description: Renders a cylinder.;
#X text 14 86 The cylinder object renders a cylinder at the current
position with current color. The look of the cylinder can be changed
with the draw message \, its size can be changed via the second inlet.
;
#X text 63 167 size of the cylinder \, segments;
#X text 63 182 defaults: 1 \, 10;
#X text 27 247 Inlet 1: message: draw [line|fill|point|default];
#X connect 3 0 4 0;
#X connect 4 0 3 0;
#X connect 18 0 27 0;
#X connect 19 0 27 0;
#X connect 20 0 27 0;
#X connect 21 0 23 0;
#X connect 22 0 27 1;
#X connect 23 0 27 0;
#X connect 24 0 27 2;

View file

@ -1,85 +0,0 @@
#N canvas 15 24 724 431 10;
#X obj 17 299 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 28 302 Inlets:;
#X text 28 339 Outlets:;
#X obj 17 264 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 26 263 Arguments:;
#X obj 17 69 cnv 15 430 190 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 46 352 Outlet 1: gemlist;
#X text 52 316 Inlet 1: gemlist;
#X text 466 15 GEM object;
#X obj 459 77 cnv 15 250 300 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 463 60 Example:;
#X obj 604 313 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 16 419 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 268 112 destroy;
#X msg 132 112 create \, 1;
#X obj 264 174 gemhead;
#X obj 264 200 world_light;
#X obj 238 68 r \$0-gemwin;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X connect 8 0 9 0;
#X connect 10 0 0 0;
#X restore 609 352 pd gemwin;
#X msg 609 333 create;
#X text 605 312 Create window:;
#X obj 460 106 cnv 15 240 90 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 461 84 gemhead 51;
#X obj 461 172 depth;
#X text 60 22 Synopsis: [depth];
#X text 81 41 Class: manips object;
#X text 27 72 Description: Activate / Deactivate depth test;
#X text 26 93 [depth] turns on and off depth test (also known as Z-buffering).
This is very useful if you are in single-buffer mode \, because then
a painting effect can be achieved. In double-buffered mode \, you probably
do not want to turn off the depth test \, unless you have taken control
of the rendering order by setting the priority of each gemhead (see
the gemhead example for explanation).;
#X obj 496 114 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 26 189 By default \, this object will turn OFF depth buffering
for the objects "below".;
#X text 72 274 float (0/1) : depth test on/off;
#X text 52 329 Inlet 1: float (0/1) : depth test on/off;
#X obj 461 293 cube;
#X obj 461 260 rotateXYZ 0 30 30;
#X floatatom 560 239 5 0 0 0 - - -;
#X floatatom 494 202 5 0 0 0 - - -;
#X floatatom 527 218 5 0 0 0 - - -;
#X obj 607 210 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X msg 607 229 lighting \$1;
#X obj 607 252 s \$0-gemwin;
#X text 630 210 lighting;
#X text 516 113 turn depth test on/off;
#X connect 12 0 13 0;
#X connect 13 0 12 0;
#X connect 16 0 17 0;
#X connect 17 0 27 0;
#X connect 22 0 17 0;
#X connect 27 0 26 0;
#X connect 28 0 27 3;
#X connect 29 0 27 1;
#X connect 30 0 27 2;
#X connect 31 0 32 0;
#X connect 32 0 33 0;

View file

@ -1,68 +0,0 @@
#N canvas 61 22 630 385 10;
#X text 452 8 GEM object;
#X obj 8 196 cnv 15 430 180 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 34 198 Inlets:;
#X text 58 211 Inlet 1: gemlist;
#X text 34 252 Outlets:;
#X text 52 265 Outlet 1: gemlist;
#X obj 8 146 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 145 Arguments:;
#X obj 8 76 cnv 15 430 60 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 449 77 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 60 Example:;
#X obj 514 254 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 197 134 destroy;
#X msg 132 112 reset \, lighting 1 \, create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 519 293 pd gemwin;
#X msg 519 274 create;
#X text 515 253 Create window:;
#X text 71 31 Class: manipulation object;
#X obj 450 118 cnv 15 160 60 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 451 84 gemhead;
#X obj 451 193 cube;
#X obj 500 192 gemhead;
#X obj 500 230 world_light;
#X text 62 156 a list of 3 (RGB) or 4 (RGBA) float-values.;
#X msg 478 130 0.4 0.8 1;
#X text 58 229 Inlet 2: list: 3(RGB) or 4(RGBA) float values;
#X text 50 12 Synopsis: [diffuse];
#X text 29 77 Description: diffuse colouring;
#X text 61 170 defaults: 0.8 0.8 0.8 1;
#X text 22 91 [diffuse] accepts a gemList and sets the diffuse-color
for all subsequent vertex-operations. You have to enable lighting to
see any effects.;
#X floatatom 561 190 5 0 0 0 - - -;
#X obj 500 211 rotate 66 1 0 0;
#X obj 451 156 diffuse 0 1 0;
#X obj 451 355 diffuseRGB;
#X text 448 332 see also:;
#X connect 12 0 13 0;
#X connect 13 0 12 0;
#X connect 17 0 30 0;
#X connect 19 0 29 0;
#X connect 22 0 30 1;
#X connect 28 0 29 1;
#X connect 29 0 20 0;
#X connect 30 0 18 0;

View file

@ -1,75 +0,0 @@
#N canvas 61 22 632 388 10;
#X text 452 8 GEM object;
#X obj 8 196 cnv 15 430 180 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 39 198 Inlets:;
#X text 63 211 Inlet 1: gemlist;
#X text 39 292 Outlets:;
#X text 57 305 Outlet 1: gemlist;
#X obj 8 146 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 145 Arguments:;
#X obj 8 76 cnv 15 430 60 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 449 77 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 60 Example:;
#X obj 514 254 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 197 134 destroy;
#X msg 132 112 reset \, lighting 1 \, create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 519 293 pd gemwin;
#X msg 519 274 create;
#X text 515 253 Create window:;
#X text 71 31 Class: manipulation object;
#X obj 450 118 cnv 15 160 60 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 451 84 gemhead;
#X obj 451 193 cube;
#X obj 500 192 gemhead;
#X obj 500 230 world_light;
#X text 62 156 a list of 3 (RGB) or 4 (RGBA) float-values.;
#X text 63 229 Inlet 2: float: red value;
#X text 63 244 Inlet 3: float: green value;
#X text 63 259 Inlet 4: float: blue value;
#X text 63 274 Inlet 5: float: alpha value;
#X floatatom 477 122 3 0 1 0 - - -;
#X floatatom 504 122 3 0 1 0 - - -;
#X floatatom 531 122 3 0 1 0 - - -;
#X floatatom 558 122 3 0 1 0 - - -;
#X text 50 12 Synopsis: [diffuseRGB];
#X text 29 77 Description: diffuse colouring;
#X text 22 91 [diffuseRGB] accepts a gemList and sets the diffuse-color
for all subsequent vertex-operations. You have to enable lighting to
see any effects.;
#X obj 451 156 diffuseRGB 0 1 0;
#X text 60 171 defaults: 0.8 0.8 0.8 1;
#X obj 500 211 rotate 63 1 0 0;
#X text 447 331 see also:;
#X obj 449 353 diffuse;
#X connect 12 0 13 0;
#X connect 13 0 12 0;
#X connect 17 0 33 0;
#X connect 19 0 35 0;
#X connect 26 0 33 1;
#X connect 27 0 33 2;
#X connect 28 0 33 3;
#X connect 29 0 33 4;
#X connect 33 0 18 0;
#X connect 35 0 20 0;

View file

@ -1,72 +0,0 @@
#N canvas 291 154 710 345 10;
#X text 54 30 Class: geometric object;
#X obj 479 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 544 224 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 112 destroy;
#X msg 132 112 create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 549 263 pd gemwin;
#X msg 549 244 create;
#X text 545 223 Create window:;
#X text 485 29 Example:;
#X obj 7 65 cnv 15 450 90 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 216 cnv 15 450 120 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 9 221 Inlets:;
#X obj 8 166 cnv 15 450 40 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 165 Arguments:;
#X text 452 8 GEM object;
#X text 27 233 Inlet 1: gemlist;
#X text 9 307 Outlets:;
#X text 21 320 Outlet 1: gemlist;
#X obj 481 81 cnv 15 160 140 empty empty empty 20 12 0 14 -24198 -66577
0;
#X msg 485 95 draw line;
#X msg 485 116 draw fill;
#X msg 485 138 draw point;
#X obj 553 54 gemhead;
#X floatatom 564 102 5 0 0 1 R - -;
#X floatatom 576 122 3 0 0 1 segments - -;
#X floatatom 589 147 5 0 0 1 r - -;
#X text 27 261 Inlet 2: float: size (= outer radius);
#X text 33 14 Synopsis: [disk];
#X text 7 69 Description: Renders a disk.;
#X text 14 86 The disk object renders a flat disk with a hole in the
middle at the current position with current color. The look of the
disk can be changed with the draw message \, its size can be changed
via the second inlet \, the size of the hole via the third inlet.;
#X text 26 286 Inlet 4: float: inner radius (default: 0);
#X obj 553 199 disk 1;
#X text 27 273 Inlet 3: int: number of segments (default: 10);
#X text 28 177 disk size(=outer radius) \, segments \, hole size(=inner
radius);
#X text 29 191 defaults: 1 \, 10 \, 0;
#X text 27 247 Inlet 1: message: draw [line|fill|point|default];
#X connect 3 0 4 0;
#X connect 4 0 3 0;
#X connect 17 0 29 0;
#X connect 18 0 29 0;
#X connect 19 0 29 0;
#X connect 20 0 29 0;
#X connect 21 0 29 1;
#X connect 22 0 29 2;
#X connect 23 0 29 3;

View file

@ -1,66 +0,0 @@
#N canvas 61 22 639 342 10;
#X text 452 8 GEM object;
#X obj 8 196 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 39 198 Inlets:;
#X text 63 211 Inlet 1: gemlist;
#X text 39 252 Outlets:;
#X text 57 265 Outlet 1: gemlist;
#X obj 8 146 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 145 Arguments:;
#X obj 8 76 cnv 15 430 60 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 449 77 cnv 15 170 200 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 60 Example:;
#X obj 510 209 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 197 134 destroy;
#X msg 132 112 reset \, lighting 1 \, create \, 1;
#X msg 277 206 lighting \$1;
#X obj 313 182 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X connect 8 0 0 0;
#X connect 9 0 8 0;
#X restore 515 248 pd gemwin;
#X msg 515 229 create;
#X text 511 208 Create window:;
#X text 71 31 Class: manipulation object;
#X obj 450 118 cnv 15 160 60 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 451 84 gemhead;
#X obj 451 193 cube;
#X text 62 156 a list of 3 (RGB) or 4 (RGBA) float-values.;
#X msg 478 130 0.4 0.8 1;
#X text 63 229 Inlet 2: list: 3(RGB) or 4(RGBA) float values;
#X text 60 171 defaults: 0 0 0 1;
#X text 50 12 Synopsis: [emission];
#X obj 451 156 emission 0 1 0;
#X text 29 77 Description: emission colouring;
#X text 21 91 [emission] accepts a gemList and sets the emission-color
for all subsequent vertex-operations. You have to enable lighting to
see any effects.;
#X text 448 285 see also:;
#X obj 450 308 emissionRGB;
#X connect 12 0 13 0;
#X connect 13 0 12 0;
#X connect 17 0 24 0;
#X connect 20 0 24 1;
#X connect 24 0 18 0;

View file

@ -1,70 +0,0 @@
#N canvas 61 22 639 342 10;
#X text 452 8 GEM object;
#X obj 8 196 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 39 198 Inlets:;
#X text 63 211 Inlet 1: gemlist;
#X text 39 292 Outlets:;
#X text 57 305 Outlet 1: gemlist;
#X obj 8 146 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 145 Arguments:;
#X obj 8 76 cnv 15 430 60 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 449 77 cnv 15 170 200 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 60 Example:;
#X obj 509 208 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 197 134 destroy;
#X msg 132 112 reset \, lighting 1 \, create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 514 247 pd gemwin;
#X msg 514 228 create;
#X text 510 207 Create window:;
#X text 71 31 Class: manipulation object;
#X obj 450 118 cnv 15 160 60 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 451 84 gemhead;
#X obj 451 193 cube;
#X text 62 156 a list of 3 (RGB) or 4 (RGBA) float-values.;
#X text 63 229 Inlet 2: float: red value;
#X text 63 244 Inlet 3: float: green value;
#X text 63 259 Inlet 4: float: blue value;
#X text 63 274 Inlet 5: float: alpha value;
#X floatatom 479 122 3 0 1 0 - - -;
#X floatatom 508 122 3 0 1 0 - - -;
#X floatatom 536 122 3 0 1 0 - - -;
#X floatatom 565 122 3 0 1 0 - - -;
#X obj 451 156 emissionRGB 0 1 0;
#X text 60 171 defaults: 0 0 0 1;
#X text 29 77 Description: emission colouring;
#X text 50 12 Synopsis: [emissionRGB];
#X text 22 91 [emissionRGB] accepts a gemList and sets the emission-color
for all subsequent vertex-operations. You have to enable lighting to
see any effects.;
#X text 449 284 see also:;
#X obj 451 307 emission;
#X connect 12 0 13 0;
#X connect 13 0 12 0;
#X connect 17 0 28 0;
#X connect 24 0 28 1;
#X connect 25 0 28 2;
#X connect 26 0 28 3;
#X connect 27 0 28 4;
#X connect 28 0 18 0;

View file

@ -1,86 +0,0 @@
#N canvas 35 199 694 458 10;
#X text 452 8 GEM object;
#X obj 8 335 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 11 334 Inlets:;
#X text 10 386 Outlets:;
#X obj 8 296 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 295 Arguments:;
#X obj 7 76 cnv 15 430 210 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 444 77 cnv 15 200 230 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 60 Example:;
#X obj 474 334 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 132 112 create \, 1;
#X msg 198 112 destroy;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 6 0;
#X connect 3 1 5 0;
#X connect 3 1 7 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 479 373 pd gemwin;
#X msg 479 354 create;
#X text 475 333 Create window:;
#X obj 450 178 cnv 15 190 70 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 451 84 gemhead;
#X text 63 306 <none>;
#X text 28 399 Outlet 1: gemlist;
#X text 35 346 Inlet 1: gemlist;
#X obj 10 211 cnv 15 420 70 empty empty empty 20 12 0 14 -225280 -66577
0;
#X text 71 31 Class: shader object;
#X obj 516 184 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#N canvas 0 0 450 300 open 0;
#X obj 75 103 openpanel;
#X obj 75 173 outlet;
#X obj 75 127 t b s;
#X msg 105 152 set open \$1;
#X obj 75 80 inlet;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X connect 2 1 3 0;
#X connect 3 0 1 0;
#X connect 4 0 0 0;
#X restore 459 183 pd open;
#X text 14 219 IMPORTANT NOTE: your openGL-implementation (gfx-card
driver \, ...) has to support either (or both) the ARB shader extensions
or the NV shader extensions in order to make use of this object.;
#X text 10 176 Of course \, you also have to supply anything else needed
for the shader to work (like textures \, ...);
#X obj 451 266 teapot;
#X msg 459 203 open examples/data/random.fp;
#X text 50 12 Synopsis: [fragment_program];
#X text 12 76 Description: load and apply an ARB fragment shader;
#X text 24 95 [fragment_program] loads and applies an ARB (or NV) fragment
shader.;
#X text 11 123 If you want to modify the parameters of the shader-program
\, you have to set the modification up yourself \, via [GEMglProgramEnvParameter*]
working on GL_FRAGMENT_PROGRAM_ARB.;
#X text 35 358 Inlet 1: messsage: open <filename> : fragment shader
program to load;
#X text 443 406 see also;
#X obj 508 406 vertex_program;
#X obj 451 226 fragment_program random.fp;
#X connect 10 0 11 0;
#X connect 11 0 10 0;
#X connect 14 0 33 0;
#X connect 20 0 21 0;
#X connect 21 0 25 0;
#X connect 25 0 33 0;
#X connect 33 0 24 0;

View file

@ -1,236 +0,0 @@
#N canvas 131 3 893 604 10;
#X obj 465 9 cnv 15 420 570 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 472 293 cnv 15 300 60 empty empty empty 20 12 0 14 -191407 -66577
0;
#X obj 474 18 cnv 15 400 250 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 477 41 gemhead 20;
#X obj 664 306 gemhead;
#X msg 615 106 dimen 320 240;
#X obj 477 468 rotateXYZ;
#X floatatom 794 427 5 0 0 0 - - -;
#X msg 762 114 color 0 0 1 0;
#X msg 602 87 dimen 1024 1024;
#X msg 751 74 color 0 0 0 0;
#X obj 477 422 t a b;
#X floatatom 717 469 5 0 0 0 - - -;
#X msg 549 232 rectangle \$1;
#X obj 549 214 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X msg 509 101 type FLOAT;
#X obj 664 274 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X obj 477 382 translateXYZ 0 0 -4;
#X obj 477 298 gemframebuffer;
#X obj 664 331 pix_texture;
#X obj 664 358 t a b;
#X msg 531 187 texunit \$1;
#X msg 495 62 type BYTE;
#X msg 503 82 type INT;
#X msg 658 179 format YUV;
#X msg 649 158 format RGB;
#X msg 668 200 format RGBA;
#X msg 680 220 format RGB32;
#X obj 664 487 square 2;
#X obj 664 449 rotateXYZ -40 0 200;
#X floatatom 707 429 5 0 0 0 - - -;
#X obj 477 487 pqtorusknots;
#N canvas 0 22 450 300 rotation 0;
#X obj 33 19 inlet;
#X obj 33 110 % 360;
#X obj 33 62 i;
#X obj 33 88 + 5;
#X obj 33 136 outlet;
#X obj 84 111 % 360;
#X obj 84 63 i;
#X obj 84 137 outlet;
#X obj 134 112 % 360;
#X obj 134 64 i;
#X obj 134 138 outlet;
#X obj 84 89 + 3;
#X obj 134 90 + 7;
#X connect 0 0 2 0;
#X connect 0 0 6 0;
#X connect 0 0 9 0;
#X connect 1 0 2 1;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
#X connect 3 0 1 0;
#X connect 5 0 6 1;
#X connect 5 0 7 0;
#X connect 6 0 11 0;
#X connect 8 0 9 1;
#X connect 8 0 10 0;
#X connect 9 0 12 0;
#X connect 11 0 5 0;
#X connect 12 0 8 0;
#X restore 509 443 pd rotation;
#X floatatom 531 167 5 0 0 0 - - -;
#N canvas 125 20 450 300 rotation 0;
#X obj 112 29 inlet;
#X obj 112 105 % 360;
#X obj 112 57 i;
#X obj 112 131 outlet;
#X obj 112 83 + 1;
#X connect 0 0 2 0;
#X connect 1 0 2 1;
#X connect 1 0 3 0;
#X connect 2 0 4 0;
#X connect 4 0 1 0;
#X restore 794 402 pd rotation;
#X obj 762 93 loadbang;
#X obj 477 402 color 1 0 0;
#X obj 649 245 t a;
#X obj 585 124 t a;
#X obj 751 135 t a;
#X obj 495 130 t a;
#X floatatom 563 361 5 0 0 0 - - -;
#X floatatom 607 362 5 0 0 0 - - -;
#X floatatom 520 361 5 0 0 0 - - -;
#X obj 495 154 t a;
#X obj 470 514 cnv 15 410 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#X msg 757 544 color 0 0 0 0;
#X msg 746 522 color 0 1 1 0;
#X msg 637 525 lighting \$1;
#X obj 615 526 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 112 destroy;
#X msg 132 112 create \, 1;
#X obj 67 40 route create destroy;
#X obj 20 217 gemhead 1;
#X obj 20 237 world_light;
#X connect 2 0 7 0;
#X connect 3 0 1 0;
#X connect 4 0 1 0;
#X connect 5 0 0 0;
#X connect 6 0 0 0;
#X connect 7 0 3 0;
#X connect 7 0 6 0;
#X connect 7 1 4 0;
#X connect 7 1 5 0;
#X connect 7 2 0 0;
#X connect 8 0 9 0;
#X restore 473 554 pd gemwin;
#X msg 473 529 destroy;
#X text 471 513 Create window:;
#X obj 637 552 t a;
#X text 476 22 Example:;
#X text 379 -10 GEM object;
#X obj 7 41 cnv 15 450 130 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 7 208 cnv 15 450 370 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 10 214 Inlets:;
#X obj 7 175 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 14 174 Arguments:;
#X text 28 233 Inlet 1: gemlist;
#X text 15 523 Outlets:;
#X text 31 539 Outlet 1: gemlist;
#X text 60 187 <none>;
#X text 102 -1 Synopsis: [gemframebuffer];
#X text 122 15 Class: framebuffer object;
#X text 12 50 Description: Renders a scenne in a texture \, for later
use.;
#X text 12 68 this example renders a scene (pqtorusknots) into a framebuffer
\, which is then used as a texture onto a square.;
#X text 13 98 you need framebuffer support (and its driver) on your
gfx-card;
#X text 28 247 Inlet 1: message: type [BYTE | INT | FLOAT];
#X text 27 315 Inlet 1: message: dimen <x> <y>;
#X text 27 349 Inlet 1: message: color <r> <g> <b> <a>;
#X text 26 430 Inlet 1: message: texunit <f>;
#X text 27 280 Inlet 1: message: format [RGB|RGBA|RGB32|YUV];
#X text 26 385 Inlet 1: message: rectangle [0|1];
#X text 103 262 (type of the framebuffer data);
#X text 102 330 (dimension of the framebuffer texture);
#X text 106 465 (usefull only with shader);
#X text 106 448 (change texunit of the texture);
#X text 31 557 Outlet 2: texture Id;
#X text 104 402 (texturing mode \; rectangle (1) or normalized (0))
;
#X text 100 296 (color format of the framebuffer);
#X text 102 365 (background color of the framebuffer);
#X obj 556 41 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X floatatom 493 323 5 0 0 0 - - -;
#X obj 477 342 scaleXYZ;
#X floatatom 563 326 5 0 0 0 - - -;
#X floatatom 528 325 5 0 0 0 - - -;
#X msg 585 30 perspec -1 1 -1 1 1 20;
#X msg 593 56 perspec -1 1 -1 1 3 75;
#X text 98 497 (frustum of the framebuffer);
#X text 752 29 default;
#X text 11 130 NOTE: the default view-point of [gemframebuffer] is
at the origin 0/0/0 \, unlike [gemwin] where it is at 0/0/4. You might
want to manually insert a [translateXYZ 0 0 -4].;
#X text 23 482 Inlet 1: message: perspec <left><right><bottom><top><near>
;
#X text 428 482 <far>;
#X connect 3 0 18 0;
#X connect 4 0 19 0;
#X connect 5 0 38 0;
#X connect 6 0 31 0;
#X connect 7 0 29 3;
#X connect 8 0 39 0;
#X connect 9 0 38 0;
#X connect 10 0 39 0;
#X connect 11 0 6 0;
#X connect 11 1 32 0;
#X connect 12 0 28 1;
#X connect 13 0 18 0;
#X connect 14 0 13 0;
#X connect 15 0 40 0;
#X connect 16 0 4 0;
#X connect 17 0 36 0;
#X connect 18 0 86 0;
#X connect 18 1 19 1;
#X connect 19 0 20 0;
#X connect 20 0 29 0;
#X connect 20 1 34 0;
#X connect 21 0 18 0;
#X connect 22 0 40 0;
#X connect 23 0 40 0;
#X connect 24 0 37 0;
#X connect 25 0 37 0;
#X connect 26 0 37 0;
#X connect 27 0 37 0;
#X connect 29 0 28 0;
#X connect 30 0 29 1;
#X connect 32 0 6 1;
#X connect 32 1 6 2;
#X connect 32 2 6 3;
#X connect 33 0 21 0;
#X connect 34 0 7 0;
#X connect 35 0 8 0;
#X connect 36 0 11 0;
#X connect 37 0 18 0;
#X connect 38 0 44 0;
#X connect 39 0 44 0;
#X connect 40 0 44 0;
#X connect 41 0 17 2;
#X connect 42 0 17 3;
#X connect 43 0 17 1;
#X connect 44 0 18 0;
#X connect 46 0 53 0;
#X connect 47 0 53 0;
#X connect 48 0 53 0;
#X connect 49 0 48 0;
#X connect 50 0 51 0;
#X connect 51 0 50 0;
#X connect 53 0 50 0;
#X connect 84 0 3 0;
#X connect 85 0 86 1;
#X connect 86 0 17 0;
#X connect 87 0 86 3;
#X connect 88 0 86 2;
#X connect 89 0 38 0;
#X connect 90 0 38 0;

View file

@ -1,116 +0,0 @@
#N canvas 32 22 937 572 10;
#X text 452 8 GEM object;
#X obj 8 438 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 18 440 Inlets:;
#X text 18 518 Outlets:;
#X text 36 531 Outlet 1: gemlist;
#X obj 8 393 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 398 Arguments:;
#X obj 8 76 cnv 15 430 310 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 50 12 Synopsis: [gemhead];
#X text 71 31 Class: control object;
#X text 29 77 Description: start a rendering chain;
#X obj 607 371 cnv 15 140 65 empty empty empty 20 12 0 14 -195568 -66577
0;
#X msg 622 391 create;
#X text 618 370 Create window:;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 132 93 create \, 1 \, frame 2;
#X msg 198 112 destroy \, reset;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 6 0;
#X connect 3 1 5 0;
#X connect 3 1 7 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 622 411 pd gemwin (2fps);
#X text 21 91 [gemhead] connects the gem objects to the window manager.
The start of any gemList begins with the gemhead. Without the gemhead
\, gem objects will not receive the render command.;
#X text 20 366 example: "1" before "50" before "-10" before "-23";
#X text 22 149 Any gem object connected after the gemhead will receive
one render command per frame.;
#X text 20 294 The rendering-order value can also be negative. Negative
numbered [gemhead]s will be rendered AFTER all positive [gemhead]s.
Note \, that Higher values (-3) will be rendered BEFORE lower values
(-10). [gemhead]s with negative numbers will NOT be affected by view-point
changes !!!;
#X text 62 409 float : priority (default : 50);
#X text 42 471 Inlet 1: bang : force rendering now.;
#X text 42 453 Inlet 1: float (1/0): turn rendering on/off (default
1);
#X text 42 490 Inlet 1: set <priority> : change priority value of this
chain.;
#X obj 442 74 cnv 15 160 240 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 451 79 enable/disable rendering;
#X obj 451 123 cnv 15 100 40 empty empty empty 20 12 0 14 -24198 -66577
0;
#X msg 470 240 gemList;
#X obj 470 134 gemhead;
#X msg 470 101 1;
#X msg 506 101 0;
#X obj 470 281 print ENABLE;
#X obj 470 199 square 0.5;
#X obj 606 74 cnv 15 160 240 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 770 74 cnv 15 160 240 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 617 81 force rendering;
#X text 789 79 set rendering order;
#X obj 621 128 cnv 15 100 40 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 781 135 cnv 15 100 40 empty empty empty 20 12 0 14 -24198 -66577
0;
#X msg 630 101 bang;
#X msg 791 101 set 45;
#X obj 791 286 print SETTABLE;
#X obj 630 284 print FORCEABLE;
#X msg 630 243 gemList;
#X msg 791 245 gemList;
#X obj 630 202 circle 0.5;
#X obj 791 204 triangle 0.5;
#X obj 791 144 gemhead 105;
#X text 21 188 All chain will be rendered one after the other. You
can control precisely the rendering order by giving [gemhead] a priority
value (argument or message). The default value is 50 The lower the
value is \, the sooner the gemhead will receive the rendering command
(a value of 1 is the lowest possible value). This value is important
when you are doing alpha blending and for certain objects (such as
light).;
#X obj 470 178 translateXYZ -2 0 0;
#X msg 854 101 set 105;
#X obj 630 181 translateXYZ 0 2 0;
#X obj 630 138 gemhead 50;
#X obj 791 183 translateXYZ 2 0 0;
#X connect 12 0 14 0;
#X connect 14 0 12 0;
#X connect 26 0 30 0;
#X connect 27 0 48 0;
#X connect 28 0 27 0;
#X connect 29 0 27 0;
#X connect 31 0 26 0;
#X connect 38 0 51 0;
#X connect 39 0 46 0;
#X connect 42 0 41 0;
#X connect 43 0 40 0;
#X connect 44 0 42 0;
#X connect 45 0 43 0;
#X connect 46 0 52 0;
#X connect 48 0 31 0;
#X connect 49 0 46 0;
#X connect 50 0 44 0;
#X connect 51 0 50 0;
#X connect 52 0 45 0;

View file

@ -1,62 +0,0 @@
#N canvas 64 27 679 445 10;
#X obj 27 85 cnv 15 450 170 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 28 303 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 29 308 Inlets:;
#X obj 28 265 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 37 264 Arguments:;
#X text 472 28 GEM object;
#X text 29 337 Outlets:;
#X text 495 49 Example:;
#X text 74 50 Class: control object;
#X obj 486 84 cnv 15 170 180 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 495 101 cnv 15 150 80 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 546 194 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 112 destroy;
#X msg 132 112 create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 551 233 pd gemwin;
#X msg 551 214 create;
#X text 547 193 Create window:;
#X text 53 34 Synopsis: [gemkeyboard];
#X text 27 89 Description: output keyboard events in the GEM window
;
#X text 36 106 [gemkeyboard] sends out keyboard events which occur
in the GEM window. Such event will appear on KEY_DOWN and will give
the KeyCode of the button.;
#X text 34 181 Furthermore \, i would like to make this object really
cross-platform one day. Thus the KeyCode might change on one system
or another in future times.;
#X text 34 228 USE AT YOUR OWN RISK !!!;
#X text 35 148 It is not guaranteed \, that Windows / Linux / OSX versions
will give the same KeyCode for the same key pressed !!!;
#X text 83 275 none;
#X text 47 320 Inlet 1: non - used;
#X text 41 350 Outlet 1: keyCode;
#X obj 508 115 gemkeyboard;
#X floatatom 508 153 5 0 0 1 keyCode - -;
#X text 488 274 see also:;
#X obj 489 299 gemkeyname;
#X connect 12 0 13 0;
#X connect 13 0 12 0;
#X connect 24 0 25 0;

View file

@ -1,68 +0,0 @@
#N canvas 64 27 679 445 10;
#X obj 27 85 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 27 325 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 35 332 Inlets:;
#X obj 27 290 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 36 291 Arguments:;
#X text 472 28 GEM object;
#X text 35 361 Outlets:;
#X text 495 49 Example:;
#X text 74 50 Class: control object;
#X obj 486 84 cnv 15 170 180 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 495 101 cnv 15 150 80 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 546 194 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 112 destroy;
#X msg 132 112 create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 551 233 pd gemwin;
#X msg 551 214 create;
#X text 547 193 Create window:;
#X text 38 89 Description: output keyboard events in the GEM window
;
#X text 37 265 USE AT YOUR OWN RISK !!!;
#X text 82 302 none;
#X text 53 344 Inlet 1: non - used;
#X text 488 274 see also:;
#X text 53 34 Synopsis: [gemkeyname];
#X text 36 108 [gemkeyname] sends out keyboard events which occur in
the GEM window. Such event will give a symbolic description of the
button. The "state"-outlet will be 1 for KEY_DOWN and 0 for KEY_UP.
;
#X text 37 219 Furthermore \, i would like to make this object really
cross-platform one day. Thus the KeyName might change on one system
or another in future times.;
#X text 37 161 It is not guaranteed \, that Windows / Linux / OSX versions
will give the same description for the same key pressed !!! Also \,
there is no guarantee \, that the pd-object [keyname] will return the
same symbols as [gemkeyname];
#X text 53 376 Outlet 1: state;
#X text 53 390 Outlet 2: keyName;
#X obj 489 299 gemkeyboard;
#X floatatom 508 160 2 0 0 1 state - -;
#X symbolatom 565 134 10 0 0 0 keyName - -;
#X obj 508 115 gemkeyname;
#X connect 12 0 13 0;
#X connect 13 0 12 0;
#X connect 29 0 27 0;
#X connect 29 1 28 0;

View file

@ -1,73 +0,0 @@
#N canvas 443 181 661 405 10;
#X obj 7 65 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 216 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 9 221 Inlets:;
#X obj 8 176 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 175 Arguments:;
#X text 452 8 GEM object;
#X text 27 233 Inlet 1: gemlist;
#X text 9 280 Outlets:;
#X text 21 293 Outlet 1: gemlist;
#X text 63 186 none;
#X text 475 29 Example:;
#X text 33 14 Synopsis: [gemlist];
#X text 54 30 Class: control object;
#X text 27 247 Inlet 1: bang;
#X text 27 261 Inlet 2: gemlist;
#X text 7 69 Description: Store a gemlist;
#X text 16 86 The gemlist object stores a gemlist \, which may de output
by sending it a "bang" message.;
#X obj 467 47 cnv 15 170 340 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 475 81 cnv 15 150 130 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 528 320 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 112 destroy;
#X msg 132 112 create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 533 359 pd gemwin;
#X msg 533 340 create;
#X text 529 319 Create window:;
#X obj 498 59 gemhead;
#X obj 484 190 gemlist;
#X obj 484 169 until;
#X obj 484 288 scaleXYZ 0.9 0.9 0.9;
#X obj 484 243 translateXYZ 0.5 0 0;
#X msg 484 149 30;
#X obj 484 265 rotateXYZ 0 0 30;
#X obj 484 221 circle 0.3 33;
#X obj 498 107 route gem_state;
#X obj 498 127 route float;
#X obj 498 86 t a a;
#X connect 20 0 21 0;
#X connect 21 0 20 0;
#X connect 23 0 33 0;
#X connect 24 0 30 0;
#X connect 25 0 24 0;
#X connect 27 0 29 0;
#X connect 28 0 25 0;
#X connect 29 0 26 0;
#X connect 30 0 27 0;
#X connect 31 0 32 0;
#X connect 32 1 28 0;
#X connect 33 0 31 0;
#X connect 33 1 24 1;

View file

@ -1,297 +0,0 @@
#N canvas 594 117 688 676 10;
#X text 452 8 GEM object;
#X obj 8 206 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 39 218 Inlets:;
#X text 63 231 Inlet 1: gemlist;
#X text 38 240 Outlets:;
#X text 62 253 Outlet 1: gemlist;
#X obj 8 156 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 155 Arguments:;
#X obj 8 76 cnv 15 430 70 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 453 60 Example:;
#X obj 9 415 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 454 304 gemwin 0;
#X obj 132 160 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 133 destroy;
#X obj 288 57 world_light;
#X obj 288 28 gemhead;
#X msg 132 112 create \, 1 \, lighting 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 9 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 8 0 7 0;
#X connect 9 0 0 0;
#X restore 14 454 pd gemwin;
#X msg 14 435 create;
#X text 10 414 Create window:;
#X text 50 12 Synopsis: [gemlist_info];
#X text 71 31 Class: information object;
#X text 29 77 Description: get curent transformation of a gemlist;
#X text 42 94 [gemlist_info] accepts a gemList decompost the transformation
matrix in basic transformation (translation \, scale \, shear \, rotation)
;
#X text 60 174 no argument;
#X text 62 299 Outlet 5: 3 float list : translationX \, Y and Z;
#X text 62 265 Outlet 2: 3 float list : RotationX \, Y and Z;
#X text 62 277 Outlet 3: 3 float list : shear YX \, YZ and ZX;
#X text 62 288 Outlet 4: 3 float list : scale X \, Y and Z;
#X obj 9 336 cnv 15 430 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 452 890 more 0;
#X obj 30 122 gemhead;
#X floatatom 44 144 5 0 0 0 - - -;
#X floatatom 78 144 5 0 0 0 - - -;
#X floatatom 112 144 5 0 0 0 - - -;
#X floatatom 46 184 5 0 0 0 - - -;
#X floatatom 80 184 5 0 0 0 - - -;
#X floatatom 114 184 5 0 0 0 - - -;
#X floatatom 52 227 5 0 0 0 - - -;
#X floatatom 86 227 5 0 0 0 - - -;
#X floatatom 120 227 5 0 0 0 - - -;
#X obj 30 433 gemlist_info;
#X obj 192 568 unpack f f f;
#X obj 178 396 gemhead;
#X obj 178 536 translateXYZ;
#X floatatom 192 591 5 0 0 0 - - -;
#X floatatom 225 591 5 0 0 0 - - -;
#X floatatom 259 591 5 0 0 0 - - -;
#X floatatom 193 761 5 0 0 0 - - -;
#X floatatom 226 761 5 0 0 0 - - -;
#X floatatom 260 761 5 0 0 0 - - -;
#X floatatom 200 516 5 0 0 0 - - -;
#X floatatom 233 516 5 0 0 0 - - -;
#X floatatom 267 516 5 0 0 0 - - -;
#X obj 193 734 unpack f f f;
#X obj 200 490 unpack f f f;
#X obj 178 421 GEMglLoadIdentity;
#X obj 178 450 color 1 0 0;
#X floatatom 46 336 5 0 0 0 - - -;
#X floatatom 80 336 5 0 0 0 - - -;
#X floatatom 114 336 5 0 0 0 - - -;
#X floatatom 52 379 5 0 0 0 - - -;
#X floatatom 86 379 5 0 0 0 - - -;
#X floatatom 120 379 5 0 0 0 - - -;
#X obj 30 163 scaleXYZ 1 1 1;
#X obj 30 205 rotateXYZ 0 0 0;
#X obj 30 247 translateXYZ 0 0 0;
#X obj 30 357 rotateXYZ 0 0 0;
#X obj 30 399 translateXYZ 0 0 0;
#X floatatom 44 283 5 0 0 0 - - -;
#X floatatom 78 283 5 0 0 0 - - -;
#X floatatom 112 283 5 0 0 0 - - -;
#X obj 30 302 scaleXYZ 1 1 1;
#X obj 30 512 cube;
#X obj 30 484 scaleXYZ 1 1 0.2;
#X floatatom 192 665 8 0 0 0 - - -;
#X floatatom 225 681 8 0 0 0 - - -;
#X floatatom 259 697 8 0 0 0 - - -;
#X obj 192 643 unpack f f f;
#N canvas 296 410 419 328 shear 0;
#X obj 28 17 inlet;
#X obj 28 270 outlet;
#X obj 108 21 inlet;
#X obj 205 20 inlet;
#X obj 297 18 inlet;
#X text 117 38 ShearXY;
#X text 217 37 ShearXZ;
#X text 306 36 ShearYZ;
#X obj 28 104 shearYX;
#X obj 28 153 shearZX;
#X obj 28 212 shearZY;
#X connect 0 0 8 0;
#X connect 2 0 8 1;
#X connect 3 0 9 1;
#X connect 4 0 10 1;
#X connect 8 0 9 0;
#X connect 9 0 10 0;
#X connect 10 0 1 0;
#X restore 178 711 pd shear;
#X obj 178 811 cube 0.5;
#X obj 178 80 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X obj 178 785 rotateXYZ;
#X obj 178 610 scaleXYZ;
#X obj 178 30 loadbang;
#X msg 178 55 0;
#X text 50 844 this show the transformation neaded to create a specific
transformation matrix decomposed with gemlist_info;
#X connect 0 0 33 0;
#X connect 1 0 33 1;
#X connect 2 0 33 2;
#X connect 3 0 33 3;
#X connect 4 0 34 1;
#X connect 5 0 34 2;
#X connect 6 0 34 3;
#X connect 7 0 35 1;
#X connect 8 0 35 2;
#X connect 9 0 35 3;
#X connect 10 0 43 0;
#X connect 10 1 23 0;
#X connect 10 2 47 0;
#X connect 10 3 11 0;
#X connect 10 4 24 0;
#X connect 11 0 14 0;
#X connect 11 1 15 0;
#X connect 11 2 16 0;
#X connect 12 0 25 0;
#X connect 13 0 52 0;
#X connect 14 0 52 1;
#X connect 15 0 52 2;
#X connect 16 0 52 3;
#X connect 17 0 51 1;
#X connect 18 0 51 2;
#X connect 19 0 51 3;
#X connect 20 0 13 1;
#X connect 21 0 13 2;
#X connect 22 0 13 3;
#X connect 23 0 17 0;
#X connect 23 1 18 0;
#X connect 23 2 19 0;
#X connect 24 0 20 0;
#X connect 24 1 21 0;
#X connect 24 2 22 0;
#X connect 25 0 26 0;
#X connect 26 0 13 0;
#X connect 27 0 36 1;
#X connect 28 0 36 2;
#X connect 29 0 36 3;
#X connect 30 0 37 1;
#X connect 31 0 37 2;
#X connect 32 0 37 3;
#X connect 33 0 34 0;
#X connect 34 0 35 0;
#X connect 35 0 41 0;
#X connect 36 0 37 0;
#X connect 37 0 10 0;
#X connect 38 0 41 1;
#X connect 39 0 41 2;
#X connect 40 0 41 3;
#X connect 41 0 36 0;
#X connect 43 0 42 0;
#X connect 44 0 48 1;
#X connect 45 0 48 2;
#X connect 46 0 48 3;
#X connect 47 0 44 0;
#X connect 47 1 45 0;
#X connect 47 2 46 0;
#X connect 48 0 51 0;
#X connect 50 0 0 0;
#X connect 50 0 12 0;
#X connect 51 0 49 0;
#X connect 52 0 48 0;
#X connect 53 0 54 0;
#X connect 54 0 50 0;
#X restore 15 349 pd more;
#X obj 449 77 cnv 15 200 570 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 459 310 cnv 15 180 40 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 472 89 gemhead;
#X floatatom 494 121 5 0 0 0 - - -;
#X floatatom 528 121 5 0 0 0 - - -;
#X floatatom 562 121 5 0 0 0 - - -;
#X floatatom 488 264 5 0 0 0 - - -;
#X floatatom 522 264 5 0 0 0 - - -;
#X floatatom 556 264 5 0 0 0 - - -;
#X floatatom 486 170 5 0 0 0 - - -;
#X floatatom 520 170 5 0 0 0 - - -;
#X floatatom 554 170 5 0 0 0 - - -;
#X obj 472 320 gemlist_info;
#X obj 488 596 unpack f f f;
#X floatatom 488 619 5 0 0 0 - - -;
#X floatatom 521 619 5 0 0 0 - - -;
#X floatatom 555 619 5 0 0 0 - - -;
#X floatatom 522 470 5 0 0 0 - - -;
#X floatatom 555 470 5 0 0 0 - - -;
#X floatatom 589 470 5 0 0 0 - - -;
#X floatatom 539 394 5 0 0 0 - - -;
#X floatatom 572 394 5 0 0 0 - - -;
#X floatatom 606 394 5 0 0 0 - - -;
#X obj 522 444 unpack f f f;
#X obj 539 371 unpack f f f;
#X text 547 356 position;
#X text 533 428 size;
#X obj 505 520 unpack f f f;
#N canvas 437 191 389 322 shear 0;
#X obj 37 27 inlet;
#X obj 37 280 outlet;
#X obj 118 31 inlet;
#X obj 215 30 inlet;
#X obj 307 28 inlet;
#X text 127 48 ShearXY;
#X text 227 47 ShearXZ;
#X text 316 46 ShearYZ;
#X obj 37 114 shearXY;
#X obj 37 163 shearXZ;
#X obj 37 222 shearYZ;
#X connect 0 0 8 0;
#X connect 2 0 8 1;
#X connect 3 0 9 1;
#X connect 4 0 10 1;
#X connect 8 0 9 0;
#X connect 9 0 10 0;
#X connect 10 0 1 0;
#X restore 472 237 pd shear;
#X obj 472 285 rotateXYZ;
#X obj 472 189 scaleXYZ;
#X obj 472 144 translateXYZ;
#X floatatom 486 216 5 0 0 0 - - -;
#X floatatom 520 216 5 0 0 0 - - -;
#X floatatom 554 216 5 0 0 0 - - -;
#X floatatom 505 545 5 0 0 0 - - -;
#X floatatom 538 545 5 0 0 0 - - -;
#X floatatom 572 545 5 0 0 0 - - -;
#X text 498 580 orientation;
#X text 514 504 shear (YX \, ZX \, ZY);
#X text 76 349 <- more about gemlist_info;
#X text 18 375 see also :;
#X obj 100 375 gemlist_matrix;
#X connect 11 0 12 0;
#X connect 12 0 11 0;
#X connect 27 0 56 0;
#X connect 28 0 56 1;
#X connect 29 0 56 2;
#X connect 30 0 56 3;
#X connect 31 0 54 1;
#X connect 32 0 54 2;
#X connect 33 0 54 3;
#X connect 34 0 55 1;
#X connect 35 0 55 2;
#X connect 36 0 55 3;
#X connect 37 1 38 0;
#X connect 37 2 52 0;
#X connect 37 3 48 0;
#X connect 37 4 49 0;
#X connect 38 0 39 0;
#X connect 38 1 40 0;
#X connect 38 2 41 0;
#X connect 48 0 42 0;
#X connect 48 1 43 0;
#X connect 48 2 44 0;
#X connect 49 0 45 0;
#X connect 49 1 46 0;
#X connect 49 2 47 0;
#X connect 52 0 60 0;
#X connect 52 1 61 0;
#X connect 52 2 62 0;
#X connect 53 0 54 0;
#X connect 54 0 37 0;
#X connect 55 0 53 0;
#X connect 56 0 55 0;
#X connect 57 0 53 1;
#X connect 58 0 53 2;
#X connect 59 0 53 3;

View file

@ -1,120 +0,0 @@
#N canvas 594 117 675 520 10;
#X text 452 8 GEM object;
#X obj 8 206 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 39 218 Inlets:;
#X text 63 231 Inlet 1: gemlist;
#X text 38 240 Outlets:;
#X text 62 253 Outlet 1: gemlist;
#X obj 8 156 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 155 Arguments:;
#X obj 8 76 cnv 15 430 70 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 453 60 Example:;
#X obj 9 385 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 454 304 gemwin 0;
#X obj 132 160 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 133 destroy;
#X obj 288 57 world_light;
#X obj 288 28 gemhead;
#X msg 132 112 create \, 1 \, lighting 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 9 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 8 0 7 0;
#X connect 9 0 0 0;
#X restore 14 424 pd gemwin;
#X msg 14 405 create;
#X text 10 384 Create window:;
#X text 71 31 Class: information object;
#X text 60 174 no argument;
#X obj 9 336 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
0;
#X obj 449 77 cnv 15 200 400 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 459 310 cnv 15 180 40 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 472 89 gemhead;
#X floatatom 494 121 5 0 0 0 - - -;
#X floatatom 528 121 5 0 0 0 - - -;
#X floatatom 562 121 5 0 0 0 - - -;
#X floatatom 488 264 5 0 0 0 - - -;
#X floatatom 522 264 5 0 0 0 - - -;
#X floatatom 556 264 5 0 0 0 - - -;
#X floatatom 486 170 5 0 0 0 - - -;
#X floatatom 520 170 5 0 0 0 - - -;
#X floatatom 554 170 5 0 0 0 - - -;
#N canvas 437 191 753 491 shear 0;
#X obj 25 17 inlet;
#X obj 28 270 outlet;
#X obj 108 21 inlet;
#X obj 205 20 inlet;
#X obj 297 18 inlet;
#X text 117 38 ShearXY;
#X text 217 37 ShearXZ;
#X text 306 36 ShearYZ;
#X obj 27 104 shearXY;
#X obj 26 153 shearXZ;
#X obj 26 212 shearYZ;
#X connect 0 0 8 0;
#X connect 2 0 8 1;
#X connect 3 0 9 1;
#X connect 4 0 10 1;
#X connect 8 0 9 0;
#X connect 9 0 10 0;
#X connect 10 0 1 0;
#X restore 472 237 pd shear;
#X obj 472 285 rotateXYZ;
#X obj 472 189 scaleXYZ;
#X obj 472 144 translateXYZ;
#X floatatom 486 216 5 0 0 0 - - -;
#X floatatom 520 216 5 0 0 0 - - -;
#X floatatom 554 216 5 0 0 0 - - -;
#X obj 101 348 gemlist_info;
#X obj 472 320 gemlist_matrix;
#X text 14 351 see also :;
#X text 29 77 Description: get curent transformation matrix of a gemlist
;
#X msg 496 378 \$1 \$2 \$3;
#X msg 503 398 \$5 \$6 \$7;
#X msg 510 419 \$9 \$10 \$11;
#X msg 517 440 \$13 \$14 \$15;
#X text 50 12 Synopsis: [gemlist_matrix];
#X text 42 94 [gemlist_matrix] accepts a gemList and output the transformation
matrix.;
#X text 62 265 Outlet 2: transformation matrix (16 floats);
#X connect 11 0 12 0;
#X connect 12 0 11 0;
#X connect 19 0 32 0;
#X connect 20 0 32 1;
#X connect 21 0 32 2;
#X connect 22 0 32 3;
#X connect 23 0 30 1;
#X connect 24 0 30 2;
#X connect 25 0 30 3;
#X connect 26 0 31 1;
#X connect 27 0 31 2;
#X connect 28 0 31 3;
#X connect 29 0 30 0;
#X connect 30 0 37 0;
#X connect 31 0 29 0;
#X connect 32 0 31 0;
#X connect 33 0 29 1;
#X connect 34 0 29 2;
#X connect 35 0 29 3;
#X connect 37 1 40 0;
#X connect 37 1 41 0;
#X connect 37 1 42 0;
#X connect 37 1 43 0;

View file

@ -1,115 +0,0 @@
#N canvas 179 30 929 414 10;
#X obj 7 65 cnv 15 450 170 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 283 cnv 15 450 120 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 9 288 Inlets:;
#X obj 8 245 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 244 Arguments:;
#X text 452 8 GEM object;
#X text 9 317 Outlets:;
#X text 475 29 Example:;
#X text 54 30 Class: control object;
#X obj 466 64 cnv 15 170 180 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 466 284 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 112 destroy;
#X msg 132 112 create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 471 323 pd gemwin;
#X msg 471 304 create;
#X text 467 283 Create window:;
#X text 27 300 Inlet 1: non - used;
#X text 468 364 see also:;
#X text 33 14 Synopsis: [gemmouse];
#X text 7 69 Description: mouse events in the GEM window;
#X text 16 86 [gemmouse] sends out mouse events which occur in the
GEM window. The X and Y Position go from 0 to the size of the window
in pixels. The point (0 \, 0) is in the top left of the window.;
#X text 15 141 You can also set some normalization of the output coordinates
with arguments.;
#X text 15 170 The button outlets send a 1 when the specified button
is pressed and a 0 when it is released.;
#X text 63 255 [list : x-normalization y-normalization];
#X text 21 330 Outlet 1: x position;
#X text 21 343 Outlet 2: y position;
#X text 21 355 Outlet 3: left button state;
#X text 21 368 Outlet 4: middle button state;
#X text 21 381 Outlet 5: right button state;
#X obj 466 385 gemkeyboard;
#X obj 478 82 cnv 15 100 40 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 491 93 gemmouse;
#X floatatom 491 218 9 0 0 1 X-position - -;
#X floatatom 502 196 8 0 0 1 Y-position - -;
#X floatatom 513 174 2 0 0 1 left-Button - -;
#X floatatom 524 153 2 0 0 1 middle-Button - -;
#X floatatom 536 129 2 0 0 1 right-Button - -;
#X obj 642 64 cnv 15 280 180 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 654 82 cnv 15 100 40 empty empty empty 20 12 0 14 -24198 -66577
0;
#X floatatom 657 135 9 0 0 1 X-position - -;
#X floatatom 674 113 8 0 0 1 Y-position - -;
#X text 792 134 (normalized to 0..1);
#X obj 657 89 gemmouse 1 1;
#X text 791 111 (normalized to 0..1);
#X obj 656 186 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#N canvas 589 352 498 353 follow_mouse 0;
#X obj 112 29 inlet;
#X obj 168 74 * 8;
#X obj 168 97 - 4;
#X obj 168 31 inlet;
#X obj 112 129 gemhead;
#X obj 112 189 translateXYZ;
#X obj 112 217 colorRGB 1 0 0;
#X obj 112 242 square 0.25;
#X obj 214 139 - 4;
#X obj 214 33 inlet;
#X text 253 76 invert y;
#X obj 214 116 * 8;
#X msg 214 57 1 \$1;
#X obj 214 81 -;
#X connect 0 0 4 0;
#X connect 1 0 2 0;
#X connect 2 0 5 1;
#X connect 3 0 1 0;
#X connect 4 0 5 0;
#X connect 5 0 6 0;
#X connect 6 0 7 0;
#X connect 8 0 5 2;
#X connect 9 0 12 0;
#X connect 11 0 8 0;
#X connect 12 0 13 0;
#X connect 13 0 11 0;
#X restore 656 209 pd follow_mouse;
#X connect 11 0 12 0;
#X connect 12 0 11 0;
#X connect 29 0 30 0;
#X connect 29 1 31 0;
#X connect 29 2 32 0;
#X connect 29 3 33 0;
#X connect 29 4 34 0;
#X connect 37 0 43 1;
#X connect 38 0 43 2;
#X connect 40 0 37 0;
#X connect 40 1 38 0;
#X connect 42 0 43 0;

View file

@ -1,32 +0,0 @@
#N canvas 293 148 600 556 10;
#X text 135 37 part of GEM;
#X obj 157 187 gemorb 1;
#X text 69 93 respond to events of a SpaceOrb on a specified commport.
;
#X msg 157 290 (X Y Z) Position;
#X msg 182 255 (X Y Z) Rotation;
#X msg 208 219 (a b c d e f g) Button;
#X text 152 70 [gemorb];
#X text 67 326 [gemorb] connects to a SpaceOrb onthe commport specified
as the creation-argument.;
#X text 70 358 You have to have a SpaceOrb to make serious use of [gemorb]
;
#X text 66 389 Position and Rotation give you float-triplets specifying
the position/rotation at/for the 3 axis;
#X text 66 426 Button gives a 9tupel with the state \, each button
is in;
#X msg 180 118 reset;
#X msg 180 140 timer <time>;
#X msg 180 162 nullregion <region>;
#X text 65 450 You can reset the SpaceOrb either with the Reset-Button
on the device or with the "reset"-message.;
#X text 67 483 You can define the nullregion with the "nullregion"-message.
;
#X text 67 503 You can set the pause between the polls of the SpaceOrb
with the "timer" message.;
#X connect 1 0 3 0;
#X connect 1 1 4 0;
#X connect 1 2 5 0;
#X connect 11 0 1 0;
#X connect 12 0 1 0;
#X connect 13 0 1 0;

View file

@ -1,62 +0,0 @@
#N canvas 4 52 570 713 10;
#X obj 96 51 gemreceive;
#X text 169 51 ordered receive;
#X obj 72 227 gemreceive foo -1;
#X obj 72 249 print first;
#X obj 412 227 gemreceive foo 12;
#X obj 412 249 print third;
#X obj 282 227 gemreceive foo 1996;
#X obj 282 249 print fourth;
#X obj 182 249 print second;
#X obj 72 196 s foo;
#X text 58 91 [gemreceive] takes an additional argument (compared to
Pd's [receive]) that specifies the priority.;
#X text 61 136 The higher the number \, the later the object will receive!
;
#X obj 182 227 gemreceive foo;
#X text 223 169 the default priority is "0";
#X text 76 298 1st inlet allows you to change the receiver name;
#X obj 107 371 gemreceive bar;
#X obj 107 393 print foobar;
#X msg 235 337 FOO;
#X msg 273 337 BAR;
#X obj 273 359 s bar;
#X msg 123 351 symbol bar;
#X text 80 443 2nd inlet let's you change the priority on the fly;
#X obj 116 610 gemreceive foobar 10;
#X obj 252 610 gemreceive foobar 20;
#X obj 116 632 print left;
#X obj 252 632 print right;
#X msg 116 464 left2right;
#X obj 116 518 t a a;
#X obj 233 520 route left2right right2left;
#X msg 202 464 right2left;
#X msg 233 542 10 20;
#X msg 312 543 20 10;
#X obj 233 564 unpack;
#X obj 116 540 s foobar;
#X msg 72 173 bang;
#X obj 235 359 s fou;
#X msg 107 331 symbol fou;
#X connect 2 0 3 0;
#X connect 4 0 5 0;
#X connect 6 0 7 0;
#X connect 12 0 8 0;
#X connect 15 0 16 0;
#X connect 17 0 35 0;
#X connect 18 0 19 0;
#X connect 20 0 15 0;
#X connect 22 0 24 0;
#X connect 23 0 25 0;
#X connect 26 0 27 0;
#X connect 27 0 33 0;
#X connect 27 1 28 0;
#X connect 28 0 30 0;
#X connect 28 1 31 0;
#X connect 29 0 27 0;
#X connect 30 0 32 0;
#X connect 31 0 32 0;
#X connect 32 0 22 1;
#X connect 32 1 23 1;
#X connect 34 0 9 0;
#X connect 36 0 15 0;

View file

@ -1,25 +0,0 @@
#N canvas 293 148 600 385 10;
#X text 135 37 part of GEM;
#X text 152 70 [gemtablet];
#X text 69 93 respond to events of a graph-tablet;
#X obj 110 118 gemtablet ........;
#X text 67 326 [gemtablet] connects to a graph-tablet. You have to
have a graph-tablet to make any use of [gemtablet];
#X floatatom 110 304 5 0 0 1 X-pos - -;
#X floatatom 125 287 5 0 0 1 Y-pos - -;
#X floatatom 140 267 5 0 0 1 Pressure - -;
#X floatatom 155 246 5 0 0 1 Azimuth - -;
#X floatatom 170 226 5 0 0 1 Altitude - -;
#X floatatom 185 207 5 0 0 1 Twist - -;
#X floatatom 200 178 1 0 0 1 Left_Button - -;
#X floatatom 215 160 1 0 0 1 Middle_Button - -;
#X floatatom 231 140 1 0 0 1 Right_Button - -;
#X connect 3 0 5 0;
#X connect 3 1 6 0;
#X connect 3 2 7 0;
#X connect 3 3 8 0;
#X connect 3 4 9 0;
#X connect 3 5 10 0;
#X connect 3 6 11 0;
#X connect 3 7 12 0;
#X connect 3 8 13 0;

View file

@ -1,887 +0,0 @@
#N canvas 192 122 1084 672 10;
#N canvas 1 84 450 300 fps 0;
#X obj 46 -61 gemhead;
#X obj 46 -21 realtime;
#X obj 46 -41 t b b;
#X obj 46 41 /;
#X msg 46 21 1000 \$1;
#X obj 46 106 outlet;
#X obj 46 63 + 0.5;
#X obj 46 85 i;
#X connect 0 0 2 0;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 2 1 1 1;
#X connect 3 0 6 0;
#X connect 4 0 3 0;
#X connect 6 0 7 0;
#X connect 7 0 5 0;
#X restore 466 149 pd fps;
#X floatatom 466 172 5 0 0 1 fps - -;
#X obj 6 76 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 7 236 cnv 15 450 260 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 7 181 cnv 15 450 50 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 59 27 Class: geometric object;
#X text 467 7 GEM object;
#X text 61 7 Synopsis: [gemvertexbuffer];
#X obj 462 76 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 5 76 450 300 gemwin 0;
#X obj 132 246 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 142 destroy;
#X msg 132 142 create \, 1;
#X obj 245 38 loadbang;
#X msg 272 82 reset \, frame 100;
#X obj 245 58 t b b;
#X obj 132 117 t b b;
#X msg 376 135 \; pd dsp 1;
#X obj 349 114 t b b;
#X obj 349 181 del 100;
#X obj 349 201 s \$0-init100;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 11 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X connect 8 0 10 0;
#X connect 9 0 0 0;
#X connect 10 0 5 0;
#X connect 10 1 9 0;
#X connect 11 0 7 0;
#X connect 11 1 13 0;
#X connect 13 0 14 0;
#X connect 13 1 12 0;
#X connect 14 0 15 0;
#X restore 467 115 pd gemwin;
#X msg 467 96 destroy;
#X text 463 75 Create window:;
#X text 6 80 Description: Renders a vertexbuffer.;
#X text 11 179 Arguments:;
#X text 57 190 number of vertex to be used. nuber in form of 2^n work
better;
#X text 9 241 Inlets:;
#X text 27 253 Inlet 1: gemlist;
#X text 9 450 Outlets:;
#X text 21 463 Outlet 1: gemlist;
#X text 27 409 Inlet 1: message: postion_enable float \, color_enable
float \, texture_enable float \, normal_enable float : enable/disable
the use of this data;
#X obj 569 6 cnv 15 400 600 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 576 568 cnv 15 150 30 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 579 574 gemvertexbuffer;
#X msg 792 483 draw line;
#X msg 802 504 draw points;
#X msg 692 384 color_enable \$1;
#X obj 673 384 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 579 134 GEMglPointSize 1;
#X obj 816 528 loadbang;
#X obj 579 76 translateXYZ 0 0 -2;
#X obj 579 114 rotateXYZ -45 0 -50;
#X obj 579 57 gemhead;
#X text 594 254 update VBO using table value;
#X obj 643 366 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X msg 665 364 position_enable \$1;
#X obj 729 424 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 699 406 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X msg 721 404 texture_enable \$1;
#X msg 748 424 normal_enable \$1;
#X text 612 444 default : all VBO are disabled \, but they are enable
as soon as they are updated;
#X obj 579 215 pix_image;
#X obj 579 234 pix_texture;
#X obj 593 153 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#N canvas 0 0 450 300 openpanel 0;
#X obj 114 62 inlet;
#X obj 121 254 outlet;
#X obj 114 125 openpanel;
#X msg 114 162 set open \$1;
#X obj 114 199 t b a;
#X connect 0 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 4 0 1 0;
#X connect 4 1 1 0;
#X restore 593 170 pd openpanel;
#X msg 593 189;
#X text 671 349 enable / disable specific VBO;
#X obj 579 33 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 577 14 Example:;
#X msg 816 551 resize 128;
#X floatatom 710 88 5 0 0 0 - - -;
#X obj 579 95 scale 3;
#X msg 593 271 position blablax blablay blablaz;
#X msg 604 290 color colorr colorg colorb colora;
#X msg 614 310 texture colorr colorg;
#X msg 627 331 normal colorr blablay blablaz;
#X obj 740 170 bng 15 250 50 0 empty \$0-init100 empty 17 7 0 10 -262144
-1 -1;
#X obj 841 56 cnv 15 120 160 empty empty empty 20 12 0 14 -233017 -66577
0;
#N canvas 614 149 657 666 lorenz 0;
#X floatatom 82 248 5 0 0 0 - - -;
#X floatatom 124 248 5 0 0 0 - - -;
#X floatatom 83 201 5 0 0 0 - - -;
#X floatatom 125 201 5 0 0 0 - - -;
#X floatatom 81 156 5 0 0 0 - - -;
#X floatatom 124 156 5 0 0 0 - - -;
#N canvas 145 116 1131 666 table 0;
#X obj 266 31 loadbang;
#X msg 266 53 dsp 1;
#X obj 266 75 s pd;
#X obj 38 33 loadbang;
#X obj 89 68 sig~ 1;
#X obj 89 140 osc~ 1;
#X obj 88 160 abs~;
#X obj 87 223 osc~ 11;
#X obj 86 243 abs~;
#X obj 38 58 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 87 310 sig~ 0.7;
#X obj 392 275 v pr;
#X obj 523 276 v r;
#X obj 449 277 v b;
#X floatatom 392 246 5 0 0 0 - - -;
#X floatatom 523 248 5 0 0 0 - - -;
#X msg 393 221 10;
#X obj 447 218 expr 8./3;
#X msg 344 344 set 1.2 2.3 4.4;
#X floatatom 449 247 7 0 0 0 - - -;
#X msg 321 308 stop;
#X msg 291 275 start;
#X floatatom 615 248 5 0 0 0 - - -;
#X obj 615 277 v dt;
#X msg 526 220 18;
#X msg 611 221 0.01;
#X obj 344 167 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
-1;
#X text 679 250 <- experiment with these numbers;
#X obj 705 223 line;
#X obj 344 449 /~ 20;
#X obj 450 446 /~ 20;
#X obj 556 445 /~ 20;
#X msg 706 198 0.01 \, 0.04 5000;
#X obj 344 393 fexpr~ $y1+(pr*$y2-pr*$y1)*dt \; $y2 +(-$y1*$y3 + r*$y1-$y2)*dt
\; $y3+($y1*$y2 - b*$y3)*dt;
#X obj 276 164 loadbang;
#X text 329 108 This is an example of how fexpr~ could be used for
solving differential equations \, in this case the lorenz equations
which generate chotic signals;
#X text 577 390 Note the following shorthands:;
#X text 576 406 $y1 -> $y1[-1] \, $y2 -> $y2[-1] \, .....;
#X text 464 344 the 'set' commands sets the initial previous values
;
#X obj 639 442 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 673 437 loadbang;
#X obj 572 473 sig~ -1;
#X obj 673 467 metro 1000;
#X obj 89 391 table \$0blablax2 100000;
#X obj 87 411 table \$0blablay2 100000;
#X obj 87 431 table \$0blablaz2 100000;
#X obj 86 356 table \$0colora2 100000;
#X obj 86 335 tabwrite~ \$0colora2;
#X obj 87 287 table \$0colorb2 100000;
#X obj 86 265 tabwrite~ \$0colorb2;
#X obj 88 203 table \$0colorg2 100000;
#X obj 87 180 tabwrite~ \$0colorg2;
#X obj 87 112 table \$0colorr2 100000;
#X obj 88 91 tabwrite~ \$0colorr2;
#X obj 344 537 tabwrite~ \$0blablax2;
#X obj 451 517 tabwrite~ \$0blablay2;
#X obj 555 497 tabwrite~ \$0blablaz2;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 3 0 9 0;
#X connect 4 0 53 0;
#X connect 5 0 6 0;
#X connect 6 0 51 0;
#X connect 7 0 8 0;
#X connect 8 0 49 0;
#X connect 9 0 47 0;
#X connect 9 0 49 0;
#X connect 9 0 51 0;
#X connect 9 0 53 0;
#X connect 10 0 47 0;
#X connect 14 0 11 0;
#X connect 15 0 12 0;
#X connect 16 0 14 0;
#X connect 17 0 19 0;
#X connect 18 0 33 0;
#X connect 19 0 13 0;
#X connect 20 0 33 0;
#X connect 21 0 33 0;
#X connect 22 0 23 0;
#X connect 24 0 15 0;
#X connect 25 0 22 0;
#X connect 26 0 16 0;
#X connect 26 0 17 0;
#X connect 26 0 24 0;
#X connect 26 0 25 0;
#X connect 26 0 18 0;
#X connect 26 0 21 0;
#X connect 28 0 22 0;
#X connect 29 0 54 0;
#X connect 30 0 55 0;
#X connect 31 0 56 0;
#X connect 32 0 28 0;
#X connect 33 0 29 0;
#X connect 33 1 30 0;
#X connect 33 2 31 0;
#X connect 34 0 26 0;
#X connect 39 0 54 0;
#X connect 39 0 55 0;
#X connect 39 0 56 0;
#X connect 40 0 42 0;
#X connect 41 0 56 0;
#X connect 42 0 39 0;
#X restore 259 348 pd table;
#X obj 38 136 alpha;
#X msg 118 577 draw line;
#X msg 184 575 draw points;
#X floatatom 147 288 5 0 0 0 - - -;
#X msg 82 449 color_enable \$1;
#X obj 82 430 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 38 222 scaleXYZ 3 3 3;
#X obj 38 305 GEMglPointSize 1;
#X obj 38 174 translateXYZ 0 0 -2;
#X obj 38 267 rotateXYZ -45 0 -50;
#X obj 38 114 gemhead;
#X obj 56 346 gemhead 10;
#X obj 56 327 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 56 367 t b;
#X obj 98 115 switch~;
#X obj 38 43 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
;
#X obj 116 10 loadbang;
#X obj 90 497 delay 1000;
#X obj 90 475 sel 1;
#X obj 38 13 inlet;
#X obj 218 469 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 218 444 loadbang;
#X obj 38 614 gemvertexbuffer 100000;
#X msg 116 32 0;
#X obj 91 516 i \$0;
#X msg 90 538 colorR \$1colorr2 \, colorG \$1colorg2 \, colorB \$1colorb2
\, colorA \$1colora2;
#X obj 38 69 t f f f f;
#X obj 56 387 i \$0;
#X msg 56 407 posX \$1blablax2 \, posY \$1blablay2 \, posZ \$1blablaz2
;
#X connect 0 0 16 1;
#X connect 1 0 16 2;
#X connect 2 0 13 1;
#X connect 3 0 13 2;
#X connect 4 0 15 1;
#X connect 5 0 15 2;
#X connect 7 0 15 0;
#X connect 8 0 29 0;
#X connect 9 0 29 0;
#X connect 10 0 14 1;
#X connect 11 0 29 0;
#X connect 12 0 11 0;
#X connect 13 0 16 0;
#X connect 14 0 29 0;
#X connect 15 0 13 0;
#X connect 16 0 14 0;
#X connect 17 0 7 0;
#X connect 18 0 20 0;
#X connect 19 0 18 0;
#X connect 20 0 34 0;
#X connect 22 0 33 0;
#X connect 23 0 30 0;
#X connect 24 0 31 0;
#X connect 25 0 24 0;
#X connect 26 0 22 0;
#X connect 27 0 31 0;
#X connect 28 0 27 0;
#X connect 30 0 22 0;
#X connect 31 0 32 0;
#X connect 32 0 29 0;
#X connect 33 0 17 0;
#X connect 33 1 19 0;
#X connect 33 2 25 0;
#X connect 33 3 21 0;
#X connect 34 0 35 0;
#X connect 35 0 29 0;
#X restore 849 100 pd lorenz;
#X obj 849 80 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#N canvas 1285 273 805 628 wave 0;
#X floatatom 87 237 5 0 0 0 - - -;
#X floatatom 129 237 5 0 0 0 - - -;
#X floatatom 172 237 5 0 0 0 - - -;
#X floatatom 88 190 5 0 0 0 - - -;
#X floatatom 130 190 5 0 0 0 - - -;
#X floatatom 173 190 5 0 0 0 - - -;
#X floatatom 86 145 5 0 0 0 - - -;
#X floatatom 129 145 5 0 0 0 - - -;
#X floatatom 173 145 5 0 0 0 - - -;
#X obj 43 592 gemvertexbuffer;
#N canvas 186 169 1131 747 table 0;
#X obj 36 59 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 583 129 until;
#X msg 583 110 100;
#N canvas 0 0 450 300 count 0;
#X obj 47 31 inlet;
#X obj 47 126 f;
#X obj 157 30 inlet;
#X obj 65 104 + 1;
#X obj 47 154 t f f;
#X msg 157 58 0;
#X obj 47 187 outlet;
#X connect 0 0 1 0;
#X connect 1 0 4 0;
#X connect 2 0 5 0;
#X connect 3 0 1 1;
#X connect 4 0 6 0;
#X connect 4 1 3 0;
#X connect 5 0 1 1;
#X restore 583 148 pd count;
#X obj 440 70 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 583 91 t b b;
#X obj 583 264 until;
#X msg 583 245 100;
#N canvas 0 0 450 300 count 0;
#X obj 47 31 inlet;
#X obj 47 126 f;
#X obj 157 30 inlet;
#X obj 65 104 + 1;
#X obj 47 154 t f f;
#X msg 157 58 0;
#X obj 47 187 outlet;
#X connect 0 0 1 0;
#X connect 1 0 4 0;
#X connect 2 0 5 0;
#X connect 3 0 1 1;
#X connect 4 0 6 0;
#X connect 4 1 3 0;
#X connect 5 0 1 1;
#X restore 583 283 pd count;
#X obj 583 224 t b b f;
#X obj 583 359 pack f f;
#X obj 583 321 - 0.5;
#X obj 583 302 / 99;
#X obj 583 340 * 2;
#X obj 583 186 - 0.5;
#X obj 583 167 / 99;
#X obj 583 205 * 2;
#X obj 583 383 t a a a a a a;
#X obj 671 404 unpack f f;
#X obj 583 509 + 0.01;
#X obj 796 513 + 0.01;
#N canvas 0 0 450 300 count 0;
#X obj 47 31 inlet;
#X obj 47 126 f;
#X obj 157 30 inlet;
#X obj 65 104 + 1;
#X obj 47 154 t f f;
#X msg 157 58 0;
#X obj 47 187 outlet;
#X connect 0 0 1 0;
#X connect 1 0 4 0;
#X connect 2 0 5 0;
#X connect 3 0 1 1;
#X connect 4 0 6 0;
#X connect 4 1 3 0;
#X connect 5 0 1 1;
#X restore 692 582 pd count;
#X obj 583 551 t f b;
#N canvas 0 0 450 300 count 0;
#X obj 47 31 inlet;
#X obj 47 126 f;
#X obj 157 30 inlet;
#X obj 65 104 + 1;
#X obj 47 154 t f f;
#X msg 157 58 0;
#X obj 47 187 outlet;
#X connect 0 0 1 0;
#X connect 1 0 4 0;
#X connect 2 0 5 0;
#X connect 3 0 1 1;
#X connect 4 0 6 0;
#X connect 4 1 3 0;
#X connect 5 0 1 1;
#X restore 905 585 pd count;
#X obj 796 554 t f b;
#X obj 640 508 - 0.01;
#X obj 851 513 - 0.01;
#X obj 653 423 unpack f f;
#X obj 635 442 unpack f f;
#X obj 583 461 unpack f f;
#X obj 440 92 t b b;
#X obj 440 134 until;
#N canvas 0 0 450 300 count 0;
#X obj 47 31 inlet;
#X obj 47 126 f;
#X obj 157 30 inlet;
#X obj 65 104 + 1;
#X obj 47 154 t f f;
#X msg 157 58 0;
#X obj 47 187 outlet;
#X connect 0 0 1 0;
#X connect 1 0 4 0;
#X connect 2 0 5 0;
#X connect 3 0 1 1;
#X connect 4 0 6 0;
#X connect 4 1 3 0;
#X connect 5 0 1 1;
#X restore 440 153 pd count;
#X obj 440 176 t f f f;
#X obj 440 239 t f f;
#X obj 440 261 *;
#X obj 485 240 t f f;
#X obj 485 262 *;
#X obj 440 292 +;
#X obj 440 335 sqrt;
#X obj 440 416 cos;
#X obj 440 313 t f f;
#X obj 477 377 exp;
#X obj 440 442 /;
#X msg 440 115 60000;
#X obj 477 355 * 2;
#X obj 341 46 gemhead 10;
#X obj 341 72 t b b;
#X obj 349 318 f;
#X obj 440 380 +;
#X floatatom 903 395 5 0 0 0 - - -;
#X obj 583 71 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 87 310 sig~ 0.3;
#X obj 903 371 / 99;
#X msg 903 347 1;
#X obj 383 322 - 0.1;
#X obj 440 354 * 7;
#X obj 440 31 t b b b;
#X text 162 619 color and position are updated at every frame. you
just have to change array value....;
#X text 156 504 replace this with iem_tab_* stuf in order to increase
performances if you wish to update point position at every frame;
#X obj 36 -2 inlet;
#X obj 123 122 f;
#X obj 279 120 f;
#X obj 438 6 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 123 56 sin;
#X obj 123 78 + 1;
#X obj 123 100 * 0.5;
#X obj 123 35 * 110;
#X obj 87 244 table \$0colorg3 60000;
#X obj 85 266 table \$0colorr3 60000;
#X obj 86 286 table \$0colorb3 60000;
#X obj 142 196 tabwrite \$0colorg3;
#X obj 141 172 tabwrite \$0colorb3;
#X obj 142 150 tabwrite \$0colorr3;
#X obj 86 335 tabwrite~ \$0colora3;
#X obj 86 356 table \$0colora3 60000;
#X obj 87 393 table \$0blablax3 60000;
#X obj 86 412 table \$0blablay3 60000;
#X obj 87 431 table \$0blablaz3 60000;
#X obj 440 466 tabwrite \$0blablaz3;
#X obj 463 198 tabread \$0blablay3;
#X obj 440 218 tabread \$0blablax3;
#X obj 582 605 tabwrite \$0blablax3;
#X obj 796 607 tabwrite \$0blablay3;
#X connect 0 0 74 0;
#X connect 1 0 3 0;
#X connect 2 0 1 0;
#X connect 3 0 15 0;
#X connect 4 0 30 0;
#X connect 5 0 2 0;
#X connect 5 1 3 1;
#X connect 5 1 21 1;
#X connect 5 1 23 1;
#X connect 6 0 8 0;
#X connect 7 0 6 0;
#X connect 8 0 12 0;
#X connect 9 0 7 0;
#X connect 9 1 8 1;
#X connect 9 2 10 1;
#X connect 10 0 17 0;
#X connect 11 0 13 0;
#X connect 12 0 11 0;
#X connect 13 0 10 0;
#X connect 14 0 16 0;
#X connect 15 0 14 0;
#X connect 16 0 9 0;
#X connect 17 0 29 0;
#X connect 17 1 18 0;
#X connect 17 2 27 0;
#X connect 17 3 28 0;
#X connect 17 4 27 0;
#X connect 17 5 18 0;
#X connect 18 0 25 0;
#X connect 18 1 20 0;
#X connect 19 0 22 0;
#X connect 20 0 24 0;
#X connect 21 0 82 1;
#X connect 22 0 82 0;
#X connect 22 1 21 0;
#X connect 23 0 83 1;
#X connect 24 0 83 0;
#X connect 24 1 23 0;
#X connect 25 0 22 0;
#X connect 26 0 24 0;
#X connect 27 0 19 0;
#X connect 27 1 26 0;
#X connect 28 0 25 0;
#X connect 28 1 26 0;
#X connect 29 0 19 0;
#X connect 29 1 20 0;
#X connect 30 0 44 0;
#X connect 30 1 32 1;
#X connect 31 0 32 0;
#X connect 32 0 33 0;
#X connect 33 0 81 0;
#X connect 33 1 80 0;
#X connect 33 2 62 0;
#X connect 33 2 79 1;
#X connect 34 0 35 0;
#X connect 34 1 35 1;
#X connect 35 0 38 0;
#X connect 36 0 37 0;
#X connect 36 1 37 1;
#X connect 37 0 38 1;
#X connect 38 0 41 0;
#X connect 39 0 56 0;
#X connect 39 0 67 0;
#X connect 40 0 43 0;
#X connect 41 0 39 0;
#X connect 41 1 45 0;
#X connect 42 0 43 1;
#X connect 43 0 79 0;
#X connect 44 0 31 0;
#X connect 45 0 42 0;
#X connect 47 0 30 0;
#X connect 47 1 48 0;
#X connect 48 0 49 1;
#X connect 48 0 55 0;
#X connect 49 0 40 0;
#X connect 50 0 19 1;
#X connect 50 0 25 1;
#X connect 50 0 20 1;
#X connect 50 0 26 1;
#X connect 51 0 5 0;
#X connect 52 0 74 0;
#X connect 53 0 50 0;
#X connect 54 0 53 0;
#X connect 55 0 48 1;
#X connect 56 0 49 0;
#X connect 57 0 4 0;
#X connect 57 1 51 0;
#X connect 57 2 54 0;
#X connect 60 0 0 0;
#X connect 60 0 57 0;
#X connect 61 0 71 0;
#X connect 61 0 72 0;
#X connect 61 0 73 0;
#X connect 62 0 71 1;
#X connect 62 0 72 1;
#X connect 62 0 73 1;
#X connect 63 0 57 0;
#X connect 64 0 65 0;
#X connect 65 0 66 0;
#X connect 66 0 61 0;
#X connect 67 0 64 0;
#X connect 80 0 36 0;
#X connect 81 0 34 0;
#X restore 298 556 pd table;
#X obj 43 125 alpha;
#X msg 98 518 draw points;
#X obj 43 211 scaleXYZ 3 3 3;
#X obj 106 549 loadbang;
#X obj 43 163 translateXYZ 0 0 -2;
#X obj 43 63 gemhead;
#X obj 61 306 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 61 346 t b;
#X msg 106 572 resize 60000;
#X msg 94 495 draw triangle;
#X msg 57 102 auto 1;
#X obj 61 325 gemhead 20;
#X obj 43 285 GEMglShadeModel GL_SMOOTH;
#X obj 94 474 loadbang;
#X obj 43 256 rotateXYZ -65 0 35;
#X obj 57 82 loadbang;
#X obj 43 12 inlet;
#X obj 298 68 sel 1;
#X obj 61 366 i \$0;
#X obj 61 386 t f f;
#X msg 61 416 position \$1blablax3 \$1blablay3 \$1blablaz3;
#X msg 77 438 color \$1colorr3 \$1colorg3 \$1colorb3 \$1colora3;
#X connect 0 0 25 1;
#X connect 1 0 25 2;
#X connect 2 0 25 3;
#X connect 3 0 13 1;
#X connect 4 0 13 2;
#X connect 5 0 13 3;
#X connect 6 0 15 1;
#X connect 7 0 15 2;
#X connect 8 0 15 3;
#X connect 11 0 15 0;
#X connect 12 0 9 0;
#X connect 13 0 25 0;
#X connect 14 0 19 0;
#X connect 15 0 13 0;
#X connect 16 0 11 0;
#X connect 17 0 22 0;
#X connect 18 0 29 0;
#X connect 19 0 9 0;
#X connect 20 0 9 0;
#X connect 21 0 11 0;
#X connect 22 0 18 0;
#X connect 23 0 9 0;
#X connect 24 0 20 0;
#X connect 25 0 23 0;
#X connect 26 0 21 0;
#X connect 27 0 16 0;
#X connect 27 0 28 0;
#X connect 28 0 10 0;
#X connect 29 0 30 0;
#X connect 30 0 31 0;
#X connect 30 1 32 0;
#X connect 31 0 9 0;
#X connect 32 0 9 0;
#X restore 849 184 pd wave;
#X obj 849 162 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#N canvas 1289 235 452 435 oscillo~ 0;
#X obj 47 78 gemhead;
#X obj 122 116 adc~;
#X obj 218 63 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 218 41 loadbang;
#X obj 47 5 inlet;
#X obj 123 152 *~ 3;
#X obj 47 279 t a b;
#X obj 47 406 gemvertexbuffer 8192;
#X obj 218 82 metro 200;
#X obj 298 167 until;
#X msg 298 143 8192;
#X obj 298 191 f;
#X obj 329 192 + 1;
#X msg 348 163 0;
#X obj 298 234 / 8191;
#X obj 352 111 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 298 213 t f f;
#X obj 298 277 * 7;
#X obj 298 256 - 0.5;
#X msg 82 384 draw linestrip;
#X obj 82 363 loadbang;
#X obj 63 30 loadbang;
#X msg 63 52 0;
#X obj 155 55 osc~ 10;
#X obj 155 75 *~ 0.1;
#X obj 122 178 tabwrite~ \$0sound;
#X obj 121 199 table \$0sound 8192;
#X obj 298 298 tabwrite \$0phasor;
#X obj 118 231 table \$0phasor 8192;
#X obj 79 306 i \$0;
#X msg 79 342 posX \$1phasor \, posY \$1sound;
#X floatatom 150 14 5 0 0 0 - - -;
#X obj 15 157 scale 1;
#X floatatom 52 115 5 0 0 0 - - -;
#X obj 290 118 t b b;
#X msg 227 395 draw points;
#X connect 0 0 32 0;
#X connect 1 0 5 0;
#X connect 1 1 5 0;
#X connect 2 0 8 0;
#X connect 3 0 2 0;
#X connect 3 0 34 0;
#X connect 4 0 0 0;
#X connect 5 0 25 0;
#X connect 6 0 7 0;
#X connect 6 1 29 0;
#X connect 8 0 25 0;
#X connect 9 0 11 0;
#X connect 10 0 9 0;
#X connect 11 0 12 0;
#X connect 11 0 16 0;
#X connect 12 0 11 1;
#X connect 13 0 11 1;
#X connect 14 0 18 0;
#X connect 15 0 34 0;
#X connect 16 0 14 0;
#X connect 16 1 27 1;
#X connect 17 0 27 0;
#X connect 18 0 17 0;
#X connect 19 0 7 0;
#X connect 20 0 19 0;
#X connect 21 0 22 0;
#X connect 22 0 0 0;
#X connect 23 0 24 0;
#X connect 24 0 5 0;
#X connect 29 0 30 0;
#X connect 30 0 7 0;
#X connect 31 0 23 0;
#X connect 32 0 6 0;
#X connect 33 0 32 1;
#X connect 34 0 10 0;
#X connect 34 1 13 0;
#X connect 35 0 7 0;
#X restore 849 141 pd oscillo~;
#X obj 849 121 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 846 60 other examples;
#X text 27 327 Inlet 1: message: texture / textureU / textureV: update
vertex texcoords from tables;
#X text 27 357 Inlet 1: message: normal / normalX / normalY / normalZ:
update vertex normals from tables;
#X text 27 297 Inlet 1: message: color / colorR / colorG / colorB /
colorA: update vertex colors from tables;
#X text 27 267 Inlet 1: message: position / posX / posY / posZ: update
vertex positions from tables;
#N canvas 429 161 679 574 tabledata 0;
#X text 65 43 applying table data as vertex data;
#X msg 30 100 position tabX tabY tabZ 0;
#X msg 30 130 position tabXYZ 0;
#X text 200 102 will read X \, Y & Z values from the 3 tables as position
data \, starting at offset=0 (offset can be omitted);
#X text 200 132 will read interleaved X \, Y & Z values from the table
tabXYZ \, starting at offset=0 (offset can be omitted);
#X text 200 172 will update only X values from given table (starting
at offset=10);
#X msg 31 169 posX tabX 10;
#X msg 31 209 posY tabY;
#X text 200 212 will update only Y values from given table (starting
at default offset=0);
#X text 39 290 the same applies to the other vertex data types:;
#X msg 234 346 colorR r;
#X msg 294 346 colorG g;
#X msg 354 346 colorB b;
#X msg 415 346 colorA a;
#X msg 36 376 texture U V;
#X msg 140 376 texture UV;
#X msg 234 376 textureU U;
#X msg 304 376 textureV V;
#X msg 36 406 normal x y z;
#X msg 36 346 color r g b a;
#X msg 141 346 color rgba;
#X msg 140 406 normal xyz;
#X msg 234 406 normalX x;
#X msg 304 406 normalY y;
#X msg 374 406 normalZ z;
#X msg 36 316 position X Y Z;
#X msg 140 316 position XYZ;
#X msg 234 316 positionX X;
#X msg 314 316 positionY Y;
#X msg 394 316 positionZ Z;
#X text 51 453 offset is always optional (default=0) \, and comes after
the table names;
#X text 50 507 unset table data is initialized to 0.f;
#X restore 371 309 pd tabledata;
#X text 27 384 Inlet 1: message: resize float : change the number of
vertex to use;
#X text 23 98 Vertex position \, color etc can be copy from pd table
to the vertex buffer (VBO = Vertex Buffer Object). This object can
draw lot's of points very efficiently.;
#X obj 740 192 t b b b;
#N canvas 1322 49 450 459 load_tables 0;
#X obj 31 71 noise~;
#X obj 32 94 tabwrite~ colorr;
#X obj 32 114 noise~;
#X obj 33 158 noise~;
#X obj 33 137 tabwrite~ colorg;
#X obj 34 181 tabwrite~ colorb;
#X obj 33 209 noise~;
#X obj 34 252 noise~;
#X obj 35 296 noise~;
#X obj 34 232 tabwrite~ blablax;
#X obj 36 319 tabwrite~ blablaz;
#X obj 35 275 tabwrite~ blablay;
#X msg 288 48 dsp 1;
#X obj 288 68 s pd;
#X obj 288 28 loadbang;
#X obj 266 152 table colorr 1000;
#X obj 266 172 table colorg 1000;
#X obj 266 194 table colorb 1000;
#X obj 266 216 table colora 1000;
#X obj 267 237 table blablax 1000;
#X obj 266 256 table blablay 1000;
#X obj 266 276 table blablaz 1000;
#X obj 119 34 t b;
#X obj 119 13 loadbang;
#X msg 152 34 bang;
#X obj 215 10 inlet;
#X connect 0 0 1 0;
#X connect 2 0 4 0;
#X connect 3 0 5 0;
#X connect 6 0 9 0;
#X connect 7 0 11 0;
#X connect 8 0 10 0;
#X connect 12 0 13 0;
#X connect 14 0 12 0;
#X connect 22 0 1 0;
#X connect 22 0 4 0;
#X connect 22 0 5 0;
#X connect 22 0 9 0;
#X connect 22 0 11 0;
#X connect 22 0 10 0;
#X connect 23 0 22 0;
#X connect 24 0 22 0;
#X connect 25 0 22 0;
#X restore 797 222 pd load_tables;
#X connect 0 0 1 0;
#X connect 9 0 10 0;
#X connect 10 0 9 0;
#X connect 23 0 22 0;
#X connect 24 0 22 0;
#X connect 25 0 22 0;
#X connect 26 0 25 0;
#X connect 27 0 40 0;
#X connect 28 0 48 0;
#X connect 29 0 50 0;
#X connect 30 0 27 0;
#X connect 31 0 29 0;
#X connect 33 0 34 0;
#X connect 34 0 22 0;
#X connect 35 0 38 0;
#X connect 36 0 37 0;
#X connect 37 0 22 0;
#X connect 38 0 22 0;
#X connect 40 0 41 0;
#X connect 41 0 22 0;
#X connect 42 0 43 0;
#X connect 43 0 44 0;
#X connect 44 0 40 0;
#X connect 46 0 31 0;
#X connect 48 0 22 0;
#X connect 49 0 50 1;
#X connect 50 0 30 0;
#X connect 51 0 22 0;
#X connect 52 0 22 0;
#X connect 53 0 22 0;
#X connect 54 0 22 0;
#X connect 55 0 71 0;
#X connect 58 0 57 0;
#X connect 60 0 59 0;
#X connect 62 0 61 0;
#X connect 71 0 51 0;
#X connect 71 1 52 0;
#X connect 71 2 72 0;

View file

@ -1,799 +0,0 @@
#N canvas 133 50 676 689 10;
#X text 452 8 GEM object;
#X obj 7 193 cnv 15 430 480 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 7 149 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 16 153 Arguments:;
#X obj 7 53 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 449 54 cnv 15 210 350 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 451 28 Example:;
#X obj 454 286 cnv 15 160 60 empty empty empty 20 12 0 14 -24198 -66577
0;
#X text 50 12 Synopsis: [gemwin];
#X text 17 56 Description: access to the window manager;
#X text 28 79 [gemwin] allows you to interact with Gem's output window.
It passes various messages to the window manager \, controlling the
attributes of the window and controls the render-cycle. Multiple instances
of this object will interact with the same window.;
#X obj 458 320 gemwin;
#X msg 458 103 reset \, dimen 640 480 \, create \, 1;
#X msg 486 195 0 \, destroy;
#X text 16 196 Inlet 1:;
#X text 30 225 reset : reset the graphics manager to the default values
;
#X text 29 432 create : create the graphics window;
#X text 29 446 destroy : destroy the graphics window;
#X text 30 479 float (1/0) : turn on/off rendering;
#X text 30 493 print : show some information on the stderr;
#X text 71 31 Class: window handling;
#N canvas 361 97 456 455 FSAA 0;
#X msg 48 222 0;
#X msg 79 222 2;
#X msg 108 222 4;
#X text 54 129 2 - double resolution (4 times the pixel data);
#X text 43 324 Full-scene anti-aliasing by supersampling usually means
that each full frame is rendered at double (2x) or quadruple (4x) the
display resolution \, and then down-sampled to match the display resolution.
So a 4x FSAA would render 16 supersampled pixels for each single pixel
of each frame.;
#X text 54 189 8 - eight-times resolution (64 times the pixel data)
;
#X text 54 149 4 - quadruple resolution (16 times the pixel data);
#X text 54 109 0 - turn off super sampling for anti-aliasing;
#X text 43 405 http://en.wikipedia.org/wiki/Anti-aliasing#Full-scene_anti-aliasing
;
#X text 200 220 <-- destroy gemwin between clicking these;
#X obj 90 299 s \$0-gemwin-in;
#X text 54 168 5 - quadruple resolution (16 times the pixel data);
#X text 33 6 Gem provides Full Scene Anti-Aliasing for smoothing out
the edges of all things drawn in the OpenGL scene. To enable it \,
send the "FSAA" message to the [gemwin] before creating it.;
#X text 33 61 FSAA might or might not work depending on your graphic
card \, the value of the parameter may also vary.;
#X msg 169 222 8;
#X msg 139 222 5;
#X msg 90 272 destroy \, FSAA \$1 \, create \, 1;
#X connect 0 0 16 0;
#X connect 1 0 16 0;
#X connect 2 0 16 0;
#X connect 14 0 16 0;
#X connect 15 0 16 0;
#X connect 16 0 10 0;
#X restore 356 269 pd FSAA;
#X obj 471 294 r \$0-gemwin-in;
#X text 29 285 fullscreen 0|1 : make fullscreen-window;
#X text 57 302 (if possible with the dimensions passed via "dimen")
;
#N canvas 430 22 405 382 fullscreen 0;
#X text -88 -108 fullscreen 0/1: make fullscreen-window (if possible
with the dimensions passed via "dimen");
#X text -88 -64 on platform's that support it (currently: Mac OS X)
you can specify on which screen you want to go fullscreen (if you have
several screens): e.g. "fullscreen 2" will make a fullscreen-window
on Screen2;
#X text -86 -130 FULLSCREEN SUPPORT;
#X obj -85 -1 vradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144 -1
-1 0;
#X floatatom -85 50 5 0 0 0 - - -;
#X msg -85 71 reset \, fullscreen \$1 \, create \, 1;
#X text -63 -4 deactivate fullscreen;
#X text -64 13 fullscreen on screen 1;
#X text -64 29 fullscreen on screen 2;
#X msg -72 126 0 \, destroy;
#X text -89 182 BE CAREFUL : when you are in fullscreen mode \, you
have no more access to the other windows of your system.;
#N canvas 107 24 450 300 esc 0;
#X obj 65 20 gemkeyboard;
#X obj 65 167 outlet;
#X obj 89 71 keyname;
#X obj 128 96 sel Escape;
#X obj 65 41 sel 53;
#X obj 189 47 sel Escape;
#X obj 150 22 gemkeyname;
#X connect 0 0 4 0;
#X connect 2 1 3 0;
#X connect 3 0 1 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 1 5 0;
#X restore -72 104 pd esc;
#X obj -85 155 s \$0-gemwin-in;
#X text 111 11 press ESC to quit;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 5 0 12 0;
#X connect 9 0 12 0;
#X connect 11 0 9 0;
#X restore 356 288 pd fullscreen;
#X text 57 253 the x and y dimensions of the window. (default 500 500)
;
#X text 30 166 number of frames per second (default 20);
#X text 29 508 frame <number> : number of frames per second (default
20);
#X text 30 268 FSAA <number> : anti aliasing (default 0);
#X text 30 318 border 1|0 : create a window with/out borders (default
1);
#X text 57 350 the x and y offset of the window. (default 0 0);
#N canvas 641 438 406 148 offset 0;
#X text 53 8 OFFSET SUPPORT;
#X text 21 28 offset might not work on some window managers if the
borders are on;
#X text 20 55 under OSX you must take into account the number of pixel
of the menubar \, title and eventually of your dock.;
#X text 19 82 [offset 0 -60( with [menubar 0( is working in 10.6 to
set the window in the top left of the screen;
#X restore 356 334 pd offset;
#N canvas 230 93 618 505 more 0;
#X text 230 327 title <title_symbol>: set the title for the window
;
#X msg 121 327 title my_window;
#X obj 94 187 tgl 15 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0
1;
#X msg 94 205 menubar \$1;
#X msg 117 187 -1;
#X text 188 190 menubar -1/0/1: hide or show the Mac OS X menubar \,
1 shows \, 0 hides \, and -1 hides by default and shows on mouseover
;
#X msg 44 60 cursor \$1;
#X obj 44 41 tgl 15 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0 1
;
#X text 139 59 cursor 0/1: turn the cursor on/off;
#X obj 109 247 tgl 15 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0
1;
#X msg 109 266 topmost \$1;
#X text 204 255 topmost 0/1: make the gemwin the top most window \,
on top of everything else (Windows only?);
#X msg 126 376 create remotehost:8.0;
#X text 283 369 when using X-windows \, you can also create a window
on a remote display!;
#X obj 44 465 s \$0-gemwin-in;
#X text 41 14 Other messages to [gemwin] regarding the window;
#X msg 55 139 0 \, destroy;
#X msg 110 438 create \, 1;
#X text 188 437 ...and create it after;
#X text 133 140 destroy window before setting window properties...
;
#X text 81 104 All of these messages must be sent to [gemwin] before
the window is created in order to take effect:;
#X connect 1 0 14 0;
#X connect 2 0 3 0;
#X connect 3 0 14 0;
#X connect 4 0 3 0;
#X connect 6 0 14 0;
#X connect 7 0 6 0;
#X connect 9 0 10 0;
#X connect 10 0 14 0;
#X connect 12 0 14 0;
#X connect 16 0 14 0;
#X connect 17 0 14 0;
#X restore 30 367 pd more window properties;
#X text 29 558 lighting 0|1 : turn lighting off/on (default 0);
#N canvas 190 228 580 527 more 0;
#X text 105 134 lighting 1/0 : turn lighting on/off;
#X text 263 186 ambient R G B : the ambient lighting color;
#X text 269 240 specular R G B : the specular lighting color;
#X text 197 277 shininess num : the shininess value;
#X text 132 326 fogmode 0/1/2/3 : set the fog mode (OFF/LINEAR/EXP/EXP^2)
;
#X text 298 447 fogcolor R G B : the color of the fog;
#X text 219 367 fog num : the fog density;
#X text 24 11 messages to the [gemwin] regarding lighting effects;
#X obj 24 116 tgl 15 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0
1;
#X msg 24 134 lighting \$1;
#N canvas 714 134 566 458 color 0;
#X obj 103 100 hsl 128 15 0 1 0 0 empty empty R 12 8 1 12 -261689 -1
-1 0 1;
#X obj 236 100 hsl 128 15 0 1 0 0 empty empty G 12 8 1 12 -225271 -1
-1 0 1;
#X obj 370 100 hsl 128 15 0 1 0 0 empty empty B 12 8 1 12 -228992 -1
-1 0 1;
#X obj 100 329 outlet;
#X obj 132 253 list;
#X msg 132 273 set ambient \$1 \$2 \$3;
#X obj 233 144 t b f;
#X obj 367 144 t b f;
#X obj 100 201 pack 0 0 0;
#X obj 100 230 t b a;
#X connect 0 0 8 0;
#X connect 1 0 6 0;
#X connect 2 0 7 0;
#X connect 4 0 5 0;
#X connect 5 0 3 0;
#X connect 6 0 8 0;
#X connect 6 1 8 1;
#X connect 7 0 8 0;
#X connect 7 1 8 2;
#X connect 8 0 9 0;
#X connect 9 0 3 0;
#X connect 9 1 4 0;
#X coords 0 -1 1 1 400 13 1 100 100;
#X restore 35 165 pd color sliders;
#X msg 35 187 ambient 0 0 0;
#N canvas 714 134 566 366 color 0;
#X obj 103 100 hsl 128 15 0 1 0 0 empty empty R 12 8 1 12 -261689 -1
-1 0 1;
#X obj 236 100 hsl 128 15 0 1 0 0 empty empty G 12 8 1 12 -225271 -1
-1 0 1;
#X obj 370 100 hsl 128 15 0 1 0 0 empty empty B 12 8 1 12 -228992 -1
-1 0 1;
#X obj 100 299 outlet;
#X obj 132 223 list;
#X msg 132 242 set specular \$1 \$2 \$3;
#X obj 233 124 t b f;
#X obj 367 124 t b f;
#X obj 100 171 pack 0 0 0;
#X obj 100 199 t b a;
#X connect 0 0 8 0;
#X connect 1 0 6 0;
#X connect 2 0 7 0;
#X connect 4 0 5 0;
#X connect 5 0 3 0;
#X connect 6 0 8 0;
#X connect 6 1 8 1;
#X connect 7 0 8 0;
#X connect 7 1 8 2;
#X connect 8 0 9 0;
#X connect 9 0 3 0;
#X connect 9 1 4 0;
#X coords 0 -1 1 1 400 13 1 100 100;
#X restore 42 219 pd color sliders;
#X msg 42 241 specular 0 0 0;
#N canvas 710 134 570 462 color 0;
#X obj 103 100 hsl 128 15 0 1 0 0 empty empty R 12 8 1 12 -261689 -1
-1 0 1;
#X obj 236 100 hsl 128 15 0 1 0 0 empty empty G 12 8 1 12 -225271 -1
-1 0 1;
#X obj 370 100 hsl 128 15 0 1 0 0 empty empty B 12 8 1 12 -228992 -1
-1 0 1;
#X obj 100 299 outlet;
#X obj 132 223 list;
#X msg 132 242 set fogcolor \$1 \$2 \$3;
#X obj 233 125 t b f;
#X obj 367 125 t b f;
#X obj 100 171 pack 0 0 0;
#X obj 100 200 t b a;
#X connect 0 0 8 0;
#X connect 1 0 6 0;
#X connect 2 0 7 0;
#X connect 4 0 5 0;
#X connect 5 0 3 0;
#X connect 6 0 8 0;
#X connect 6 1 8 1;
#X connect 7 0 8 0;
#X connect 7 1 8 2;
#X connect 8 0 9 0;
#X connect 9 0 3 0;
#X connect 9 1 4 0;
#X coords 0 -1 1 1 400 13 1 100 100;
#X restore 54 426 pd color sliders;
#X msg 54 448 fogcolor 0 0 0;
#X msg 59 338 fogmode 0;
#N canvas 889 134 348 479 fog 0;
#X obj 84 239 outlet;
#X obj 100 101 hradio 15 1 0 4 empty empty empty 0 -6 0 10 -262144
-1 -1 0;
#X msg 207 182 set fogmode \$1;
#X obj 84 140 trigger bang float;
#X connect 1 0 3 0;
#X connect 2 0 0 0;
#X connect 3 0 0 0;
#X connect 3 1 2 0;
#X coords 0 -1 1 1 60 13 1 100 100;
#X restore 59 314 pd fog;
#X msg 50 288 shininess 0;
#N canvas 889 134 356 487 fog 0;
#X obj 84 239 outlet;
#X obj 84 140 trigger bang float;
#X msg 207 182 set shininess \$1;
#X obj 103 101 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 10 -262144
-1 -1 0 1;
#X connect 1 0 0 0;
#X connect 1 1 2 0;
#X connect 2 0 0 0;
#X connect 3 0 1 0;
#X coords 0 -1 1 1 133 13 1 100 100;
#X restore 50 266 pd fog;
#X msg 60 388 fog 0;
#N canvas 889 134 364 495 fog 0;
#X obj 84 239 outlet;
#X obj 84 140 trigger bang float;
#X obj 103 101 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 10 -262144
-1 -1 0 1;
#X msg 207 182 set fog \$1;
#X connect 1 0 0 0;
#X connect 1 1 3 0;
#X connect 2 0 1 0;
#X connect 3 0 0 0;
#X coords 0 -1 1 1 133 13 1 100 100;
#X restore 60 366 pd fog;
#X obj 24 68 gemhead;
#X obj 24 90 world_light;
#X obj 24 475 s \$0-gemwin-in;
#X text 23 34 Be careful: when you activate lighting \, you must have
some lights to see something \, such as:;
#X connect 8 0 9 0;
#X connect 9 0 24 0;
#X connect 10 0 11 0;
#X connect 11 0 24 0;
#X connect 12 0 13 0;
#X connect 13 0 24 0;
#X connect 14 0 15 0;
#X connect 15 0 24 0;
#X connect 16 0 24 0;
#X connect 17 0 16 0;
#X connect 18 0 24 0;
#X connect 19 0 18 0;
#X connect 20 0 24 0;
#X connect 21 0 20 0;
#X connect 22 0 23 0;
#X restore 30 575 pd more lighting;
#X obj 490 242 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X msg 490 261 color \$1 \$1 \$1;
#X text 29 635 stereo 0|1|2|3 : set 3D stereo-mode to off(0) \, 2-screen-mode(1)
\, Red/Green-mode(2);
#N canvas 680 259 468 458 draw_geos 0;
#X obj 64 53 gemhead;
#X obj 244 55 gemhead;
#X obj 244 159 rotateXYZ;
#X obj 398 109 f;
#X obj 398 158 % 360;
#X obj 398 134 + 1;
#X obj 398 86 metro 50;
#X obj 64 92 color 0.8 0.8 0.8;
#X obj 244 92 color 0.8 0.8 0.8;
#X obj 64 188 cube 0.75;
#X obj 64 118 translateXYZ 2 2 0;
#X obj 244 117 translateXYZ 2 -2 0;
#X obj 64 157 rotateXYZ 45 0 0;
#X obj 244 190 square 0.75;
#X obj 63 220 gemhead;
#X obj 243 222 gemhead;
#X obj 63 259 color 0.8 0.8 0.8;
#X obj 243 259 color 0.8 0.8 0.8;
#X obj 63 285 translateXYZ -2 2 0;
#X obj 63 308 sphere 0.75 30;
#X obj 243 284 translateXYZ -2 -2 0;
#X obj 243 310 circle 0.75;
#X obj 398 56 inlet;
#X connect 0 0 7 0;
#X connect 1 0 8 0;
#X connect 2 0 13 0;
#X connect 3 0 5 0;
#X connect 4 0 3 1;
#X connect 4 0 2 3;
#X connect 4 0 12 3;
#X connect 5 0 4 0;
#X connect 6 0 3 0;
#X connect 7 0 10 0;
#X connect 8 0 11 0;
#X connect 10 0 12 0;
#X connect 11 0 2 0;
#X connect 12 0 9 0;
#X connect 14 0 16 0;
#X connect 15 0 17 0;
#X connect 16 0 18 0;
#X connect 17 0 20 0;
#X connect 18 0 19 0;
#X connect 20 0 21 0;
#X connect 22 0 6 0;
#X restore 455 378 pd draw_geos;
#X msg 472 152 create \, 1;
#N canvas 255 86 448 630 buffering 0;
#X msg 63 127 buffer 1;
#X msg 78 152 buffer 2;
#X text 134 127 single buffering;
#X text 145 150 double buffering;
#X msg 111 244 bang;
#X text 152 254 swap the buffers (double buffer mode);
#X text 151 235 clear the buffer (single buffer mode);
#X text 30 16 messages to [gemwin] concerning the buffer rendering
mode;
#X msg 17 83 0 \, destroy;
#X msg 117 198 create \, 1;
#X text 195 197 ...and create it after;
#X obj 33 283 s \$0-gemwin-in;
#X text 95 84 destroy window before to set buffer mode...;
#X text 30 323 When you are in single buffer mode \, you must bang
the gemhead each time you want to draw. like:;
#X obj 33 383 loadbang;
#X msg 33 407 0;
#X obj 33 436 gemhead;
#X obj 149 383 metro 50;
#X obj 149 364 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 33 519 rotateXYZ;
#X obj 176 426 f;
#X obj 176 472 % 360;
#X obj 33 580 square 0.75;
#X obj 33 550 translateXYZ 2 0 0;
#X text 172 363 toggle to draw;
#X obj 176 448 + 1;
#X obj 33 472 color 0.8 0.8 0.8;
#X text 29 33 Changing the rendering mode must be done before the window
is created in order to take effect.;
#X obj 176 494 t f f;
#X obj 149 405 t b b;
#X connect 0 0 11 0;
#X connect 1 0 11 0;
#X connect 4 0 11 0;
#X connect 8 0 11 0;
#X connect 9 0 11 0;
#X connect 14 0 15 0;
#X connect 15 0 16 0;
#X connect 16 0 26 0;
#X connect 17 0 29 0;
#X connect 18 0 17 0;
#X connect 19 0 23 0;
#X connect 20 0 25 0;
#X connect 21 0 28 0;
#X connect 23 0 22 0;
#X connect 25 0 21 0;
#X connect 26 0 19 0;
#X connect 28 0 19 3;
#X connect 28 1 20 1;
#X connect 29 0 16 0;
#X connect 29 1 20 0;
#X restore 355 405 pd buffering;
#N canvas 556 191 548 430 stereo-3D 0;
#X text 32 18 messages to [gemwin] regarding stereoscopic appearance:
;
#X msg 31 158 stereo \$1;
#X obj 31 398 s \$0-gemwin-in;
#X obj 31 60 vradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 -1
-1 0;
#X text 54 77 2 screen mode;
#X text 53 91 Red / Green mode;
#X text 105 158 set stereo-mode;
#X text 54 61 off;
#X msg 48 210 stereoSep \$1;
#X floatatom 48 188 5 0 0 0 - - -;
#X text 137 209 set the stereo-separation (default: -15);
#X msg 66 258 stereoFoc \$1;
#X text 150 259 set the stereo-focal;
#X floatatom 66 234 5 0 0 0 - - -;
#X obj 80 283 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 174 297 turn the seperation-line between the 2 screens in stereo-mode
1 on/off;
#X msg 79 344 0 \, destroy;
#X msg 79 369 create \, 1;
#X text 157 345 destroy window before to set stereo...;
#X text 157 368 ...and create it after;
#X text 53 106 Crystal Glasses mode (needs hardware support!);
#X msg 80 302 stereoLine \$1;
#X connect 1 0 2 0;
#X connect 3 0 1 0;
#X connect 8 0 2 0;
#X connect 9 0 8 0;
#X connect 11 0 2 0;
#X connect 13 0 11 0;
#X connect 14 0 21 0;
#X connect 16 0 2 0;
#X connect 17 0 2 0;
#X connect 21 0 2 0;
#X restore 354 641 pd stereo-3D;
#X text 464 132 basic create and start rendering;
#X text 513 241 change background color;
#X text 56 538 set the background color of the window (default 0 0
0);
#X text 30 238 dimen <x> <y>:;
#X text 30 333 offset <x> <y>:;
#X text 29 593 view <x> <y> <z> : translate the camera (default 0 0
4);
#N canvas 124 233 762 647 more 0;
#X text 43 11 messages to [gemwin] regarding the view-point ("camera")
;
#X text 312 389 perspec <left> <right> <bottom> <top> <front> <back>::
;
#X text 311 407 set the clipping planes of the view-point. this might
be what you need \, if all the objects that re further away than 20
units suddenly disappear;
#X text 311 449 default: -1 1 -1 1 1 20;
#X text 208 51 view <x> <y> <z>::;
#X text 208 70 translate the camera / set the viewpoint:: the viewing-direction
will not be changed.;
#X text 80 119 default: 0 0 4;
#X text 208 98 the viewing direction defaults to "0 0 1" \, with y-axis
as "up";
#X text 303 167 view <x> <y> <z> <azimuth>::;
#X text 303 184 view <x> <y> <z> <azimuth> <elevation>::;
#X text 303 201 translate/rotate camera/viewpoint \; the "up" direction
will still be the y-axis;
#X text 389 284 view <view_x> <view_y> <view_z> <target_x> <target_y>
<target_z> <up_x> <up_y> <up_z>::;
#X text 389 314 set viewpoint (view_X view_Y view_Z). the camera will
look at the target-point (target_X \, target_Y \, target_Z). "up" is
defined via the vector (up_X \, up_Y \, up_Z);
#X text 301 251 default: 0 0 4 0 0;
#X text 389 355 default: 0 0 4 0 0 0 0 1 0;
#X obj 25 588 s \$0-gemwin-in;
#X msg 25 101 view \$1 \$2 \$3;
#X msg 42 190 view \$1 \$2 \$3 \$4;
#X msg 49 250 view \$1 \$2 \$3 \$4 \$5;
#X msg 52 330 view \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9;
#X msg 101 452 perspec \$1 \$2 \$3 \$4 \$5 \$6;
#X text 310 467 if you want to remove perspective \, see [ortho];
#X msg 66 563 view 0 0 20 \, perspec -1 1 -1 1 4 50;
#N canvas 1299 508 544 500 perspec 0;
#X obj 90 428 outlet;
#X obj 268 273 t f f;
#X obj 268 298 * -1;
#X obj 90 268 t f f;
#X obj 90 293 * -1;
#X obj 90 367 pack -1 1 -1 1 1 20;
#X msg 90 389 set perspec \$1 \$2 \$3 \$4 \$5 \$6 \, bang;
#X msg 172 453 set perspec \, adddollar 1 \, adddollar 2 \, adddollar
3 \, adddollar 4 \, adddollar 5 \, adddollar 6;
#X floatatom 103 117 5 0.1 5 1 x_wideness - -;
#X floatatom 103 134 5 0.1 5 1 y_wideness - -;
#X floatatom 103 151 5 0 0 1 z_depth - -;
#X obj 360 196 select 1;
#X obj 405 219 t b f f;
#X obj 249 226 t b f f;
#X obj 204 203 select 0;
#X obj 360 218 f 20;
#X obj 204 224 f 1;
#X msg 204 246 set \$1;
#X msg 360 240 set \$1;
#X obj 134 216 t b f f;
#X obj 89 193 select 0;
#X obj 89 214 f 1;
#X msg 89 236 set \$1;
#X obj 328 97 loadbang;
#X obj 328 119 t b b;
#X obj 328 141 t b b b;
#X connect 1 0 2 0;
#X connect 1 1 5 3;
#X connect 2 0 5 2;
#X connect 3 0 4 0;
#X connect 3 1 5 1;
#X connect 4 0 5 0;
#X connect 5 0 6 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X connect 8 0 20 0;
#X connect 9 0 14 0;
#X connect 10 0 11 0;
#X connect 11 0 15 0;
#X connect 11 1 12 0;
#X connect 12 0 5 0;
#X connect 12 1 5 5;
#X connect 12 2 15 1;
#X connect 13 0 5 0;
#X connect 13 1 1 0;
#X connect 13 2 16 1;
#X connect 14 0 16 0;
#X connect 14 1 13 0;
#X connect 15 0 18 0;
#X connect 16 0 17 0;
#X connect 17 0 9 0;
#X connect 18 0 10 0;
#X connect 19 1 3 0;
#X connect 19 2 21 1;
#X connect 20 0 21 0;
#X connect 20 1 19 0;
#X connect 21 0 22 0;
#X connect 22 0 8 0;
#X connect 23 0 24 0;
#X connect 24 0 25 0;
#X connect 24 1 7 0;
#X connect 25 0 21 0;
#X connect 25 1 16 0;
#X connect 25 2 15 0;
#X coords 0 -1 1 1 100 67 1 100 100;
#X restore 101 380 pd perspec;
#X text 292 554 the default camera has a very wide angle. this message
allows to narrow it.;
#N canvas 506 305 612 484 view 0;
#X floatatom 112 114 5 0 0 0 x - -;
#X floatatom 158 114 5 0 0 0 y - -;
#X floatatom 201 114 5 0 0 0 z - -;
#X floatatom 236 114 5 0 0 2 azimuth - -;
#X obj 369 109 loadbang;
#X obj 140 335 outlet;
#X obj 201 226 t b f;
#X obj 150 227 t b f;
#X obj 369 131 t b b;
#X msg 213 342 set view \, adddollar 1 \, adddollar 2 \, adddollar
3 \, adddollar 4;
#X obj 140 274 pack 0 0 4 0;
#X obj 251 226 t b f;
#X msg 398 196 set 4;
#X msg 140 296 set view \$1 \$2 \$3 \$4 \, bang;
#X connect 0 0 10 0;
#X connect 1 0 7 0;
#X connect 2 0 6 0;
#X connect 3 0 11 0;
#X connect 4 0 8 0;
#X connect 6 0 10 0;
#X connect 6 1 10 2;
#X connect 7 0 10 0;
#X connect 7 1 10 1;
#X connect 8 0 12 0;
#X connect 8 1 9 0;
#X connect 9 0 5 0;
#X connect 10 0 13 0;
#X connect 11 0 10 0;
#X connect 11 1 10 3;
#X connect 12 0 2 0;
#X connect 13 0 5 0;
#X coords 0 -1 1 1 180 30 1 100 100;
#X restore 42 156 pd view;
#N canvas 508 299 612 484 view 0;
#X floatatom 112 114 5 0 0 0 x - -;
#X floatatom 158 114 5 0 0 0 y - -;
#X floatatom 201 114 5 0 0 0 z - -;
#X floatatom 236 114 5 0 0 2 azimuth - -;
#X obj 369 109 loadbang;
#X obj 140 335 outlet;
#X obj 201 226 t b f;
#X obj 150 227 t b f;
#X obj 369 131 t b b;
#X obj 251 226 t b f;
#X msg 398 196 set 4;
#X msg 140 296 set view \$1 \$2 \$3 \$4 \$5 \, bang;
#X obj 140 274 pack 0 0 4 0 0;
#X floatatom 286 114 5 0 0 2 elevate - -;
#X obj 291 226 t b f;
#X msg 213 342 set view \, adddollar 1 \, adddollar 2 \, adddollar
3 \, adddollar 4 \, adddollar 5;
#X connect 0 0 12 0;
#X connect 1 0 7 0;
#X connect 2 0 6 0;
#X connect 3 0 9 0;
#X connect 4 0 8 0;
#X connect 6 0 12 0;
#X connect 6 1 12 2;
#X connect 7 0 12 0;
#X connect 7 1 12 1;
#X connect 8 0 10 0;
#X connect 8 1 15 0;
#X connect 9 0 12 0;
#X connect 9 1 12 3;
#X connect 10 0 2 0;
#X connect 11 0 5 0;
#X connect 12 0 11 0;
#X connect 13 0 14 0;
#X connect 14 0 12 0;
#X connect 14 1 12 4;
#X connect 15 0 5 0;
#X coords 0 -1 1 1 230 30 1 100 100;
#X restore 49 216 pd view;
#N canvas 509 296 612 484 view 0;
#X floatatom 112 114 5 0 0 0 x - -;
#X floatatom 158 114 5 0 0 0 y - -;
#X floatatom 201 114 5 0 0 0 z - -;
#X obj 369 109 loadbang;
#X obj 140 335 outlet;
#X obj 201 226 t b f;
#X obj 150 227 t b f;
#X obj 369 131 t b b;
#X msg 398 196 set 4;
#X obj 140 274 pack 0 0 4;
#X msg 140 296 set view \$1 \$2 \$3 \, bang;
#X msg 213 342 set view \, adddollar 1 \, adddollar 2 \, adddollar
3;
#X connect 0 0 9 0;
#X connect 1 0 6 0;
#X connect 2 0 5 0;
#X connect 3 0 7 0;
#X connect 5 0 9 0;
#X connect 5 1 9 2;
#X connect 6 0 9 0;
#X connect 6 1 9 1;
#X connect 7 0 8 0;
#X connect 7 1 11 0;
#X connect 8 0 2 0;
#X connect 9 0 10 0;
#X connect 10 0 4 0;
#X connect 11 0 4 0;
#X coords 0 -1 1 1 140 30 1 100 100;
#X restore 25 65 pd view;
#N canvas 380 50 612 484 view 0;
#X floatatom 214 114 5 0 0 2 X - -;
#X obj 166 22 loadbang;
#X obj 139 335 outlet;
#X obj 174 177 t b f;
#X obj 139 177 t b f;
#X obj 214 177 t b f;
#X msg 174 79 set 4;
#X floatatom 249 114 5 0 0 2 Y - -;
#X obj 249 177 t b f;
#X obj 139 274 pack 0 0 4 0 0 0 0 1 0;
#X floatatom 284 114 5 0 0 2 Z - -;
#X floatatom 104 114 5 0 0 2 x - -;
#X floatatom 139 114 5 0 0 2 y - -;
#X floatatom 174 114 5 0 0 2 z - -;
#X floatatom 324 114 5 0 0 2 upX - -;
#X floatatom 359 114 5 0 0 2 upY - -;
#X floatatom 394 114 5 0 0 2 upZ - -;
#X obj 284 177 t b f;
#X obj 324 177 t b f;
#X obj 359 177 t b f;
#X obj 394 177 t b f;
#X obj 324 199 t b;
#X obj 214 199 t b;
#X msg 139 296 set view \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9 \, bang
;
#X msg 251 22 set view \, adddollar 1 \, adddollar 2 \, adddollar 3
\, adddollar 4 \, adddollar 5 \, adddollar 6 \, adddollar 7 \, adddollar
8 \, adddollar 9;
#X obj 166 44 t b b b;
#X msg 359 79 set 1;
#X connect 0 0 5 0;
#X connect 1 0 25 0;
#X connect 3 0 9 0;
#X connect 3 1 9 2;
#X connect 4 0 9 0;
#X connect 4 1 9 1;
#X connect 5 0 22 0;
#X connect 5 1 9 3;
#X connect 6 0 13 0;
#X connect 7 0 8 0;
#X connect 8 0 22 0;
#X connect 8 1 9 4;
#X connect 9 0 23 0;
#X connect 10 0 17 0;
#X connect 11 0 9 0;
#X connect 12 0 4 0;
#X connect 13 0 3 0;
#X connect 14 0 18 0;
#X connect 15 0 19 0;
#X connect 16 0 20 0;
#X connect 17 0 22 0;
#X connect 17 1 9 5;
#X connect 18 0 21 0;
#X connect 18 1 9 6;
#X connect 19 0 21 0;
#X connect 19 1 9 7;
#X connect 20 0 21 0;
#X connect 20 1 9 8;
#X connect 21 0 22 0;
#X connect 22 0 9 0;
#X connect 23 0 2 0;
#X connect 24 0 2 0;
#X connect 25 0 6 0;
#X connect 25 1 26 0;
#X connect 25 2 24 0;
#X connect 26 0 15 0;
#X coords 0 -1 1 1 330 30 2 100 100;
#X restore 52 296 pd view;
#X text 309 229 azimuth and elevation are in degree [°];
#X connect 16 0 15 0;
#X connect 17 0 15 0;
#X connect 18 0 15 0;
#X connect 19 0 15 0;
#X connect 20 0 15 0;
#X connect 22 0 15 0;
#X connect 23 0 20 0;
#X connect 25 0 17 0;
#X connect 26 0 18 0;
#X connect 27 0 16 0;
#X connect 28 0 19 0;
#X restore 30 612 pd more viewing;
#X text 17 211 message to send before creation :;
#X text 17 462 message to send after creation :;
#X text 29 387 buffer 2|1 : set buffer-rendering mode to double (default)
or single (not clearing buffer);
#X text 456 60 reset settings and;
#X text 18 417 message regarding creation :;
#X obj 455 356 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 474 357 rotate objects;
#X text 554 196 destroy window;
#X text 484 177 (stop rendering and);
#X text 457 83 and start rendering;
#X text 456 72 create window with specific size;
#X text 29 522 color <r> <g> <b> :;
#X connect 12 0 11 0;
#X connect 13 0 11 0;
#X connect 22 0 11 0;
#X connect 36 0 37 0;
#X connect 37 0 11 0;
#X connect 40 0 11 0;
#X connect 55 0 39 0;

View file

@ -1,91 +0,0 @@
#N canvas 90 26 633 413 10;
#X text 452 8 GEM object;
#X obj 8 257 cnv 15 430 140 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 11 258 Inlets:;
#X text 10 348 Outlets:;
#X obj 8 222 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 222 Arguments:;
#X obj 7 66 cnv 15 430 150 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 451 77 cnv 15 170 170 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 60 Example:;
#X obj 456 108 cnv 15 160 130 empty empty empty 35 12 0 14 -24198 -66577
0;
#X text 14 361 Outlet 1: gemlist;
#X text 21 272 Inlet 1: gemlist;
#X obj 10 153 cnv 15 420 50 empty empty empty 20 12 0 14 -225280 -66577
0;
#X text 71 31 Class: shader object;
#X text 451 325 see also:;
#X obj 453 362 glsl_vertex;
#X text 14 157 IMPORTANT NOTE: your openGL-implementation (gfx-card
driver \, ...) has to support the GLSL-standard (which is part of openGL-2.0)
in order to make use of this object.;
#X floatatom 545 216 0 0 0 0 ID - -;
#X obj 459 193 glsl_fragment;
#X obj 453 342 glsl_program;
#X text 50 12 Synopsis: [glsl_fragment];
#X text 13 66 Description: load a GLSL fragment shader;
#X text 14 85 [glsl_fragment] loads and compiles a GLSL fragment shader
into a module \, suitable for linking with [glsl_program];
#X text 17 118 An ID of the generated module is sent to the 2nd outlet.
Use this ID in the "shader" message to [glsl_program];
#X text 63 233 <filename>: filename to load as GLSL fragment shader
;
#X text 21 284 Inlet 1: "open <filename>": filename to load as GLSL
fragment shader module.;
#X text 21 315 Inlet 1: "print": print info about the GLSL-support
in your openGL implementation;
#X text 14 376 Outlet 2: <float>: ID of the GLSL-module;
#X obj 459 86 gemhead;
#X msg 552 170 print;
#X obj 521 261 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 197 134 destroy;
#X msg 132 112 reset \, create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 526 300 pd gemwin;
#X msg 526 281 create;
#X text 522 260 Create window:;
#X obj 527 117 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#N canvas 0 22 450 300 open 0;
#X obj 312 45 openpanel;
#X obj 311 157 outlet;
#X obj 312 69 t b s;
#X msg 332 94 set open \$1;
#X obj 312 22 inlet;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X connect 2 1 3 0;
#X connect 3 0 1 0;
#X connect 4 0 0 0;
#X restore 470 116 pd open;
#X msg 470 136 open Toon.frag;
#X obj 453 382 glsl_geometry;
#X connect 18 1 17 0;
#X connect 28 0 18 0;
#X connect 29 0 18 0;
#X connect 31 0 32 0;
#X connect 32 0 31 0;
#X connect 34 0 35 0;
#X connect 35 0 36 0;
#X connect 36 0 18 0;

View file

@ -1,91 +0,0 @@
#N canvas 40 32 633 413 10;
#X text 452 8 GEM object;
#X obj 8 257 cnv 15 430 140 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 11 258 Inlets:;
#X text 10 348 Outlets:;
#X obj 8 222 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 222 Arguments:;
#X obj 7 66 cnv 15 430 150 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 451 77 cnv 15 170 170 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 60 Example:;
#X obj 456 108 cnv 15 160 130 empty empty empty 35 12 0 14 -24198 -66577
0;
#X text 14 361 Outlet 1: gemlist;
#X text 21 272 Inlet 1: gemlist;
#X obj 10 153 cnv 15 420 50 empty empty empty 20 12 0 14 -225280 -66577
0;
#X text 71 31 Class: shader object;
#X text 451 325 see also:;
#X floatatom 546 219 0 0 0 0 ID - -;
#X obj 460 196 glsl_geometry;
#X obj 453 342 glsl_program;
#X text 50 12 Synopsis: [glsl_geometry];
#X text 13 66 Description: load a GLSL geometry shader;
#X text 14 85 [glsl_geometry] loads and compiles a GLSL geometry shader
into a module \, suitable for linking with [glsl_program];
#X text 17 118 An ID of the generated module is sent to the 2nd outlet.
Use this ID in the "shader" message to [glsl_program];
#X text 63 233 <filename>: filename to load as GLSL geometry shader
;
#X text 21 284 Inlet 1: "open <filename>": filename to load as GLSL
geometry shader module.;
#X text 21 315 Inlet 1: "print": print info about the GLSL-support
in your openGL implementation;
#X text 14 376 Outlet 2: <float>: ID of the GLSL-module;
#X obj 460 86 gemhead;
#X msg 521 174 print;
#X obj 521 261 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 197 134 destroy;
#X msg 132 112 reset \, create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 526 300 pd gemwin;
#X msg 526 281 create;
#X text 522 260 Create window:;
#X obj 453 363 glsl_fragment;
#X obj 530 120 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#N canvas 0 22 450 300 open 0;
#X obj 312 45 openpanel;
#X obj 312 157 outlet;
#X obj 312 69 t b s;
#X msg 332 94 set open \$1;
#X obj 312 22 inlet;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X connect 2 1 3 0;
#X connect 3 0 1 0;
#X connect 4 0 0 0;
#X restore 473 119 pd open;
#X obj 453 383 glsl_geometry;
#X msg 473 141 open Toon.geom;
#X text 14 157 IMPORTANT NOTE: your openGL-implementation (gfx-card
driver \, ...) has to support the GLSL-standard (which is part of openGL-2.1)
in order to make use of this object.;
#X connect 16 1 15 0;
#X connect 26 0 16 0;
#X connect 27 0 16 0;
#X connect 29 0 30 0;
#X connect 30 0 29 0;
#X connect 33 0 34 0;
#X connect 34 0 36 0;
#X connect 36 0 16 0;

View file

@ -1,112 +0,0 @@
#N canvas 23 79 651 581 10;
#X text 452 8 GEM object;
#X obj 8 307 cnv 15 430 260 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 11 308 Inlets:;
#X text 10 524 Outlets:;
#X obj 8 272 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 272 Arguments:;
#X obj 7 56 cnv 15 430 210 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 449 77 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 60 Example:;
#X obj 450 138 cnv 15 160 90 empty empty empty 20 12 0 14 -24198 -66577
0;
#X text 63 283 <none>;
#X text 14 537 Outlet 1: gemlist;
#X text 21 322 Inlet 1: gemlist;
#X obj 10 213 cnv 15 420 50 empty empty empty 20 12 0 14 -225280 -66577
0;
#X text 71 31 Class: shader object;
#X text 451 345 see also:;
#X obj 451 188 glsl_program;
#X msg 451 272 gemList;
#X obj 453 362 glsl_fragment;
#X obj 453 382 glsl_vertex;
#X text 50 12 Synopsis: [glsl_program];
#X text 13 56 Description: link GLSL-modules into a shader program
;
#X text 14 75 [glsl_program] links together GLSL-modules (created by
[glsl_fragment] and [glsl_vertex]) and sets up the resulting openGL-2.0
shader program.;
#X text 16 118 [glsl_program] detects which parameters of the shader
can be modified by the user ("uniform variables") \, and allows the
user to modify them via messages. If the shader-program has a uniform
variable named "bla" of type float \, then you can send a message [bla
0.5( to the [glsl_program] to set this variable to "0.5".;
#X text 14 217 IMPORTANT NOTE: your openGL-implementation (gfx-card
driver \, ...) has to support the GLSL-standard (which is part of openGL-2.0)
in order to make use of this object.;
#X text 21 364 Inlet 1: "shader <list>": list of shader-module IDs
as reported generated by [glsl_fragment] and [glsl_vertex];
#X text 21 395 Inlet 1: "link": link the shader-modules given via the
"shader"-message;
#X text 21 425 Inlet 1: "link <list>": link the shader-modules given
\; (this is the same as "shader <list>"+"link");
#X text 17 198 An ID of the generated program is sent to the 2nd outlet.
;
#X text 14 552 Outlet 2: <float>: ID of the linked glsl_program;
#X text 21 456 Inlet 1: "<uniformName> <uniformParm>...": set the uniform
variable of name uniformName to the (list of) uniformParms. this is
only valid after successfully linking a program;
#X floatatom 530 211 5 0 0 0 ID - -;
#X msg 462 162 link;
#X msg 518 140 shader 1 3;
#X obj 451 86 gemhead;
#X msg 460 140 print;
#X msg 518 161 link 1 3;
#X obj 513 257 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 197 134 destroy;
#X msg 132 112 reset \, create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 518 296 pd gemwin;
#X msg 518 277 create;
#X text 514 256 Create window:;
#X text 21 335 Inlet 1: "print": print info about the GLSL-support
in your openGL implementation and about the linked program;
#N canvas 74 576 496 338 geometry 0;
#X obj 28 27 cnv 15 430 280 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 33 47 when using geometry-shaders (with [glsl_geometry]) you
have to tell [glsl_program] about the input-type (depending on the
geometry you feed to the glsl-program) \, the output-type (that you
create by the shader) and the number of vertices generated;
#X text 31 158 Inlet 1: "geometry_intype <inputtype>": input type of
geometry (default: GL_TRIANGLES);
#X text 31 188 Inlet 1: "geometry_outtype <outputtype>": output type
of geometry (default: GL_TRIANGLE_STRIP);
#X text 31 223 Inlet 1: "geometry_type <inputtype> <outputtype>": combination
of "intype" and "outtype";
#X text 31 262 Inlet 1: "geometry_outvertices <#vertices> <outputtype>":
number of vertices to be created (default: MAX_OUTPUT_VERTICES);
#X text 38 128 you might want to set these before linking the shaders!!
;
#X restore 29 503 pd geometry shaders;
#X obj 453 402 glsl_geometry;
#X connect 16 0 17 0;
#X connect 16 1 31 0;
#X connect 32 0 16 0;
#X connect 33 0 16 0;
#X connect 34 0 16 0;
#X connect 35 0 16 0;
#X connect 36 0 16 0;
#X connect 38 0 39 0;
#X connect 39 0 38 0;

View file

@ -1,90 +0,0 @@
#N canvas 40 32 633 413 10;
#X text 452 8 GEM object;
#X obj 8 257 cnv 15 430 140 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 11 258 Inlets:;
#X text 10 348 Outlets:;
#X obj 8 222 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 222 Arguments:;
#X obj 7 66 cnv 15 430 150 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 451 77 cnv 15 170 170 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 60 Example:;
#X obj 456 108 cnv 15 160 130 empty empty empty 35 12 0 14 -24198 -66577
0;
#X text 14 361 Outlet 1: gemlist;
#X text 21 272 Inlet 1: gemlist;
#X obj 10 153 cnv 15 420 50 empty empty empty 20 12 0 14 -225280 -66577
0;
#X text 71 31 Class: shader object;
#X text 451 325 see also:;
#X text 14 157 IMPORTANT NOTE: your openGL-implementation (gfx-card
driver \, ...) has to support the GLSL-standard (which is part of openGL-2.0)
in order to make use of this object.;
#X floatatom 546 219 0 0 0 0 ID - -;
#X obj 460 196 glsl_vertex;
#X obj 453 342 glsl_program;
#X text 50 12 Synopsis: [glsl_vertex];
#X text 13 66 Description: load a GLSL vertex shader;
#X text 14 85 [glsl_vertex] loads and compiles a GLSL vertex shader
into a module \, suitable for linking with [glsl_program];
#X text 17 118 An ID of the generated module is sent to the 2nd outlet.
Use this ID in the "shader" message to [glsl_program];
#X text 63 233 <filename>: filename to load as GLSL vertex shader;
#X text 21 284 Inlet 1: "open <filename>": filename to load as GLSL
vertex shader module.;
#X text 21 315 Inlet 1: "print": print info about the GLSL-support
in your openGL implementation;
#X text 14 376 Outlet 2: <float>: ID of the GLSL-module;
#X obj 460 86 gemhead;
#X msg 521 174 print;
#X obj 521 261 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 197 134 destroy;
#X msg 132 112 reset \, create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 526 300 pd gemwin;
#X msg 526 281 create;
#X text 522 260 Create window:;
#X obj 453 362 glsl_fragment;
#X obj 530 120 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#N canvas 0 22 450 300 open 0;
#X obj 312 45 openpanel;
#X obj 311 157 outlet;
#X obj 312 69 t b s;
#X msg 332 94 set open \$1;
#X obj 312 22 inlet;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X connect 2 1 3 0;
#X connect 3 0 1 0;
#X connect 4 0 0 0;
#X restore 473 119 pd open;
#X msg 473 139 open Toon.vert;
#X obj 453 382 glsl_geometry;
#X connect 17 1 16 0;
#X connect 27 0 17 0;
#X connect 28 0 17 0;
#X connect 30 0 31 0;
#X connect 31 0 30 0;
#X connect 34 0 35 0;
#X connect 35 0 36 0;
#X connect 36 0 17 0;

View file

@ -1,88 +0,0 @@
#N canvas 344 47 655 397 10;
#X text 452 8 GEM object;
#X obj 8 216 cnv 15 430 70 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 39 218 Inlets:;
#X text 39 250 Outlets:;
#X obj 8 176 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 175 Arguments:;
#X obj 8 76 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 449 77 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 453 60 Example:;
#X obj 514 254 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 132 112 create \, 1;
#X msg 198 112 destroy;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 6 0;
#X connect 3 1 5 0;
#X connect 3 1 7 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 519 293 pd gemwin;
#X msg 519 274 create;
#X text 515 253 Create window:;
#X obj 450 186 cnv 15 80 40 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 451 84 gemhead;
#X obj 510 85 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144
-1 -1;
#N canvas 0 22 591 370 image 0;
#X obj 77 48 inlet;
#X obj 77 344 outlet;
#X obj 223 55 inlet;
#X msg 223 123 open \$1;
#X obj 223 100 openpanel;
#X obj 77 281 pix_buf;
#X msg 103 257 auto 1;
#X obj 103 236 loadbang;
#X text 156 263 [pix_buf] with auto 1 is important if we want to recalculate
our pix-effect each frame but don't want to reload the image all the
time.;
#X obj 77 205 pix_image examples/data/fractal.JPG;
#X connect 0 0 9 0;
#X connect 2 0 4 0;
#X connect 3 0 9 0;
#X connect 4 0 3 0;
#X connect 5 0 1 0;
#X connect 6 0 5 0;
#X connect 7 0 6 0;
#X connect 9 0 5 0;
#X restore 451 113 pd image;
#X text 63 186 <none>;
#X text 57 263 Outlet 1: gemlist;
#X text 63 232 Inlet 1: gemlist;
#X text 516 105 open an image;
#X text 509 118 (JPEG \, TIFF \, ..);
#X obj 451 196 imageVert;
#X text 10 135 This is still experimental...please report any problems
or suggestions with it.;
#X text 14 91 [imageVert] maps a pix to a series of polygons. The height
of the polygons is the sum of the colors (so brighter pixels will be
taller \, while darker pixels are shorter).;
#X text 29 77 Description: map luminance to height;
#X text 50 12 Synopsis: [imageVertp];
#X text 71 31 Class: geometric object;
#X obj 451 165 rotateXYZ;
#X floatatom 476 144 5 0 0 0 - - -;
#X connect 10 0 11 0;
#X connect 11 0 10 0;
#X connect 14 0 16 0;
#X connect 15 0 16 1;
#X connect 16 0 28 0;
#X connect 28 0 22 0;
#X connect 29 0 28 1;
#X connect 29 0 28 2;

View file

@ -1,98 +0,0 @@
#N canvas 124 217 710 507 10;
#X text 475 49 Example:;
#X obj 7 64 cnv 15 450 220 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 336 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 9 339 Inlets:;
#X obj 8 296 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 295 Arguments:;
#X text 452 8 GEM object;
#X text 27 351 Inlet 1: gemlist;
#X text 9 406 Outlets:;
#X text 21 419 Outlet 1: gemlist;
#X obj 469 67 cnv 15 170 320 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 474 321 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 256 112 destroy;
#X obj 322 45 inlet;
#X msg 132 112 create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 8 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X connect 8 0 0 0;
#X restore 479 360 pd gemwin;
#X msg 479 341 create;
#X text 475 320 Create window:;
#X obj 475 160 cnv 15 150 100 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 483 74 gemhead;
#X text 33 14 Synopsis: [light];
#X text 53 30 Class: non-geometric object;
#X text 7 69 Description: adds a point-light to the scene;
#X text 18 86 [light] produces a light which is local to the scene
(unlike [world_light] which is at an infinite distance). Because light
is local light \, there is more computation required. Use a world_light
if you don't mind parallel light rays.;
#X text 27 373 Inlet 1: message: debug 1|0;
#X text 28 388 Inlet 2: list: 3(RGB) or 4(RGBA) float values;
#X obj 483 235 light;
#X msg 570 213 1 1 1;
#X obj 527 163 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X msg 527 184 debug \$1;
#X text 19 219 Keep in mind that the attributes have to be set before
rendering the vertices \, so if you are trying for frame accurate rendering
\, you will want to set the gemhead order to a low nuber so that all
of the values of the light get set first.;
#X obj 472 296 sphere;
#X floatatom 563 78 5 0 0 0 - - -;
#X obj 483 139 translateXYZ 2 0 0;
#X obj 483 96 rotateXYZ 0 -120 0;
#X obj 472 274 gemhead 40;
#X floatatom 523 121 5 1 4 0 - - -;
#X obj 549 261 cnv 15 85 50 empty empty empty 20 12 0 14 -24198 -66577
0;
#X msg 551 288 lighting \$1;
#X obj 551 266 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X text 17 155 You can place the light with [rotate] and [translate].
If you are lost use "debug" to display the light source as a small
sphere.;
#X msg 513 213 1 1 0;
#X text 18 200 The second inlet sets the color of the light-source.
;
#X text 63 307 light-number;
#X obj 492 175 tgl 20 0 empty \$0-onoff empty 17 7 0 10 -262144 -1
-1 0 1;
#X text 27 362 Inlet 1: float: turn light on(1)/off(0);
#X connect 12 0 13 0;
#X connect 13 0 12 0;
#X connect 16 0 31 0;
#X connect 24 0 23 1;
#X connect 25 0 26 0;
#X connect 26 0 23 0;
#X connect 29 0 31 2;
#X connect 30 0 23 0;
#X connect 31 0 30 0;
#X connect 32 0 28 0;
#X connect 33 0 30 1;
#X connect 35 0 12 1;
#X connect 36 0 35 0;
#X connect 38 0 23 1;
#X connect 41 0 23 0;

View file

@ -1,69 +0,0 @@
#N canvas 37 45 711 482 10;
#X text 458 11 GEM object;
#X text 41 430 see also:;
#X obj 115 429 linear_path;
#X text 54 22 Synopsis: [linear_path];
#X obj 504 56 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 510 38 Example:;
#X obj 22 60 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 22 288 cnv 15 450 120 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 23 288 Inlets:;
#X obj 22 164 cnv 15 450 120 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 31 164 Arguments:;
#X text 22 328 Outlets:;
#X obj 516 212 unpack 0 0 0;
#X floatatom 516 279 0 0 0 0 - - -;
#X floatatom 550 257 0 0 0 0 - - -;
#X floatatom 585 235 0 0 0 0 - - -;
#X floatatom 524 112 5 0 0 0 - - -;
#X text 22 64 Description: reads out a table;
#X text 48 78 You can specify the reading-point by sending a float
between 0.0f (beginning of table) and 1.0f (end of table). Between
points \, a linear interpolation is made.;
#X text 48 120 You can set the table to be read with the "open" message
or as the second creation-argument.;
#X text 89 197 [linear_path] is able to excerpt more than 1 dimension
of a linear table. You can specify the dimension <D> of the table with
the first creation-argument. (default 1);
#X text 44 346 Outlet 1:;
#X text 46 307 Inlet 1: reading point 0.0f...1.0f;
#X obj 519 71 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X obj 516 90 / 127;
#N canvas 0 22 450 300 (subpatch) 0;
#X array array 102 float 1;
#A 0 0 0 0 0 0 0 0 0 0.220005 0.460011 0.520012 0.540012 0.580013 0.580013
0.580013 0.160004 -0.0200005 -0.140003 -0.300007 -0.42001 -0.660015
0.42001 0.44001 0.44001 0.44001 0.560013 0.560013 0.560013 0.260006
0.0800018 -0.280006 0.520012 0.400009 0.313341 0.226672 0.140003 -0.120003
-0.190004 -0.260006 -0.380009 -0.520012 0.300007 0.640015 0.640015
0.640015 0.460011 0.330008 0.200005 -0.760017 -0.760017 -0.760017 -0.760017
-0.760017 -0.760017 -0.760017 -0.760017 -0.760017 -0.760017 -0.760017
-0.760017 0.42001 0.520012 0.560013 0.620014 0.620014 0.620014 0.580013
0.530012 0.480011 0.280006 0.180004 0.130003 -0.0400009 0.44001 0.44001
0.400009 0.320007 0.180004 -0.0400009 -0.180004 -0.160004 -0.0400009
0.0200005 0.0800018 0.160004 0.240005 0.360008 0.520012 0.660015 0.500011
0.380009 0.120003 -0.200005 -0.240005 0 0 0 0 0 0 0 0;
#X coords 0 1 101 -1 170 100 1;
#X restore 503 337 graph;
#X obj 511 132 cnv 15 130 60 empty empty empty 20 12 0 14 -24198 -66577
0;
#X text 48 183 dimensions of the table;
#X text 102 346 a list of <D> floats. A multi-dimensional table stores
its values in n-tuples like: "<r1> <g1> <b1> <r2> <g2> <b2>..." Therefore
\, a table must have the size <D>*<n>;
#X text 50 240 name of the table;
#X obj 516 168 linear_path 3 array;
#X msg 543 140 open array;
#X connect 12 0 13 0;
#X connect 12 1 14 0;
#X connect 12 2 15 0;
#X connect 23 0 24 0;
#X connect 24 0 16 0;
#X connect 24 0 30 0;
#X connect 30 0 12 0;
#X connect 31 0 30 0;

View file

@ -1,76 +0,0 @@
#N canvas 379 171 706 465 10;
#X text 54 30 Class: geometric object;
#X obj 470 65 cnv 15 230 390 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 593 385 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 112 destroy;
#X msg 132 112 create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 598 424 pd gemwin;
#X msg 598 405 create;
#X text 594 384 Create window:;
#X obj 7 65 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 216 cnv 15 450 150 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 9 221 Inlets:;
#X obj 8 176 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 175 Arguments:;
#X text 27 277 Inlet 2: float: size;
#X text 468 21 GEM object;
#X text 27 233 Inlet 1: gemlist;
#X text 9 321 Outlets:;
#X text 21 334 Outlet 1: gemlist;
#X text 476 47 Example:;
#X obj 473 96 cnv 15 220 280 empty empty empty 20 12 0 14 -24198 -66577
0;
#X msg 476 127 draw line;
#X msg 476 146 draw point;
#X obj 544 72 gemhead;
#X floatatom 647 318 5 0 0 0 - - -;
#X text 647 302 size;
#X msg 476 108 draw default;
#X msg 478 223 grid \$1;
#X floatatom 478 205 5 0 0 0 - - -;
#X obj 478 292 t a;
#X obj 476 167 t a;
#X text 7 69 Description: Renders a mesh;
#X text 27 247 Inlet 1: message: draw [line|defaulf|point];
#X text 27 261 Inlet 1: list: grid float : change the grid resolution
;
#X obj 544 340 mesh_line 3;
#X text 32 14 Synopsis: [mesh_line];
#X text 16 86 The [mesh_line] object renders a mesh in a line at the
current position with current color. The size of the line can be changed
via the second inlet. This object is usefull when working with vertex_shader
;
#X text 63 186 resolution of the line mesh;
#X text 575 107 (draw line);
#X connect 3 0 4 0;
#X connect 4 0 3 0;
#X connect 18 0 27 0;
#X connect 19 0 27 0;
#X connect 20 0 31 0;
#X connect 21 0 31 1;
#X connect 23 0 27 0;
#X connect 24 0 26 0;
#X connect 25 0 24 0;
#X connect 26 0 31 0;
#X connect 27 0 31 0;

View file

@ -1,87 +0,0 @@
#N canvas 91 105 706 465 10;
#X text 54 30 Class: geometric object;
#X obj 470 65 cnv 15 230 390 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 593 385 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 112 destroy;
#X msg 132 112 create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 598 424 pd gemwin;
#X msg 598 405 create;
#X text 594 384 Create window:;
#X obj 7 65 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 216 cnv 15 450 150 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 9 221 Inlets:;
#X obj 8 176 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 175 Arguments:;
#X text 27 302 Inlet 2: float: size;
#X text 468 21 GEM object;
#X text 27 233 Inlet 1: gemlist;
#X text 9 321 Outlets:;
#X text 21 334 Outlet 1: gemlist;
#X text 476 47 Example:;
#X obj 473 96 cnv 15 220 280 empty empty empty 20 12 0 14 -24198 -66577
0;
#X msg 476 127 draw line;
#X msg 476 146 draw point;
#X obj 544 72 gemhead;
#X floatatom 647 318 5 0 0 0 - - -;
#X text 647 302 size;
#X text 32 14 Synopsis: [mesh_square];
#X obj 545 342 mesh_square 3 3;
#X msg 476 108 draw default;
#X msg 478 223 grid \$1;
#X floatatom 478 205 5 0 0 0 - - -;
#X floatatom 483 247 5 0 0 0 - - -;
#X msg 483 265 gridX \$1;
#X floatatom 552 247 5 0 0 0 - - -;
#X msg 552 265 gridY \$1;
#X obj 478 292 t a;
#X obj 476 167 t a;
#X text 7 69 Description: Renders a mesh;
#X text 63 186 resolution of the mesh;
#X text 27 247 Inlet 1: message: draw [line|defaulf|point];
#X text 27 261 Inlet 1: list: grid float : change the grid resolution
;
#X text 27 274 Inlet 1: list: gridX float : change the X grid resolution
;
#X text 27 288 Inlet 1: list: gridY float : change the Y grid resolution
;
#X text 16 86 The [mesh_square] object renders a mesh in a square at
the current position with current color. The size of the square can
be changed via the second inlet. This object is usefull when working
with vertex_shader;
#X connect 3 0 4 0;
#X connect 4 0 3 0;
#X connect 18 0 33 0;
#X connect 19 0 33 0;
#X connect 20 0 24 0;
#X connect 21 0 24 1;
#X connect 25 0 33 0;
#X connect 26 0 32 0;
#X connect 27 0 26 0;
#X connect 28 0 29 0;
#X connect 29 0 32 0;
#X connect 30 0 31 0;
#X connect 31 0 32 0;
#X connect 32 0 24 0;
#X connect 33 0 24 0;

View file

@ -1,121 +0,0 @@
#N canvas 407 65 710 632 10;
#X text 54 30 Class: geometric object;
#X obj 464 77 cnv 15 200 280 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 466 364 cnv 15 200 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 132 112 create \, 1 \, lighting 1;
#X msg 298 112 destroy \, reset;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 6 0;
#X connect 3 1 5 0;
#X connect 3 1 7 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 471 403 pd gemwin;
#X msg 471 384 create;
#X text 468 365 Create window:;
#X text 475 59 Example:;
#X obj 7 67 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 316 cnv 15 450 260 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 9 321 Inlets:;
#X obj 8 276 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 275 Arguments:;
#X text 452 8 GEM object;
#X text 27 333 Inlet 1: gemlist;
#X text 9 560 Outlets:;
#X text 21 573 Outlet 1: gemlist;
#X obj 472 136 cnv 15 180 165 empty empty empty 20 12 0 14 -106458
-66577 0;
#X text 33 14 Synopsis: [model];
#X text 7 69 Description: Renders an Alias/Wavefront-Model.;
#X text 16 86 The model object renders 3D-models that are saved in
Alias/Wavefront's OBJ-format.;
#X text 63 286 optional: name of a OBJ-file to be loaded;
#X obj 470 313 cnv 15 50 30 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 583 384 gemhead;
#X obj 583 403 world_light;
#X obj 552 302 cnv 15 100 50 empty empty empty 20 12 0 14 -106458 -66577
0;
#X obj 473 84 gemhead;
#X obj 473 319 model;
#X obj 486 140 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 486 158 openpanel;
#X obj 574 144 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X msg 574 164 rescale \$1;
#X msg 490 224 smooth \$1;
#X obj 574 204 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X msg 574 224 revert \$1;
#X msg 486 274 material \$1;
#X msg 574 274 texture \$1;
#X msg 576 326 group \$1;
#X floatatom 490 206 5 0 1 0 - - -;
#X msg 486 179 open \$1;
#X obj 576 308 hradio 15 1 0 3 empty empty empty 0 -6 0 8 -262144 -1
-1 0;
#X text 27 350 Inlet 1: message: open <filename.obj>;
#X text 27 367 Inlet 1: message: rescale 1|0 :: normalize the model
(must be set PRIOR to opening a model (default: 1);
#X text 26 444 Inlet 1: message: material 1|0 :: use material-information
(from the .MTL-file);
#X text 27 522 Inlet 1: message: group <int> :: draw only specified
part of the model (0==all groups);
#X text 16 114 To normalize the size and pivot-point of a loaded model
use the "rescale"-message prior(!) to loading the model.;
#X text 27 426 Inlet 1: message: revert 1|0 :: revert faces;
#X text 16 142 The amount of smoothing of the model-facets can be set
via the "smooth"-message.;
#X text 17 168 Some models have material-information stored in a separate
MTL-file. If these materials should be used instead of GEM's [color]
(and friends) use the "material"-message.;
#X text 16 234 Model can consist of several parts \, so-called "groups".
Normally all groups are rendered \, but you can specify specific groups
to be displayed.;
#X obj 473 115 color 1 0 0;
#X obj 486 254 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X text 27 397 Inlet 1: message: smooth <float> :: set smoothing factor
( 0.0==flat. 1.0==smooth. default=0.5);
#X text 27 474 Inlet 1: message: texture 0|1|2 :: 0==linear texturing
\, 1==sphere mapping \, 2==UV-mapping (default);
#X obj 574 254 hradio 15 1 0 3 empty empty empty 0 -6 0 8 -262144 -1
-1 0;
#X text 17 210 Images can be applied either as linear \, spheric or
UV textures.;
#X connect 3 0 4 0;
#X connect 4 0 3 0;
#X connect 22 0 23 0;
#X connect 25 0 49 0;
#X connect 27 0 28 0;
#X connect 28 0 38 0;
#X connect 29 0 30 0;
#X connect 30 0 26 0;
#X connect 31 0 26 0;
#X connect 32 0 33 0;
#X connect 33 0 26 0;
#X connect 34 0 26 0;
#X connect 35 0 26 0;
#X connect 36 0 26 0;
#X connect 37 0 31 0;
#X connect 38 0 26 0;
#X connect 39 0 36 0;
#X connect 49 0 26 0;
#X connect 50 0 34 0;
#X connect 53 0 35 0;

View file

@ -1,69 +0,0 @@
#N canvas 368 22 710 565 10;
#X text 54 30 Class: geometric object;
#X obj 464 77 cnv 15 200 180 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 466 294 cnv 15 200 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 132 112 create \, 1 \, lighting 1;
#X msg 298 112 destroy \, reset;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 6 0;
#X connect 3 1 5 0;
#X connect 3 1 7 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 471 333 pd gemwin;
#X msg 471 314 create;
#X text 468 295 Create window:;
#X text 475 59 Example:;
#X obj 7 67 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 316 cnv 15 450 160 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 9 321 Inlets:;
#X obj 8 276 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 275 Arguments:;
#X text 452 8 GEM object;
#X text 27 333 Inlet 1: gemlist;
#X text 9 420 Outlets:;
#X text 21 433 Outlet 1: gemlist;
#X obj 469 146 cnv 15 190 35 empty empty empty 20 12 0 14 -106458 -66577
0;
#X obj 470 203 cnv 15 50 30 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 583 314 gemhead;
#X obj 583 333 world_light;
#X obj 473 84 gemhead;
#X obj 492 413 model;
#X text 472 394 see also:;
#X text 33 14 Synopsis: [multimodel];
#X text 19 117 The open message is the name of the of model file \,
the base model number (ie \, what number to start at) \, the top model
number (what number to end at) \, and the skip rate (how to count).
;
#X text 18 180 When you send the open message \, multimodel looks for
the * in the file name and replaces it with a number.;
#X obj 473 209 multimodel;
#X msg 482 156 open mymodel*.obj 0 10 1;
#X text 27 350 Inlet 1: message: open <filename*.obj> <basenumber>
<topnumber> <skip>;
#X obj 563 412 pix_multiimage;
#X text 7 69 Description: load multiple an Alias/Wavefront-Model and
renders one of them;
#X text 18 386 for other messages to [multimodel] see [model];
#X connect 3 0 4 0;
#X connect 4 0 3 0;
#X connect 18 0 19 0;
#X connect 20 0 26 0;
#X connect 27 0 26 0;

View file

@ -1,158 +0,0 @@
#N canvas 402 236 760 620 10;
#X text 54 27 Class: geometric object;
#X obj 479 47 cnv 15 250 550 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 484 533 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 0 454 304 gemwin 0;
#X obj 131 164 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 112 destroy;
#X msg 131 140 create \, 1 \, lighting 1;
#X obj 298 149 world_light;
#X obj 298 122 gemhead;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X connect 9 0 8 0;
#X restore 489 571 pd gemwin;
#X msg 489 552 create;
#X text 485 532 Create window:;
#X text 485 29 Example:;
#X obj 7 47 cnv 15 450 90 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 199 cnv 15 450 260 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 19 198 Inlets:;
#X obj 8 143 cnv 15 450 50 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 142 Arguments:;
#X text 26 347 Inlet 1: message: draw [line|fill|point];
#X text 452 8 GEM object;
#X text 27 210 Inlet 1: gemlist;
#X text 9 420 Outlets:;
#X text 20 433 Outlet 1: gemlist;
#X obj 484 141 cnv 15 240 380 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 494 54 gemhead;
#X floatatom 592 446 5 0 0 2 size - -;
#X floatatom 593 475 5 0 0 2 height - -;
#X floatatom 526 96 5 0 0 0 - - -;
#X msg 523 172 draw line;
#X msg 523 192 draw fill;
#X msg 523 212 draw point;
#X text 33 11 Synopsis: [newWave];
#X text 26 377 Inlet 2: float: size (dimX & dimY);
#X text 26 391 Inlet 3: float: height (dimZ);
#X text 26 405 Inlet 4: int: action;
#X obj 565 254 vradio 11 1 0 11 empty empty action -10 -6 0 8 -262144
-1 -1 0;
#X floatatom 626 158 5 0 100 0 - - -;
#X obj 626 176 / 100;
#X msg 626 195 K1 \$1;
#X text 16 68 The newWaves object renders a number of waving square
at the current position with current color. The size of the square
can be changed via the inlet2 \, the height of the wave can be set
via the 3rd inlet. You can also set the wave-form (inlet4);
#X text 26 223 Inlet 1: bang: trigger waving;
#X obj 494 459 t a b;
#X floatatom 626 218 5 0 100 0 - - -;
#X obj 626 236 / 100;
#X floatatom 626 278 5 0 100 0 - - -;
#X obj 626 296 / 100;
#X floatatom 676 158 5 0 100 0 - - -;
#X obj 676 176 / 100;
#X floatatom 676 218 5 0 100 0 - - -;
#X obj 676 236 / 100;
#X floatatom 676 278 5 0 100 0 - - -;
#X obj 676 296 / 100;
#X msg 676 195 D1 \$1;
#X msg 676 255 D2 \$1;
#X msg 676 315 D3 \$1;
#X msg 626 315 K3 \$1;
#X msg 626 255 K2 \$1;
#X obj 595 272 t a;
#X obj 595 212 t a;
#X obj 595 332 t a;
#X text 27 237 Inlet 1: K1 \, D1 \, K2 \, D2 \, K3 \, D3: weight/damping
factors (defaults: K1=0.05 D1=0.1 K2=K3=D2=D3=0);
#X msg 590 364 position 1 1 10;
#X text 25 265 Inlet 1: message: position (X Y Z): clamp the node at
(X Y) to a certain height and release it;
#X text 7 51 Description: Renders a waving square (mass-spring-system)
;
#X msg 592 414 noise 1;
#X obj 8 465 cnv 15 450 130 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 13 465 actions:;
#X text 84 471 00..retrigger current action;
#X text 84 482 01..flat;
#X text 84 493 02..spike;
#X text 84 503 03..diagonal wall;
#X text 84 514 04..sidewall;
#X text 84 525 05..hole;
#X text 84 536 06..middleblock;
#X text 84 547 07..diagonalblock;
#X text 84 558 08..cornerblock;
#X text 84 568 09..hill;
#X text 83 579 10..hill4 (default);
#X text 27 318 Inlet 1: message: noise (val) : add a random force;
#X text 42 331 ( -val < force < +val) to all node;
#X obj 493 494 newWave 30 10;
#X msg 502 146 texture 0;
#X msg 591 389 force 15 5 -0.5;
#X obj 494 115 rotateXYZ 135 0 0;
#X text 24 290 Inlet 1: message: force (X Y val): aply a force of value
"val" onto the wave at position (X Y);
#X text 63 159 1 : X grid-resolution \, default : 3;
#X text 63 171 2 : Y grid resolution \, default : X value;
#X text 26 362 Inlet 1 : message texture [1|2] : change texturing mode
;
#X connect 3 0 4 0;
#X connect 4 0 3 0;
#X connect 18 0 77 0;
#X connect 19 0 74 1;
#X connect 20 0 74 2;
#X connect 21 0 77 1;
#X connect 22 0 74 0;
#X connect 23 0 74 0;
#X connect 24 0 74 0;
#X connect 29 0 74 3;
#X connect 30 0 31 0;
#X connect 31 0 32 0;
#X connect 32 0 52 0;
#X connect 35 0 74 0;
#X connect 35 1 74 0;
#X connect 36 0 37 0;
#X connect 37 0 50 0;
#X connect 38 0 39 0;
#X connect 39 0 49 0;
#X connect 40 0 41 0;
#X connect 41 0 46 0;
#X connect 42 0 43 0;
#X connect 43 0 47 0;
#X connect 44 0 45 0;
#X connect 45 0 48 0;
#X connect 46 0 52 0;
#X connect 47 0 51 0;
#X connect 48 0 53 0;
#X connect 49 0 53 0;
#X connect 50 0 51 0;
#X connect 51 0 53 0;
#X connect 52 0 51 0;
#X connect 53 0 74 0;
#X connect 55 0 74 0;
#X connect 58 0 74 0;
#X connect 75 0 74 0;
#X connect 76 0 74 0;
#X connect 77 0 35 0;

View file

@ -1,83 +0,0 @@
#N canvas 397 92 629 343 10;
#X obj 462 275 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 0 22 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 198 112 destroy;
#X msg 132 112 create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 467 314 pd gemwin;
#X msg 467 295 create;
#X text 463 274 Create window:;
#X text 485 29 Example:;
#X obj 7 65 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 216 cnv 15 450 120 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 9 221 Inlets:;
#X obj 8 176 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 17 175 Arguments:;
#X text 452 8 GEM object;
#X text 27 233 Inlet 1: gemlist;
#X text 9 304 Outlets:;
#X text 21 316 Outlet 1: gemlist;
#X text 63 187 (none);
#X text 27 247 Inlet 1: 0|1 : turn orthographic rendering ON(default)
or OFF;
#X text 33 14 Synopsis: [ortho];
#X text 54 30 Class: manipulation object;
#X text 7 69 Description: orthographic rendering;
#X text 27 274 Inlet 1: compat 0|1 : switch aspect ratio default: 1
= 1 \, 0 = window width/height;
#X text 19 92 [ortho] changes the current viewing-mode from (evtl.)
"perspective" (objects that are fare away appear smaller than objects
that are near) to "orthographic" (parallels appear parallel) for all
subsequent shapes.;
#X obj 461 66 cnv 15 160 200 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 466 157 cnv 15 150 80 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 490 68 gemhead;
#X obj 490 246 cylinder;
#X obj 490 89 t a b;
#X obj 520 108 i;
#X obj 490 200 ortho;
#X obj 470 183 tgl 15 1 empty empty empty 0 -6 0 8 -262144 -1 -1 1
1;
#X obj 565 87 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X obj 549 108 + 0;
#X obj 490 129 rotateXYZ 45 45 0;
#X msg 521 180 compat \$1;
#X obj 521 160 tgl 15 1 empty empty empty 0 -6 0 8 -262144 -1 -1 1
1;
#X connect 1 0 2 0;
#X connect 2 0 1 0;
#X connect 23 0 25 0;
#X connect 25 0 31 0;
#X connect 25 1 26 0;
#X connect 26 0 30 0;
#X connect 26 0 31 1;
#X connect 26 0 31 2;
#X connect 26 0 31 3;
#X connect 27 0 24 0;
#X connect 28 0 27 0;
#X connect 29 0 30 1;
#X connect 30 0 26 1;
#X connect 31 0 27 0;
#X connect 32 0 27 0;
#X connect 33 0 32 0;

View file

@ -1,55 +0,0 @@
#N canvas -64 430 759 378 10;
#X obj 525 177 part_color;
#X text 98 142 sets the color(s) of a particle-system. You can set
2 different colors \, particles will have either the one or the other.
;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 132 112 create \, 1;
#X msg 198 112 destroy;
#X obj 287 94 loadbang;
#X msg 294 121 reset \, lighting 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 6 0;
#X connect 3 1 5 0;
#X connect 3 1 7 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X connect 8 0 9 0;
#X connect 9 0 0 0;
#X restore 546 309 pd gemwin;
#X msg 546 290 create;
#X text 544 269 Create window:;
#X text 31 14 Synopsis: [part_color];
#X text 38 68 Inlet 2: R1 G1 B1;
#X text 51 97 Class: Particle System;
#X text 7 123 Description: Defines color of particles;
#X text 434 16 Example:;
#X obj 525 81 part_source;
#X obj 525 208 part_draw;
#X obj 525 36 gemhead;
#X msg 634 115 0 0 1;
#X msg 634 140 1 0 0;
#X obj 525 57 part_head;
#X obj 525 119 part_killold 5;
#X text 38 41 inlet 1: gemlist (with part_head);
#X obj 524 17 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X connect 0 0 11 0;
#X connect 2 0 3 0;
#X connect 3 0 2 0;
#X connect 10 0 16 0;
#X connect 12 0 15 0;
#X connect 13 0 0 1;
#X connect 14 0 0 2;
#X connect 15 0 10 0;
#X connect 16 0 0 0;
#X connect 18 0 12 0;

View file

@ -1,53 +0,0 @@
#N canvas -48 0 754 404 10;
#X text 540 156 This is the damping vector;
#X text 541 176 To slow particles down;
#X text 99 206 keep all of the values less than one;
#X text 51 97 Class: Particle System;
#X text 38 41 inlet 1: gemlist (with part_head);
#X text 31 14 Synopsis: [part_damp];
#X text 38 68 Inlet 2: V1 V2 V3;
#X text 7 123 Description: Change velocity of Particles;
#X text 99 144 part_damp dampens the velocity of the particles. A damping
vector less than 1 \, 1 \, 1 will slow the particles done. A damping
vector greater than 1 \, 1 \, 1 will speed up the particles.;
#X obj 521 30 gemhead;
#X obj 521 51 part_head;
#X obj 521 113 part_killold 5;
#X obj 521 267 part_draw;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 132 112 create \, 1;
#X msg 198 112 destroy;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 6 0;
#X connect 3 1 5 0;
#X connect 3 1 7 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 521 356 pd gemwin;
#X msg 521 337 create;
#X text 519 316 Create window:;
#X floatatom 663 192 5 0 0 0 - - -;
#X msg 663 211 \$1 1 1;
#X obj 521 10 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
;
#X obj 521 80 part_source 5;
#X obj 521 237 part_damp 0.1 0.1 0.1;
#X connect 9 0 10 0;
#X connect 10 0 19 0;
#X connect 11 0 20 0;
#X connect 13 0 14 0;
#X connect 14 0 13 0;
#X connect 16 0 17 0;
#X connect 17 0 20 1;
#X connect 18 0 9 0;
#X connect 19 0 11 0;
#X connect 20 0 12 0;

View file

@ -1,54 +0,0 @@
#N canvas 539 315 813 403 10;
#X msg 631 212 draw point;
#X text 536 159 This is the drawing mode: line/point;
#X text 98 109 [part_draw] finally draws a particle system that was
set up with [part_head] and other [part_]-objects.;
#X text 51 65 Class: Particle System;
#X text 10 90 Description: Draw a particle system;
#X text 26 175 See also:;
#X obj 99 176 part_render;
#X obj 521 30 gemhead;
#X obj 521 51 part_head;
#X obj 521 105 part_killold 5;
#X obj 521 78 part_source;
#X obj 521 267 part_draw;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 132 112 create \, 1;
#X msg 198 112 destroy;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 6 0;
#X connect 3 1 5 0;
#X connect 3 1 7 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 521 356 pd gemwin;
#X msg 521 337 create;
#X text 519 316 Create window:;
#X obj 521 10 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X msg 629 184 draw line;
#X msg 634 241 draw \$1;
#X floatatom 712 227 5 0 0 0 - - -;
#X text 38 41 inlet 1: gemlist (with part_head) \, draw [line|point|<nr>]
;
#X text 31 14 Synopsis: [part_draw];
#X connect 0 0 11 0;
#X connect 7 0 8 0;
#X connect 8 0 10 0;
#X connect 9 0 11 0;
#X connect 10 0 9 0;
#X connect 12 0 13 0;
#X connect 13 0 12 0;
#X connect 15 0 7 0;
#X connect 16 0 11 0;
#X connect 17 0 11 0;
#X connect 18 0 17 0;

View file

@ -1,49 +0,0 @@
#N canvas 22 325 802 373 10;
#X text 583 138 particle acceleration;
#X text 97 112 [part_follow] lets the particles follow each other.
;
#X text 51 65 Class: Particle System;
#X text 38 41 inlet 1: gemlist (with part_head) \, draw [line|point|<nr>]
;
#X text 34 15 Synopsis: [part_follow];
#X text 10 90 Description: Particle follow each other;
#X obj 521 30 gemhead;
#X obj 521 10 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#N canvas 0 0 450 300 gemwin 0;
#X obj 132 136 gemwin;
#X obj 67 89 outlet;
#X obj 67 10 inlet;
#X obj 67 41 route create;
#X msg 67 70 set destroy;
#X msg 142 68 set create;
#X msg 132 112 create \, 1;
#X msg 198 112 destroy;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 6 0;
#X connect 3 1 5 0;
#X connect 3 1 7 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X restore 523 326 pd gemwin;
#X msg 523 307 create;
#X text 521 286 Create window:;
#X floatatom 635 166 5 0 0 0 - - -;
#X text 57 214 TODO: how does this work .. example !!!;
#X obj 521 103 part_killold 5;
#X obj 521 187 part_follow 0.001;
#X obj 521 75 part_source 5;
#X obj 521 51 part_head;
#X obj 521 243 part_draw;
#X connect 6 0 16 0;
#X connect 7 0 6 0;
#X connect 8 0 9 0;
#X connect 9 0 8 0;
#X connect 11 0 14 1;
#X connect 13 0 14 0;
#X connect 14 0 17 0;
#X connect 15 0 13 0;
#X connect 16 0 15 0;

View file

@ -1,12 +0,0 @@
#N canvas 23 236 644 359 10;
#X msg 139 109 gemList;
#X text 176 62 GEM object;
#X msg 242 151 x y z;
#X obj 139 207 part_gravity;
#X text 186 26 [part_gravity];
#X text 327 152 This is gravitation vector;
#X text 43 257 [part_gravity] sets the gravity-vector of the particle-system.
No matter in which direction particles are emitted (pE. via [part_velsphere])
in the end \, they have to follow the gravity.;
#X connect 0 0 3 0;
#X connect 2 0 3 1;

Some files were not shown because too many files have changed in this diff Show more