- Borrado de ficheros innecesarios
|  | @ -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. | ||||
| 
 | ||||
|  | @ -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 | ||||
|  | @ -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> | ||||
| 
 | ||||
|  | @ -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 | ||||
|  | @ -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 | ||||
|  | @ -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> | ||||
|  | @ -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> | ||||
|  | @ -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&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 <object> exist on <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ünter Geiger</a> | ||||
| <p>GEM is now maintained by <a href="mailto:zmoelnig@iem.at">IOhannes m zmö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 (>10.2). | ||||
| SGI-Irix (> 6.2) used to be supported but i don't have any prove that it still works). | ||||
| <a href="mailto:geiger@xdv.org">Gü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 <gem>/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ü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 <<em>render.host</em>>: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<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 & 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 <object> exist on <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> <RANT> When will companies wake up and actually | ||||
| provide drivers and support for their products under WinNT? </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> | ||||
|  | @ -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> | ||||
|     An important fact is that GEM is NOT an application. | ||||
| It is a library that the application Pd loads in at run-time.  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.  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 <pd/gem>/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> | ||||
|    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> | ||||
|     It is best to start Pd from a DOS command line.  | ||||
| If you go to the Start menu, you should find an application called "Command | ||||
| Prompt" under the Program menu.  You need to change to the drive where | ||||
| you installed Pd.  For instance, if it is on your D: drive, just type | ||||
| d: at the prompt. | ||||
| <p>   To use GEM type something like: | ||||
| <p>\pd\bin\pd -lib /pd/gem/Gem | ||||
| <p>depending on where you installed Pd. | ||||
| <p>    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>    Most people use the command shell to start Pd.  | ||||
| It is difficult to configure Pd to run from double-clicking on the icon. | ||||
| <p>    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> | ||||
|    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> | ||||
|    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> | ||||
|     Notice that the -lib flag always requires Unix styles | ||||
| slashes, even if you are on Windows.  This means that you need to | ||||
| do <i>-lib /gem/Gem</i>, not <i>-lib \gem\Gem</i> | ||||
| <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><a href="index.html">[return]</a> | ||||
| <br>  | ||||
| </body> | ||||
| </html> | ||||
|  | @ -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.  An alpha equal | ||||
| to 1.0 means completely opaque.  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.  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>  | ||||
| </body> | ||||
| </html> | ||||
|  | @ -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> | ||||
|  | @ -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>  | ||||
| </body> | ||||
| </html> | ||||
|  | @ -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.  | ||||
| It is a library that Pd loads at run-time.  Make sure that you see | ||||
| the section on <a href="GemWPd.html">using GEM with Pd</a>.  This | ||||
| manual assumes that you have Pd working correctly and can load up patches | ||||
| already.  If you do not have that working yet, look at the Pd manual | ||||
| and the GEM FAQ.  Also, it is assumed that you have a basic understanding | ||||
| of how to use Pd and the idea behind the data flow model.  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.  In general, you should have the most powerful computer | ||||
| available and the best graphics accelerator on the market.  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.  | ||||
| If you are on an SGI, then everything from an O2 up seems to be okay.  | ||||
| The biggest requirement is that you have some kind of OpenGL graphics accelerator.  | ||||
| This means that a Matrox Millennium II will not run very quickly. | ||||
| <p>The other factor is what you are trying to do.  Pushing real-time | ||||
| video around requires a fast bus, which really only exists on SGIs.  | ||||
| Doing thousands of texture mapped polygons is great on a PC...if it is | ||||
| a constant texture.  There are many issues which mean that there is | ||||
| no one answer to "Is this system good enough?".  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ölnig</a>. | ||||
| So any bug-reports and donations should go to him instead of Mark... | ||||
| <p><a href="index.html">[return]</a> | ||||
| <br>  | ||||
| </body> | ||||
| </html> | ||||
|  | @ -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> | ||||
|  | @ -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.  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>  | ||||
| <br>  | ||||
| </body> | ||||
| </html> | ||||
|  | @ -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>  | ||||
| </body> | ||||
| </html> | ||||
|  | @ -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> | ||||
|  | @ -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> | ||||
|  | @ -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.  For instance, you often pass around 3 floats at | ||||
| a time in GEM, either for position or colors.  To help with this, | ||||
| there are a collection of vector objects.  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.  | ||||
| The bottom <i>counter</i> will count up from 2 to 5. | ||||
| <p>The <i>counter</i> also accepts the messages reset and clear.  | ||||
| Reset immediately sets the counter to its low value and outputs the value.  | ||||
| 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.  The left inlet accepts a single float.  It then outputs | ||||
| the current average.  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.  | ||||
| Clear will immediately set all of the values that the object has been storing | ||||
| for averaging to 0.  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.  If the number | ||||
| is the same as the last number sent to the <i>change</i> object, then it | ||||
| does nothing.  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.  If the number sent to its | ||||
| left inlet is equal to 0., then <i>invert</i> outputs a 1.  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.  This a real problem in GEM, where you often want a value | ||||
| between 0 and 1.  <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.  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.  | ||||
| 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.  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.  In the example, <i>tripleLine</i> | ||||
| will interpolate from the current values to 1., .2, .4 over 1000 milliseconds.  | ||||
| The default output resolution is 50 milliseconds, which is the same default | ||||
| rendering time.  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.  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.  The | ||||
| left inlet accepts a list of numbers of any length.  The right inlet | ||||
| accepts a single value, which is the operand for the computation.  | ||||
| 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.  The output is a single list of numbers that is the vector | ||||
| with the single number appended to the end.  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.  | ||||
| HSV stands for hue, saturation, and value.  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> | ||||
|  | @ -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 :-)  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.  If you look in Base/CPPExtern.h, you will see a | ||||
| collection of macros which you can use to help you create new objects.  | ||||
| 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.  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.  | ||||
| You shouldn't have to do anything to call the functions.  I have not | ||||
| had any problems making other dll's which are loaded into Pd at runtime.  | ||||
| You need to make certain that you are exporting the correct functions.  | ||||
| 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>  | ||||
| </body> | ||||
| </html> | ||||
| Before Width: | Height: | Size: 12 KiB | 
| Before Width: | Height: | Size: 60 KiB | 
| Before Width: | Height: | Size: 8.3 KiB | 
| Before Width: | Height: | Size: 7.8 KiB | 
| Before Width: | Height: | Size: 8.8 KiB | 
|  | @ -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ö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ölnig</a> instead. | ||||
| <p><img SRC="tribar.gif" height=13 width=561> | ||||
| <p><a href="Intro.html">Introduction</a> | ||||
| <br>    An introduction to GEM and what you can do with | ||||
| it.  The general system requirements are also described here. | ||||
| <p><a href="GemWPd.html">Using GEM with Pd</a> | ||||
| <br>    How to use GEM with Pd.  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>    The basic objects that GEM has.  This section | ||||
| shows you how to create a simple patch. | ||||
| <p><a href="Images.html">Images</a> | ||||
| <br>    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>    Loading in images is only one part.  Applying | ||||
| those images to 3-D shapes is called texture mapping. | ||||
| <p><a href="Pixes.html">Pixes (image processing)</a> | ||||
| <br>    Once you have texture mapped the images, you will | ||||
| probably want to process and change them in response to user interaction.  | ||||
| The <i>pix</i> objects provide this functionality. | ||||
| <p><a href="Lighting.html">Lighting</a> | ||||
| <br>    Shading and lighting are easy with the lighting | ||||
| objects. | ||||
| <p>Particles | ||||
| <br>    Particle systems can create effects such as smoke, | ||||
| fire, and water. | ||||
| <p><a href="Utility.html">Utility objects</a> | ||||
| <br>    To help you deal with the data which GEM uses, there | ||||
| are a number of utility objects. | ||||
| <p>Input devices | ||||
| <br>    GEM provides interaction with the mouse and other | ||||
| input devices. | ||||
| <p>Advanced | ||||
| <br>    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>    How to write new objects for GEM. | ||||
| <p><a href="GemFaq.html">FAQ</a> | ||||
| <br>    Frequently asked questions about GEM. | ||||
| <p><a href="ListObjects.html">List of Objects</a> | ||||
| <br>    All of the objects in GEM with a very brief description.. | ||||
| <p><a href="Gloss.html">Glossary/Index</a> | ||||
| <br>    A collection of definitions and links to explanations. | ||||
| <p><img SRC="tribar.gif" height=13 width=561> | ||||
| <br>  | ||||
| </body> | ||||
| </html> | ||||
| Before Width: | Height: | Size: 10 KiB | 
| Before Width: | Height: | Size: 68 KiB | 
| Before Width: | Height: | Size: 17 KiB | 
| Before Width: | Height: | Size: 18 KiB | 
| Before Width: | Height: | Size: 13 KiB | 
| Before Width: | Height: | Size: 67 KiB | 
| Before Width: | Height: | Size: 12 KiB | 
| Before Width: | Height: | Size: 3.5 KiB | 
| Before Width: | Height: | Size: 4.2 KiB | 
| Before Width: | Height: | Size: 4.1 KiB | 
| Before Width: | Height: | Size: 11 KiB | 
| Before Width: | Height: | Size: 8.6 KiB | 
| Before Width: | Height: | Size: 882 B | 
| Before Width: | Height: | Size: 9.6 KiB | 
| Before Width: | Height: | Size: 8.2 KiB | 
| Before Width: | Height: | Size: 13 KiB | 
|  | @ -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:; | ||||
|  | @ -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; | ||||
|  | @ -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 | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||
|  | @ -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; | ||||