aboutsummaryrefslogtreecommitdiff
path: root/Gem
diff options
context:
space:
mode:
Diffstat (limited to 'Gem')
-rw-r--r--Gem/COPYING.txt96
-rwxr-xr-xGem/Gem.pd_darwinbin5075216 -> 5075216 bytes
-rw-r--r--Gem/GnuGPL.LICENSE.txt580
-rw-r--r--Gem/LICENSE.txt54
-rw-r--r--Gem/cMatrix.html540
-rw-r--r--Gem/examples/data/Toon.frag122
-rw-r--r--Gem/examples/data/Toon.vert108
-rw-r--r--Gem/examples/data/valcolor.tab12
-rw-r--r--Gem/examples/data/valmotion.tab16
-rw-r--r--Gem/examples/data/venus.mtl18
-rw-r--r--Gem/examples/data/venus.obj4294
-rwxr-xr-xGem/gem_filmAVF.sobin55996 -> 55996 bytes
-rwxr-xr-xGem/gem_imageIO.sobin37584 -> 37584 bytes
-rwxr-xr-xGem/gem_imageJPEG.sobin49088 -> 49088 bytes
-rwxr-xr-xGem/gem_imageSGI.sobin56268 -> 56268 bytes
-rwxr-xr-xGem/gem_imageSTB.sobin201256 -> 201256 bytes
-rwxr-xr-xGem/gem_imageTIFF.sobin64236 -> 64236 bytes
-rwxr-xr-xGem/gem_modelOBJ.sobin97560 -> 97560 bytes
-rwxr-xr-xGem/gem_videoAVF.sobin61172 -> 61172 bytes
-rwxr-xr-xGem/gemcocoawindow.pd_darwinbin39192 -> 39192 bytes
-rwxr-xr-xGem/gemglutwindow.pd_darwinbin41924 -> 41924 bytes
-rwxr-xr-xGem/gemmacoswindow.pd_darwinbin39044 -> 39044 bytes
-rw-r--r--Gem/manual/Advanced.html54
-rw-r--r--Gem/manual/BasicObj.html230
-rw-r--r--Gem/manual/GemFaq.html1334
-rw-r--r--Gem/manual/GemWPd.html280
-rw-r--r--Gem/manual/Gloss.html82
-rw-r--r--Gem/manual/Images.html224
-rw-r--r--Gem/manual/Input.html38
-rw-r--r--Gem/manual/Intro.html124
-rw-r--r--Gem/manual/Lighting.html214
-rw-r--r--Gem/manual/ListObjects.html462
-rw-r--r--Gem/manual/Particles.html38
-rw-r--r--Gem/manual/Pixes.html210
-rw-r--r--Gem/manual/Texture.html252
-rw-r--r--Gem/manual/Utility.html298
-rw-r--r--Gem/manual/WriteCode.html82
-rw-r--r--Gem/manual/index.html134
-rwxr-xr-xGem/pix_drum.pd_darwinbin25416 -> 25416 bytes
-rwxr-xr-xGem/pix_fiducialtrack.pd_darwinbin69120 -> 69120 bytes
-rwxr-xr-xGem/pix_hit.pd_darwinbin23432 -> 23432 bytes
-rwxr-xr-xGem/pix_mano.pd_darwinbin39660 -> 39660 bytes
-rw-r--r--Gem/rgb2hsv-help.pd42
43 files changed, 4969 insertions, 4969 deletions
diff --git a/Gem/COPYING.txt b/Gem/COPYING.txt
index e54306d..07811fe 100644
--- a/Gem/COPYING.txt
+++ b/Gem/COPYING.txt
@@ -1,48 +1,48 @@
-GEM - Graphics Environment for Multimedia
-Copyright © 1997-2000 Mark Danks
-Copyright © Günter Geiger
-Copyright © 2001-2011 IOhannes m zmölnig,
-Copyright © 2003-2007 James Tittle II,
-Copyright © 2003-2008 Chris Clepper
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along
-with this program. If not, see <http://www.gnu.org/licenses/>.
-
-In the official GEM distribution, the GNU General Public License is
-in the file GnuGPL.LICENSE
-
----------------------------------------------------------
-
- ACKNOWLEDGMENTS
-
----------------------------------------------------------
-Not all of the source code provided here has entirely been written by me.
-I would like to point at the great openGL-tutorials at http://nehe.gamedev.net
-Since these are tutorials, there is no copyright notice here.
-Some of the pix_fx code is borrowed from effecTV by Kentarou Fukuchi et al.
-at http://effectv.sourceforge.net released under the Gnu GPL, some other pix_fx
-code has been ported from Pete Warden's fine collection of FreeFrame plugins at
-http://petewarden.com released under the Gnu GPL.
-
----------------------------------------------------------
-
- OTHER COPYRIGHT NOTICES
-
----------------------------------------------------------
-
-particle:
- Author: David McAllister
- davemc[AT]cs.unc.edu
- http://www.cs.unc.edu/~davemc/Particle/
- Copyright (c) 1998 David K. McAllister
-
+GEM - Graphics Environment for Multimedia
+Copyright © 1997-2000 Mark Danks
+Copyright © Günter Geiger
+Copyright © 2001-2019 IOhannes m zmölnig,
+Copyright © 2003-2007 James Tittle II,
+Copyright © 2003-2008 Chris Clepper
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program. If not, see <http://www.gnu.org/licenses/>.
+
+In the official GEM distribution, the GNU General Public License is
+in the file GnuGPL.LICENSE
+
+---------------------------------------------------------
+
+ ACKNOWLEDGMENTS
+
+---------------------------------------------------------
+Not all of the source code provided here has entirely been written by me.
+I would like to point at the great openGL-tutorials at http://nehe.gamedev.net
+Since these are tutorials, there is no copyright notice here.
+Some of the pix_fx code is borrowed from effecTV by Kentarou Fukuchi et al.
+at http://effectv.sourceforge.net released under the Gnu GPL, some other pix_fx
+code has been ported from Pete Warden's fine collection of FreeFrame plugins at
+http://petewarden.com released under the Gnu GPL.
+
+---------------------------------------------------------
+
+ OTHER COPYRIGHT NOTICES
+
+---------------------------------------------------------
+
+particle:
+ Author: David McAllister
+ davemc[AT]cs.unc.edu
+ http://www.cs.unc.edu/~davemc/Particle/
+ Copyright (c) 1998 David K. McAllister
+ License: GNU Lesser General Public License, version 2.1 or later
diff --git a/Gem/Gem.pd_darwin b/Gem/Gem.pd_darwin
index 724aa11..b0ef485 100755
--- a/Gem/Gem.pd_darwin
+++ b/Gem/Gem.pd_darwin
Binary files differ
diff --git a/Gem/GnuGPL.LICENSE.txt b/Gem/GnuGPL.LICENSE.txt
index fa0bef4..838e31a 100644
--- a/Gem/GnuGPL.LICENSE.txt
+++ b/Gem/GnuGPL.LICENSE.txt
@@ -1,290 +1,290 @@
-GNU GENERAL PUBLIC LICENSE
-
-Version 2, June 1991
-
-Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-
-Preamble
-
-The licenses for most software are designed to take away your freedom
-to share and change it. By contrast, the GNU General Public License is
-intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This General
-Public License applies to most of the Free Software Foundation's
-software and to any other program whose authors commit to using it.
-(Some other Free Software Foundation software is covered by the
-GNU Library General Public License instead.) You can apply it to your
-programs, too.
-
-When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new free
-programs; and that you know you can do these things.
-
-To protect your rights, we need to make restrictions that forbid anyone
-to deny you these rights or to ask you to surrender the rights. These
-restrictions translate to certain responsibilities for you if you distribute
-copies of the software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether gratis
-or for a fee, you must give the recipients all the rights that you have. You
-must make sure that they, too, receive or can get the source code. And
-you must show them these terms so they know their rights.
-
-We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on,
-we want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-Finally, any free program is threatened constantly by software patents.
-We wish to avoid the danger that redistributors of a free program will
-individually obtain patent licenses, in effect making the program
-proprietary. To prevent this, we have made it clear that any patent must
-be licensed for everyone's free use or not licensed at all.
-
-The precise terms and conditions for copying, distribution and
-modification follow.
-
-TERMS AND CONDITIONS FOR
-COPYING, DISTRIBUTION AND
-MODIFICATION
-
-0. This License applies to any program or other work which contains a
-notice placed by the copyright holder saying it may be distributed under
-the terms of this General Public License. The "Program", below, refers
-to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it, either
-verbatim or with modifications and/or translated into another language.
-(Hereinafter, translation is included without limitation in the term
-"modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of running
-the Program is not restricted, and the output from the Program is
-covered only if its contents constitute a work based on the Program
-(independent of having been made by running the Program). Whether
-that is true depends on what the Program does.
-
-1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the notices
-that refer to this License and to the absence of any warranty; and give
-any other recipients of the Program a copy of this License along with the
-Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide a
- warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but does
- not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program, and
-can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based on
-the Program, the distribution of the whole must be on the terms of this
-License, whose permissions for other licensees extend to the entire
-whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest your
-rights to work written entirely by you; rather, the intent is to exercise the
-right to control the distribution of derivative or collective works based
-on the Program.
-
-In addition, mere aggregation of another work not based on the
-Program with the Program (or with a work based on the Program) on a
-volume of a storage or distribution medium does not bring the other
-work under the scope of this License.
-
-3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding
- machine-readable source code, which must be distributed under
- the terms of Sections 1 and 2 above on a medium customarily
- used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your cost
- of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a
- medium customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with
- such an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to control
-compilation and installation of the executable. However, as a special
-exception, the source code distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies the
-executable.
-
-If distribution of executable or object code is made by offering access to
-copy from a designated place, then offering equivalent access to copy
-the source code from the same place counts as distribution of the source
-code, even though third parties are not compelled to copy the source
-along with the object code.
-
-4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt otherwise
-to copy, modify, sublicense or distribute the Program is void, and will
-automatically terminate your rights under this License. However, parties
-who have received copies, or rights, from you under this License will not
-have their licenses terminated so long as such parties remain in full
-compliance.
-
-5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and all
-its terms and conditions for copying, distributing or modifying the
-Program or works based on it.
-
-6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the original
-licensor to copy, distribute or modify the Program subject to these terms
-and conditions. You may not impose any further restrictions on the
-recipients' exercise of the rights granted herein. You are not responsible
-for enforcing compliance by third parties to this License.
-
-7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot distribute
-so as to satisfy simultaneously your obligations under this License and
-any other pertinent obligations, then as a consequence you may not
-distribute the Program at all. For example, if a patent license would not
-permit royalty-free redistribution of the Program by all those who
-receive copies directly or indirectly through you, then the only way you
-could satisfy both it and this License would be to refrain entirely from
-distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any patents
-or other property right claims or to contest validity of any such claims;
-this section has the sole purpose of protecting the integrity of the free
-software distribution system, which is implemented by public license
-practices. Many people have made generous contributions to the wide
-range of software distributed through that system in reliance on
-consistent application of that system; it is up to the author/donor to
-decide if he or she is willing to distribute software through any other
-system and a licensee cannot impose that choice.
-
-This section is intended to make thoroughly clear what is believed to be
-a consequence of the rest of this License.
-
-8. If the distribution and/or use of the Program is restricted in certain
-countries either by patents or by copyrighted interfaces, the original
-copyright holder who places the Program under this License may add an
-explicit geographical distribution limitation excluding those countries, so
-that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-9. The Free Software Foundation may publish revised and/or new
-versions of the General Public License from time to time. Such new
-versions will be similar in spirit to the present version, but may differ in
-detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number
-of this License, you may choose any version ever published by the Free
-Software Foundation.
-
-10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we
-sometimes make exceptions for this. Our decision will be guided by the
-two goals of preserving the free status of all derivatives of our free
-software and of promoting the sharing and reuse of software generally.
-
-NO WARRANTY
-
-11. BECAUSE THE PROGRAM IS LICENSED FREE OF
-CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM,
-TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT
-WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE
-PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND,
-EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
-PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD
-THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE
-COST OF ALL NECESSARY SERVICING, REPAIR OR
-CORRECTION.
-
-12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW
-OR AGREED TO IN WRITING WILL ANY COPYRIGHT
-HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED
-ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING
-ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
-INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT
-LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
-INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE
-WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
-OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY
-OF SUCH DAMAGES.
-
-END OF TERMS AND CONDITIONS
+GNU GENERAL PUBLIC LICENSE
+
+Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom
+to share and change it. By contrast, the GNU General Public License is
+intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This General
+Public License applies to most of the Free Software Foundation's
+software and to any other program whose authors commit to using it.
+(Some other Free Software Foundation software is covered by the
+GNU Library General Public License instead.) You can apply it to your
+programs, too.
+
+When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new free
+programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone
+to deny you these rights or to ask you to surrender the rights. These
+restrictions translate to certain responsibilities for you if you distribute
+copies of the software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis
+or for a fee, you must give the recipients all the rights that you have. You
+must make sure that they, too, receive or can get the source code. And
+you must show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on,
+we want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+Finally, any free program is threatened constantly by software patents.
+We wish to avoid the danger that redistributors of a free program will
+individually obtain patent licenses, in effect making the program
+proprietary. To prevent this, we have made it clear that any patent must
+be licensed for everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and
+modification follow.
+
+TERMS AND CONDITIONS FOR
+COPYING, DISTRIBUTION AND
+MODIFICATION
+
+0. This License applies to any program or other work which contains a
+notice placed by the copyright holder saying it may be distributed under
+the terms of this General Public License. The "Program", below, refers
+to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it, either
+verbatim or with modifications and/or translated into another language.
+(Hereinafter, translation is included without limitation in the term
+"modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of running
+the Program is not restricted, and the output from the Program is
+covered only if its contents constitute a work based on the Program
+(independent of having been made by running the Program). Whether
+that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the notices
+that refer to this License and to the absence of any warranty; and give
+any other recipients of the Program a copy of this License along with the
+Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide a
+ warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but does
+ not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program, and
+can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based on
+the Program, the distribution of the whole must be on the terms of this
+License, whose permissions for other licensees extend to the entire
+whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise the
+right to control the distribution of derivative or collective works based
+on the Program.
+
+In addition, mere aggregation of another work not based on the
+Program with the Program (or with a work based on the Program) on a
+volume of a storage or distribution medium does not bring the other
+work under the scope of this License.
+
+3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding
+ machine-readable source code, which must be distributed under
+ the terms of Sections 1 and 2 above on a medium customarily
+ used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your cost
+ of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a
+ medium customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with
+ such an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to control
+compilation and installation of the executable. However, as a special
+exception, the source code distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies the
+executable.
+
+If distribution of executable or object code is made by offering access to
+copy from a designated place, then offering equivalent access to copy
+the source code from the same place counts as distribution of the source
+code, even though third parties are not compelled to copy the source
+along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt otherwise
+to copy, modify, sublicense or distribute the Program is void, and will
+automatically terminate your rights under this License. However, parties
+who have received copies, or rights, from you under this License will not
+have their licenses terminated so long as such parties remain in full
+compliance.
+
+5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and all
+its terms and conditions for copying, distributing or modifying the
+Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these terms
+and conditions. You may not impose any further restrictions on the
+recipients' exercise of the rights granted herein. You are not responsible
+for enforcing compliance by third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot distribute
+so as to satisfy simultaneously your obligations under this License and
+any other pertinent obligations, then as a consequence you may not
+distribute the Program at all. For example, if a patent license would not
+permit royalty-free redistribution of the Program by all those who
+receive copies directly or indirectly through you, then the only way you
+could satisfy both it and this License would be to refrain entirely from
+distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents
+or other property right claims or to contest validity of any such claims;
+this section has the sole purpose of protecting the integrity of the free
+software distribution system, which is implemented by public license
+practices. Many people have made generous contributions to the wide
+range of software distributed through that system in reliance on
+consistent application of that system; it is up to the author/donor to
+decide if he or she is willing to distribute software through any other
+system and a licensee cannot impose that choice.
+
+This section is intended to make thoroughly clear what is believed to be
+a consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain
+countries either by patents or by copyrighted interfaces, the original
+copyright holder who places the Program under this License may add an
+explicit geographical distribution limitation excluding those countries, so
+that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+9. The Free Software Foundation may publish revised and/or new
+versions of the General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may differ in
+detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number
+of this License, you may choose any version ever published by the Free
+Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we
+sometimes make exceptions for this. Our decision will be guided by the
+two goals of preserving the free status of all derivatives of our free
+software and of promoting the sharing and reuse of software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF
+CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM,
+TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT
+WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE
+PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND,
+EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD
+THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE
+COST OF ALL NECESSARY SERVICING, REPAIR OR
+CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW
+OR AGREED TO IN WRITING WILL ANY COPYRIGHT
+HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED
+ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING
+ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
+INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT
+LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
+INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE
+WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
+OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
diff --git a/Gem/LICENSE.txt b/Gem/LICENSE.txt
index ad1cd50..7a7225f 100644
--- a/Gem/LICENSE.txt
+++ b/Gem/LICENSE.txt
@@ -1,27 +1,27 @@
-pix_hit : hit-test over user defined hit_areads...
-Copyright (c) 2005 Davide Morelli
-Copyright (c) 2005-2012 IOhannes m zmölnig
-
-based on:
- GEM - Graphics Environment for Multimedia
- Copyright (C) 1997-2000 Mark Danks, Günter Geiger,
- Copyright (c) 2001-2012 IOhannes m zmölnig
- Copyright (c) 2003-2007 James Tittle II,
- Copyright (c) 2003-2008 Chris Clepper et al.
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-In the official GEM distribution, the GNU General Public License is
-in the file GnuGPL.LICENSE
-
+pix_hit : hit-test over user defined hit_areads...
+Copyright (c) 2005 Davide Morelli
+Copyright (c) 2005-2012 IOhannes m zmölnig
+
+based on:
+ GEM - Graphics Environment for Multimedia
+ Copyright (C) 1997-2000 Mark Danks, Günter Geiger,
+ Copyright (c) 2001-2012 IOhannes m zmölnig
+ Copyright (c) 2003-2007 James Tittle II,
+ Copyright (c) 2003-2008 Chris Clepper et al.
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+In the official GEM distribution, the GNU General Public License is
+in the file GnuGPL.LICENSE
+
diff --git a/Gem/cMatrix.html b/Gem/cMatrix.html
index fe4cd04..0181fc1 100644
--- a/Gem/cMatrix.html
+++ b/Gem/cMatrix.html
@@ -1,270 +1,270 @@
-<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>
-
+<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>
+
diff --git a/Gem/examples/data/Toon.frag b/Gem/examples/data/Toon.frag
index 268bdab..d806cbe 100644
--- a/Gem/examples/data/Toon.frag
+++ b/Gem/examples/data/Toon.frag
@@ -1,61 +1,61 @@
-//
-// Fragment shader for cartoon-style shading
-//
-// Author: Philip Rideout
-//
-// Copyright (c) 2005 3Dlabs Inc. Ltd.
-//
-/************************************************************************
-* *
-* Copyright (C) 2002-2006 3Dlabs Inc. Ltd. *
-* *
-* All rights reserved. *
-* *
-* Redistribution and use in source and binary forms, with or without *
-* modification, are permitted provided that the following conditions *
-* are met: *
-* *
-* Redistributions of source code must retain the above copyright *
-* notice, this list of conditions and the following disclaimer. *
-* *
-* Redistributions in binary form must reproduce the above *
-* copyright notice, this list of conditions and the following *
-* disclaimer in the documentation and/or other materials provided *
-* with the distribution. *
-* *
-* Neither the name of 3Dlabs Inc. Ltd. nor the names of its *
-* contributors may be used to endorse or promote products derived *
-* from this software without specific prior written permission. *
-* *
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
-* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT *
-* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS *
-* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE *
-* COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, *
-* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, *
-* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; *
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
-* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
-* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN *
-* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *
-* POSSIBILITY OF SUCH DAMAGE. *
-* *
-************************************************************************/
-
-const vec3 DiffuseColor= vec3( 0.1,0.1,0.1);
-const vec3 PhongColor = vec3( 0.5,0.5,0.5);
-const float Edge= 0.2;
-uniform float Phong;
-varying vec3 Normal;
-
-void main (void)
-{
- vec3 color = DiffuseColor;
- float f = dot(vec3(0,0,1),Normal);
- if (abs(f) < Edge)
- color = vec3(0);
- if (f > Phong)
- color = PhongColor;
-
- gl_FragColor = vec4(color, 1);
-}
+//
+// Fragment shader for cartoon-style shading
+//
+// Author: Philip Rideout
+//
+// Copyright (c) 2005 3Dlabs Inc. Ltd.
+//
+/************************************************************************
+* *
+* Copyright (C) 2002-2006 3Dlabs Inc. Ltd. *
+* *
+* All rights reserved. *
+* *
+* Redistribution and use in source and binary forms, with or without *
+* modification, are permitted provided that the following conditions *
+* are met: *
+* *
+* Redistributions of source code must retain the above copyright *
+* notice, this list of conditions and the following disclaimer. *
+* *
+* Redistributions in binary form must reproduce the above *
+* copyright notice, this list of conditions and the following *
+* disclaimer in the documentation and/or other materials provided *
+* with the distribution. *
+* *
+* Neither the name of 3Dlabs Inc. Ltd. nor the names of its *
+* contributors may be used to endorse or promote products derived *
+* from this software without specific prior written permission. *
+* *
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT *
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS *
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE *
+* COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, *
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, *
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; *
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN *
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *
+* POSSIBILITY OF SUCH DAMAGE. *
+* *
+************************************************************************/
+
+const vec3 DiffuseColor= vec3( 0.1,0.1,0.1);
+const vec3 PhongColor = vec3( 0.5,0.5,0.5);
+const float Edge= 0.2;
+uniform float Phong;
+varying vec3 Normal;
+
+void main (void)
+{
+ vec3 color = DiffuseColor;
+ float f = dot(vec3(0,0,1),Normal);
+ if (abs(f) < Edge)
+ color = vec3(0);
+ if (f > Phong)
+ color = PhongColor;
+
+ gl_FragColor = vec4(color, 1);
+}
diff --git a/Gem/examples/data/Toon.vert b/Gem/examples/data/Toon.vert
index 2f7d51c..d2f6dbe 100644
--- a/Gem/examples/data/Toon.vert
+++ b/Gem/examples/data/Toon.vert
@@ -1,54 +1,54 @@
-//
-// Vertex shader for cartoon-style shading
-//
-// Author: Philip Rideout
-//
-// Copyright (c) 2005 3Dlabs Inc. Ltd.
-//
-//
-//
-/************************************************************************
-* *
-* Copyright (C) 2002-2006 3Dlabs Inc. Ltd. *
-* *
-* All rights reserved. *
-* *
-* Redistribution and use in source and binary forms, with or without *
-* modification, are permitted provided that the following conditions *
-* are met: *
-* *
-* Redistributions of source code must retain the above copyright *
-* notice, this list of conditions and the following disclaimer. *
-* *
-* Redistributions in binary form must reproduce the above *
-* copyright notice, this list of conditions and the following *
-* disclaimer in the documentation and/or other materials provided *
-* with the distribution. *
-* *
-* Neither the name of 3Dlabs Inc. Ltd. nor the names of its *
-* contributors may be used to endorse or promote products derived *
-* from this software without specific prior written permission. *
-* *
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
-* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT *
-* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS *
-* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE *
-* COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, *
-* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, *
-* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; *
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
-* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
-* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN *
-* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *
-* POSSIBILITY OF SUCH DAMAGE. *
-* *
-************************************************************************/
-
-
-varying vec3 Normal;
-
-void main(void)
-{
- Normal = normalize(gl_NormalMatrix * gl_Normal);
- gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
-}
+//
+// Vertex shader for cartoon-style shading
+//
+// Author: Philip Rideout
+//
+// Copyright (c) 2005 3Dlabs Inc. Ltd.
+//
+//
+//
+/************************************************************************
+* *
+* Copyright (C) 2002-2006 3Dlabs Inc. Ltd. *
+* *
+* All rights reserved. *
+* *
+* Redistribution and use in source and binary forms, with or without *
+* modification, are permitted provided that the following conditions *
+* are met: *
+* *
+* Redistributions of source code must retain the above copyright *
+* notice, this list of conditions and the following disclaimer. *
+* *
+* Redistributions in binary form must reproduce the above *
+* copyright notice, this list of conditions and the following *
+* disclaimer in the documentation and/or other materials provided *
+* with the distribution. *
+* *
+* Neither the name of 3Dlabs Inc. Ltd. nor the names of its *
+* contributors may be used to endorse or promote products derived *
+* from this software without specific prior written permission. *
+* *
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT *
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS *
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE *
+* COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, *
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, *
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; *
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN *
+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *
+* POSSIBILITY OF SUCH DAMAGE. *
+* *
+************************************************************************/
+
+
+varying vec3 Normal;
+
+void main(void)
+{
+ Normal = normalize(gl_NormalMatrix * gl_Normal);
+ gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+}
diff --git a/Gem/examples/data/valcolor.tab b/Gem/examples/data/valcolor.tab
index 43a8523..1f26455 100644
--- a/Gem/examples/data/valcolor.tab
+++ b/Gem/examples/data/valcolor.tab
@@ -1,6 +1,6 @@
-0. 0. 0.
-1. 1. 1.
-.5 .0 1.
-0. 1. 0.
-1. 1. 1.
-0. 0. 0.
+0. 0. 0.
+1. 1. 1.
+.5 .0 1.
+0. 1. 0.
+1. 1. 1.
+0. 0. 0.
diff --git a/Gem/examples/data/valmotion.tab b/Gem/examples/data/valmotion.tab
index 1a3f2ac..be2eebe 100644
--- a/Gem/examples/data/valmotion.tab
+++ b/Gem/examples/data/valmotion.tab
@@ -1,8 +1,8 @@
-0. 0. 0.
-0. 0. 0.
-2. 2. -2.
--3. -1. .5
--2. 4. -1.
-.5 -.5 0.
-0. 0. 0.
-0. 0. 0.
+0. 0. 0.
+0. 0. 0.
+2. 2. -2.
+-3. -1. .5
+-2. 4. -1.
+.5 -.5 0.
+0. 0. 0.
+0. 0. 0.
diff --git a/Gem/examples/data/venus.mtl b/Gem/examples/data/venus.mtl
index dc43199..cee90ff 100644
--- a/Gem/examples/data/venus.mtl
+++ b/Gem/examples/data/venus.mtl
@@ -1,9 +1,9 @@
-#
-# venus.mtl
-#
-
-newmtl vskin
-Ka 0.6 0.6 0.45
-Kd 0.6 0.6 0.45
-Ks 0.2 0.1 0.1
-Ns 5.0
+#
+# venus.mtl
+#
+
+newmtl vskin
+Ka 0.6 0.6 0.45
+Kd 0.6 0.6 0.45
+Ks 0.2 0.1 0.1
+Ns 5.0
diff --git a/Gem/examples/data/venus.obj b/Gem/examples/data/venus.obj
index 1dc1749..1ac1ab0 100644
--- a/Gem/examples/data/venus.obj
+++ b/Gem/examples/data/venus.obj
@@ -1,2147 +1,2147 @@
-# Tue Oct 22 14:45:37 1991
-#
-#
-
-mtllib venus.mtl
-
-g default
-v -27.430000 147.320007 -3.300000
-v -30.480000 135.380005 -9.400000
-v -21.590000 150.619995 -15.490000
-v -26.670000 129.789993 3.300000
-v -24.129999 142.490005 13.460000
-v -15.240000 124.459999 12.450000
-v -13.970000 135.889999 19.049999
-v -18.799999 114.050003 6.350000
-v -31.500000 120.400002 -1.520000
-v -35.810001 128.020004 -13.720000
-v -27.180000 138.429993 -22.610001
-v -35.310001 130.809998 -28.959999
-v -23.879999 140.460007 -27.690001
-v -16.510000 142.240005 -28.450001
-v -13.720000 151.380005 -18.030001
-v -19.049999 134.869995 -38.860001
-v -30.990000 132.330002 -36.830002
-v -8.130000 143.000000 -26.670000
-v -4.320000 138.940002 -31.750000
-v -9.650000 150.110001 -18.799999
-v -40.889999 126.489998 -32.509998
-v -5.840000 149.610001 -15.490000
-v -0.760000 140.210007 -18.799999
-v 0.760000 138.429993 -5.590000
-v 0.250000 145.289993 -3.810000
-v 4.570000 130.050003 -7.870000
-v 0.000000 132.080002 4.830000
-v -0.510000 139.190002 8.890000
-v 2.030000 137.919998 -24.129999
-v 2.790000 135.639999 -34.040001
-v 8.640000 133.600006 -21.080000
-v 0.250000 134.369995 -39.119999
-v -6.100000 142.750000 2.540000
-v -12.190000 145.800003 -7.370000
-v -6.100000 138.940002 11.680000
-v -14.990000 143.759995 4.060000
-v -12.950000 138.679993 16.260000
-v -25.910000 147.830002 -1.020000
-v -21.590000 148.839996 -5.840000
-v -41.150002 125.980003 -25.150000
-v 9.910000 131.830002 -39.619999
-v -20.570000 129.289993 -45.209999
-v -9.910000 124.709999 -48.509998
-v 3.050000 129.289993 -45.209999
-v 18.030001 127.250000 -43.430000
-v 31.500000 124.970001 -35.560001
-v 29.209999 127.000000 -26.420000
-v 10.670000 133.860001 -30.230000
-v 41.660000 121.669998 -27.690001
-v 38.610001 123.699997 -20.070000
-v 26.420000 125.480003 -17.020000
-v 24.889999 120.139999 -9.140000
-v 35.810001 121.160004 -10.920000
-v 0.760000 121.410004 1.270000
-v -6.350000 116.330002 5.080000
-v -6.350000 126.489998 10.410000
-v -7.370000 135.380005 15.490000
-v 38.099998 114.809998 -4.830000
-v 24.889999 110.489998 -1.780000
-v 10.670000 109.220001 4.830000
-v 8.890000 100.330002 9.400000
-v -5.840000 99.059998 11.680000
-v -13.720000 105.160004 9.650000
-v -32.770000 107.190002 5.590000
-v -24.639999 103.629997 9.400000
-v -22.350000 93.980003 13.460000
-v -34.290001 98.040001 9.650000
-v -44.959999 105.160004 1.020000
-v -51.820000 111.760002 -9.140000
-v -52.070000 114.550003 -17.270000
-v -60.709999 108.709999 -16.000000
-v -51.560001 116.589996 -26.160000
-v -58.419998 111.250000 -27.180000
-v -50.040001 118.110001 -34.290001
-v -46.480000 118.110001 -43.689999
-v -55.880001 112.519997 -36.070000
-v -34.799999 117.860001 -52.320000
-v -59.180000 98.550003 0.510000
-v -63.750000 103.120003 -5.840000
-v -53.340000 91.190002 5.840000
-v -47.240002 92.459999 7.620000
-v -41.400002 92.959999 9.910000
-v -36.580002 88.650002 12.950000
-v -46.740002 87.629997 9.140000
-v -30.990000 81.029999 16.000000
-v -19.559999 80.769997 17.530001
-v -4.830000 85.849998 16.000000
-v 6.860000 90.169998 13.970000
-v 18.290001 88.900002 12.190000
-v 19.559999 100.839996 6.350000
-v 28.190001 96.010002 5.840000
-v 33.020000 103.889999 0.760000
-v 44.700001 106.169998 -4.570000
-v 37.080002 98.040001 0.510000
-v 49.279999 97.790001 -6.100000
-v 51.820000 106.930000 -14.730000
-v 46.230000 116.589996 -13.460000
-v 41.150002 120.400002 -12.700000
-v 46.480000 118.360001 -18.799999
-v 51.049999 110.739998 -21.590000
-v 43.939999 116.330002 -34.290001
-v 34.799999 118.870003 -42.419998
-v 26.670000 118.620003 -48.259998
-v 9.140000 116.839996 -55.880001
-v 1.270000 117.599998 -55.119999
-v -4.320000 118.620003 -52.830002
-v -24.379999 119.889999 -51.560001
-v -9.650000 109.980003 -54.860001
-v -7.110000 109.220001 -55.880001
-v -12.950000 109.220001 -55.119999
-v -29.209999 106.169998 -58.930000
-v -24.639999 106.930000 -58.169998
-v -38.349998 104.389999 -56.389999
-v -48.259998 99.820000 -51.049999
-v -56.389999 101.089996 -44.200001
-v -60.450001 106.680000 -36.580002
-v -63.500000 99.059998 -36.070000
-v -64.769997 103.889999 -26.670000
-v -67.559998 101.089996 -14.730000
-v -68.830002 92.459999 -23.370001
-v -72.139999 88.139999 -10.160000
-v 1.780000 109.730003 -59.180000
-v 7.110000 109.220001 -59.939999
-v 18.290001 106.430000 -57.400002
-v 30.230000 104.900002 -52.070000
-v 37.590000 103.120003 -46.230000
-v 44.959999 102.110001 -42.419998
-v 51.049999 93.470001 -38.860001
-v 55.880001 98.040001 -24.889999
-v 56.639999 96.519997 -18.799999
-v 56.130001 94.739998 -14.730000
-v 53.340000 91.949997 -10.160000
-v -66.550003 93.980003 -0.760000
-v -59.180000 86.610001 5.330000
-v -54.099998 79.760002 4.830000
-v -49.529999 80.260002 4.570000
-v -45.470001 79.760002 9.140000
-v -41.910000 84.839996 11.940000
-v 5.080000 80.260002 16.000000
-v 29.209999 88.650002 7.620000
-v 44.200001 92.959999 -4.060000
-v 36.580002 92.459999 -0.510000
-v -61.470001 80.260002 4.830000
-v -67.559998 76.449997 1.780000
-v -71.370003 77.220001 -2.030000
-v -71.879997 72.900002 -14.480000
-v -71.120003 82.040001 -19.299999
-v -66.800003 83.309998 -30.730000
-v -61.470001 92.459999 -39.619999
-v -59.689999 87.879997 -39.880001
-v -53.849998 87.879997 -45.470001
-v -47.500000 86.610001 -52.070000
-v -63.500000 79.500000 -33.529999
-v -63.250000 69.089996 -2.030000
-v -63.250000 74.419998 4.320000
-v -57.660000 70.870003 5.590000
-v -58.930000 67.059998 1.780000
-v -55.880001 75.440002 5.590000
-v -45.209999 70.099998 4.060000
-v -51.049999 68.070000 4.830000
-v -52.320000 66.800003 5.080000
-v -54.860001 61.720001 -1.520000
-v -56.130001 60.709999 -12.950000
-v -49.779999 60.450001 0.510000
-v -53.849998 57.150002 -7.870000
-v -49.020000 54.360001 -6.100000
-v -42.669998 54.099998 -4.570000
-v -45.209999 62.990002 2.540000
-v -39.619999 76.709999 12.700000
-v -32.000000 72.900002 20.320000
-v -38.099998 69.849998 17.270000
-v -40.889999 65.790001 13.970000
-v -41.400002 61.980000 12.700000
-v -41.400002 54.860001 3.810000
-v -24.129999 73.150002 21.340000
-v -18.799999 73.150002 20.830000
-v -10.410000 75.949997 18.030001
-v -3.300000 77.980003 16.260000
-v 11.430000 77.470001 17.780001
-v 17.530001 77.720001 18.799999
-v 22.860001 83.059998 15.750000
-v 28.959999 84.839996 11.180000
-v 34.040001 85.339996 2.540000
-v 34.799999 85.849998 -4.830000
-v 44.700001 84.330002 -7.110000
-v 50.549999 76.199997 -10.920000
-v 56.900002 81.279999 -15.750000
-v 58.669998 85.599998 -22.860001
-v 35.810001 75.180000 -8.890000
-v 32.770000 82.040001 8.130000
-v 32.259998 79.500000 12.700000
-v 29.459999 80.010002 15.240000
-v 24.889999 76.449997 19.049999
-v 16.000000 72.900002 19.299999
-v 8.130000 72.139999 17.530001
-v 1.270000 67.309998 15.750000
-v -4.060000 66.550003 15.750000
-v -14.480000 63.750000 22.100000
-v -17.020000 68.580002 22.860001
-v -21.840000 66.550003 24.129999
-v -21.080000 57.910000 23.879999
-v -29.209999 59.689999 24.639999
-v -29.459999 65.790001 24.379999
-v -34.040001 67.059998 22.860001
-v -36.320000 65.790001 21.340000
-v -37.590000 64.010002 20.570000
-v -37.590000 61.720001 20.320000
-v -39.880001 56.639999 12.950000
-v -37.080002 59.439999 20.070000
-v -32.000000 53.849998 19.809999
-v -33.270000 57.910000 22.610001
-v -27.180000 55.119999 22.610001
-v -35.310001 49.529999 10.410000
-v -35.810001 46.480000 1.780000
-v -42.930000 51.560001 -16.260000
-v -29.459999 48.770000 16.000000
-v -17.270000 52.320000 19.049999
-v -12.450000 58.169998 19.299999
-v -4.830000 57.150002 13.210000
-v -0.250000 53.849998 11.430000
-v -34.540001 61.980000 23.879999
-v 2.790000 58.419998 12.950000
-v 9.910000 64.519997 16.510000
-v 17.270000 68.580002 19.049999
-v 24.129999 73.910004 20.070000
-v 29.719999 76.449997 17.780001
-v 32.770000 73.910004 13.970000
-v 30.230000 71.879997 16.260000
-v 26.160000 72.389999 19.049999
-v 34.799999 78.230003 6.600000
-v 34.540001 71.879997 8.380000
-v 36.070000 73.410004 1.020000
-v 35.049999 74.169998 -4.570000
-v 57.400002 89.150002 -28.450001
-v 57.150002 85.599998 -28.959999
-v 49.020000 74.169998 -23.620001
-v 43.180000 74.169998 -33.529999
-v 52.320000 86.360001 -37.590000
-v 44.450001 84.839996 -42.930000
-v 43.430000 94.739998 -43.430000
-v -8.130000 52.070000 12.700000
-v -48.509998 53.849998 -14.730000
-v -48.770000 58.419998 -21.590000
-v -56.389999 64.769997 -28.190001
-v -47.750000 67.559998 -43.939999
-v -54.099998 79.760002 -37.080002
-v -45.470001 60.959999 -25.400000
-v -60.709999 67.820000 -28.959999
-v -64.769997 69.339996 -26.670000
-v -67.820000 74.169998 -26.920000
-v -59.939999 78.989998 -35.049999
-v -56.130001 72.900002 -32.509998
-v -49.779999 79.250000 -47.240002
-v -37.340000 95.000000 -58.930000
-v -41.150002 79.500000 -56.389999
-v -32.259998 92.199997 -60.959999
-v -24.379999 92.459999 -60.959999
-v -11.430000 94.489998 -58.930000
-v -6.600000 96.010002 -59.180000
-v 2.540000 100.080002 -61.720001
-v 5.590000 100.580002 -61.720001
-v 15.750000 99.059998 -59.939999
-v -36.830002 68.070000 -57.150002
-v -28.190001 72.900002 -61.720001
-v -19.299999 81.529999 -61.720001
-v -9.910000 84.330002 -60.709999
-v -4.570000 84.580002 -61.470001
-v 5.590000 87.379997 -63.250000
-v 13.970000 85.089996 -62.740002
-v 11.430000 69.339996 -62.740002
-v 3.300000 71.629997 -64.010002
-v -3.300000 70.870003 -62.740002
-v -7.370000 70.099998 -62.230000
-v -16.000000 64.769997 -63.750000
-v -25.150000 60.959999 -63.250000
-v -33.529999 57.660000 -59.439999
-v -42.930000 62.230000 -44.450001
-v -38.610001 41.910000 -5.840000
-v -36.070000 34.040001 -7.870000
-v -40.389999 49.020000 -23.110001
-v -34.290001 25.400000 -11.430000
-v -37.340000 31.240000 -28.190001
-v -35.560001 40.130001 -43.180000
-v -34.799999 52.320000 -53.590000
-v -29.209999 43.939999 -57.660000
-v -22.100000 46.990002 -63.250000
-v -15.490000 49.279999 -62.990002
-v -6.600000 52.580002 -63.500000
-v -2.790000 51.820000 -64.260002
-v 4.060000 51.820000 -65.279999
-v 10.160000 48.509998 -64.010002
-v 3.050000 30.730000 -61.209999
-v 8.640000 26.420000 -60.200001
-v -0.760000 31.500000 -59.439999
-v -6.100000 31.240000 -60.200001
-v -13.720000 28.700001 -59.180000
-v -19.299999 27.180000 -60.959999
-v -28.190001 22.860001 -53.340000
-v -33.270000 21.590000 -44.450001
-v 2.290000 6.860000 -53.849998
-v -2.290000 12.950000 -53.090000
-v -11.940000 12.950000 -55.880001
-v -22.350000 14.220000 -57.150002
-v 37.340000 96.519997 -43.939999
-v 36.070000 90.419998 -42.160000
-v 35.810001 80.769997 -40.130001
-v 40.130001 80.010002 -41.660000
-v 34.290001 73.150002 -37.849998
-v 35.810001 64.519997 -27.940001
-v 31.240000 82.300003 -51.310001
-v 29.209999 64.519997 -50.799999
-v 33.270000 92.709999 -48.770000
-v 27.430000 96.010002 -55.369999
-v 24.379999 82.550003 -59.689999
-v 20.830000 66.800003 -58.930000
-v 19.299999 52.830002 -60.959999
-v 28.959999 52.580002 -51.049999
-v 28.959999 46.230000 -49.779999
-v 18.290001 44.450001 -60.200001
-v 36.830002 53.849998 -29.719999
-v 37.849998 53.340000 -23.620001
-v 36.830002 65.279999 -13.720000
-v 38.099998 52.830002 -16.260000
-v 36.830002 41.400002 -30.230000
-v 37.849998 39.369999 -20.570000
-v 47.500000 72.139999 -16.510000
-v 36.070000 69.339996 -10.410000
-v 35.310001 67.309998 -4.570000
-v 32.770000 63.500000 5.590000
-v 29.719999 67.059998 13.460000
-v 21.340000 65.019997 17.530001
-v 17.780001 57.910000 13.210000
-v 6.860000 54.610001 11.430000
-v 28.190001 59.939999 8.130000
-v 33.020000 58.930000 -1.780000
-v 29.719999 55.880001 1.270000
-v 23.620001 53.340000 6.350000
-v 16.510000 52.320000 9.140000
-v -11.940000 48.009998 12.700000
-v -18.799999 44.200001 11.430000
-v 36.580002 51.560001 -10.160000
-v 31.240000 48.259998 -2.290000
-v 24.379999 42.669998 3.560000
-v 19.049999 34.290001 6.350000
-v 14.220000 33.020000 8.890000
-v 2.030000 40.389999 10.920000
-v -10.160000 34.540001 11.430000
-v 3.300000 29.719999 8.380000
-v -10.920000 25.650000 9.140000
-v -2.290000 20.570000 5.330000
-v 11.180000 20.570000 5.330000
-v -9.650000 18.799999 5.080000
-v 18.030001 21.080000 2.030000
-v 25.400000 27.430000 -1.520000
-v 26.920000 35.310001 0.000000
-v 31.750000 36.070000 -4.830000
-v 36.580002 38.349998 -13.460000
-v -25.400000 43.430000 9.400000
-v -17.530001 30.230000 8.640000
-v -23.110001 35.810001 7.110000
-v -18.799999 17.270000 1.520000
-v -24.639999 28.959999 3.810000
-v -29.459999 21.080000 -4.570000
-v -31.750000 29.969999 -2.030000
-v -31.500000 37.849998 1.270000
-v 18.540001 15.490000 1.020000
-v 24.889999 17.270000 -5.080000
-v 33.020000 23.370001 -13.210000
-v 36.070000 27.940001 -18.540001
-v -2.790000 14.220000 5.080000
-v 11.430000 11.180000 3.560000
-v 6.100000 12.450000 4.320000
-v 34.540001 17.270000 -20.070000
-v 34.540001 22.100000 -30.990000
-v 36.070000 32.770000 -30.990000
-v 28.450001 33.020000 -47.750000
-v -9.400000 13.970000 5.080000
-v 33.529999 1.270000 -11.680000
-v 39.369999 -1.520000 -19.049999
-v 24.379999 8.890000 -6.350000
-v 19.049999 6.860000 -1.020000
-v 13.210000 5.840000 2.790000
-v 7.620000 4.320000 3.560000
-v 4.060000 7.110000 3.560000
-v -1.270000 5.080000 3.050000
-v -9.140000 3.300000 5.330000
-v -14.480000 5.590000 4.060000
-v -22.350000 11.430000 -1.020000
-v -28.700001 16.000000 -5.080000
-v -36.070000 13.720000 -13.460000
-v -27.430000 7.870000 -4.830000
-v -39.119999 -2.540000 -4.570000
-v -47.500000 -6.600000 -12.190000
-v -22.100000 5.590000 -0.760000
-v -26.420000 -2.030000 0.000000
-v -42.930000 -10.920000 -3.560000
-v -37.340000 -13.970000 1.020000
-v -23.879999 -19.049999 7.870000
-v -18.030001 -10.410000 8.380000
-v -15.490000 -0.510000 5.840000
-v -9.400000 -1.780000 7.110000
-v -9.400000 -11.680000 10.410000
-v -10.160000 -22.350000 11.180000
-v 1.270000 -11.940000 9.400000
-v -5.080000 -5.840000 8.130000
-v -4.570000 -1.270000 5.840000
-v -3.810000 1.270000 3.810000
-v 2.290000 4.060000 1.520000
-v 4.060000 3.050000 2.030000
-v 4.320000 -1.020000 3.560000
-v 6.600000 -2.540000 5.840000
-v -0.250000 -3.810000 5.080000
-v 0.250000 0.760000 0.000000
-v 14.730000 0.760000 4.060000
-v 19.809999 -2.030000 1.780000
-v 27.690001 -6.600000 -3.560000
-v 36.320000 -10.410000 -9.400000
-v 41.660000 -13.460000 -16.260000
-v 32.259998 -16.000000 -3.560000
-v 26.160000 -19.809999 0.760000
-v 20.570000 -14.730000 4.830000
-v 17.530001 -9.650000 5.840000
-v 14.220000 -6.350000 6.860000
-v 8.890000 -9.140000 8.640000
-v 11.940000 -15.750000 9.140000
-v 2.790000 -22.860001 10.670000
-v 12.190000 -29.969999 8.380000
-v 21.080000 -27.690001 4.060000
-v 38.610001 4.320000 -31.500000
-v 42.419998 -12.190000 -29.719999
-v 43.430000 -23.879999 -14.730000
-v 44.959999 -25.650000 -26.670000
-v 47.240002 -39.369999 -23.620001
-v 46.480000 -40.389999 -10.920000
-v 46.990002 -56.389999 -6.350000
-v 48.770000 -62.230000 -17.780001
-v 43.689999 -44.700001 -4.060000
-v 39.880001 -35.560001 -3.560000
-v 37.340000 -24.129999 -5.840000
-v 28.450001 -25.910000 0.000000
-v 32.509998 -36.320000 1.020000
-v 34.799999 -42.930000 1.520000
-v 25.400000 -41.400002 4.320000
-v 23.370001 -32.770000 3.560000
-v 14.220000 -38.349998 7.370000
-v 16.760000 -42.669998 6.600000
-v 4.830000 -31.500000 10.410000
-v 7.620000 -43.689999 9.650000
-v -1.020000 -45.470001 10.920000
-v -10.670000 -32.259998 10.670000
-v -9.650000 -45.720001 10.920000
-v -22.100000 -41.910000 9.140000
-v -15.750000 -49.279999 10.410000
-v -28.190001 -46.990002 8.890000
-v -29.459999 -30.990000 6.600000
-v -33.529999 -25.650000 4.830000
-v -36.580002 -29.969999 4.830000
-v -45.970001 -21.840000 -2.540000
-v -51.560001 -21.590000 -8.640000
-v -50.799999 -9.910000 -18.799999
-v -46.230000 1.520000 -31.500000
-v -42.419998 7.870000 -23.879999
-v -38.099998 18.030001 -32.259998
-v -55.369999 -40.639999 -5.840000
-v -56.389999 -37.080002 -12.190000
-v -49.020000 -39.369999 1.020000
-v -49.529999 -48.770000 3.300000
-v -57.400002 -57.660000 -3.560000
-v -37.590000 -43.939999 8.130000
-v -35.810001 -57.400002 14.220000
-v -41.150002 10.410000 -41.660000
-v -52.320000 -19.049999 -29.459999
-v -53.849998 -22.100000 -14.990000
-v -54.360001 -31.240000 -26.920000
-v -49.279999 -25.650000 -44.959999
-v -54.360001 -45.209999 -36.320000
-v -46.740002 -12.450000 -45.209999
-v -41.150002 3.560000 -44.700001
-v -29.969999 13.460000 -51.049999
-v -35.310001 4.570000 -50.040001
-v -25.910000 5.590000 -53.849998
-v -30.480000 -4.570000 -55.630001
-v -40.889999 -8.380000 -51.310001
-v -45.470001 -24.379999 -50.799999
-v -45.970001 -34.799999 -51.310001
-v -41.150002 -24.639999 -54.860001
-v -39.880001 -38.610001 -58.669998
-v -29.969999 -28.190001 -60.450001
-v -30.230000 -16.000000 -57.660000
-v 15.240000 18.030001 -56.389999
-v 28.190001 18.540001 -45.970001
-v 21.590000 12.700000 -52.580002
-v 26.670000 2.540000 -51.049999
-v 8.380000 7.110000 -55.880001
-v -4.570000 6.860000 -53.340000
-v -13.970000 5.840000 -54.860001
-v -18.799999 7.110000 -55.369999
-v -25.150000 -1.520000 -54.610001
-v -18.799999 -25.150000 -60.709999
-v -21.840000 -34.040001 -61.720001
-v -19.299999 -18.030001 -59.939999
-v -24.639999 -12.450000 -57.400002
-v -20.320000 -2.540000 -55.369999
-v -14.730000 -3.810000 -55.630001
-v -8.890000 -4.830000 -55.369999
-v -1.270000 -5.330000 -54.610001
-v 8.380000 0.000000 -55.369999
-v 12.950000 3.810000 -55.369999
-v 20.070000 -4.060000 -53.590000
-v 27.940001 -8.640000 -52.070000
-v 19.809999 -17.020000 -58.169998
-v 26.920000 -20.570000 -56.130001
-v 33.529999 -22.350000 -50.799999
-v 33.020000 -13.210000 -48.009998
-v 10.160000 -21.590000 -58.669998
-v 2.540000 -16.760000 -57.660000
-v -4.570000 -13.210000 -56.900002
-v -13.460000 -16.760000 -58.669998
-v -17.780001 -11.430000 -57.400002
-v -8.890000 -27.430000 -59.439999
-v 2.790000 -30.480000 -59.939999
-v 17.530001 -26.420000 -60.709999
-v 24.129999 -35.560001 -59.689999
-v 32.259998 -30.480000 -52.830002
-v 12.450000 -41.910000 -65.019997
-v 20.320000 -50.290001 -62.990002
-v 0.510000 -47.750000 -64.519997
-v -4.060000 -38.099998 -58.669998
-v -9.650000 -34.040001 -58.169998
-v -14.480000 -31.750000 -59.689999
-v -16.760000 -38.349998 -61.209999
-v 35.310001 -1.020000 -41.910000
-v 32.509998 -4.060000 -47.240002
-v 36.580002 -15.750000 -44.200001
-v 40.639999 -20.320000 -38.610001
-v 37.849998 -24.889999 -44.450001
-v 40.889999 -41.400002 -39.619999
-v -9.650000 -44.200001 -56.389999
-v -21.840000 -38.349998 -62.740002
-v -29.719999 -39.119999 -62.740002
-v 28.450001 -41.400002 -55.880001
-v 25.910000 -53.590000 -58.419998
-v 16.000000 -62.480000 -65.019997
-v 4.830000 -57.910000 -67.059998
-v 13.460000 -54.610001 -66.550003
-v 6.600000 -65.019997 -66.290001
-v 9.400000 -69.599998 -65.019997
-v 11.430000 -74.169998 -62.480000
-v 23.370001 -73.150002 -57.660000
-v 13.970000 -80.260002 -57.910000
-v 19.299999 -82.300003 -53.590000
-v 24.889999 -83.570000 -48.009998
-v 30.480000 -74.419998 -48.770000
-v 41.400002 -60.959999 -36.320000
-v 48.770000 -73.150002 -15.240000
-v 41.150002 -75.690002 -33.020000
-v 37.080002 -75.440002 -39.119999
-v 26.670000 -86.360001 -44.700001
-v 32.259998 -90.419998 -38.349998
-v 41.660000 -84.580002 -30.480000
-v 43.180000 -92.459999 -27.430000
-v 50.040001 -82.800003 -11.180000
-v 35.810001 -48.509998 2.540000
-v 43.939999 -68.580002 7.370000
-v 48.009998 -73.660004 1.520000
-v 50.040001 -94.489998 12.950000
-v -14.480000 -52.320000 -61.720001
-v -8.890000 -53.849998 -56.639999
-v -9.400000 -63.500000 -56.389999
-v -14.480000 -65.279999 -60.959999
-v -14.220000 -72.389999 -56.900002
-v -9.400000 -70.870003 -53.090000
-v -0.250000 -73.660004 -60.709999
-v -14.480000 -75.180000 -54.360001
-v -8.890000 -76.199997 -45.970001
-v 2.030000 -82.040001 -54.610001
-v -0.760000 -65.790001 -63.750000
-v -21.590000 -77.980003 -55.880001
-v -18.290001 -65.019997 -62.480000
-v -23.879999 -73.910004 -59.939999
-v -24.889999 -57.660000 -65.019997
-v -22.860001 -51.820000 -65.790001
-v -29.459999 -52.070000 -65.279999
-v -39.619999 -43.430000 -59.689999
-v -4.570000 -51.310001 -61.470001
-v -5.330000 -62.230000 -61.470001
-v -4.830000 -73.150002 -57.660000
-v -2.540000 -82.040001 -51.049999
-v -4.830000 -80.260002 -49.020000
-v -0.250000 -60.200001 -65.019997
-v -39.119999 -53.590000 -60.959999
-v -29.459999 -61.720001 -64.010002
-v -39.880001 -60.200001 -60.200001
-v -38.349998 -68.830002 -58.669998
-v -32.770000 -74.169998 -57.660000
-v -42.930000 -73.150002 -50.290001
-v -39.880001 -80.519997 -46.480000
-v -35.560001 -81.029999 -48.770000
-v -32.000000 -80.519997 -51.560001
-v -19.049999 -80.010002 -52.580002
-v -15.240000 -78.739998 -49.529999
-v -26.670000 -68.330002 -62.480000
-v 52.830002 -103.889999 -2.030000
-v 44.450001 -112.519997 -21.590000
-v 38.099998 -115.059998 -26.920000
-v 36.580002 -96.269997 -33.529999
-v 26.670000 -91.690002 -40.639999
-v 20.570000 -99.309998 -37.080002
-v 22.610001 -115.059998 -31.240000
-v 10.410000 -112.269997 -29.209999
-v 9.140000 -99.309998 -34.040001
-v 8.640000 -91.440002 -38.349998
-v 17.530001 -92.459999 -41.660000
-v 20.070000 -86.870003 -47.750000
-v 15.490000 -86.110001 -50.799999
-v 3.050000 -84.580002 -51.310001
-v 6.100000 -87.379997 -46.230000
-v 17.020000 -89.919998 -44.700001
-v 0.250000 -86.110001 -42.930000
-v 3.810000 -89.150002 -35.310001
-v 0.000000 -86.110001 -31.500000
-v 2.790000 -98.040001 -28.700001
-v -3.300000 -83.059998 -41.400002
-v -5.080000 -83.570000 -27.430000
-v -2.290000 -96.519997 -22.350000
-v 3.810000 -102.110001 -27.430000
-v 0.250000 -103.889999 -20.830000
-v -1.780000 -106.169998 -22.860001
-v -8.380000 -78.739998 -37.590000
-v -12.950000 -83.059998 -35.810001
-v -7.620000 -97.790001 -29.209999
-v -9.140000 -113.790001 -30.990000
-v -16.000000 -98.550003 -35.810001
-v -19.809999 -85.089996 -40.389999
-v -28.190001 -84.070000 -46.230000
-v -37.080002 -86.110001 -40.889999
-v -27.430000 -85.849998 -41.400002
-v -27.690001 -91.440002 -40.889999
-v -24.639999 -98.040001 -38.610001
-v -18.290001 -115.320000 -34.799999
-v -26.160000 -114.550003 -35.049999
-v -34.290001 -96.519997 -37.849998
-v -37.849998 -113.540001 -30.990000
-v -41.660000 -94.739998 -34.540001
-v -49.779999 -92.709999 -26.670000
-v -46.740002 -112.010002 -22.860001
-v -49.279999 -81.029999 -34.290001
-v -43.430000 -84.070000 -38.349998
-v -50.799999 -69.849998 -39.119999
-v -47.500000 -68.070000 -47.500000
-v -41.150002 -65.790001 -57.400002
-v -44.450001 -60.959999 -54.860001
-v -48.009998 -55.119999 -48.259998
-v -53.590000 -57.660000 -38.610001
-v -54.860001 -68.830002 -30.730000
-v -53.090000 -78.989998 -28.959999
-v -54.360001 -89.919998 -13.970000
-v -56.639999 -76.709999 -15.490000
-v -50.799999 -111.000000 -10.670000
-v -42.669998 -46.480000 -56.389999
-v -42.930000 -54.610001 -57.150002
-v -48.509998 -42.930000 -46.740002
-v -51.560001 -48.770000 -41.910000
-v -55.880001 -57.660000 -33.020000
-v -58.669998 -57.660000 -19.809999
-v -56.639999 -42.419998 -24.639999
-v -55.880001 -74.680000 -1.020000
-v -54.099998 -86.870003 0.510000
-v -50.549999 -107.440002 5.590000
-v -46.990002 -83.059998 11.940000
-v -34.540001 -70.360001 18.799999
-v -48.770000 -64.519997 8.130000
-v -33.270000 -79.760002 21.340000
-v -30.990000 -101.599998 25.650000
-v -43.180000 -104.650002 17.270000
-v -57.150002 -41.910000 -11.180000
-v -58.419998 -57.660000 -6.350000
-v -58.930000 -65.019997 -10.920000
-v -25.400000 -56.389999 14.220000
-v -18.540001 -78.739998 21.590000
-v -14.480000 -98.809998 25.650000
-v -18.540001 -53.090000 9.400000
-v -4.570000 -55.369999 11.180000
-v -6.860000 -58.669998 10.410000
-v -7.870000 -61.470001 7.370000
-v -8.640000 -70.870003 13.720000
-v -6.100000 -86.110001 17.270000
-v -4.060000 -96.769997 19.559999
-v -0.760000 -95.250000 14.730000
-v -0.250000 -82.800003 8.130000
-v -0.510000 -68.070000 1.020000
-v -1.780000 -60.959999 9.400000
-v 2.540000 -56.389999 10.670000
-v 5.080000 -59.689999 8.890000
-v 7.370000 -62.990002 6.600000
-v 6.860000 -72.389999 13.210000
-v 6.600000 -85.339996 18.799999
-v 6.860000 -97.279999 22.610001
-v 13.720000 -88.389999 24.129999
-v 14.220000 -98.300003 27.690001
-v 13.720000 -79.760002 20.830000
-v 12.950000 -67.559998 14.220000
-v 12.700000 -58.169998 6.600000
-v 9.910000 -54.860001 9.140000
-v 23.879999 -49.279999 5.080000
-v 34.799999 -80.519997 21.840000
-v 36.070000 -64.010002 11.680000
-v 34.799999 -89.410004 26.160000
-v 24.639999 -58.169998 10.670000
-v 23.370001 -73.410004 19.809999
-v 24.379999 -91.440002 27.940001
-# 711 vertices
-
-# 0 texture vertices
-
-# 0 normals
-
-g d
-usemtl vskin
-s 1
-f 3 2 1
-f 2 4 1
-f 5 1 4
-f 6 5 4
-f 7 5 6
-f 6 4 8
-f 9 8 4
-f 2 9 4
-f 10 9 2
-f 2 11 10
-f 3 11 2
-f 12 10 11
-f 12 11 13
-f 3 13 11
-f 3 15 14
-f 14 13 3
-f 14 16 13
-f 13 16 17
-f 19 16 18
-f 18 16 14
-f 20 18 14
-f 15 20 14
-f 12 17 21
-f 17 12 13
-f 23 18 22
-f 22 18 20
-f 22 25 24
-f 23 24 26
-f 24 23 22
-f 28 27 25
-f 25 27 24
-f 24 27 26
-f 29 18 23
-f 18 29 19
-f 30 19 29
-f 30 29 31
-f 31 29 23
-f 23 26 31
-f 19 30 32
-f 32 16 19
-f 28 25 33
-f 33 25 34
-f 33 35 28
-f 33 36 35
-f 35 36 37
-f 37 36 5
-f 5 36 38
-f 38 36 39
-f 38 39 3
-f 1 38 3
-f 1 5 38
-f 3 39 34
-f 15 3 34
-f 20 15 34
-f 22 20 34
-f 25 22 34
-f 36 33 34
-f 39 36 34
-f 40 10 12
-f 12 21 40
-f 30 41 32
-f 42 16 32
-f 32 43 42
-f 44 43 32
-f 32 41 44
-f 45 44 41
-f 41 46 45
-f 41 47 46
-f 47 41 48
-f 30 48 41
-f 31 48 30
-f 47 48 31
-f 47 50 49
-f 49 46 47
-f 50 47 51
-f 51 47 31
-f 51 31 52
-f 53 51 52
-f 51 53 50
-f 31 26 52
-f 26 54 52
-f 26 27 54
-f 54 27 55
-f 55 27 56
-f 56 27 57
-f 57 27 28
-f 57 28 35
-f 37 57 35
-f 7 57 37
-f 58 53 52
-f 59 58 52
-f 60 59 52
-f 54 60 52
-f 55 60 54
-f 61 60 55
-f 61 55 62
-f 62 55 63
-f 63 55 8
-f 55 6 8
-f 56 6 55
-f 57 7 56
-f 6 56 7
-f 8 9 64
-f 64 65 8
-f 63 8 65
-f 63 65 66
-f 66 62 63
-f 66 65 67
-f 65 64 67
-f 64 68 67
-f 68 64 9
-f 69 68 9
-f 9 10 69
-f 71 69 70
-f 70 69 10
-f 70 72 71
-f 71 72 73
-f 5 7 37
-f 10 40 70
-f 70 40 72
-f 72 40 74
-f 40 21 74
-f 74 21 75
-f 21 17 75
-f 73 72 74
-f 74 76 73
-f 74 75 76
-f 17 77 75
-f 42 77 17
-f 17 16 42
-f 79 78 69
-f 78 68 69
-f 68 78 80
-f 81 68 80
-f 81 82 68
-f 68 82 67
-f 82 83 67
-f 84 83 82
-f 82 81 84
-f 84 81 80
-f 83 66 67
-f 66 83 85
-f 86 66 85
-f 66 86 87
-f 62 66 87
-f 88 62 87
-f 62 88 61
-f 89 61 88
-f 61 89 90
-f 59 60 90
-f 60 61 90
-f 89 91 90
-f 91 59 90
-f 59 91 92
-f 58 59 92
-f 93 58 92
-f 94 93 92
-f 91 94 92
-f 94 95 93
-f 96 93 95
-f 97 93 96
-f 58 93 97
-f 97 98 58
-f 53 58 98
-f 53 98 50
-f 99 50 98
-f 100 99 97
-f 98 97 99
-f 97 96 100
-f 99 49 50
-f 101 49 99
-f 99 100 101
-f 46 49 101
-f 101 102 46
-f 102 103 46
-f 45 46 103
-f 104 45 103
-f 44 45 104
-f 104 105 44
-f 106 44 105
-f 44 106 43
-f 42 43 107
-f 43 106 108
-f 108 106 109
-f 43 108 110
-f 107 43 110
-f 107 77 42
-f 77 107 111
-f 107 112 111
-f 112 107 110
-f 113 77 111
-f 113 114 77
-f 75 77 114
-f 75 114 115
-f 115 116 75
-f 76 75 116
-f 116 115 117
-f 117 118 116
-f 116 73 76
-f 73 116 118
-f 73 118 71
-f 71 118 119
-f 118 117 120
-f 119 118 120
-f 121 119 120
-f 109 106 122
-f 122 106 105
-f 105 104 122
-f 104 123 122
-f 124 123 104
-f 103 124 104
-f 124 103 125
-f 103 102 125
-f 125 102 126
-f 126 102 101
-f 101 127 126
-f 128 127 101
-f 128 101 100
-f 100 129 128
-f 129 100 130
-f 130 100 96
-f 95 131 96
-f 96 131 130
-f 132 131 95
-f 79 69 71
-f 71 119 79
-f 133 119 121
-f 119 133 79
-f 78 79 133
-f 133 134 78
-f 78 134 80
-f 134 135 80
-f 136 84 80
-f 135 136 80
-f 136 137 84
-f 138 84 137
-f 84 138 83
-f 83 138 85
-f 139 88 87
-f 88 139 89
-f 140 91 89
-f 91 140 94
-f 94 142 141
-f 94 140 142
-f 95 94 141
-f 132 95 141
-f 135 134 143
-f 143 134 133
-f 133 144 143
-f 133 145 144
-f 121 145 133
-f 146 145 121
-f 121 120 147
-f 121 147 146
-f 147 120 148
-f 120 117 148
-f 148 117 149
-f 117 115 149
-f 115 151 150
-f 115 114 151
-f 151 114 152
-f 153 148 149
-f 150 153 149
-f 145 146 154
-f 144 145 154
-f 155 144 154
-f 144 155 143
-f 156 143 155
-f 157 155 154
-f 155 157 156
-f 158 143 156
-f 143 158 135
-f 135 158 159
-f 158 160 159
-f 158 156 160
-f 156 161 160
-f 156 157 161
-f 161 157 162
-f 163 162 157
-f 161 162 164
-f 163 165 162
-f 166 162 165
-f 162 166 164
-f 166 167 164
-f 167 168 164
-f 168 161 164
-f 168 160 161
-f 160 168 159
-f 136 135 159
-f 137 136 159
-f 169 138 137
-f 138 169 85
-f 169 170 85
-f 170 169 171
-f 171 169 159
-f 169 137 159
-f 172 171 159
-f 173 172 159
-f 168 173 159
-f 173 168 174
-f 168 167 174
-f 170 175 85
-f 175 86 85
-f 86 175 176
-f 177 86 176
-f 163 157 154
-f 146 163 154
-f 86 177 87
-f 177 178 87
-f 178 139 87
-f 89 139 179
-f 180 89 179
-f 180 181 89
-f 89 181 182
-f 140 89 182
-f 142 140 183
-f 183 140 182
-f 142 184 141
-f 184 185 141
-f 185 132 141
-f 132 185 186
-f 186 187 132
-f 187 131 132
-f 188 131 187
-f 186 185 189
-f 189 185 184
-f 190 183 182
-f 191 190 182
-f 181 192 182
-f 193 192 181
-f 181 180 193
-f 180 194 193
-f 194 180 179
-f 195 194 179
-f 139 195 179
-f 196 195 139
-f 139 178 196
-f 196 178 197
-f 197 178 177
-f 198 197 177
-f 199 198 177
-f 199 177 176
-f 200 199 176
-f 199 200 198
-f 198 200 201
-f 202 201 200
-f 202 200 203
-f 200 175 203
-f 175 170 203
-f 175 200 176
-f 170 204 203
-f 171 204 170
-f 205 204 171
-f 206 205 171
-f 171 172 206
-f 207 206 172
-f 172 173 207
-f 208 207 173
-f 208 173 174
-f 209 207 208
-f 208 210 209
-f 211 209 210
-f 210 202 211
-f 202 210 212
-f 201 202 212
-f 213 208 174
-f 167 214 174
-f 214 213 174
-f 215 167 166
-f 213 210 208
-f 213 216 210
-f 210 216 212
-f 216 217 212
-f 217 201 212
-f 201 217 218
-f 198 201 218
-f 197 198 218
-f 219 197 218
-f 197 219 220
-f 221 204 205
-f 205 206 221
-f 207 221 206
-f 209 221 207
-f 209 211 221
-f 221 211 202
-f 221 202 203
-f 204 221 203
-f 220 222 197
-f 196 197 222
-f 196 222 223
-f 195 196 223
-f 194 195 223
-f 224 194 223
-f 224 225 194
-f 193 194 225
-f 193 225 226
-f 192 193 226
-f 191 192 226
-f 227 191 226
-f 228 227 226
-f 229 228 226
-f 225 229 226
-f 192 191 182
-f 183 184 142
-f 183 190 230
-f 190 191 230
-f 191 227 230
-f 227 231 230
-f 231 232 230
-f 232 183 230
-f 183 232 233
-f 233 184 183
-f 189 184 233
-f 130 131 188
-f 188 234 130
-f 129 130 234
-f 234 128 129
-f 235 234 188
-f 236 235 188
-f 235 236 237
-f 237 238 235
-f 238 128 234
-f 235 238 234
-f 237 239 238
-f 128 238 239
-f 239 240 128
-f 240 127 128
-f 126 127 240
-f 241 220 219
-f 242 165 163
-f 166 242 215
-f 165 242 166
-f 163 243 242
-f 244 243 163
-f 247 246 245
-f 242 243 215
-f 163 248 244
-f 249 248 163
-f 163 146 249
-f 249 146 250
-f 147 250 146
-f 250 147 148
-f 148 153 250
-f 250 153 249
-f 251 249 153
-f 248 249 251
-f 251 252 248
-f 248 252 244
-f 244 252 247
-f 243 244 247
-f 247 215 243
-f 252 246 247
-f 251 246 252
-f 153 150 251
-f 251 150 246
-f 150 149 115
-f 150 151 246
-f 253 246 151
-f 245 246 253
-f 253 151 152
-f 114 113 152
-f 254 152 113
-f 254 113 111
-f 253 255 245
-f 152 255 253
-f 255 152 254
-f 255 254 256
-f 256 254 111
-f 257 256 111
-f 112 257 111
-f 257 112 110
-f 258 257 110
-f 108 258 110
-f 108 259 258
-f 259 108 109
-f 122 259 109
-f 259 122 260
-f 260 122 123
-f 123 261 260
-f 123 262 261
-f 262 123 124
-f 263 245 255
-f 264 263 255
-f 264 255 256
-f 256 265 264
-f 265 256 257
-f 257 258 265
-f 258 266 265
-f 267 258 259
-f 266 258 267
-f 268 267 259
-f 268 260 261
-f 259 260 268
-f 261 262 268
-f 262 269 268
-f 268 269 270
-f 270 271 268
-f 268 271 267
-f 271 272 267
-f 267 272 273
-f 273 266 267
-f 273 265 266
-f 265 273 274
-f 274 264 265
-f 275 264 274
-f 263 264 275
-f 275 276 263
-f 276 277 263
-f 245 263 277
-f 247 245 277
-f 167 215 278
-f 215 279 278
-f 215 280 279
-f 279 280 281
-f 280 282 281
-f 282 280 283
-f 280 277 283
-f 280 247 277
-f 247 280 215
-f 277 284 283
-f 284 285 283
-f 284 277 276
-f 276 285 284
-f 286 285 276
-f 275 286 276
-f 274 286 275
-f 274 287 286
-f 288 287 274
-f 273 288 274
-f 289 288 273
-f 273 272 289
-f 272 271 289
-f 271 290 289
-f 270 290 271
-f 291 290 270
-f 292 290 291
-f 291 293 292
-f 290 292 289
-f 294 289 292
-f 295 289 294
-f 288 289 295
-f 295 287 288
-f 296 287 295
-f 297 287 296
-f 286 287 297
-f 297 285 286
-f 285 297 298
-f 285 298 283
-f 298 299 283
-f 299 282 283
-f 292 293 300
-f 300 294 292
-f 301 294 300
-f 295 294 301
-f 302 295 301
-f 302 296 295
-f 296 302 297
-f 297 302 303
-f 298 297 303
-f 126 240 304
-f 240 305 304
-f 240 239 305
-f 305 239 306
-f 237 307 239
-f 308 307 237
-f 237 236 309
-f 309 308 237
-f 306 307 308
-f 307 306 239
-f 306 308 310
-f 305 306 310
-f 311 308 309
-f 310 308 311
-f 312 305 310
-f 305 312 304
-f 312 125 304
-f 125 126 304
-f 125 262 124
-f 313 262 125
-f 312 313 125
-f 313 312 314
-f 312 310 314
-f 310 311 314
-f 311 315 314
-f 315 270 314
-f 270 269 314
-f 269 262 314
-f 262 313 314
-f 291 270 316
-f 270 315 316
-f 315 311 316
-f 311 317 316
-f 317 318 316
-f 318 319 316
-f 319 291 316
-f 320 318 317
-f 317 311 320
-f 320 311 309
-f 309 321 320
-f 309 322 321
-f 321 322 323
-f 321 324 320
-f 324 318 320
-f 325 324 321
-f 321 323 325
-f 188 187 236
-f 236 187 326
-f 309 236 326
-f 187 186 326
-f 322 309 326
-f 186 322 326
-f 186 327 322
-f 189 327 186
-f 327 189 328
-f 233 328 189
-f 232 328 233
-f 328 232 329
-f 232 231 329
-f 330 231 227
-f 227 228 330
-f 330 228 229
-f 229 331 330
-f 229 225 331
-f 331 225 224
-f 333 332 223
-f 332 331 223
-f 331 224 223
-f 331 332 334
-f 334 330 331
-f 330 334 329
-f 231 330 329
-f 335 328 329
-f 336 335 329
-f 334 336 329
-f 336 334 337
-f 334 332 337
-f 332 338 337
-f 333 338 332
-f 333 222 220
-f 241 219 218
-f 217 241 218
-f 241 217 339
-f 339 217 340
-f 340 217 216
-f 328 322 327
-f 323 322 341
-f 341 322 328
-f 328 335 341
-f 341 335 342
-f 335 336 342
-f 336 343 342
-f 343 336 337
-f 338 343 337
-f 343 338 344
-f 338 345 344
-f 346 345 338
-f 338 333 346
-f 346 333 220
-f 220 241 346
-f 346 241 339
-f 347 346 339
-f 346 347 348
-f 347 349 348
-f 349 350 348
-f 345 346 348
-f 351 345 348
-f 350 351 348
-f 352 350 349
-f 351 353 345
-f 345 353 344
-f 353 354 344
-f 354 355 344
-f 355 343 344
-f 343 355 342
-f 355 356 342
-f 354 356 355
-f 356 341 342
-f 341 356 357
-f 341 357 323
-f 357 325 323
-f 222 333 223
-f 339 340 347
-f 216 358 340
-f 340 360 359
-f 340 358 360
-f 347 340 359
-f 349 347 359
-f 361 349 359
-f 361 352 349
-f 362 361 359
-f 363 361 362
-f 362 364 363
-f 279 363 364
-f 363 279 281
-f 279 364 365
-f 279 365 278
-f 365 214 278
-f 214 167 278
-f 358 216 213
-f 213 214 358
-f 214 365 358
-f 365 360 358
-f 360 362 359
-f 362 360 365
-f 365 364 362
-f 354 353 366
-f 367 354 366
-f 354 367 368
-f 368 356 354
-f 357 356 368
-f 368 369 357
-f 353 351 366
-f 351 350 370
-f 351 372 371
-f 351 371 366
-f 368 367 373
-f 369 368 373
-f 373 374 369
-f 375 369 374
-f 325 369 375
-f 357 369 325
-f 375 324 325
-f 375 318 324
-f 376 318 375
-f 374 376 375
-f 352 361 377
-f 350 352 370
-f 352 377 370
-f 372 351 370
-f 379 373 378
-f 373 380 378
-f 373 367 380
-f 380 367 366
-f 381 380 366
-f 382 381 366
-f 371 382 366
-f 382 371 383
-f 371 384 383
-f 384 371 372
-f 384 372 370
-f 385 384 370
-f 386 385 370
-f 377 386 370
-f 387 386 377
-f 377 361 387
-f 387 361 388
-f 361 363 388
-f 363 389 388
-f 389 363 281
-f 390 389 281
-f 390 391 389
-f 392 391 390
-f 390 393 392
-f 389 391 388
-f 391 394 388
-f 394 391 395
-f 395 391 392
-f 392 393 396
-f 392 396 397
-f 395 392 397
-f 398 395 397
-f 398 399 395
-f 395 399 400
-f 394 395 400
-f 387 394 400
-f 394 387 388
-f 386 387 400
-f 401 386 400
-f 402 401 400
-f 399 402 400
-f 399 398 402
-f 403 402 398
-f 402 403 404
-f 405 402 404
-f 405 401 402
-f 401 405 406
-f 386 401 406
-f 407 386 406
-f 385 386 407
-f 384 385 408
-f 408 409 384
-f 384 409 383
-f 409 410 383
-f 410 411 383
-f 410 412 411
-f 411 412 404
-f 412 405 404
-f 405 412 406
-f 412 407 406
-f 385 407 413
-f 408 385 413
-f 409 408 413
-f 410 409 413
-f 412 410 413
-f 407 412 413
-f 411 414 383
-f 414 381 382
-f 414 382 383
-f 415 381 414
-f 416 381 415
-f 380 381 416
-f 380 416 378
-f 416 417 378
-f 417 379 378
-f 418 379 417
-f 417 416 419
-f 416 420 419
-f 420 416 421
-f 416 422 421
-f 415 422 416
-f 415 414 423
-f 414 411 423
-f 411 424 423
-f 424 411 404
-f 425 424 404
-f 426 425 404
-f 403 426 404
-f 425 426 427
-f 428 425 427
-f 425 428 421
-f 428 420 421
-f 422 425 421
-f 425 422 423
-f 424 425 423
-f 422 415 423
-f 429 374 373
-f 373 379 429
-f 430 429 379
-f 379 418 430
-f 430 418 431
-f 431 432 430
-f 433 432 431
-f 431 434 433
-f 433 434 435
-f 433 435 436
-f 435 434 437
-f 437 434 438
-f 434 431 438
-f 431 439 438
-f 431 418 439
-f 439 418 417
-f 439 417 419
-f 440 439 419
-f 439 440 438
-f 440 441 438
-f 441 442 438
-f 442 437 438
-f 442 441 443
-f 441 444 443
-f 441 440 444
-f 420 440 419
-f 420 428 440
-f 444 440 428
-f 428 445 444
-f 446 444 445
-f 444 446 443
-f 445 428 427
-f 447 445 427
-f 445 447 448
-f 446 445 448
-f 447 449 448
-f 449 447 450
-f 447 426 450
-f 426 447 427
-f 426 403 450
-f 451 449 450
-f 452 451 450
-f 452 454 453
-f 454 452 455
-f 455 452 450
-f 398 455 450
-f 403 398 450
-f 456 398 397
-f 398 456 455
-f 457 455 456
-f 456 458 457
-f 458 456 397
-f 396 458 397
-f 458 396 393
-f 393 459 458
-f 459 393 460
-f 460 393 461
-f 393 390 462
-f 390 463 462
-f 459 464 458
-f 464 459 465
-f 458 464 466
-f 466 464 467
-f 468 467 464
-f 466 467 469
-f 467 470 469
-f 454 455 469
-f 455 457 469
-f 457 458 469
-f 458 466 469
-f 282 463 281
-f 463 390 281
-f 282 299 463
-f 463 299 471
-f 461 463 471
-f 463 461 462
-f 461 393 462
-f 461 472 460
-f 460 472 473
-f 473 459 460
-f 465 459 473
-f 473 474 465
-f 474 473 472
-f 476 474 475
-f 474 472 475
-f 472 477 475
-f 461 477 472
-f 477 461 478
-f 471 478 461
-f 478 471 299
-f 299 298 479
-f 478 299 479
-f 480 478 479
-f 481 480 479
-f 479 303 481
-f 298 303 479
-f 481 482 480
-f 480 482 483
-f 478 480 483
-f 483 477 478
-f 484 477 483
-f 477 484 475
-f 484 485 475
-f 484 486 485
-f 485 486 487
-f 486 488 487
-f 489 488 486
-f 486 483 489
-f 483 482 489
-f 483 486 484
-f 319 293 291
-f 319 490 293
-f 493 492 491
-f 490 491 492
-f 293 490 494
-f 293 494 300
-f 300 495 301
-f 301 495 302
-f 302 495 496
-f 496 497 302
-f 303 302 497
-f 497 481 303
-f 498 482 481
-f 489 482 498
-f 499 488 489
-f 500 488 499
-f 499 489 501
-f 501 489 502
-f 489 498 502
-f 498 503 502
-f 481 497 498
-f 498 497 503
-f 503 497 496
-f 496 504 503
-f 496 505 504
-f 495 505 496
-f 506 505 495
-f 506 495 300
-f 300 507 506
-f 300 494 507
-f 494 508 507
-f 490 508 494
-f 492 508 490
-f 508 492 509
-f 509 492 493
-f 493 510 509
-f 508 509 507
-f 510 512 511
-f 510 514 513
-f 513 512 510
-f 511 509 510
-f 515 509 511
-f 507 509 515
-f 515 516 507
-f 517 507 516
-f 506 507 517
-f 517 505 506
-f 518 505 517
-f 504 505 518
-f 518 519 504
-f 503 504 519
-f 503 519 502
-f 519 501 502
-f 501 519 518
-f 501 518 499
-f 518 520 499
-f 520 518 517
-f 520 516 515
-f 517 516 520
-f 515 521 520
-f 522 521 515
-f 511 522 515
-f 511 512 522
-f 523 522 512
-f 512 524 523
-f 513 524 512
-f 523 525 522
-f 523 526 525
-f 525 521 522
-f 527 521 525
-f 521 527 528
-f 520 521 528
-f 528 529 520
-f 530 520 529
-f 530 499 520
-f 499 530 531
-f 500 499 531
-f 376 319 318
-f 319 376 490
-f 491 490 376
-f 491 376 374
-f 374 429 491
-f 491 429 532
-f 532 533 491
-f 491 533 493
-f 510 493 533
-f 533 514 510
-f 534 514 533
-f 533 532 534
-f 532 430 534
-f 429 430 532
-f 535 534 430
-f 430 432 535
-f 432 536 535
-f 537 536 432
-f 432 433 537
-f 536 534 535
-f 514 534 513
-f 513 534 536
-f 524 513 536
-f 524 536 537
-f 529 538 530
-f 530 538 531
-f 539 500 531
-f 539 540 500
-f 500 540 488
-f 488 540 487
-f 524 541 523
-f 526 523 541
-f 526 541 542
-f 542 543 526
-f 525 544 527
-f 525 545 544
-f 526 545 525
-f 543 545 526
-f 545 543 546
-f 546 544 545
-f 546 543 547
-f 548 547 543
-f 543 549 548
-f 548 549 550
-f 550 549 551
-f 552 551 549
-f 552 549 553
-f 553 549 542
-f 542 549 543
-f 553 542 554
-f 554 542 541
-f 541 537 554
-f 537 541 524
-f 436 537 433
-f 554 537 436
-f 436 555 554
-f 555 556 554
-f 556 557 554
-f 554 557 553
-f 553 557 558
-f 559 558 557
-f 559 557 560
-f 560 557 556
-f 556 555 560
-f 561 560 555
-f 555 562 561
-f 555 435 562
-f 436 435 555
-f 564 435 563
-f 435 564 565
-f 565 562 435
-f 566 562 565
-f 565 564 566
-f 528 538 529
-f 538 567 531
-f 538 568 567
-f 567 568 569
-f 569 570 567
-f 571 570 569
-f 569 572 571
-f 546 547 573
-f 547 548 573
-f 575 574 572
-f 573 548 576
-f 576 548 550
-f 574 571 572
-f 544 546 577
-f 558 552 553
-f 574 578 571
-f 580 579 571
-f 571 578 580
-f 579 570 571
-f 567 570 579
-f 581 567 579
-f 582 567 581
-f 567 582 531
-f 582 539 531
-f 539 582 540
-f 582 583 540
-f 540 583 584
-f 584 487 540
-f 528 585 538
-f 538 585 568
-f 585 586 568
-f 568 586 569
-f 587 569 586
-f 572 569 587
-f 588 572 587
-f 575 572 589
-f 588 589 572
-f 587 576 588
-f 573 576 587
-f 587 577 573
-f 573 577 546
-f 586 577 587
-f 577 586 590
-f 590 544 577
-f 590 586 585
-f 590 585 527
-f 585 528 527
-f 527 544 590
-f 591 584 583
-f 583 592 591
-f 593 591 592
-f 592 594 593
-f 592 595 594
-f 596 594 595
-f 596 595 597
-f 597 595 598
-f 598 595 599
-f 595 580 599
-f 580 578 599
-f 600 578 574
-f 574 601 600
-f 575 601 574
-f 580 595 602
-f 579 580 602
-f 592 579 602
-f 579 592 581
-f 583 581 592
-f 581 583 582
-f 595 592 602
-f 603 561 562
-f 604 561 603
-f 605 561 604
-f 606 561 605
-f 560 561 606
-f 606 559 560
-f 606 607 559
-f 608 606 605
-f 605 609 608
-f 608 609 610
-f 610 611 608
-f 611 612 608
-f 608 612 613
-f 608 613 607
-f 607 606 608
-f 607 558 559
-f 558 607 613
-f 613 614 558
-f 558 614 552
-f 552 614 551
-f 615 551 614
-f 551 615 550
-f 550 615 576
-f 576 615 616
-f 617 616 615
-f 617 615 612
-f 612 615 618
-f 618 613 612
-f 618 614 613
-f 614 618 615
-f 616 588 576
-f 588 616 617
-f 617 619 588
-f 612 619 617
-f 622 621 620
-f 612 620 619
-f 619 623 588
-f 621 625 624
-f 621 624 623
-f 622 625 621
-f 620 611 622
-f 620 612 611
-f 626 611 610
-f 626 622 611
-f 626 627 622
-f 610 627 626
-f 622 627 625
-f 627 628 625
-f 624 629 623
-f 629 575 623
-f 588 623 589
-f 630 575 629
-f 629 624 630
-f 625 630 624
-f 631 630 625
-f 631 625 628
-f 628 632 631
-f 631 632 633
-f 633 630 631
-f 634 630 633
-f 630 634 601
-f 630 601 575
-f 634 600 601
-f 578 600 599
-f 600 635 599
-f 635 636 599
-f 636 598 599
-f 636 597 598
-f 635 600 634
-f 634 637 635
-f 636 635 637
-f 636 637 638
-f 637 634 638
-f 633 638 634
-f 639 638 633
-f 640 639 633
-f 632 640 633
-f 639 640 641
-f 641 642 639
-f 642 641 643
-f 643 644 642
-f 644 643 645
-f 645 643 646
-f 645 647 644
-f 644 648 636
-f 636 642 644
-f 638 642 636
-f 639 642 638
-f 648 597 636
-f 647 648 644
-f 596 648 647
-f 648 596 597
-f 647 649 596
-f 596 649 650
-f 651 596 650
-f 651 594 596
-f 593 594 651
-f 651 652 593
-f 650 652 651
-f 652 650 653
-f 650 649 653
-f 649 654 653
-f 649 655 654
-f 655 649 647
-f 655 647 656
-f 656 647 645
-f 658 645 657
-f 645 646 657
-f 646 659 657
-f 620 621 623
-f 620 623 619
-f 660 487 584
-f 660 584 591
-f 661 660 591
-f 591 593 661
-f 661 593 652
-f 661 652 653
-f 662 660 653
-f 660 661 653
-f 662 485 660
-f 485 487 660
-f 662 663 476
-f 664 476 663
-f 654 664 663
-f 654 663 653
-f 663 662 653
-f 476 664 665
-f 666 476 665
-f 476 666 474
-f 485 662 475
-f 662 476 475
-f 655 664 654
-f 664 655 665
-f 655 658 665
-f 656 658 655
-f 647 656 655
-f 645 658 656
-f 623 575 589
-f 667 658 657
-f 668 667 657
-f 669 668 657
-f 659 669 657
-f 668 669 670
-f 670 667 668
-f 672 670 671
-f 670 673 671
-f 670 674 673
-f 675 674 670
-f 670 669 675
-f 676 666 665
-f 677 676 665
-f 676 677 468
-f 468 464 676
-f 667 468 677
-f 677 678 667
-f 678 677 665
-f 658 678 665
-f 658 667 678
-f 670 672 667
-f 468 667 672
-f 468 672 467
-f 672 470 467
-f 470 672 671
-f 470 679 469
-f 679 470 671
-f 680 679 671
-f 673 680 671
-f 680 673 674
-f 674 681 680
-f 474 666 465
-f 465 666 676
-f 464 465 676
-f 679 454 469
-f 679 682 454
-f 454 682 453
-f 451 452 453
-f 683 451 453
-f 684 683 453
-f 685 684 453
-f 453 682 685
-f 685 682 686
-f 682 679 686
-f 679 680 686
-f 680 687 686
-f 680 681 687
-f 687 681 688
-f 688 689 687
-f 690 687 689
-f 687 690 686
-f 690 691 686
-f 691 685 686
-f 685 691 692
-f 684 685 692
-f 683 684 692
-f 449 451 683
-f 683 693 449
-f 693 683 692
-f 694 693 692
-f 691 694 692
-f 691 695 694
-f 695 691 696
-f 691 690 696
-f 690 697 696
-f 697 690 689
-f 689 698 697
-f 698 700 699
-f 697 698 699
-f 701 697 699
-f 697 701 696
-f 701 702 696
-f 702 695 696
-f 702 703 695
-f 703 694 695
-f 704 694 703
-f 693 694 704
-f 693 704 448
-f 449 693 448
-f 704 446 448
-f 446 704 705
-f 446 705 443
-f 705 442 443
-f 563 442 705
-f 437 442 563
-f 563 435 437
-f 564 707 706
-f 566 564 706
-f 708 566 706
-f 563 707 564
-f 707 563 709
-f 563 705 709
-f 705 703 709
-f 703 705 704
-f 703 702 709
-f 702 710 709
-f 701 710 702
-f 701 711 710
-f 711 701 699
-f 700 711 699
-f 711 708 706
-f 710 711 706
-f 707 710 706
-f 710 707 709
-f 603 562 566
-f 610 689 627
-f 698 689 610
-f 698 610 609
-f 609 700 698
-f 711 700 609
-f 711 609 605
-f 605 708 711
-f 708 605 604
-f 604 566 708
-f 566 604 603
-f 627 689 688
-f 688 628 627
-f 628 688 681
-f 681 632 628
-f 632 681 674
-f 674 640 632
-f 641 640 674
-f 674 643 641
-f 643 674 675
-f 675 646 643
-f 669 646 675
-f 659 646 669
-# 1419 elements
+# Tue Oct 22 14:45:37 1991
+#
+#
+
+mtllib venus.mtl
+
+g default
+v -27.430000 147.320007 -3.300000
+v -30.480000 135.380005 -9.400000
+v -21.590000 150.619995 -15.490000
+v -26.670000 129.789993 3.300000
+v -24.129999 142.490005 13.460000
+v -15.240000 124.459999 12.450000
+v -13.970000 135.889999 19.049999
+v -18.799999 114.050003 6.350000
+v -31.500000 120.400002 -1.520000
+v -35.810001 128.020004 -13.720000
+v -27.180000 138.429993 -22.610001
+v -35.310001 130.809998 -28.959999
+v -23.879999 140.460007 -27.690001
+v -16.510000 142.240005 -28.450001
+v -13.720000 151.380005 -18.030001
+v -19.049999 134.869995 -38.860001
+v -30.990000 132.330002 -36.830002
+v -8.130000 143.000000 -26.670000
+v -4.320000 138.940002 -31.750000
+v -9.650000 150.110001 -18.799999
+v -40.889999 126.489998 -32.509998
+v -5.840000 149.610001 -15.490000
+v -0.760000 140.210007 -18.799999
+v 0.760000 138.429993 -5.590000
+v 0.250000 145.289993 -3.810000
+v 4.570000 130.050003 -7.870000
+v 0.000000 132.080002 4.830000
+v -0.510000 139.190002 8.890000
+v 2.030000 137.919998 -24.129999
+v 2.790000 135.639999 -34.040001
+v 8.640000 133.600006 -21.080000
+v 0.250000 134.369995 -39.119999
+v -6.100000 142.750000 2.540000
+v -12.190000 145.800003 -7.370000
+v -6.100000 138.940002 11.680000
+v -14.990000 143.759995 4.060000
+v -12.950000 138.679993 16.260000
+v -25.910000 147.830002 -1.020000
+v -21.590000 148.839996 -5.840000
+v -41.150002 125.980003 -25.150000
+v 9.910000 131.830002 -39.619999
+v -20.570000 129.289993 -45.209999
+v -9.910000 124.709999 -48.509998
+v 3.050000 129.289993 -45.209999
+v 18.030001 127.250000 -43.430000
+v 31.500000 124.970001 -35.560001
+v 29.209999 127.000000 -26.420000
+v 10.670000 133.860001 -30.230000
+v 41.660000 121.669998 -27.690001
+v 38.610001 123.699997 -20.070000
+v 26.420000 125.480003 -17.020000
+v 24.889999 120.139999 -9.140000
+v 35.810001 121.160004 -10.920000
+v 0.760000 121.410004 1.270000
+v -6.350000 116.330002 5.080000
+v -6.350000 126.489998 10.410000
+v -7.370000 135.380005 15.490000
+v 38.099998 114.809998 -4.830000
+v 24.889999 110.489998 -1.780000
+v 10.670000 109.220001 4.830000
+v 8.890000 100.330002 9.400000
+v -5.840000 99.059998 11.680000
+v -13.720000 105.160004 9.650000
+v -32.770000 107.190002 5.590000
+v -24.639999 103.629997 9.400000
+v -22.350000 93.980003 13.460000
+v -34.290001 98.040001 9.650000
+v -44.959999 105.160004 1.020000
+v -51.820000 111.760002 -9.140000
+v -52.070000 114.550003 -17.270000
+v -60.709999 108.709999 -16.000000
+v -51.560001 116.589996 -26.160000
+v -58.419998 111.250000 -27.180000
+v -50.040001 118.110001 -34.290001
+v -46.480000 118.110001 -43.689999
+v -55.880001 112.519997 -36.070000
+v -34.799999 117.860001 -52.320000
+v -59.180000 98.550003 0.510000
+v -63.750000 103.120003 -5.840000
+v -53.340000 91.190002 5.840000
+v -47.240002 92.459999 7.620000
+v -41.400002 92.959999 9.910000
+v -36.580002 88.650002 12.950000
+v -46.740002 87.629997 9.140000
+v -30.990000 81.029999 16.000000
+v -19.559999 80.769997 17.530001
+v -4.830000 85.849998 16.000000
+v 6.860000 90.169998 13.970000
+v 18.290001 88.900002 12.190000
+v 19.559999 100.839996 6.350000
+v 28.190001 96.010002 5.840000
+v 33.020000 103.889999 0.760000
+v 44.700001 106.169998 -4.570000
+v 37.080002 98.040001 0.510000
+v 49.279999 97.790001 -6.100000
+v 51.820000 106.930000 -14.730000
+v 46.230000 116.589996 -13.460000
+v 41.150002 120.400002 -12.700000
+v 46.480000 118.360001 -18.799999
+v 51.049999 110.739998 -21.590000
+v 43.939999 116.330002 -34.290001
+v 34.799999 118.870003 -42.419998
+v 26.670000 118.620003 -48.259998
+v 9.140000 116.839996 -55.880001
+v 1.270000 117.599998 -55.119999
+v -4.320000 118.620003 -52.830002
+v -24.379999 119.889999 -51.560001
+v -9.650000 109.980003 -54.860001
+v -7.110000 109.220001 -55.880001
+v -12.950000 109.220001 -55.119999
+v -29.209999 106.169998 -58.930000
+v -24.639999 106.930000 -58.169998
+v -38.349998 104.389999 -56.389999
+v -48.259998 99.820000 -51.049999
+v -56.389999 101.089996 -44.200001
+v -60.450001 106.680000 -36.580002
+v -63.500000 99.059998 -36.070000
+v -64.769997 103.889999 -26.670000
+v -67.559998 101.089996 -14.730000
+v -68.830002 92.459999 -23.370001
+v -72.139999 88.139999 -10.160000
+v 1.780000 109.730003 -59.180000
+v 7.110000 109.220001 -59.939999
+v 18.290001 106.430000 -57.400002
+v 30.230000 104.900002 -52.070000
+v 37.590000 103.120003 -46.230000
+v 44.959999 102.110001 -42.419998
+v 51.049999 93.470001 -38.860001
+v 55.880001 98.040001 -24.889999
+v 56.639999 96.519997 -18.799999
+v 56.130001 94.739998 -14.730000
+v 53.340000 91.949997 -10.160000
+v -66.550003 93.980003 -0.760000
+v -59.180000 86.610001 5.330000
+v -54.099998 79.760002 4.830000
+v -49.529999 80.260002 4.570000
+v -45.470001 79.760002 9.140000
+v -41.910000 84.839996 11.940000
+v 5.080000 80.260002 16.000000
+v 29.209999 88.650002 7.620000
+v 44.200001 92.959999 -4.060000
+v 36.580002 92.459999 -0.510000
+v -61.470001 80.260002 4.830000
+v -67.559998 76.449997 1.780000
+v -71.370003 77.220001 -2.030000
+v -71.879997 72.900002 -14.480000
+v -71.120003 82.040001 -19.299999
+v -66.800003 83.309998 -30.730000
+v -61.470001 92.459999 -39.619999
+v -59.689999 87.879997 -39.880001
+v -53.849998 87.879997 -45.470001
+v -47.500000 86.610001 -52.070000
+v -63.500000 79.500000 -33.529999
+v -63.250000 69.089996 -2.030000
+v -63.250000 74.419998 4.320000
+v -57.660000 70.870003 5.590000
+v -58.930000 67.059998 1.780000
+v -55.880001 75.440002 5.590000
+v -45.209999 70.099998 4.060000
+v -51.049999 68.070000 4.830000
+v -52.320000 66.800003 5.080000
+v -54.860001 61.720001 -1.520000
+v -56.130001 60.709999 -12.950000
+v -49.779999 60.450001 0.510000
+v -53.849998 57.150002 -7.870000
+v -49.020000 54.360001 -6.100000
+v -42.669998 54.099998 -4.570000
+v -45.209999 62.990002 2.540000
+v -39.619999 76.709999 12.700000
+v -32.000000 72.900002 20.320000
+v -38.099998 69.849998 17.270000
+v -40.889999 65.790001 13.970000
+v -41.400002 61.980000 12.700000
+v -41.400002 54.860001 3.810000
+v -24.129999 73.150002 21.340000
+v -18.799999 73.150002 20.830000
+v -10.410000 75.949997 18.030001
+v -3.300000 77.980003 16.260000
+v 11.430000 77.470001 17.780001
+v 17.530001 77.720001 18.799999
+v 22.860001 83.059998 15.750000
+v 28.959999 84.839996 11.180000
+v 34.040001 85.339996 2.540000
+v 34.799999 85.849998 -4.830000
+v 44.700001 84.330002 -7.110000
+v 50.549999 76.199997 -10.920000
+v 56.900002 81.279999 -15.750000
+v 58.669998 85.599998 -22.860001
+v 35.810001 75.180000 -8.890000
+v 32.770000 82.040001 8.130000
+v 32.259998 79.500000 12.700000
+v 29.459999 80.010002 15.240000
+v 24.889999 76.449997 19.049999
+v 16.000000 72.900002 19.299999
+v 8.130000 72.139999 17.530001
+v 1.270000 67.309998 15.750000
+v -4.060000 66.550003 15.750000
+v -14.480000 63.750000 22.100000
+v -17.020000 68.580002 22.860001
+v -21.840000 66.550003 24.129999
+v -21.080000 57.910000 23.879999
+v -29.209999 59.689999 24.639999
+v -29.459999 65.790001 24.379999
+v -34.040001 67.059998 22.860001
+v -36.320000 65.790001 21.340000
+v -37.590000 64.010002 20.570000
+v -37.590000 61.720001 20.320000
+v -39.880001 56.639999 12.950000
+v -37.080002 59.439999 20.070000
+v -32.000000 53.849998 19.809999
+v -33.270000 57.910000 22.610001
+v -27.180000 55.119999 22.610001
+v -35.310001 49.529999 10.410000
+v -35.810001 46.480000 1.780000
+v -42.930000 51.560001 -16.260000
+v -29.459999 48.770000 16.000000
+v -17.270000 52.320000 19.049999
+v -12.450000 58.169998 19.299999
+v -4.830000 57.150002 13.210000
+v -0.250000 53.849998 11.430000
+v -34.540001 61.980000 23.879999
+v 2.790000 58.419998 12.950000
+v 9.910000 64.519997 16.510000
+v 17.270000 68.580002 19.049999
+v 24.129999 73.910004 20.070000
+v 29.719999 76.449997 17.780001
+v 32.770000 73.910004 13.970000
+v 30.230000 71.879997 16.260000
+v 26.160000 72.389999 19.049999
+v 34.799999 78.230003 6.600000
+v 34.540001 71.879997 8.380000
+v 36.070000 73.410004 1.020000
+v 35.049999 74.169998 -4.570000
+v 57.400002 89.150002 -28.450001
+v 57.150002 85.599998 -28.959999
+v 49.020000 74.169998 -23.620001
+v 43.180000 74.169998 -33.529999
+v 52.320000 86.360001 -37.590000
+v 44.450001 84.839996 -42.930000
+v 43.430000 94.739998 -43.430000
+v -8.130000 52.070000 12.700000
+v -48.509998 53.849998 -14.730000
+v -48.770000 58.419998 -21.590000
+v -56.389999 64.769997 -28.190001
+v -47.750000 67.559998 -43.939999
+v -54.099998 79.760002 -37.080002
+v -45.470001 60.959999 -25.400000
+v -60.709999 67.820000 -28.959999
+v -64.769997 69.339996 -26.670000
+v -67.820000 74.169998 -26.920000
+v -59.939999 78.989998 -35.049999
+v -56.130001 72.900002 -32.509998
+v -49.779999 79.250000 -47.240002
+v -37.340000 95.000000 -58.930000
+v -41.150002 79.500000 -56.389999
+v -32.259998 92.199997 -60.959999
+v -24.379999 92.459999 -60.959999
+v -11.430000 94.489998 -58.930000
+v -6.600000 96.010002 -59.180000
+v 2.540000 100.080002 -61.720001
+v 5.590000 100.580002 -61.720001
+v 15.750000 99.059998 -59.939999
+v -36.830002 68.070000 -57.150002
+v -28.190001 72.900002 -61.720001
+v -19.299999 81.529999 -61.720001
+v -9.910000 84.330002 -60.709999
+v -4.570000 84.580002 -61.470001
+v 5.590000 87.379997 -63.250000
+v 13.970000 85.089996 -62.740002
+v 11.430000 69.339996 -62.740002
+v 3.300000 71.629997 -64.010002
+v -3.300000 70.870003 -62.740002
+v -7.370000 70.099998 -62.230000
+v -16.000000 64.769997 -63.750000
+v -25.150000 60.959999 -63.250000
+v -33.529999 57.660000 -59.439999
+v -42.930000 62.230000 -44.450001
+v -38.610001 41.910000 -5.840000
+v -36.070000 34.040001 -7.870000
+v -40.389999 49.020000 -23.110001
+v -34.290001 25.400000 -11.430000
+v -37.340000 31.240000 -28.190001
+v -35.560001 40.130001 -43.180000
+v -34.799999 52.320000 -53.590000
+v -29.209999 43.939999 -57.660000
+v -22.100000 46.990002 -63.250000
+v -15.490000 49.279999 -62.990002
+v -6.600000 52.580002 -63.500000
+v -2.790000 51.820000 -64.260002
+v 4.060000 51.820000 -65.279999
+v 10.160000 48.509998 -64.010002
+v 3.050000 30.730000 -61.209999
+v 8.640000 26.420000 -60.200001
+v -0.760000 31.500000 -59.439999
+v -6.100000 31.240000 -60.200001
+v -13.720000 28.700001 -59.180000
+v -19.299999 27.180000 -60.959999
+v -28.190001 22.860001 -53.340000
+v -33.270000 21.590000 -44.450001
+v 2.290000 6.860000 -53.849998
+v -2.290000 12.950000 -53.090000
+v -11.940000 12.950000 -55.880001
+v -22.350000 14.220000 -57.150002
+v 37.340000 96.519997 -43.939999
+v 36.070000 90.419998 -42.160000
+v 35.810001 80.769997 -40.130001
+v 40.130001 80.010002 -41.660000
+v 34.290001 73.150002 -37.849998
+v 35.810001 64.519997 -27.940001
+v 31.240000 82.300003 -51.310001
+v 29.209999 64.519997 -50.799999
+v 33.270000 92.709999 -48.770000
+v 27.430000 96.010002 -55.369999
+v 24.379999 82.550003 -59.689999
+v 20.830000 66.800003 -58.930000
+v 19.299999 52.830002 -60.959999
+v 28.959999 52.580002 -51.049999
+v 28.959999 46.230000 -49.779999
+v 18.290001 44.450001 -60.200001
+v 36.830002 53.849998 -29.719999
+v 37.849998 53.340000 -23.620001
+v 36.830002 65.279999 -13.720000
+v 38.099998 52.830002 -16.260000
+v 36.830002 41.400002 -30.230000
+v 37.849998 39.369999 -20.570000
+v 47.500000 72.139999 -16.510000
+v 36.070000 69.339996 -10.410000
+v 35.310001 67.309998 -4.570000
+v 32.770000 63.500000 5.590000
+v 29.719999 67.059998 13.460000
+v 21.340000 65.019997 17.530001
+v 17.780001 57.910000 13.210000
+v 6.860000 54.610001 11.430000
+v 28.190001 59.939999 8.130000
+v 33.020000 58.930000 -1.780000
+v 29.719999 55.880001 1.270000
+v 23.620001 53.340000 6.350000
+v 16.510000 52.320000 9.140000
+v -11.940000 48.009998 12.700000
+v -18.799999 44.200001 11.430000
+v 36.580002 51.560001 -10.160000
+v 31.240000 48.259998 -2.290000
+v 24.379999 42.669998 3.560000
+v 19.049999 34.290001 6.350000
+v 14.220000 33.020000 8.890000
+v 2.030000 40.389999 10.920000
+v -10.160000 34.540001 11.430000
+v 3.300000 29.719999 8.380000
+v -10.920000 25.650000 9.140000
+v -2.290000 20.570000 5.330000
+v 11.180000 20.570000 5.330000
+v -9.650000 18.799999 5.080000
+v 18.030001 21.080000 2.030000
+v 25.400000 27.430000 -1.520000
+v 26.920000 35.310001 0.000000
+v 31.750000 36.070000 -4.830000
+v 36.580002 38.349998 -13.460000
+v -25.400000 43.430000 9.400000
+v -17.530001 30.230000 8.640000
+v -23.110001 35.810001 7.110000
+v -18.799999 17.270000 1.520000
+v -24.639999 28.959999 3.810000
+v -29.459999 21.080000 -4.570000
+v -31.750000 29.969999 -2.030000
+v -31.500000 37.849998 1.270000
+v 18.540001 15.490000 1.020000
+v 24.889999 17.270000 -5.080000
+v 33.020000 23.370001 -13.210000
+v 36.070000 27.940001 -18.540001
+v -2.790000 14.220000 5.080000
+v 11.430000 11.180000 3.560000
+v 6.100000 12.450000 4.320000
+v 34.540001 17.270000 -20.070000
+v 34.540001 22.100000 -30.990000
+v 36.070000 32.770000 -30.990000
+v 28.450001 33.020000 -47.750000
+v -9.400000 13.970000 5.080000
+v 33.529999 1.270000 -11.680000
+v 39.369999 -1.520000 -19.049999
+v 24.379999 8.890000 -6.350000
+v 19.049999 6.860000 -1.020000
+v 13.210000 5.840000 2.790000
+v 7.620000 4.320000 3.560000
+v 4.060000 7.110000 3.560000
+v -1.270000 5.080000 3.050000
+v -9.140000 3.300000 5.330000
+v -14.480000 5.590000 4.060000
+v -22.350000 11.430000 -1.020000
+v -28.700001 16.000000 -5.080000
+v -36.070000 13.720000 -13.460000
+v -27.430000 7.870000 -4.830000
+v -39.119999 -2.540000 -4.570000
+v -47.500000 -6.600000 -12.190000
+v -22.100000 5.590000 -0.760000
+v -26.420000 -2.030000 0.000000
+v -42.930000 -10.920000 -3.560000
+v -37.340000 -13.970000 1.020000
+v -23.879999 -19.049999 7.870000
+v -18.030001 -10.410000 8.380000
+v -15.490000 -0.510000 5.840000
+v -9.400000 -1.780000 7.110000
+v -9.400000 -11.680000 10.410000
+v -10.160000 -22.350000 11.180000
+v 1.270000 -11.940000 9.400000
+v -5.080000 -5.840000 8.130000
+v -4.570000 -1.270000 5.840000
+v -3.810000 1.270000 3.810000
+v 2.290000 4.060000 1.520000
+v 4.060000 3.050000 2.030000
+v 4.320000 -1.020000 3.560000
+v 6.600000 -2.540000 5.840000
+v -0.250000 -3.810000 5.080000
+v 0.250000 0.760000 0.000000
+v 14.730000 0.760000 4.060000
+v 19.809999 -2.030000 1.780000
+v 27.690001 -6.600000 -3.560000
+v 36.320000 -10.410000 -9.400000
+v 41.660000 -13.460000 -16.260000
+v 32.259998 -16.000000 -3.560000
+v 26.160000 -19.809999 0.760000
+v 20.570000 -14.730000 4.830000
+v 17.530001 -9.650000 5.840000
+v 14.220000 -6.350000 6.860000
+v 8.890000 -9.140000 8.640000
+v 11.940000 -15.750000 9.140000
+v 2.790000 -22.860001 10.670000
+v 12.190000 -29.969999 8.380000
+v 21.080000 -27.690001 4.060000
+v 38.610001 4.320000 -31.500000
+v 42.419998 -12.190000 -29.719999
+v 43.430000 -23.879999 -14.730000
+v 44.959999 -25.650000 -26.670000
+v 47.240002 -39.369999 -23.620001
+v 46.480000 -40.389999 -10.920000
+v 46.990002 -56.389999 -6.350000
+v 48.770000 -62.230000 -17.780001
+v 43.689999 -44.700001 -4.060000
+v 39.880001 -35.560001 -3.560000
+v 37.340000 -24.129999 -5.840000
+v 28.450001 -25.910000 0.000000
+v 32.509998 -36.320000 1.020000
+v 34.799999 -42.930000 1.520000
+v 25.400000 -41.400002 4.320000
+v 23.370001 -32.770000 3.560000
+v 14.220000 -38.349998 7.370000
+v 16.760000 -42.669998 6.600000
+v 4.830000 -31.500000 10.410000
+v 7.620000 -43.689999 9.650000
+v -1.020000 -45.470001 10.920000
+v -10.670000 -32.259998 10.670000
+v -9.650000 -45.720001 10.920000
+v -22.100000 -41.910000 9.140000
+v -15.750000 -49.279999 10.410000
+v -28.190001 -46.990002 8.890000
+v -29.459999 -30.990000 6.600000
+v -33.529999 -25.650000 4.830000
+v -36.580002 -29.969999 4.830000
+v -45.970001 -21.840000 -2.540000
+v -51.560001 -21.590000 -8.640000
+v -50.799999 -9.910000 -18.799999
+v -46.230000 1.520000 -31.500000
+v -42.419998 7.870000 -23.879999
+v -38.099998 18.030001 -32.259998
+v -55.369999 -40.639999 -5.840000
+v -56.389999 -37.080002 -12.190000
+v -49.020000 -39.369999 1.020000
+v -49.529999 -48.770000 3.300000
+v -57.400002 -57.660000 -3.560000
+v -37.590000 -43.939999 8.130000
+v -35.810001 -57.400002 14.220000
+v -41.150002 10.410000 -41.660000
+v -52.320000 -19.049999 -29.459999
+v -53.849998 -22.100000 -14.990000
+v -54.360001 -31.240000 -26.920000
+v -49.279999 -25.650000 -44.959999
+v -54.360001 -45.209999 -36.320000
+v -46.740002 -12.450000 -45.209999
+v -41.150002 3.560000 -44.700001
+v -29.969999 13.460000 -51.049999
+v -35.310001 4.570000 -50.040001
+v -25.910000 5.590000 -53.849998
+v -30.480000 -4.570000 -55.630001
+v -40.889999 -8.380000 -51.310001
+v -45.470001 -24.379999 -50.799999
+v -45.970001 -34.799999 -51.310001
+v -41.150002 -24.639999 -54.860001
+v -39.880001 -38.610001 -58.669998
+v -29.969999 -28.190001 -60.450001
+v -30.230000 -16.000000 -57.660000
+v 15.240000 18.030001 -56.389999
+v 28.190001 18.540001 -45.970001
+v 21.590000 12.700000 -52.580002
+v 26.670000 2.540000 -51.049999
+v 8.380000 7.110000 -55.880001
+v -4.570000 6.860000 -53.340000
+v -13.970000 5.840000 -54.860001
+v -18.799999 7.110000 -55.369999
+v -25.150000 -1.520000 -54.610001
+v -18.799999 -25.150000 -60.709999
+v -21.840000 -34.040001 -61.720001
+v -19.299999 -18.030001 -59.939999
+v -24.639999 -12.450000 -57.400002
+v -20.320000 -2.540000 -55.369999
+v -14.730000 -3.810000 -55.630001
+v -8.890000 -4.830000 -55.369999
+v -1.270000 -5.330000 -54.610001
+v 8.380000 0.000000 -55.369999
+v 12.950000 3.810000 -55.369999
+v 20.070000 -4.060000 -53.590000
+v 27.940001 -8.640000 -52.070000
+v 19.809999 -17.020000 -58.169998
+v 26.920000 -20.570000 -56.130001
+v 33.529999 -22.350000 -50.799999
+v 33.020000 -13.210000 -48.009998
+v 10.160000 -21.590000 -58.669998
+v 2.540000 -16.760000 -57.660000
+v -4.570000 -13.210000 -56.900002
+v -13.460000 -16.760000 -58.669998
+v -17.780001 -11.430000 -57.400002
+v -8.890000 -27.430000 -59.439999
+v 2.790000 -30.480000 -59.939999
+v 17.530001 -26.420000 -60.709999
+v 24.129999 -35.560001 -59.689999
+v 32.259998 -30.480000 -52.830002
+v 12.450000 -41.910000 -65.019997
+v 20.320000 -50.290001 -62.990002
+v 0.510000 -47.750000 -64.519997
+v -4.060000 -38.099998 -58.669998
+v -9.650000 -34.040001 -58.169998
+v -14.480000 -31.750000 -59.689999
+v -16.760000 -38.349998 -61.209999
+v 35.310001 -1.020000 -41.910000
+v 32.509998 -4.060000 -47.240002
+v 36.580002 -15.750000 -44.200001
+v 40.639999 -20.320000 -38.610001
+v 37.849998 -24.889999 -44.450001
+v 40.889999 -41.400002 -39.619999
+v -9.650000 -44.200001 -56.389999
+v -21.840000 -38.349998 -62.740002
+v -29.719999 -39.119999 -62.740002
+v 28.450001 -41.400002 -55.880001
+v 25.910000 -53.590000 -58.419998
+v 16.000000 -62.480000 -65.019997
+v 4.830000 -57.910000 -67.059998
+v 13.460000 -54.610001 -66.550003
+v 6.600000 -65.019997 -66.290001
+v 9.400000 -69.599998 -65.019997
+v 11.430000 -74.169998 -62.480000
+v 23.370001 -73.150002 -57.660000
+v 13.970000 -80.260002 -57.910000
+v 19.299999 -82.300003 -53.590000
+v 24.889999 -83.570000 -48.009998
+v 30.480000 -74.419998 -48.770000
+v 41.400002 -60.959999 -36.320000
+v 48.770000 -73.150002 -15.240000
+v 41.150002 -75.690002 -33.020000
+v 37.080002 -75.440002 -39.119999
+v 26.670000 -86.360001 -44.700001
+v 32.259998 -90.419998 -38.349998
+v 41.660000 -84.580002 -30.480000
+v 43.180000 -92.459999 -27.430000
+v 50.040001 -82.800003 -11.180000
+v 35.810001 -48.509998 2.540000
+v 43.939999 -68.580002 7.370000
+v 48.009998 -73.660004 1.520000
+v 50.040001 -94.489998 12.950000
+v -14.480000 -52.320000 -61.720001
+v -8.890000 -53.849998 -56.639999
+v -9.400000 -63.500000 -56.389999
+v -14.480000 -65.279999 -60.959999
+v -14.220000 -72.389999 -56.900002
+v -9.400000 -70.870003 -53.090000
+v -0.250000 -73.660004 -60.709999
+v -14.480000 -75.180000 -54.360001
+v -8.890000 -76.199997 -45.970001
+v 2.030000 -82.040001 -54.610001
+v -0.760000 -65.790001 -63.750000
+v -21.590000 -77.980003 -55.880001
+v -18.290001 -65.019997 -62.480000
+v -23.879999 -73.910004 -59.939999
+v -24.889999 -57.660000 -65.019997
+v -22.860001 -51.820000 -65.790001
+v -29.459999 -52.070000 -65.279999
+v -39.619999 -43.430000 -59.689999
+v -4.570000 -51.310001 -61.470001
+v -5.330000 -62.230000 -61.470001
+v -4.830000 -73.150002 -57.660000
+v -2.540000 -82.040001 -51.049999
+v -4.830000 -80.260002 -49.020000
+v -0.250000 -60.200001 -65.019997
+v -39.119999 -53.590000 -60.959999
+v -29.459999 -61.720001 -64.010002
+v -39.880001 -60.200001 -60.200001
+v -38.349998 -68.830002 -58.669998
+v -32.770000 -74.169998 -57.660000
+v -42.930000 -73.150002 -50.290001
+v -39.880001 -80.519997 -46.480000
+v -35.560001 -81.029999 -48.770000
+v -32.000000 -80.519997 -51.560001
+v -19.049999 -80.010002 -52.580002
+v -15.240000 -78.739998 -49.529999
+v -26.670000 -68.330002 -62.480000
+v 52.830002 -103.889999 -2.030000
+v 44.450001 -112.519997 -21.590000
+v 38.099998 -115.059998 -26.920000
+v 36.580002 -96.269997 -33.529999
+v 26.670000 -91.690002 -40.639999
+v 20.570000 -99.309998 -37.080002
+v 22.610001 -115.059998 -31.240000
+v 10.410000 -112.269997 -29.209999
+v 9.140000 -99.309998 -34.040001
+v 8.640000 -91.440002 -38.349998
+v 17.530001 -92.459999 -41.660000
+v 20.070000 -86.870003 -47.750000
+v 15.490000 -86.110001 -50.799999
+v 3.050000 -84.580002 -51.310001
+v 6.100000 -87.379997 -46.230000
+v 17.020000 -89.919998 -44.700001
+v 0.250000 -86.110001 -42.930000
+v 3.810000 -89.150002 -35.310001
+v 0.000000 -86.110001 -31.500000
+v 2.790000 -98.040001 -28.700001
+v -3.300000 -83.059998 -41.400002
+v -5.080000 -83.570000 -27.430000
+v -2.290000 -96.519997 -22.350000
+v 3.810000 -102.110001 -27.430000
+v 0.250000 -103.889999 -20.830000
+v -1.780000 -106.169998 -22.860001
+v -8.380000 -78.739998 -37.590000
+v -12.950000 -83.059998 -35.810001
+v -7.620000 -97.790001 -29.209999
+v -9.140000 -113.790001 -30.990000
+v -16.000000 -98.550003 -35.810001
+v -19.809999 -85.089996 -40.389999
+v -28.190001 -84.070000 -46.230000
+v -37.080002 -86.110001 -40.889999
+v -27.430000 -85.849998 -41.400002
+v -27.690001 -91.440002 -40.889999
+v -24.639999 -98.040001 -38.610001
+v -18.290001 -115.320000 -34.799999
+v -26.160000 -114.550003 -35.049999
+v -34.290001 -96.519997 -37.849998
+v -37.849998 -113.540001 -30.990000
+v -41.660000 -94.739998 -34.540001
+v -49.779999 -92.709999 -26.670000
+v -46.740002 -112.010002 -22.860001
+v -49.279999 -81.029999 -34.290001
+v -43.430000 -84.070000 -38.349998
+v -50.799999 -69.849998 -39.119999
+v -47.500000 -68.070000 -47.500000
+v -41.150002 -65.790001 -57.400002
+v -44.450001 -60.959999 -54.860001
+v -48.009998 -55.119999 -48.259998
+v -53.590000 -57.660000 -38.610001
+v -54.860001 -68.830002 -30.730000
+v -53.090000 -78.989998 -28.959999
+v -54.360001 -89.919998 -13.970000
+v -56.639999 -76.709999 -15.490000
+v -50.799999 -111.000000 -10.670000
+v -42.669998 -46.480000 -56.389999
+v -42.930000 -54.610001 -57.150002
+v -48.509998 -42.930000 -46.740002
+v -51.560001 -48.770000 -41.910000
+v -55.880001 -57.660000 -33.020000
+v -58.669998 -57.660000 -19.809999
+v -56.639999 -42.419998 -24.639999
+v -55.880001 -74.680000 -1.020000
+v -54.099998 -86.870003 0.510000
+v -50.549999 -107.440002 5.590000
+v -46.990002 -83.059998 11.940000
+v -34.540001 -70.360001 18.799999
+v -48.770000 -64.519997 8.130000
+v -33.270000 -79.760002 21.340000
+v -30.990000 -101.599998 25.650000
+v -43.180000 -104.650002 17.270000
+v -57.150002 -41.910000 -11.180000
+v -58.419998 -57.660000 -6.350000
+v -58.930000 -65.019997 -10.920000
+v -25.400000 -56.389999 14.220000
+v -18.540001 -78.739998 21.590000
+v -14.480000 -98.809998 25.650000
+v -18.540001 -53.090000 9.400000
+v -4.570000 -55.369999 11.180000
+v -6.860000 -58.669998 10.410000
+v -7.870000 -61.470001 7.370000
+v -8.640000 -70.870003 13.720000
+v -6.100000 -86.110001 17.270000
+v -4.060000 -96.769997 19.559999
+v -0.760000 -95.250000 14.730000
+v -0.250000 -82.800003 8.130000
+v -0.510000 -68.070000 1.020000
+v -1.780000 -60.959999 9.400000
+v 2.540000 -56.389999 10.670000
+v 5.080000 -59.689999 8.890000
+v 7.370000 -62.990002 6.600000
+v 6.860000 -72.389999 13.210000
+v 6.600000 -85.339996 18.799999
+v 6.860000 -97.279999 22.610001
+v 13.720000 -88.389999 24.129999
+v 14.220000 -98.300003 27.690001
+v 13.720000 -79.760002 20.830000
+v 12.950000 -67.559998 14.220000
+v 12.700000 -58.169998 6.600000
+v 9.910000 -54.860001 9.140000
+v 23.879999 -49.279999 5.080000
+v 34.799999 -80.519997 21.840000
+v 36.070000 -64.010002 11.680000
+v 34.799999 -89.410004 26.160000
+v 24.639999 -58.169998 10.670000
+v 23.370001 -73.410004 19.809999
+v 24.379999 -91.440002 27.940001
+# 711 vertices
+
+# 0 texture vertices
+
+# 0 normals
+
+g d
+usemtl vskin
+s 1
+f 3 2 1
+f 2 4 1
+f 5 1 4
+f 6 5 4
+f 7 5 6
+f 6 4 8
+f 9 8 4
+f 2 9 4
+f 10 9 2
+f 2 11 10
+f 3 11 2
+f 12 10 11
+f 12 11 13
+f 3 13 11
+f 3 15 14
+f 14 13 3
+f 14 16 13
+f 13 16 17
+f 19 16 18
+f 18 16 14
+f 20 18 14
+f 15 20 14
+f 12 17 21
+f 17 12 13
+f 23 18 22
+f 22 18 20
+f 22 25 24
+f 23 24 26
+f 24 23 22
+f 28 27 25
+f 25 27 24
+f 24 27 26
+f 29 18 23
+f 18 29 19
+f 30 19 29
+f 30 29 31
+f 31 29 23
+f 23 26 31
+f 19 30 32
+f 32 16 19
+f 28 25 33
+f 33 25 34
+f 33 35 28
+f 33 36 35
+f 35 36 37
+f 37 36 5
+f 5 36 38
+f 38 36 39
+f 38 39 3
+f 1 38 3
+f 1 5 38
+f 3 39 34
+f 15 3 34
+f 20 15 34
+f 22 20 34
+f 25 22 34
+f 36 33 34
+f 39 36 34
+f 40 10 12
+f 12 21 40
+f 30 41 32
+f 42 16 32
+f 32 43 42
+f 44 43 32
+f 32 41 44
+f 45 44 41
+f 41 46 45
+f 41 47 46
+f 47 41 48
+f 30 48 41
+f 31 48 30
+f 47 48 31
+f 47 50 49
+f 49 46 47
+f 50 47 51
+f 51 47 31
+f 51 31 52
+f 53 51 52
+f 51 53 50
+f 31 26 52
+f 26 54 52
+f 26 27 54
+f 54 27 55
+f 55 27 56
+f 56 27 57
+f 57 27 28
+f 57 28 35
+f 37 57 35
+f 7 57 37
+f 58 53 52
+f 59 58 52
+f 60 59 52
+f 54 60 52
+f 55 60 54
+f 61 60 55
+f 61 55 62
+f 62 55 63
+f 63 55 8
+f 55 6 8
+f 56 6 55
+f 57 7 56
+f 6 56 7
+f 8 9 64
+f 64 65 8
+f 63 8 65
+f 63 65 66
+f 66 62 63
+f 66 65 67
+f 65 64 67
+f 64 68 67
+f 68 64 9
+f 69 68 9
+f 9 10 69
+f 71 69 70
+f 70 69 10
+f 70 72 71
+f 71 72 73
+f 5 7 37
+f 10 40 70
+f 70 40 72
+f 72 40 74
+f 40 21 74
+f 74 21 75
+f 21 17 75
+f 73 72 74
+f 74 76 73
+f 74 75 76
+f 17 77 75
+f 42 77 17
+f 17 16 42
+f 79 78 69
+f 78 68 69
+f 68 78 80
+f 81 68 80
+f 81 82 68
+f 68 82 67
+f 82 83 67
+f 84 83 82
+f 82 81 84
+f 84 81 80
+f 83 66 67
+f 66 83 85
+f 86 66 85
+f 66 86 87
+f 62 66 87
+f 88 62 87
+f 62 88 61
+f 89 61 88
+f 61 89 90
+f 59 60 90
+f 60 61 90
+f 89 91 90
+f 91 59 90
+f 59 91 92
+f 58 59 92
+f 93 58 92
+f 94 93 92
+f 91 94 92
+f 94 95 93
+f 96 93 95
+f 97 93 96
+f 58 93 97
+f 97 98 58
+f 53 58 98
+f 53 98 50
+f 99 50 98
+f 100 99 97
+f 98 97 99
+f 97 96 100
+f 99 49 50
+f 101 49 99
+f 99 100 101
+f 46 49 101
+f 101 102 46
+f 102 103 46
+f 45 46 103
+f 104 45 103
+f 44 45 104
+f 104 105 44
+f 106 44 105
+f 44 106 43
+f 42 43 107
+f 43 106 108
+f 108 106 109
+f 43 108 110
+f 107 43 110
+f 107 77 42
+f 77 107 111
+f 107 112 111
+f 112 107 110
+f 113 77 111
+f 113 114 77
+f 75 77 114
+f 75 114 115
+f 115 116 75
+f 76 75 116
+f 116 115 117
+f 117 118 116
+f 116 73 76
+f 73 116 118
+f 73 118 71
+f 71 118 119
+f 118 117 120
+f 119 118 120
+f 121 119 120
+f 109 106 122
+f 122 106 105
+f 105 104 122
+f 104 123 122
+f 124 123 104
+f 103 124 104
+f 124 103 125
+f 103 102 125
+f 125 102 126
+f 126 102 101
+f 101 127 126
+f 128 127 101
+f 128 101 100
+f 100 129 128
+f 129 100 130
+f 130 100 96
+f 95 131 96
+f 96 131 130
+f 132 131 95
+f 79 69 71
+f 71 119 79
+f 133 119 121
+f 119 133 79
+f 78 79 133
+f 133 134 78
+f 78 134 80
+f 134 135 80
+f 136 84 80
+f 135 136 80
+f 136 137 84
+f 138 84 137
+f 84 138 83
+f 83 138 85
+f 139 88 87
+f 88 139 89
+f 140 91 89
+f 91 140 94
+f 94 142 141
+f 94 140 142
+f 95 94 141
+f 132 95 141
+f 135 134 143
+f 143 134 133
+f 133 144 143
+f 133 145 144
+f 121 145 133
+f 146 145 121
+f 121 120 147
+f 121 147 146
+f 147 120 148
+f 120 117 148
+f 148 117 149
+f 117 115 149
+f 115 151 150
+f 115 114 151
+f 151 114 152
+f 153 148 149
+f 150 153 149
+f 145 146 154
+f 144 145 154
+f 155 144 154
+f 144 155 143
+f 156 143 155
+f 157 155 154
+f 155 157 156
+f 158 143 156
+f 143 158 135
+f 135 158 159
+f 158 160 159
+f 158 156 160
+f 156 161 160
+f 156 157 161
+f 161 157 162
+f 163 162 157
+f 161 162 164
+f 163 165 162
+f 166 162 165
+f 162 166 164
+f 166 167 164
+f 167 168 164
+f 168 161 164
+f 168 160 161
+f 160 168 159
+f 136 135 159
+f 137 136 159
+f 169 138 137
+f 138 169 85
+f 169 170 85
+f 170 169 171
+f 171 169 159
+f 169 137 159
+f 172 171 159
+f 173 172 159
+f 168 173 159
+f 173 168 174
+f 168 167 174
+f 170 175 85
+f 175 86 85
+f 86 175 176
+f 177 86 176
+f 163 157 154
+f 146 163 154
+f 86 177 87
+f 177 178 87
+f 178 139 87
+f 89 139 179
+f 180 89 179
+f 180 181 89
+f 89 181 182
+f 140 89 182
+f 142 140 183
+f 183 140 182
+f 142 184 141
+f 184 185 141
+f 185 132 141
+f 132 185 186
+f 186 187 132
+f 187 131 132
+f 188 131 187
+f 186 185 189
+f 189 185 184
+f 190 183 182
+f 191 190 182
+f 181 192 182
+f 193 192 181
+f 181 180 193
+f 180 194 193
+f 194 180 179
+f 195 194 179
+f 139 195 179
+f 196 195 139
+f 139 178 196
+f 196 178 197
+f 197 178 177
+f 198 197 177
+f 199 198 177
+f 199 177 176
+f 200 199 176
+f 199 200 198
+f 198 200 201
+f 202 201 200
+f 202 200 203
+f 200 175 203
+f 175 170 203
+f 175 200 176
+f 170 204 203
+f 171 204 170
+f 205 204 171
+f 206 205 171
+f 171 172 206
+f 207 206 172
+f 172 173 207
+f 208 207 173
+f 208 173 174
+f 209 207 208
+f 208 210 209
+f 211 209 210
+f 210 202 211
+f 202 210 212
+f 201 202 212
+f 213 208 174
+f 167 214 174
+f 214 213 174
+f 215 167 166
+f 213 210 208
+f 213 216 210
+f 210 216 212
+f 216 217 212
+f 217 201 212
+f 201 217 218
+f 198 201 218
+f 197 198 218
+f 219 197 218
+f 197 219 220
+f 221 204 205
+f 205 206 221
+f 207 221 206
+f 209 221 207
+f 209 211 221
+f 221 211 202
+f 221 202 203
+f 204 221 203
+f 220 222 197
+f 196 197 222
+f 196 222 223
+f 195 196 223
+f 194 195 223
+f 224 194 223
+f 224 225 194
+f 193 194 225
+f 193 225 226
+f 192 193 226
+f 191 192 226
+f 227 191 226
+f 228 227 226
+f 229 228 226
+f 225 229 226
+f 192 191 182
+f 183 184 142
+f 183 190 230
+f 190 191 230
+f 191 227 230
+f 227 231 230
+f 231 232 230
+f 232 183 230
+f 183 232 233
+f 233 184 183
+f 189 184 233
+f 130 131 188
+f 188 234 130
+f 129 130 234
+f 234 128 129
+f 235 234 188
+f 236 235 188
+f 235 236 237
+f 237 238 235
+f 238 128 234
+f 235 238 234
+f 237 239 238
+f 128 238 239
+f 239 240 128
+f 240 127 128
+f 126 127 240
+f 241 220 219
+f 242 165 163
+f 166 242 215
+f 165 242 166
+f 163 243 242
+f 244 243 163
+f 247 246 245
+f 242 243 215
+f 163 248 244
+f 249 248 163
+f 163 146 249
+f 249 146 250
+f 147 250 146
+f 250 147 148
+f 148 153 250
+f 250 153 249
+f 251 249 153
+f 248 249 251
+f 251 252 248
+f 248 252 244
+f 244 252 247
+f 243 244 247
+f 247 215 243
+f 252 246 247
+f 251 246 252
+f 153 150 251
+f 251 150 246
+f 150 149 115
+f 150 151 246
+f 253 246 151
+f 245 246 253
+f 253 151 152
+f 114 113 152
+f 254 152 113
+f 254 113 111
+f 253 255 245
+f 152 255 253
+f 255 152 254
+f 255 254 256
+f 256 254 111
+f 257 256 111
+f 112 257 111
+f 257 112 110
+f 258 257 110
+f 108 258 110
+f 108 259 258
+f 259 108 109
+f 122 259 109
+f 259 122 260
+f 260 122 123
+f 123 261 260
+f 123 262 261
+f 262 123 124
+f 263 245 255
+f 264 263 255
+f 264 255 256
+f 256 265 264
+f 265 256 257
+f 257 258 265
+f 258 266 265
+f 267 258 259
+f 266 258 267
+f 268 267 259
+f 268 260 261
+f 259 260 268
+f 261 262 268
+f 262 269 268
+f 268 269 270
+f 270 271 268
+f 268 271 267
+f 271 272 267
+f 267 272 273
+f 273 266 267
+f 273 265 266
+f 265 273 274
+f 274 264 265
+f 275 264 274
+f 263 264 275
+f 275 276 263
+f 276 277 263
+f 245 263 277
+f 247 245 277
+f 167 215 278
+f 215 279 278
+f 215 280 279
+f 279 280 281
+f 280 282 281
+f 282 280 283
+f 280 277 283
+f 280 247 277
+f 247 280 215
+f 277 284 283
+f 284 285 283
+f 284 277 276
+f 276 285 284
+f 286 285 276
+f 275 286 276
+f 274 286 275
+f 274 287 286
+f 288 287 274
+f 273 288 274
+f 289 288 273
+f 273 272 289
+f 272 271 289
+f 271 290 289
+f 270 290 271
+f 291 290 270
+f 292 290 291
+f 291 293 292
+f 290 292 289
+f 294 289 292
+f 295 289 294
+f 288 289 295
+f 295 287 288
+f 296 287 295
+f 297 287 296
+f 286 287 297
+f 297 285 286
+f 285 297 298
+f 285 298 283
+f 298 299 283
+f 299 282 283
+f 292 293 300
+f 300 294 292
+f 301 294 300
+f 295 294 301
+f 302 295 301
+f 302 296 295
+f 296 302 297
+f 297 302 303
+f 298 297 303
+f 126 240 304
+f 240 305 304
+f 240 239 305
+f 305 239 306
+f 237 307 239
+f 308 307 237
+f 237 236 309
+f 309 308 237
+f 306 307 308
+f 307 306 239
+f 306 308 310
+f 305 306 310
+f 311 308 309
+f 310 308 311
+f 312 305 310
+f 305 312 304
+f 312 125 304
+f 125 126 304
+f 125 262 124
+f 313 262 125
+f 312 313 125
+f 313 312 314
+f 312 310 314
+f 310 311 314
+f 311 315 314
+f 315 270 314
+f 270 269 314
+f 269 262 314
+f 262 313 314
+f 291 270 316
+f 270 315 316
+f 315 311 316
+f 311 317 316
+f 317 318 316
+f 318 319 316
+f 319 291 316
+f 320 318 317
+f 317 311 320
+f 320 311 309
+f 309 321 320
+f 309 322 321
+f 321 322 323
+f 321 324 320
+f 324 318 320
+f 325 324 321
+f 321 323 325
+f 188 187 236
+f 236 187 326
+f 309 236 326
+f 187 186 326
+f 322 309 326
+f 186 322 326
+f 186 327 322
+f 189 327 186
+f 327 189 328
+f 233 328 189
+f 232 328 233
+f 328 232 329
+f 232 231 329
+f 330 231 227
+f 227 228 330
+f 330 228 229
+f 229 331 330
+f 229 225 331
+f 331 225 224
+f 333 332 223
+f 332 331 223
+f 331 224 223
+f 331 332 334
+f 334 330 331
+f 330 334 329
+f 231 330 329
+f 335 328 329
+f 336 335 329
+f 334 336 329
+f 336 334 337
+f 334 332 337
+f 332 338 337
+f 333 338 332
+f 333 222 220
+f 241 219 218
+f 217 241 218
+f 241 217 339
+f 339 217 340
+f 340 217 216
+f 328 322 327
+f 323 322 341
+f 341 322 328
+f 328 335 341
+f 341 335 342
+f 335 336 342
+f 336 343 342
+f 343 336 337
+f 338 343 337
+f 343 338 344
+f 338 345 344
+f 346 345 338
+f 338 333 346
+f 346 333 220
+f 220 241 346
+f 346 241 339
+f 347 346 339
+f 346 347 348
+f 347 349 348
+f 349 350 348
+f 345 346 348
+f 351 345 348
+f 350 351 348
+f 352 350 349
+f 351 353 345
+f 345 353 344
+f 353 354 344
+f 354 355 344
+f 355 343 344
+f 343 355 342
+f 355 356 342
+f 354 356 355
+f 356 341 342
+f 341 356 357
+f 341 357 323
+f 357 325 323
+f 222 333 223
+f 339 340 347
+f 216 358 340
+f 340 360 359
+f 340 358 360
+f 347 340 359
+f 349 347 359
+f 361 349 359
+f 361 352 349
+f 362 361 359
+f 363 361 362
+f 362 364 363
+f 279 363 364
+f 363 279 281
+f 279 364 365
+f 279 365 278
+f 365 214 278
+f 214 167 278
+f 358 216 213
+f 213 214 358
+f 214 365 358
+f 365 360 358
+f 360 362 359
+f 362 360 365
+f 365 364 362
+f 354 353 366
+f 367 354 366
+f 354 367 368
+f 368 356 354
+f 357 356 368
+f 368 369 357
+f 353 351 366
+f 351 350 370
+f 351 372 371
+f 351 371 366
+f 368 367 373
+f 369 368 373
+f 373 374 369
+f 375 369 374
+f 325 369 375
+f 357 369 325
+f 375 324 325
+f 375 318 324
+f 376 318 375
+f 374 376 375
+f 352 361 377
+f 350 352 370
+f 352 377 370
+f 372 351 370
+f 379 373 378
+f 373 380 378
+f 373 367 380
+f 380 367 366
+f 381 380 366
+f 382 381 366
+f 371 382 366
+f 382 371 383
+f 371 384 383
+f 384 371 372
+f 384 372 370
+f 385 384 370
+f 386 385 370
+f 377 386 370
+f 387 386 377
+f 377 361 387
+f 387 361 388
+f 361 363 388
+f 363 389 388
+f 389 363 281
+f 390 389 281
+f 390 391 389
+f 392 391 390
+f 390 393 392
+f 389 391 388
+f 391 394 388
+f 394 391 395
+f 395 391 392
+f 392 393 396
+f 392 396 397
+f 395 392 397
+f 398 395 397
+f 398 399 395
+f 395 399 400
+f 394 395 400
+f 387 394 400
+f 394 387 388
+f 386 387 400
+f 401 386 400
+f 402 401 400
+f 399 402 400
+f 399 398 402
+f 403 402 398
+f 402 403 404
+f 405 402 404
+f 405 401 402
+f 401 405 406
+f 386 401 406
+f 407 386 406
+f 385 386 407
+f 384 385 408
+f 408 409 384
+f 384 409 383
+f 409 410 383
+f 410 411 383
+f 410 412 411
+f 411 412 404
+f 412 405 404
+f 405 412 406
+f 412 407 406
+f 385 407 413
+f 408 385 413
+f 409 408 413
+f 410 409 413
+f 412 410 413
+f 407 412 413
+f 411 414 383
+f 414 381 382
+f 414 382 383
+f 415 381 414
+f 416 381 415
+f 380 381 416
+f 380 416 378
+f 416 417 378
+f 417 379 378
+f 418 379 417
+f 417 416 419
+f 416 420 419
+f 420 416 421
+f 416 422 421
+f 415 422 416
+f 415 414 423
+f 414 411 423
+f 411 424 423
+f 424 411 404
+f 425 424 404
+f 426 425 404
+f 403 426 404
+f 425 426 427
+f 428 425 427
+f 425 428 421
+f 428 420 421
+f 422 425 421
+f 425 422 423
+f 424 425 423
+f 422 415 423
+f 429 374 373
+f 373 379 429
+f 430 429 379
+f 379 418 430
+f 430 418 431
+f 431 432 430
+f 433 432 431
+f 431 434 433
+f 433 434 435
+f 433 435 436
+f 435 434 437
+f 437 434 438
+f 434 431 438
+f 431 439 438
+f 431 418 439
+f 439 418 417
+f 439 417 419
+f 440 439 419
+f 439 440 438
+f 440 441 438
+f 441 442 438
+f 442 437 438
+f 442 441 443
+f 441 444 443
+f 441 440 444
+f 420 440 419
+f 420 428 440
+f 444 440 428
+f 428 445 444
+f 446 444 445
+f 444 446 443
+f 445 428 427
+f 447 445 427
+f 445 447 448
+f 446 445 448
+f 447 449 448
+f 449 447 450
+f 447 426 450
+f 426 447 427
+f 426 403 450
+f 451 449 450
+f 452 451 450
+f 452 454 453
+f 454 452 455
+f 455 452 450
+f 398 455 450
+f 403 398 450
+f 456 398 397
+f 398 456 455
+f 457 455 456
+f 456 458 457
+f 458 456 397
+f 396 458 397
+f 458 396 393
+f 393 459 458
+f 459 393 460
+f 460 393 461
+f 393 390 462
+f 390 463 462
+f 459 464 458
+f 464 459 465
+f 458 464 466
+f 466 464 467
+f 468 467 464
+f 466 467 469
+f 467 470 469
+f 454 455 469
+f 455 457 469
+f 457 458 469
+f 458 466 469
+f 282 463 281
+f 463 390 281
+f 282 299 463
+f 463 299 471
+f 461 463 471
+f 463 461 462
+f 461 393 462
+f 461 472 460
+f 460 472 473
+f 473 459 460
+f 465 459 473
+f 473 474 465
+f 474 473 472
+f 476 474 475
+f 474 472 475
+f 472 477 475
+f 461 477 472
+f 477 461 478
+f 471 478 461
+f 478 471 299
+f 299 298 479
+f 478 299 479
+f 480 478 479
+f 481 480 479
+f 479 303 481
+f 298 303 479
+f 481 482 480
+f 480 482 483
+f 478 480 483
+f 483 477 478
+f 484 477 483
+f 477 484 475
+f 484 485 475
+f 484 486 485
+f 485 486 487
+f 486 488 487
+f 489 488 486
+f 486 483 489
+f 483 482 489
+f 483 486 484
+f 319 293 291
+f 319 490 293
+f 493 492 491
+f 490 491 492
+f 293 490 494
+f 293 494 300
+f 300 495 301
+f 301 495 302
+f 302 495 496
+f 496 497 302
+f 303 302 497
+f 497 481 303
+f 498 482 481
+f 489 482 498
+f 499 488 489
+f 500 488 499
+f 499 489 501
+f 501 489 502
+f 489 498 502
+f 498 503 502
+f 481 497 498
+f 498 497 503
+f 503 497 496
+f 496 504 503
+f 496 505 504
+f 495 505 496
+f 506 505 495
+f 506 495 300
+f 300 507 506
+f 300 494 507
+f 494 508 507
+f 490 508 494
+f 492 508 490
+f 508 492 509
+f 509 492 493
+f 493 510 509
+f 508 509 507
+f 510 512 511
+f 510 514 513
+f 513 512 510
+f 511 509 510
+f 515 509 511
+f 507 509 515
+f 515 516 507
+f 517 507 516
+f 506 507 517
+f 517 505 506
+f 518 505 517
+f 504 505 518
+f 518 519 504
+f 503 504 519
+f 503 519 502
+f 519 501 502
+f 501 519 518
+f 501 518 499
+f 518 520 499
+f 520 518 517
+f 520 516 515
+f 517 516 520
+f 515 521 520
+f 522 521 515
+f 511 522 515
+f 511 512 522
+f 523 522 512
+f 512 524 523
+f 513 524 512
+f 523 525 522
+f 523 526 525
+f 525 521 522
+f 527 521 525
+f 521 527 528
+f 520 521 528
+f 528 529 520
+f 530 520 529
+f 530 499 520
+f 499 530 531
+f 500 499 531
+f 376 319 318
+f 319 376 490
+f 491 490 376
+f 491 376 374
+f 374 429 491
+f 491 429 532
+f 532 533 491
+f 491 533 493
+f 510 493 533
+f 533 514 510
+f 534 514 533
+f 533 532 534
+f 532 430 534
+f 429 430 532
+f 535 534 430
+f 430 432 535
+f 432 536 535
+f 537 536 432
+f 432 433 537
+f 536 534 535
+f 514 534 513
+f 513 534 536
+f 524 513 536
+f 524 536 537
+f 529 538 530
+f 530 538 531
+f 539 500 531
+f 539 540 500
+f 500 540 488
+f 488 540 487
+f 524 541 523
+f 526 523 541
+f 526 541 542
+f 542 543 526
+f 525 544 527
+f 525 545 544
+f 526 545 525
+f 543 545 526
+f 545 543 546
+f 546 544 545
+f 546 543 547
+f 548 547 543
+f 543 549 548
+f 548 549 550
+f 550 549 551
+f 552 551 549
+f 552 549 553
+f 553 549 542
+f 542 549 543
+f 553 542 554
+f 554 542 541
+f 541 537 554
+f 537 541 524
+f 436 537 433
+f 554 537 436
+f 436 555 554
+f 555 556 554
+f 556 557 554
+f 554 557 553
+f 553 557 558
+f 559 558 557
+f 559 557 560
+f 560 557 556
+f 556 555 560
+f 561 560 555
+f 555 562 561
+f 555 435 562
+f 436 435 555
+f 564 435 563
+f 435 564 565
+f 565 562 435
+f 566 562 565
+f 565 564 566
+f 528 538 529
+f 538 567 531
+f 538 568 567
+f 567 568 569
+f 569 570 567
+f 571 570 569
+f 569 572 571
+f 546 547 573
+f 547 548 573
+f 575 574 572
+f 573 548 576
+f 576 548 550
+f 574 571 572
+f 544 546 577
+f 558 552 553
+f 574 578 571
+f 580 579 571
+f 571 578 580
+f 579 570 571
+f 567 570 579
+f 581 567 579
+f 582 567 581
+f 567 582 531
+f 582 539 531
+f 539 582 540
+f 582 583 540
+f 540 583 584
+f 584 487 540
+f 528 585 538
+f 538 585 568
+f 585 586 568
+f 568 586 569
+f 587 569 586
+f 572 569 587
+f 588 572 587
+f 575 572 589
+f 588 589 572
+f 587 576 588
+f 573 576 587
+f 587 577 573
+f 573 577 546
+f 586 577 587
+f 577 586 590
+f 590 544 577
+f 590 586 585
+f 590 585 527
+f 585 528 527
+f 527 544 590
+f 591 584 583
+f 583 592 591
+f 593 591 592
+f 592 594 593
+f 592 595 594
+f 596 594 595
+f 596 595 597
+f 597 595 598
+f 598 595 599
+f 595 580 599
+f 580 578 599
+f 600 578 574
+f 574 601 600
+f 575 601 574
+f 580 595 602
+f 579 580 602
+f 592 579 602
+f 579 592 581
+f 583 581 592
+f 581 583 582
+f 595 592 602
+f 603 561 562
+f 604 561 603
+f 605 561 604
+f 606 561 605
+f 560 561 606
+f 606 559 560
+f 606 607 559
+f 608 606 605
+f 605 609 608
+f 608 609 610
+f 610 611 608
+f 611 612 608
+f 608 612 613
+f 608 613 607
+f 607 606 608
+f 607 558 559
+f 558 607 613
+f 613 614 558
+f 558 614 552
+f 552 614 551
+f 615 551 614
+f 551 615 550
+f 550 615 576
+f 576 615 616
+f 617 616 615
+f 617 615 612
+f 612 615 618
+f 618 613 612
+f 618 614 613
+f 614 618 615
+f 616 588 576
+f 588 616 617
+f 617 619 588
+f 612 619 617
+f 622 621 620
+f 612 620 619
+f 619 623 588
+f 621 625 624
+f 621 624 623
+f 622 625 621
+f 620 611 622
+f 620 612 611
+f 626 611 610
+f 626 622 611
+f 626 627 622
+f 610 627 626
+f 622 627 625
+f 627 628 625
+f 624 629 623
+f 629 575 623
+f 588 623 589
+f 630 575 629
+f 629 624 630
+f 625 630 624
+f 631 630 625
+f 631 625 628
+f 628 632 631
+f 631 632 633
+f 633 630 631
+f 634 630 633
+f 630 634 601
+f 630 601 575
+f 634 600 601
+f 578 600 599
+f 600 635 599
+f 635 636 599
+f 636 598 599
+f 636 597 598
+f 635 600 634
+f 634 637 635
+f 636 635 637
+f 636 637 638
+f 637 634 638
+f 633 638 634
+f 639 638 633
+f 640 639 633
+f 632 640 633
+f 639 640 641
+f 641 642 639
+f 642 641 643
+f 643 644 642
+f 644 643 645
+f 645 643 646
+f 645 647 644
+f 644 648 636
+f 636 642 644
+f 638 642 636
+f 639 642 638
+f 648 597 636
+f 647 648 644
+f 596 648 647
+f 648 596 597
+f 647 649 596
+f 596 649 650
+f 651 596 650
+f 651 594 596
+f 593 594 651
+f 651 652 593
+f 650 652 651
+f 652 650 653
+f 650 649 653
+f 649 654 653
+f 649 655 654
+f 655 649 647
+f 655 647 656
+f 656 647 645
+f 658 645 657
+f 645 646 657
+f 646 659 657
+f 620 621 623
+f 620 623 619
+f 660 487 584
+f 660 584 591
+f 661 660 591
+f 591 593 661
+f 661 593 652
+f 661 652 653
+f 662 660 653
+f 660 661 653
+f 662 485 660
+f 485 487 660
+f 662 663 476
+f 664 476 663
+f 654 664 663
+f 654 663 653
+f 663 662 653
+f 476 664 665
+f 666 476 665
+f 476 666 474
+f 485 662 475
+f 662 476 475
+f 655 664 654
+f 664 655 665
+f 655 658 665
+f 656 658 655
+f 647 656 655
+f 645 658 656
+f 623 575 589
+f 667 658 657
+f 668 667 657
+f 669 668 657
+f 659 669 657
+f 668 669 670
+f 670 667 668
+f 672 670 671
+f 670 673 671
+f 670 674 673
+f 675 674 670
+f 670 669 675
+f 676 666 665
+f 677 676 665
+f 676 677 468
+f 468 464 676
+f 667 468 677
+f 677 678 667
+f 678 677 665
+f 658 678 665
+f 658 667 678
+f 670 672 667
+f 468 667 672
+f 468 672 467
+f 672 470 467
+f 470 672 671
+f 470 679 469
+f 679 470 671
+f 680 679 671
+f 673 680 671
+f 680 673 674
+f 674 681 680
+f 474 666 465
+f 465 666 676
+f 464 465 676
+f 679 454 469
+f 679 682 454
+f 454 682 453
+f 451 452 453
+f 683 451 453
+f 684 683 453
+f 685 684 453
+f 453 682 685
+f 685 682 686
+f 682 679 686
+f 679 680 686
+f 680 687 686
+f 680 681 687
+f 687 681 688
+f 688 689 687
+f 690 687 689
+f 687 690 686
+f 690 691 686
+f 691 685 686
+f 685 691 692
+f 684 685 692
+f 683 684 692
+f 449 451 683
+f 683 693 449
+f 693 683 692
+f 694 693 692
+f 691 694 692
+f 691 695 694
+f 695 691 696
+f 691 690 696
+f 690 697 696
+f 697 690 689
+f 689 698 697
+f 698 700 699
+f 697 698 699
+f 701 697 699
+f 697 701 696
+f 701 702 696
+f 702 695 696
+f 702 703 695
+f 703 694 695
+f 704 694 703
+f 693 694 704
+f 693 704 448
+f 449 693 448
+f 704 446 448
+f 446 704 705
+f 446 705 443
+f 705 442 443
+f 563 442 705
+f 437 442 563
+f 563 435 437
+f 564 707 706
+f 566 564 706
+f 708 566 706
+f 563 707 564
+f 707 563 709
+f 563 705 709
+f 705 703 709
+f 703 705 704
+f 703 702 709
+f 702 710 709
+f 701 710 702
+f 701 711 710
+f 711 701 699
+f 700 711 699
+f 711 708 706
+f 710 711 706
+f 707 710 706
+f 710 707 709
+f 603 562 566
+f 610 689 627
+f 698 689 610
+f 698 610 609
+f 609 700 698
+f 711 700 609
+f 711 609 605
+f 605 708 711
+f 708 605 604
+f 604 566 708
+f 566 604 603
+f 627 689 688
+f 688 628 627
+f 628 688 681
+f 681 632 628
+f 632 681 674
+f 674 640 632
+f 641 640 674
+f 674 643 641
+f 643 674 675
+f 675 646 643
+f 669 646 675
+f 659 646 669
+# 1419 elements
diff --git a/Gem/gem_filmAVF.so b/Gem/gem_filmAVF.so
index b9ae51a..2e466ff 100755
--- a/Gem/gem_filmAVF.so
+++ b/Gem/gem_filmAVF.so
Binary files differ
diff --git a/Gem/gem_imageIO.so b/Gem/gem_imageIO.so
index b667cc1..724f935 100755
--- a/Gem/gem_imageIO.so
+++ b/Gem/gem_imageIO.so
Binary files differ
diff --git a/Gem/gem_imageJPEG.so b/Gem/gem_imageJPEG.so
index 63bcc6e..06a262a 100755
--- a/Gem/gem_imageJPEG.so
+++ b/Gem/gem_imageJPEG.so
Binary files differ
diff --git a/Gem/gem_imageSGI.so b/Gem/gem_imageSGI.so
index 4f5b766..e7aecea 100755
--- a/Gem/gem_imageSGI.so
+++ b/Gem/gem_imageSGI.so
Binary files differ
diff --git a/Gem/gem_imageSTB.so b/Gem/gem_imageSTB.so
index 2c075f1..05e8b7e 100755
--- a/Gem/gem_imageSTB.so
+++ b/Gem/gem_imageSTB.so
Binary files differ
diff --git a/Gem/gem_imageTIFF.so b/Gem/gem_imageTIFF.so
index f6e2bd1..3481ec1 100755
--- a/Gem/gem_imageTIFF.so
+++ b/Gem/gem_imageTIFF.so
Binary files differ
diff --git a/Gem/gem_modelOBJ.so b/Gem/gem_modelOBJ.so
index 3fa8a63..3b4558e 100755
--- a/Gem/gem_modelOBJ.so
+++ b/Gem/gem_modelOBJ.so
Binary files differ
diff --git a/Gem/gem_videoAVF.so b/Gem/gem_videoAVF.so
index 829d0cc..04b278a 100755
--- a/Gem/gem_videoAVF.so
+++ b/Gem/gem_videoAVF.so
Binary files differ
diff --git a/Gem/gemcocoawindow.pd_darwin b/Gem/gemcocoawindow.pd_darwin
index a09d267..d9a90bc 100755
--- a/Gem/gemcocoawindow.pd_darwin
+++ b/Gem/gemcocoawindow.pd_darwin
Binary files differ
diff --git a/Gem/gemglutwindow.pd_darwin b/Gem/gemglutwindow.pd_darwin
index 2cc110c..148947b 100755
--- a/Gem/gemglutwindow.pd_darwin
+++ b/Gem/gemglutwindow.pd_darwin
Binary files differ
diff --git a/Gem/gemmacoswindow.pd_darwin b/Gem/gemmacoswindow.pd_darwin
index 852d070..d3ebce5 100755
--- a/Gem/gemmacoswindow.pd_darwin
+++ b/Gem/gemmacoswindow.pd_darwin
Binary files differ
diff --git a/Gem/manual/Advanced.html b/Gem/manual/Advanced.html
index 5c2a5f2..e23b090 100644
--- a/Gem/manual/Advanced.html
+++ b/Gem/manual/Advanced.html
@@ -1,27 +1,27 @@
-<!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>
+<!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>
diff --git a/Gem/manual/BasicObj.html b/Gem/manual/BasicObj.html
index 80e5d84..b65dc68 100644
--- a/Gem/manual/BasicObj.html
+++ b/Gem/manual/BasicObj.html
@@ -1,115 +1,115 @@
-<!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>
+<!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>
diff --git a/Gem/manual/GemFaq.html b/Gem/manual/GemFaq.html
index fe2e175..1fe41cd 100644
--- a/Gem/manual/GemFaq.html
+++ b/Gem/manual/GemFaq.html
@@ -1,667 +1,667 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="Author" content="Mark Danks">
- <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
- <title>Gem FAQ</title>
-</head>
-<body>
-
-<center>
-<h2>
-<u>GEM FAQ</u></h2></center>
-
-<p><br>* : new question
-<br>+ : changed question
-<p><img SRC="tribar.gif" height=13 width=561>
-<h2>
-<u>QUESTIONS</u></h2>
-<i><a href="#General">GENERAL</a></i>
-<br><a href="#1.1">1.1) What is GEM?</a>
-<br><a href="#1.2">1.2) What is Pd?</a>
-<br><a href="#1.3">1.3) What platforms do GEM and Pd run on?</a>
-<br><a href="#1.4.0">1.4.0) How do I install GEM and Pd on IRIX?</a>
-<br><a href="#1.4.1">1.4.1) How do I install GEM and Pd on linux?</a>
-<br><a href="#1.4.2">1.4.2) How do I install GEM and Pd on WinNT?</a>
-<br><a href="#1.7">1.7) What is a good intro to OpenGL?</a>
-<br><a href="#1.8">1.8) Are there any web sites for Pd or GEM?</a>
-<br><a href="#1.9">1.9) What libraries does GEM use? (aka: Who does Mark
-want to thank?)</a>
-<br><a href="#1.10">1.10) Are there any restrictions on GEM?</a>
-<br><a href="#1.11">1.11) How do I use GEM in a performance?</a>
-<p><i><a href="#UsingGem">USING GEM</a></i>
-<br><a href="#2.1">2.1) How do I (???)</a>
-<br><a href="#2.2">2.2) How do I make GEM run?</a>
-<br><a href="#2.3">2.3) Why doesn't GEM run?</a>
-<br><a href="#2.4">2.4) I've got it running. Now what?</a>
-<br><a href="#2.5">2.5) On IRIX 5.3, why does GEM dump with an rld error?</a>
-<br><a href="#2.6">2.6) Why can't I compile GEM on IRIX 5.3?</a>
-<br><a href="#2.7">2.7) Why is GEM slow in general?</a>
-<br><a href="#2.8">2.8) Why is GEM slow on IRIX?</a>
-<br><a href="#2.9">2.9) Why is GEM slow on WinNT/Win95?</a>
-<br><a href="#2.10">2.10) Why is GEM slow on Linux?</a>
-<br><a href="#2.11">2.11) If I resize the window, everything looks strange.</a>
-<br><a href="#2.12">2.12) Can GEM run on a 3Dfx Voodoo card?</a>
-<br><a href="#2.13">2.13) Will GEM support hardware transform and lighting
-(T&amp;L) ?</a>
-<br><a href="#2.14">2.14) I get an error "GEM needs Truecolor visual support".</a>
-<p><i><a href="#ViewingObjects">VIEWING OBJECTS</a></i>
-<br><a href="#3.1">3.1) Why does everything seem dim?</a>
-<br><a href="#3.2">3.2) Why does everything seem dark?</a>
-<p><i><a href="#TextureMapping">TEXTURE MAPPING</a></i>
-<br><a href="#4.1">4.1) My image doesn't appear. What is going on?</a>
-<br><a href="#4.2">4.2) My image looks strange. What is going on?</a>
-<br><a href="#4.3">4.3) Why does GEM say that it can't handle a gray image?</a>
-<br><a href="#4.4">4.4) What image formats can GEM handle?</a>
-<br><a href="#4.5">4.5) What movie formats can GEM handle?</a>
-<br><a href="#4.6">4.6) Why is pix_draw so slow?</a>
-<p><i><a href="#WorkingWithPd">WORKING WITH PD</a></i>
-<br><a href="#5.1">5.1) Why do I get clicks in the audio?</a>
-<br><a href="#5.2">5.2) How do I get audio data to GEM?</a>
-<br><a href="#5.3">5.3) Why can't GEM find an image/model file?</a>
-<br><a href="#5.4">5.4) How can I optimize my patches?</a>
-<p><i><a href="#NewGemObjects">WRITING NEW GEM OBJECTS</a></i>
-<br><a href="#6.1">6.1) How do I write a new GEM object?</a>
-<br><a href="#6.2">6.2) What are the default OpenGL states?</a>
-<p><i><a href="#ObjectSpecific">OBJECT SPECIFIC</a></i>
-<br><a href="#7.1">7.1) Why doesn't &lt;object> exist on &lt;platform>?</a>
-<br><a href="#7.2">7.2) Why doesn't gemtablet work?</a>
-<br><a href="#7.3">7.3) I don't want GEM to take over my tablet.
-How do I stop it?</a>
-<br><a href="#7.4">7.4) Why doesn't gemmouse work in IRIX/Linux?</a>
-<br><a href="#7.5">7.5) Why doesn't gemorb work?</a>
-<br><a href="#7.6">7.6) What is wrong with pix_video in WinNT?</a>
-<p><img SRC="tribar.gif" height=13 width=561>
-<h2>
-<u>ANSWERS</u></h2>
-<a NAME="General"></a><h3>GENERAL</h3>
-<br><a NAME="1.1"></a>1.1) What is GEM?
-<p>GEM is the Graphics Environment for Multimedia.
-It was originally written by <a href="mailto:mark@danks.org">Mark Danks</a> to generate real-time computer
-graphics, especially for audio-visual compositions. It originally ran under
-FTS/Max (which is why you might see some papers reference it), but all
-new development is under Pd.
-<p>You can get GEM at <a href="http://www.iem.at/GEM">http://gem.iem.at/</a>
-<p>GEM was sponsored by a grant from Intel (<a href="http://www.intel.com">http://www.intel.com</a>)
-<p>GEM was ported to <a href="http://www.linux.org">linux</a> by <a href="mailto:geiger@xdv.org">G&uuml;nter Geiger</a>
-<p>GEM is now maintained by <a href="mailto:zmoelnig@iem.at">IOhannes m zm&ouml;lnig</a>.
-<p>the core-development team consists of<ul>
-<li>chris clepper</li>
-<li>günter geiger</li>
-<li>daniel heckenberg</li>
-<li>james tittle</li>
-<li>IOhannes m zmölnig</li></ul>
-lots of contributions are made by various people (thanks to all of them)
-<p>----
-<br><a NAME="1.2"></a>1.2) What is Pd?
-<p>Pd is a real-time environment for audio and MIDI.
-It was written by <a href="mailto:msp@ucsd.edu">Miller Puckette</a>, who created FTS/Max when
-he was at IRCAM. Basically, Pd can be seen as the next generation
-of real-time visual programming languages. GEM runs inside of the
-Pd environment.
-<p>You can get Pd at <a href="http://www.crca.ucsd.edu/~msp/software.html">http://www.crca.ucsd.edu/~msp/software.html</a>
-<p>Pd is sponsored by a grant from Intel (<a href="http://www.intel.com">http://www.intel.com</a>)
-<p>----
-<br><a NAME="1.3"></a>1.3) What platforms do GEM and Pd run on?
-<p>GEM and Pd run on Windows (95, 98, ME, NT 4.0, 2000, XP), linux and macOS-X (&gt;10.2).
-SGI-Irix (&gt; 6.2) used to be supported but i don't have any prove that it still works).
-<a href="mailto:geiger@xdv.org">G&uuml;nter Geiger</a>
-has done an initial port of GEM and Pd to Linux <a href="http://gige.epy.co.at/">http://gige.epy.co.at</a>).
-<p>GEM is now maintained by <a href="mailto:zmoelnig@iem.at">me</a> and
-developed by a team of several independent programmers (see <a href="1.1">section 1.1</a>)
-<p>----
-<br><a NAME="1.4"></a>1.4) How do I install GEM ?
-<p>----
-<br><a NAME="1.4.0"></a>1.4.0) How do I install GEM and Pd on IRIX?
-<p>See the readme for installing Pd.
-<p>GEM should be at
-<p>pd/gem
-<p>If you run GEM.INSTALL.sh, then all of the example files and documention
-should be put in the correct locations.
-<p>----
-<br><a NAME="1.4.1"></a>1.4.1) How do I install GEM and Pd on linux?
-<p>See the readme for installing Pd.
-<p>GEM should be at
-<p>chdir to &lt;gem&gt;/src/Gnu and build Gem following the instructions in the README.build
-(<tt>./configure; make</tt>)
-<p>If you then <tt>make install</tt>, then all of the example files and documention
-should be put in the correct locations.
-<p>if you are using debian, Gem should be available via apt</p>
-<p>if you are using an rpm-based distribution, check out the builds at planetCCRMA</p>
-<p>----
-<br><a NAME="1.4.2"></a>1.4.2) How do I install GEM and Pd on WinNT?
-<p>See the readme for installing Pd.
-<p>unzip GEM so that it is at
-<p>pd\gem
-<p>If you run GEM.INSTALL.bat, then all of the example files and documentation
-should be put in the correct locations.
-<p>there is also an installer for windows.
-<p>----
-<br><a NAME="1.4.3"></a>1.4.3) How do I install GEM and Pd on macOS?
-<p>See the readme for installing Pd.
-<p>there is also an installer for macOS.
-<p>----
-<br><a NAME="1.7"></a>1.7) What is a good intro to OpenGL?
-<p>The best book is the <u>OpenGL Programming Manual</u>
-by Mason and Woo. This is also called the "Red Book". If you search
-the web, there are many sites on OpenGL. A good starting point is
-<a href="http://www.opengl.org">http://www.opengl.org</a>.
-Also, Mark Kilgard (who used to work for SGI) has a wonderful site with
-lots of links (<a href="http://reality.sgi.com/mjk">http://reality.sgi.com/mjk</a>)
-Also, Normal Lin has written another great book on <u>3D-graphics under linux</u>
-<p>----
-<br><a NAME="1.8"></a>1.8) Are there any web sites for Pd or GEM?
-<p>Except for the ones noted above, there is the Japanese
-installation page at
-<br><a href="http://www.rinc.or.jp/~kotobuki/gem/index.htm">http://www.rinc.or.jp/~kotobuki/gem/index.htm</a>
-<p>There is a Pd mailing list. Subscription info
-is on IEM's site <a href="http://www.iem.at/mailinglists/pd-list">http://www.iem.at/mailinglists/pd-list</a>
-<p>One of pd's unofficial home-pages is at <a href="http://pd.iem.at">http://pd.iem.at</a> hosted by the
-<a href="http://iem.at">Institute of Electronic Music and Acoustics, Graz, Austria</a>
-<p>Also hosted by the <a href="http://iem.at">iem</a> is the site of the pd-community
-<a href="http://www.puredata.info">http://www.puredata.info</a>
-<p>An interesting place might also be G&uuml;nter Geiger's size <a href="http://gige.epy.co.at/">http://gige.epy.co.at/</a>
-<p>there are lot's of other cool pages (search the net...)
-<p>----
-<br><a NAME="1.9"></a>1.9) What libraries does GEM use?
-(aka: Who does Mark want to thank?)
-<p>All copyrights and license info can be found in
-<br> GEM.LICENSE.TERMS
-<br> Thanks to Sam Leffner for libTiff, the TIFF image
-loader.
-<br>
-sam@engr.sgi.com
-<br> <a href="ftp://ftp.sgi.com/graphics/tiff/">ftp://ftp.sgi.com/graphics/tiff/</a>
-<br> Thanks to Masayuki Matsumoto for fstimage for OpenGL,
-the SGI
-<br> image loader.
-<br>
-matumot@dst.nk-exa.co.jp
-<br> Thanks to the Independent JPEG Group for libjpeg,
-the JPEG image loader.
-<br>
-jpeg-info@uunet.uu.net
-<br> <a href="ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/">ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/</a>
-<br> Thanks to Mark Kilgard at al. (and SGI) for glut, the openGL Utility Toolkit
-<br> <a href="http://www.pobox.com/~ndr">http://www.pobox.com/~ndr</a>
-<br> Thanks to Stephane Rehel for GLTT, the OpenGL TrueType
-render.
-<br>
-rehel@worldnet.fr
-<br> <a href="http://home.worldnet.fr/~rehel/gltt/gltt.html">http://home.worldnet.fr/~rehel/gltt/gltt.html</a>
-<br> Thanks to David Turner, Robert Wilhelm, and Werner
-Lemberg for
-<br> Freetype, a TrueType font
-rendering engine.
-<br>
-turner@enst.fr
-<br>
-robert@physiol.med.tu-muenchen.de
-<br>
-a7971428@unet.univie.ac.at
-<br> <a href="http://www.physiol.med.tu-muenchen.de/~robert/freetype.html">http://www.physiol.med.tu-muenchen.de/~robert/freetype.html</a>
-<br> Thanks to the MPEG Software Simulation Group, for
-libmpeg, the
-<br>MPEG-2 Encoder/Decoder
-<br>
-mssg@mpeg.org
-<br> <a href="http://www.mpeg.org/MSSG/">http://www.mpeg.org/MSSG/</a>
-<br> Thanks to Heroine for quicktime4linux
-a quickime Decoder
-and libmpeg3, another MPEG-2 Encoder/Decoder
-<br>MPEG-2 Encoder/Decoder
-<br>
-mssg@mpeg.org
-<br> <a href="http://heroinewarrior.com/">http://heroinewarrior.com/</a>
-<br> Thanks to LCS/Telegraphics for Wintab, the Windows
-tablet library.
-<br>
-wintab@pointing.com
-<br> Thanks to David McAllister for the Particle System
-library.
-<br>
-davemc@cs.unc.edu
-<br> <a href="http://www.cs.unc.edu/~davemc/Particle/">http://www.cs.unc.edu/~davemc/Particle/</a>
-<br> Thanks to John Stone for the Space Orb library,
-libOrb
-<br>
-j.stone@acm.org
-<br> <a href="http://www.umr.edu/~johns/projects/liborb/">http://www.umr.edu/~johns/projects/liborb/</a>
-<p>----
-<br><a NAME="1.10"></a>1.10) Are there any restrictions on GEM?
-<p>GEM is under the Gnu Public License. This basically
-means that it will always be free software.Check out <a href="http://www.gnu.org">http://www.gnu.org</a>
-for more information and read the full license in GnuGPL.LICENSE in the GEM release.
-<p>----
-<br><a NAME="1.11"></a>1.11) How do I use GEM in a performance?
-<p>This is a constant problem, because there is no consistent
-way to display video on any platform. Also, you usually do not want
-to send the entire screen, but only the GEM window. It is also useful
-to be able to edit/control the Pd patch window while the patch is actually
-running.
-<p>On SGIs, the best way is to get a video out option.
-On the SGI O2, Impact, and Onyx (Mark has used all of these), there is a
-simple connector or breakout box to do video.
-If you run the video out program, then you will get a rectangle on your screen
-which shows what is being sent out the video connector.
-Make your GEM window a little larger than 640x480 and center it in the rectangle.
-You can now project this with a standard video projector.
-<p>On PCs it is a bit harder.
-Several modern video-cards have the possibility to output several screens
-(either 2 (or more) VGA-screens or 1 VGA-screen and 1 TV (Composite or S-HVS)
-or a combination with DFTs)
-If you have a Canopus Voodoo2 card it has a video and s-video output on it. As described
-in <a href="#2.12">question 2.12</a>, you can get a Voodoo to work with
-GEM. If any one else has a better solution, please let me know.
-The nVidia Riva TNTs require that you output the full screen, so this is
-not a very good option. You can use a video scan convertor.
-Some of them only display a part of the scene, which is exactly what you
-want.
-<p>With modern multi-headed cards it is more simple:
-Configure your card to display the desktop spread over your multiple screens
-(e.g.: from left-to-right).
-On windows and macOS you can do this via the display-properties dialog.
-On linux you will have to edit your /etc/X11/XF86Config-4 file either by hand or
-(if your system supports it) via an appropriate editor (yes, nowadays there are some).
-Now create your gem-window on the second screen:
-it should have the same dimensions as the 2nd screen (e.g: "[dimen 800 600(").
-to place it at the second screen use the offset (e.g: if your primary sreen
-(the one you want for patch-editing) has the dimension 1024x768 use "[offset 1024 0(",
-which will create the gem-window 1024 pixels right of the upper-left corner
-of the total screen (and 0 pixels below it),
-which is exactly the upper-left corner of the 2nd screen.
-You most probably want to turn off the borders with "[border 0(".<br>
-<em>Note:</em> some grafix-card have openGL-hardware-acceleration only on the 1st screen
-(so you should create the gem-window on the 1st screen and move
-your patches to the 2nd screen)
-<p>If you are using an XServer for displaying (under linux) you can also use another
-computer for rendering.
-You can specify the place where the gem-window should be created with something like
-"create &lt;<em>render.host</em>&gt;:0.0"
-
-<p>If you are doing audio with graphics, the only solution
-to prevent clicking (<a href="#5.1">question 5.1</a>) is to run 2 computers
-and have them communicate with netsend/netreceive. We are working
-on making Pd/GEM multi-processor friendly, so if you have a multi-processor
-system, you can run everything on one machine eventually.
-<p>
-<hr WIDTH="100%"><a NAME="UsingGem"></a><h3><i>USING GEM</i></h3>
-<br><a NAME="2.1"></a>2.1)How do I (???)
-<p>Many of the general usage questions are probably
-answered in the manual or release notes. The pd mailing list is also
-a good place to find answers as well.
-<p><a NAME="2.2"></a>2.2) How do I make GEM run?
-<p>GEM is not an executable. It requires Pd to
-work and is loaded in at run time. For example, I have an alias on
-the SGI which does
-<p>/usr/people/mdanks/pd/bin/pd -lib /usr/people/mdanks/pd/gem/Gem
-<p>and on WinNT
-<p>\pdDir\pd\bin\pd -lib /pdDir/pd/gem/Gem
-<p>on UNIX-systems you will probably want to use a <tt>.pdrc</tt> file,
- where you can put the command-line arguments for pd that you "always" need.
-<p>If you don't see a startup message from GEM, then something went wrong.
-<p>Most people use use the command shell to start Pd.
-It is not very difficult to configure Pd to run from double-clicking on the icon.
-<p>----
-<br><a NAME="2.3"></a>2.3) Why doesn't GEM run?
-<p><b>Notice that the -lib flag always requires Unix
-styles slashes</b>. This is the case even on Windows.
-<p>You may also want to use the -nosound flag.
-For instance, my PC has problems using audio (it leaks memory), so I just
-turn off the audio part of Pd. However, other people can't get GEM
-to work if the -nosound is used (on Win95). You can also try the
--dac or -adc flags (for digital-analog-conversion only and analog-digital-conversion
-only).
-<p>----
-<br><a NAME="2.4"></a>2.4) I've got it running. Now what?
-<p>Try out the manual. It will step you through
-the basics.
-<br> You will also want to look at the example files.
-Assuming that everything is installed correctly, you can get to the examples
-by going to the Help menu in Pd and selecting examples. A bunch of
-the patches should start with gem&lt;something>. The best one is
-<i>gem/01.basic/01.redSquare.pd</i>
-It puts a red square up on the screen and allows you to rotate it. <i>gemImage.pd</i>
-shows how to load in a TIFF file. <i>gem/03.lighting/04.moveSpheres.pd</i>
-moves two spheres around the screen. Try the other ones.
-<br> Most of the GEM objects have test patches which
-give some information about the various controls for the object.
-<p>----
-<br><a NAME="2.5"></a>2.5) On IRIX 5.3, why does GEM dump with an rld error?
-<p>GEM only works under IRIX 6.2+. The rld error
-is probably something about not having glBindTextureEXT (or something).
-OpenGL 1.0 has some extensions to speed up texture mapping (which are an
-integral part of OpenGL 1.1). However, these don't exist on IRIX
-5.3. If you recompile GEM (see the next question), things should
-work fine.
-<br> I don't have access to an IRIX machine, so don't
-expect any builds from me. Upgrading to IRIX 6.2+ is worth it.
-<p>----
-<br><a NAME="2.6"></a>2.6) Why can't I compile GEM on IRIX 5.3?
-<p>There was probably an error saying that the compiler
-couldn't find the file "dmedia/vl_vino.h" in pix_videoSGI.cpp. IRIX
-6.2+ adds new functionality to the media libraries which makes life much
-easier. You cannot compile pix_video or pix_indycam as is under 5.3.
-You can remove them from the Pix/Makefile and from the linker part of the
-global Makefile. You will also need to recompile the Td and Tiff
-libraries.
-<p>There shouldn't be any problems doing this. I haven't tried any
-of this, so if it works for someone, please let me know.
-<p>----
-<br><a NAME="2.7"></a>2.7) Why is GEM slow in general?
-<p>Examine what you are doing. If you are constantly
-changing textures, then this is probably your problem. If you have
-models with a million triangles, then this is probably the problem.
-Compare what you are doing with realistic specs on your system. Some
-systems slow down when they have to draw very large polygons (slow fill
-rate).
-<br> You can also turn on profiling to see how long it
-takes to render a frame. Send a profile message to the gemwin object.
-The number that is printed is the number of milliseconds one frame takes
-to render. 50 milliseconds is 20 frames per second. 'profile 2' is
-good if you want to see how long the image processing is taking.
-<br> profile 0 - turn off profiling
-<br> profile 1 - turn on profiling
-<br> profile 2 - turn on profiling
-and don't cache pixes
-<p>----
-<br><a NAME="2.8"></a>2.8) Why is GEM slow on IRIX?
-<p>If you are having major slowdowns, then please let
-me know. I have gotten very good performance on most machines (Indy,
-O2, Impact, Onyx2).
-<p>----
-<br><a NAME="2.9"></a>2.9) Why is GEM slow on WinNT/Win95?
-<p>You probably don't have hardware acceleration.
-You can use software rendering, but it basically useless except for extremely
-basic patches. You can get a good graphics accelerator for really
-cheap these days. I recommend a card based on nVidia's chipsets,
-such as the TNT2 or GeForce, but there are other companies such as 3dfx
-and Matrox. Make sure that you are running the latest drivers for
-your card. The basic drivers that come with the cards are usually
-very bad.
-<br> Also, PCs don't deal with lots of texture maps very
-well (they are bus limited, at least until AGP), so if you are trying to
-use lots of constantly changing texture maps
-(especially with [pix_multiimage], [pix_video] or [pix_film]), that will cause problems.
-<p>----
-<br><a NAME="2.10"></a>2.10) Why is GEM slow on Linux?
-<p>It is because you have to use Mesa, which might be
-running iin software. Mesa (<a href="http://www.mesa.org">http://www.mesa.org</a>)
-is an awesome package by Brian Paul (brianp@avid.com) which "emulates"
-OpenGL. Basically, it is a fully compliant OpenGL package, but it
-isn't officially sanctioned by the OpenGL ARB, such, it is doesn't have
-the OpenGL name. There is an acceleration package for the many graphics
-card, but I don't know anything about it.
-<br>nVidia is being very supportive of Linux:
-their TNT2 and GeForce cards work under Linux with hardware-acceleration of openGL.
-(but the drivers are proprietary)
-<br>radeon cards should also be supported very well under linux (even with open-source drivers)
-<p>----
-<br><a NAME="2.11"></a>2.11) If I resize the window, everything looks strange.
-<p>GEM doesn't trap resize events in IRIX or Linux (this
-is not a problem in WinNT). This means that OpenGL doesn't have the
-correct information to render properly. If you want to resize the
-window, send a 'dimen x y' message to gemwin before you create the window.
-<p>----
-<br><a NAME="2.12"></a>2.12) Can GEM run on a 3Dfx Voodoo card?
-<p>I (this is: Mark Danks) have a Voodoo2 card, which runs fine under WinNT.
-I use the OpenGL beta driver from 3Dfx at work all the time without any
-problems and, except that the Voodoo takes over the full screen, it seems
-to work fine. You will need to download the OpenGL Beta driver from
-3Dfx's web site at http://www.3dfx.com and put the OpenGL32.dll into the
-same directory as pd.exe (NOT gem.dll). Debugging patches is much
-easier if you have two monitors, one for the 3-D card and one for the 2-D
-card.
-<p>IMPORTANT: You MUST set the environment variable
-<p>GEM_SINGLE_CONTEXT = 1
-<p>to make the Voodoo card work. It will make a window 640x480 (which
-is the correct size for TV video out on my Canopus V2 card). On WinNT,
-right click "My Computer" and go to "Properties". On the "Environment"
-tab, you need to add the variable "GEM_SINGLE_CONTEXT" with a value of
-1.
-<br>Resizing the GEM window with a Voodoo card is not
-a great idea. The Voodoo card can only display certain window sizes and
-will clip the graphics.
-<p>For the tech heads in the audience...I create an
-OpenGL context at startup and never actually display its associated window.
-This means that GEM objects can create display lists, call OpenGL commands,
-etc. in their constructors, even if no window is actually being displayed.
-However, with the Voodoo card, there can only be one OpenGL context.
-So, instead of creating one context and just holding onto it in the background,
-I create the normal GEM window and associate the OpenGL context with it...and
-the user can never destroy or close that window.
-<p>----
-<br><a NAME="2.13"></a>2.13) Will GEM support hardware transform and lighting
-(T &amp; L)?
-<p>Absolutely! Unlike some other APIs, OpenGL
-will automatically use hardware accelerated transform and lighting if the
-card has it. GEM gets great performance from cards like nVidia's
-GeForce.
-<p><a NAME="2.14"></a>2.14) I get an error "GEM needs Truecolor visual
-support".
-<p>This error means that your X display is running with
-paletted colors, which is the result of limited color depth. If you
-start the X display with
-<p>startx -- -bpp 16
-<p>or some higher number, then it should work fine. 32-bit color
-is the best.
-<p>
-<hr WIDTH="100%"><a NAME="ViewingObjects"></a><h3><i>VIEWING OBJECTS</i></h3>
-<br><a NAME="3.1"></a>3.1)Why does everything seem dim?<
-<p>You probably turned on lighting but don't have any
-lights in the world. Either add a light with <i>world_light</i> or
-<i>light</i>
-or turn lighting off by sending a message 'lighting 0' to the <i>gemwin</i>.
-You can also send a reset message to <i>gemwin</i> to set it back to the
-startup state (which doesn't have any lighting).
-<p>----
-<br><a NAME="3.2"></a>3.2) Why does everything seem dark?
-<p>See question 3.1.
-<br> If you are using <tt>view</tt> in your patch to change the viewpoint,
-you may not be pointing in the correct direction. You also might have translated
-everything outside of the current viewport.
-<br> Also, if you have been using single buffering ('buffer
-1' message to <i>gemwin</i>), then you might still be in that mode.
-Either send a 'buffer 2' message or a 'reset' message to <i>gemwin</i>.
-Then, destroy and create your window.
-<p>
-<hr WIDTH="100%"><a NAME="TextureMapping"></a><h3><i>TEXTURE MAPPING</i></h3>
-<br><a NAME="4.1"></a>4.1) My image doesn't appear. What is going
-on?
-<p>Normally images have to be texture-mapped onto Geos.
-You have to use [pix_texture] to map the current image onto a Geo.
-"Current" means that any pix-manipulation that is done after texturing will not be displayed.
-<p>Any Geo has a color (which is initially set to white).
-If you have set the color to black, your Geo (including the image) might be very dark.
-If you are using alpha-blending, make sure that the Geo is not invisible.
-<p>Normally images that want to be texture mapped with openGL should have dimensions that are a power of 2 in both height and width.
-Now [pix_texture] will make this totally transparent to you (so normally you don't have to care about the size of the image).
-However with non-power-of-2 images <i>pix_coordinate</i> might not behave as expected,
-because these images need absolute texture-coordinates rather than normalized ones
-(as are used with power-of-2 images): so if the texture-coordinates are set to "(0,0) (1,0) (1,1) (0,1)" you might see only the first pixel of the image (which might be black).
-<p>Also, make sure that GEM can find your image (ie,
-that the path name is correct).
-<p>----
-<br><a NAME="4.2"></a>4.2) My image looks strange. What is going
-on?
-<p>GEM supports gray8, YUV, and RGBA images. If
-it sees that the number of bits per channel and the number of channels
-is something that it should be able to handle, it tries to load the raw
-data. If you have compressed or stored the pixel data in some "strange"
-format, then GEM will probably not read the information correctly.
-<br> Also, if it is an RGBA image, then make sure that
-the alpha channel is something useful (this only matters if you are using
-the alpha channel, like in the alpha object or pix_mask).
-<p>----
-<br><a NAME="4.3"></a>4.3) Why does GEM say that it can't handle a gray
-image?
-<p>This error message occurs whenever a pix object receives
-a gray8 image and the implementor hasn't provided a way to deal with that
-format of image. (Implementors often only provide functions for GEM's <i>native</i>
-color-format RGBA. Any other color-format (like BGR) will try to call the function
-for gray8 images, which might not be supported.)
- If you do not want to change the image format with some extern image-programm
-(like Photoshop or the Gimp) you might want to try <i>pix_rgba</a>
-or harass whoever made the object to add the functionality.
-<p>----
-<br><a NAME="4.4"></a>4.4) What image formats can GEM handle?
-<p>GEM can read in TIFF, JPEG, and SGI images.
-These can be in any color format. Gray scale images are loaded in
-as gray scale (ie, one byte per pixel). Everything else is loaded
-in or converted to an RGBA image (ie, four bytes per pixel). If there
-is an alpha channel, then it will be respected. Otherwise, the alpha
-channel will be set to fully opaque (alpha == 255).
-<p>GEM can write TIFF and JPEG images.
-TIFF-images will be full RGBA-images, wheras JPEG-files only support (compressed) RGB.
-<p>----
-<br><a NAME="4.5"></a>4.5) What movie formats can GEM handle?
-<p>The movie formats GEM can handle (still) depend on the platform
-you are using.
-<p>On Windoze you can read all AVI-files you have codecs for
-<p>On linux the readable formats depend on the libraries you had installed when you compiled GEM.
-Currently there is (optional) support for AVI, quicktime (*.MOV) and MPEG (*.MPG) files.
-Not all quicktime-formats are supported. This is unfortunate but is due to linux restrictions.
-I highly recommend that you install the mpeg3-library from Heroine because it is much more stable than mpeg1 (which comes with many linux-distributions).
-If you have compiled in support for libavifile, you will be able to open Micro$oft-AVI-files.
-If you have installed the proper codecs
-(libavifile supports a mechanism for loading codecs from windows-DLLs) you should be able to
-open almost any format.
-
-If you have serious problems, mail them <a href="mailto:zmoelnig@iem.at">to me</a>.
-(Be ready to upload the movie-file that won't work)
-<p>----
-<br><a NAME="4.6"></a>4.6) Why is <i>pix_draw</i> so slow?
-<p><i>pix_draw</i> is almost never hardware accelerated
-on PCs graphics accelerator. This means that it runs <i>extremely</i>
-slowly. Always use <i>pix_texture</i>, even if you are just displaying
-an image.
-<p>
-<hr WIDTH="100%"><a NAME="WorkingWithPd"></a><h3><i>WORKING WITH PD</i></h3>
-<br><a NAME="5.1"></a>5.1) Why do I get clicks in the audio?
-<p>If you are getting a constant stream of clicks in
-your audio, then it is probably because you are trying to do graphics and
-audio in the same process. Rendering a graphics frame usually takes
-longer than the size of the audio buffer, which is why you get clicks (the
-clicks are usually at 20Hz...the typical frame rate).
-<br> One way around this is to use two computers, one
-for graphics and one for audio. If you have enough processing power
-(or dual processors), then you can run two versions of Pd, one for graphics
-and one for audio. Just use <i>netsend</i> and <i>netreceive</i>
-to have the two versions of Pd talk to each other.
-<p>----
-<br><a NAME="5.2"></a>5.2) How do I get audio data to GEM?
-<p>One simple way to get raw audio values right now is
-to use <i>snapshot~</i>. Just set up a <i>metro</i> which bangs <i>snapshot~</i>
-and use the floating point value. If you want "musical" information,
-then use objects such as <i>env~</i>.
-You might also have a look at the <i>pix_sig2pix~</i> which interprets audio-data as pixels
-and its counterpart <i>pix_pix2sig~</i>
-<p>----
-<br><a NAME="5.3"></a>5.3) Why can't GEM find an image/model file?
-<p>This means that GEM can't locate the file.
-If you use an absolute path (with / for instance), then GEM will look there.
-Otherwise, GEM will look in the directory of where the patch is.
-Then pd/GEM will search the paths you specified at startup with the <i>-path</i> flag.
-<p>Check the following:
-<p>1) Does the file exist?
-<br> 2) Did you make a typo in the filename?
-<br> 3) Is the file in the search-path ?
-<p>----
-<br><a NAME="5.4"></a>5.4) How can I optimize my patches?
-<p>One of the biggest performance hits is having UI
-elements in your patch which have to be updated. The biggest performance
-hog is the number box. While the number box is great for debugging,
-make sure that they are all gone from your "release" patch. If you
-run a performance meter, you will see that whenever Tcl/Tk has to update
-the user interface, it sucks the entire processor. Another examples
-of this is when you move a lot of objects at once, everything jerks and
-slides across the screen. There are probably ways to improve this...
-<br> Another problem is doing unneccessary calculations.
-When you are throwing lots of numbers around, especially packing/unpacking,
-doing vector math, etc., they add up. If the calculations are going
-unused (for instance, that part of the patch is turned off), then do not
-trigger the math objects. Use <i>spigot</i> or <i>gate</i> and block
-the events early. This is especially important with objects that
-send a lot of numbers, like ~ objects or <i>line</i>/<i>tripleLine</i>.
-<p>
-<hr WIDTH="100%"><a NAME="NewGemObjects"></a><h3><i>WRITING NEW GEM OBJECTS</i></h3>
-<br><a NAME="6.1"></a>6.1) How do I write a new GEM object?
-<p>For the time being, you have to look at the code.
-It is fairly well documented and straight forward (if you know C++ and
-OOP). Start with an object which is similar to what you want and
-derive a new class. The biggest issue right now is how to load in
-GEM as a DSO/DLL. For SGIs, you will need to setenv LD_LIBRARY_PATH.
-On NT, you will need to have your path include the directory with GEM.
-<p>----
-<br><a NAME="6.2"></a>6.2) What are the default OpenGL states?
-<p>GemMan (and by association, gemwin) disables alpha
-testing, alpha blending, culling, and lighting. Lighting defaults
-to two sided, with GL_COLOR_MATERIAL enabled. The viewport is set
-to
-<p>float xDivy = (float)m_width / (float)m_height;
-<br> glMatrixMode(GL_PROJECTION);
-<br> glLoadIdentity();
-<br> glFrustum(-xDivy, xDivy, -1.0, 1.0, 1.0, 20.0);
-<br> gluLookAt(0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0, 1.0,
-0.0);
-<br> glMatrixMode(GL_MODELVIEW);
-<br> glViewport(0, 0, m_width, m_height);
-<p>which gives a range of about -4 to 4 in X and Y at the origin.
-This is a small range, but changing it now would break a lot of patches.
-<p>The specific functions to look at are:
-<p>GemMan::windowInit()
-<br>GemMan::resetValues()
-<br>gemhead::renderGL()
-<p>
-<hr WIDTH="100%"><a NAME="ObjectSpecific"></a><h3><i>OBJECT SPECIFIC</i></h3>
-<br><a NAME="7.1"></a>7.1) Why doesn't &lt;object> exist on &lt;platform>?
-<p>Usually, this is because I don't have the resources
-to get the object running on that platform. If an object that you
-want doesn't exist on your platform, then ask for it! However, if
-it is tied to hardware, then it is much less likely that I will be able
-to do anything about it (unless someone donates the hardware to me...)
-<p>----
-<br><a NAME="7.2"></a>7.2) Why doesn't <i>gemtablet</i> work?
-<p><i>gemtablet</i> only works on WinNT. I don't
-have drivers for IRIX or Linux (also, see question 7.4)
-<br> If GEM can find the tablet, then it will print a
-message at window creation time. If you don't see a message, then
-GEM doesn't think that you have a tablet.
-<br> The tablet is mapped to the size of the GEM graphics
-window.
-<p>---
-<br><a NAME="7.3"></a>7.3) I don't want GEM to take over my tablet.
-How do I stop it?
-<p>Set the environment variable
-<p>GEM_NO_TABLET = 1
-<p>----
-<br><a NAME="7.4"></a>7.4) Why doesn't <i>gemmouse</i> work in IRIX?
-<p>Basically, I don't have physical access to an SGI machine.
-This makes it hard to do some of the OS specific work.
-It should be straightforward to do the event handling, so if someone gets
-it working, I would love to include it (and give you credit). All
-you have to do is call the correct event functions from GemEvent.h and
-everything should just start to work (ie, gemmouse doesn't have any OS
-specific code in it).
-<p>----
-<br><a NAME="7.5"></a>7.5) Why doesn't gemorb work?
-<p>You need to make sure that your SpaceOrb is hooked
-up correctly. I am using a library which isn't supported by SpaceTec so
-there can be problems, although I have not had any.
-<br> &lt;RANT> When will companies wake up and actually
-provide drivers and support for their products under WinNT? &lt;/RANT>
-<p>----
-<br><a NAME="7.6"></a>7.6) What is wrong with <i>pix_video</i> in WinNT?
-<p>I haven't completely figured out how to get access
-to the video stream in WinNT. I'm using Video for Windows with a
-Connectix QuickCam, as well as an Intel Video Capture Card, and it seems
-to assume that you are only writing to a file or previewing into a window.
-Windows tries to take over the system and doesn't really provide any stable
-hooks (unlike IRIX). If anyone knows how to deal with this, please
-let me know.
-<p><a href="index.html">[return]</a>
-<br>
-<br>
-</body>
-</html>
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Mark Danks">
+ <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
+ <title>Gem FAQ</title>
+</head>
+<body>
+
+<center>
+<h2>
+<u>GEM FAQ</u></h2></center>
+
+<p><br>* : new question
+<br>+ : changed question
+<p><img SRC="tribar.gif" height=13 width=561>
+<h2>
+<u>QUESTIONS</u></h2>
+<i><a href="#General">GENERAL</a></i>
+<br><a href="#1.1">1.1) What is GEM?</a>
+<br><a href="#1.2">1.2) What is Pd?</a>
+<br><a href="#1.3">1.3) What platforms do GEM and Pd run on?</a>
+<br><a href="#1.4.0">1.4.0) How do I install GEM and Pd on IRIX?</a>
+<br><a href="#1.4.1">1.4.1) How do I install GEM and Pd on linux?</a>
+<br><a href="#1.4.2">1.4.2) How do I install GEM and Pd on WinNT?</a>
+<br><a href="#1.7">1.7) What is a good intro to OpenGL?</a>
+<br><a href="#1.8">1.8) Are there any web sites for Pd or GEM?</a>
+<br><a href="#1.9">1.9) What libraries does GEM use? (aka: Who does Mark
+want to thank?)</a>
+<br><a href="#1.10">1.10) Are there any restrictions on GEM?</a>
+<br><a href="#1.11">1.11) How do I use GEM in a performance?</a>
+<p><i><a href="#UsingGem">USING GEM</a></i>
+<br><a href="#2.1">2.1) How do I (???)</a>
+<br><a href="#2.2">2.2) How do I make GEM run?</a>
+<br><a href="#2.3">2.3) Why doesn't GEM run?</a>
+<br><a href="#2.4">2.4) I've got it running. Now what?</a>
+<br><a href="#2.5">2.5) On IRIX 5.3, why does GEM dump with an rld error?</a>
+<br><a href="#2.6">2.6) Why can't I compile GEM on IRIX 5.3?</a>
+<br><a href="#2.7">2.7) Why is GEM slow in general?</a>
+<br><a href="#2.8">2.8) Why is GEM slow on IRIX?</a>
+<br><a href="#2.9">2.9) Why is GEM slow on WinNT/Win95?</a>
+<br><a href="#2.10">2.10) Why is GEM slow on Linux?</a>
+<br><a href="#2.11">2.11) If I resize the window, everything looks strange.</a>
+<br><a href="#2.12">2.12) Can GEM run on a 3Dfx Voodoo card?</a>
+<br><a href="#2.13">2.13) Will GEM support hardware transform and lighting
+(T&amp;L) ?</a>
+<br><a href="#2.14">2.14) I get an error "GEM needs Truecolor visual support".</a>
+<p><i><a href="#ViewingObjects">VIEWING OBJECTS</a></i>
+<br><a href="#3.1">3.1) Why does everything seem dim?</a>
+<br><a href="#3.2">3.2) Why does everything seem dark?</a>
+<p><i><a href="#TextureMapping">TEXTURE MAPPING</a></i>
+<br><a href="#4.1">4.1) My image doesn't appear. What is going on?</a>
+<br><a href="#4.2">4.2) My image looks strange. What is going on?</a>
+<br><a href="#4.3">4.3) Why does GEM say that it can't handle a gray image?</a>
+<br><a href="#4.4">4.4) What image formats can GEM handle?</a>
+<br><a href="#4.5">4.5) What movie formats can GEM handle?</a>
+<br><a href="#4.6">4.6) Why is pix_draw so slow?</a>
+<p><i><a href="#WorkingWithPd">WORKING WITH PD</a></i>
+<br><a href="#5.1">5.1) Why do I get clicks in the audio?</a>
+<br><a href="#5.2">5.2) How do I get audio data to GEM?</a>
+<br><a href="#5.3">5.3) Why can't GEM find an image/model file?</a>
+<br><a href="#5.4">5.4) How can I optimize my patches?</a>
+<p><i><a href="#NewGemObjects">WRITING NEW GEM OBJECTS</a></i>
+<br><a href="#6.1">6.1) How do I write a new GEM object?</a>
+<br><a href="#6.2">6.2) What are the default OpenGL states?</a>
+<p><i><a href="#ObjectSpecific">OBJECT SPECIFIC</a></i>
+<br><a href="#7.1">7.1) Why doesn't &lt;object> exist on &lt;platform>?</a>
+<br><a href="#7.2">7.2) Why doesn't gemtablet work?</a>
+<br><a href="#7.3">7.3) I don't want GEM to take over my tablet.
+How do I stop it?</a>
+<br><a href="#7.4">7.4) Why doesn't gemmouse work in IRIX/Linux?</a>
+<br><a href="#7.5">7.5) Why doesn't gemorb work?</a>
+<br><a href="#7.6">7.6) What is wrong with pix_video in WinNT?</a>
+<p><img SRC="tribar.gif" height=13 width=561>
+<h2>
+<u>ANSWERS</u></h2>
+<a NAME="General"></a><h3>GENERAL</h3>
+<br><a NAME="1.1"></a>1.1) What is GEM?
+<p>GEM is the Graphics Environment for Multimedia.
+It was originally written by <a href="mailto:mark@danks.org">Mark Danks</a> to generate real-time computer
+graphics, especially for audio-visual compositions. It originally ran under
+FTS/Max (which is why you might see some papers reference it), but all
+new development is under Pd.
+<p>You can get GEM at <a href="http://www.iem.at/GEM">http://gem.iem.at/</a>
+<p>GEM was sponsored by a grant from Intel (<a href="http://www.intel.com">http://www.intel.com</a>)
+<p>GEM was ported to <a href="http://www.linux.org">linux</a> by <a href="mailto:geiger@xdv.org">G&uuml;nter Geiger</a>
+<p>GEM is now maintained by <a href="mailto:zmoelnig@iem.at">IOhannes m zm&ouml;lnig</a>.
+<p>the core-development team consists of<ul>
+<li>chris clepper</li>
+<li>günter geiger</li>
+<li>daniel heckenberg</li>
+<li>james tittle</li>
+<li>IOhannes m zmölnig</li></ul>
+lots of contributions are made by various people (thanks to all of them)
+<p>----
+<br><a NAME="1.2"></a>1.2) What is Pd?
+<p>Pd is a real-time environment for audio and MIDI.
+It was written by <a href="mailto:msp@ucsd.edu">Miller Puckette</a>, who created FTS/Max when
+he was at IRCAM. Basically, Pd can be seen as the next generation
+of real-time visual programming languages. GEM runs inside of the
+Pd environment.
+<p>You can get Pd at <a href="http://www.crca.ucsd.edu/~msp/software.html">http://www.crca.ucsd.edu/~msp/software.html</a>
+<p>Pd is sponsored by a grant from Intel (<a href="http://www.intel.com">http://www.intel.com</a>)
+<p>----
+<br><a NAME="1.3"></a>1.3) What platforms do GEM and Pd run on?
+<p>GEM and Pd run on Windows (95, 98, ME, NT 4.0, 2000, XP), linux and macOS-X (&gt;10.2).
+SGI-Irix (&gt; 6.2) used to be supported but i don't have any prove that it still works).
+<a href="mailto:geiger@xdv.org">G&uuml;nter Geiger</a>
+has done an initial port of GEM and Pd to Linux <a href="http://gige.epy.co.at/">http://gige.epy.co.at</a>).
+<p>GEM is now maintained by <a href="mailto:zmoelnig@iem.at">me</a> and
+developed by a team of several independent programmers (see <a href="1.1">section 1.1</a>)
+<p>----
+<br><a NAME="1.4"></a>1.4) How do I install GEM ?
+<p>----
+<br><a NAME="1.4.0"></a>1.4.0) How do I install GEM and Pd on IRIX?
+<p>See the readme for installing Pd.
+<p>GEM should be at
+<p>pd/gem
+<p>If you run GEM.INSTALL.sh, then all of the example files and documention
+should be put in the correct locations.
+<p>----
+<br><a NAME="1.4.1"></a>1.4.1) How do I install GEM and Pd on linux?
+<p>See the readme for installing Pd.
+<p>GEM should be at
+<p>chdir to &lt;gem&gt;/src/Gnu and build Gem following the instructions in the README.build
+(<tt>./configure; make</tt>)
+<p>If you then <tt>make install</tt>, then all of the example files and documention
+should be put in the correct locations.
+<p>if you are using debian, Gem should be available via apt</p>
+<p>if you are using an rpm-based distribution, check out the builds at planetCCRMA</p>
+<p>----
+<br><a NAME="1.4.2"></a>1.4.2) How do I install GEM and Pd on WinNT?
+<p>See the readme for installing Pd.
+<p>unzip GEM so that it is at
+<p>pd\gem
+<p>If you run GEM.INSTALL.bat, then all of the example files and documentation
+should be put in the correct locations.
+<p>there is also an installer for windows.
+<p>----
+<br><a NAME="1.4.3"></a>1.4.3) How do I install GEM and Pd on macOS?
+<p>See the readme for installing Pd.
+<p>there is also an installer for macOS.
+<p>----
+<br><a NAME="1.7"></a>1.7) What is a good intro to OpenGL?
+<p>The best book is the <u>OpenGL Programming Manual</u>
+by Mason and Woo. This is also called the "Red Book". If you search
+the web, there are many sites on OpenGL. A good starting point is
+<a href="http://www.opengl.org">http://www.opengl.org</a>.
+Also, Mark Kilgard (who used to work for SGI) has a wonderful site with
+lots of links (<a href="http://reality.sgi.com/mjk">http://reality.sgi.com/mjk</a>)
+Also, Normal Lin has written another great book on <u>3D-graphics under linux</u>
+<p>----
+<br><a NAME="1.8"></a>1.8) Are there any web sites for Pd or GEM?
+<p>Except for the ones noted above, there is the Japanese
+installation page at
+<br><a href="http://www.rinc.or.jp/~kotobuki/gem/index.htm">http://www.rinc.or.jp/~kotobuki/gem/index.htm</a>
+<p>There is a Pd mailing list. Subscription info
+is on IEM's site <a href="http://www.iem.at/mailinglists/pd-list">http://www.iem.at/mailinglists/pd-list</a>
+<p>One of pd's unofficial home-pages is at <a href="http://pd.iem.at">http://pd.iem.at</a> hosted by the
+<a href="http://iem.at">Institute of Electronic Music and Acoustics, Graz, Austria</a>
+<p>Also hosted by the <a href="http://iem.at">iem</a> is the site of the pd-community
+<a href="http://www.puredata.info">http://www.puredata.info</a>
+<p>An interesting place might also be G&uuml;nter Geiger's size <a href="http://gige.epy.co.at/">http://gige.epy.co.at/</a>
+<p>there are lot's of other cool pages (search the net...)
+<p>----
+<br><a NAME="1.9"></a>1.9) What libraries does GEM use?
+(aka: Who does Mark want to thank?)
+<p>All copyrights and license info can be found in
+<br> GEM.LICENSE.TERMS
+<br> Thanks to Sam Leffner for libTiff, the TIFF image
+loader.
+<br>
+sam@engr.sgi.com
+<br> <a href="ftp://ftp.sgi.com/graphics/tiff/">ftp://ftp.sgi.com/graphics/tiff/</a>
+<br> Thanks to Masayuki Matsumoto for fstimage for OpenGL,
+the SGI
+<br> image loader.
+<br>
+matumot@dst.nk-exa.co.jp
+<br> Thanks to the Independent JPEG Group for libjpeg,
+the JPEG image loader.
+<br>
+jpeg-info@uunet.uu.net
+<br> <a href="ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/">ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/</a>
+<br> Thanks to Mark Kilgard at al. (and SGI) for glut, the openGL Utility Toolkit
+<br> <a href="http://www.pobox.com/~ndr">http://www.pobox.com/~ndr</a>
+<br> Thanks to Stephane Rehel for GLTT, the OpenGL TrueType
+render.
+<br>
+rehel@worldnet.fr
+<br> <a href="http://home.worldnet.fr/~rehel/gltt/gltt.html">http://home.worldnet.fr/~rehel/gltt/gltt.html</a>
+<br> Thanks to David Turner, Robert Wilhelm, and Werner
+Lemberg for
+<br> Freetype, a TrueType font
+rendering engine.
+<br>
+turner@enst.fr
+<br>
+robert@physiol.med.tu-muenchen.de
+<br>
+a7971428@unet.univie.ac.at
+<br> <a href="http://www.physiol.med.tu-muenchen.de/~robert/freetype.html">http://www.physiol.med.tu-muenchen.de/~robert/freetype.html</a>
+<br> Thanks to the MPEG Software Simulation Group, for
+libmpeg, the
+<br>MPEG-2 Encoder/Decoder
+<br>
+mssg@mpeg.org
+<br> <a href="http://www.mpeg.org/MSSG/">http://www.mpeg.org/MSSG/</a>
+<br> Thanks to Heroine for quicktime4linux
+a quickime Decoder
+and libmpeg3, another MPEG-2 Encoder/Decoder
+<br>MPEG-2 Encoder/Decoder
+<br>
+mssg@mpeg.org
+<br> <a href="http://heroinewarrior.com/">http://heroinewarrior.com/</a>
+<br> Thanks to LCS/Telegraphics for Wintab, the Windows
+tablet library.
+<br>
+wintab@pointing.com
+<br> Thanks to David McAllister for the Particle System
+library.
+<br>
+davemc@cs.unc.edu
+<br> <a href="http://www.cs.unc.edu/~davemc/Particle/">http://www.cs.unc.edu/~davemc/Particle/</a>
+<br> Thanks to John Stone for the Space Orb library,
+libOrb
+<br>
+j.stone@acm.org
+<br> <a href="http://www.umr.edu/~johns/projects/liborb/">http://www.umr.edu/~johns/projects/liborb/</a>
+<p>----
+<br><a NAME="1.10"></a>1.10) Are there any restrictions on GEM?
+<p>GEM is under the Gnu Public License. This basically
+means that it will always be free software.Check out <a href="http://www.gnu.org">http://www.gnu.org</a>
+for more information and read the full license in GnuGPL.LICENSE in the GEM release.
+<p>----
+<br><a NAME="1.11"></a>1.11) How do I use GEM in a performance?
+<p>This is a constant problem, because there is no consistent
+way to display video on any platform. Also, you usually do not want
+to send the entire screen, but only the GEM window. It is also useful
+to be able to edit/control the Pd patch window while the patch is actually
+running.
+<p>On SGIs, the best way is to get a video out option.
+On the SGI O2, Impact, and Onyx (Mark has used all of these), there is a
+simple connector or breakout box to do video.
+If you run the video out program, then you will get a rectangle on your screen
+which shows what is being sent out the video connector.
+Make your GEM window a little larger than 640x480 and center it in the rectangle.
+You can now project this with a standard video projector.
+<p>On PCs it is a bit harder.
+Several modern video-cards have the possibility to output several screens
+(either 2 (or more) VGA-screens or 1 VGA-screen and 1 TV (Composite or S-HVS)
+or a combination with DFTs)
+If you have a Canopus Voodoo2 card it has a video and s-video output on it. As described
+in <a href="#2.12">question 2.12</a>, you can get a Voodoo to work with
+GEM. If any one else has a better solution, please let me know.
+The nVidia Riva TNTs require that you output the full screen, so this is
+not a very good option. You can use a video scan convertor.
+Some of them only display a part of the scene, which is exactly what you
+want.
+<p>With modern multi-headed cards it is more simple:
+Configure your card to display the desktop spread over your multiple screens
+(e.g.: from left-to-right).
+On windows and macOS you can do this via the display-properties dialog.
+On linux you will have to edit your /etc/X11/XF86Config-4 file either by hand or
+(if your system supports it) via an appropriate editor (yes, nowadays there are some).
+Now create your gem-window on the second screen:
+it should have the same dimensions as the 2nd screen (e.g: "[dimen 800 600(").
+to place it at the second screen use the offset (e.g: if your primary sreen
+(the one you want for patch-editing) has the dimension 1024x768 use "[offset 1024 0(",
+which will create the gem-window 1024 pixels right of the upper-left corner
+of the total screen (and 0 pixels below it),
+which is exactly the upper-left corner of the 2nd screen.
+You most probably want to turn off the borders with "[border 0(".<br>
+<em>Note:</em> some grafix-card have openGL-hardware-acceleration only on the 1st screen
+(so you should create the gem-window on the 1st screen and move
+your patches to the 2nd screen)
+<p>If you are using an XServer for displaying (under linux) you can also use another
+computer for rendering.
+You can specify the place where the gem-window should be created with something like
+"create &lt;<em>render.host</em>&gt;:0.0"
+
+<p>If you are doing audio with graphics, the only solution
+to prevent clicking (<a href="#5.1">question 5.1</a>) is to run 2 computers
+and have them communicate with netsend/netreceive. We are working
+on making Pd/GEM multi-processor friendly, so if you have a multi-processor
+system, you can run everything on one machine eventually.
+<p>
+<hr WIDTH="100%"><a NAME="UsingGem"></a><h3><i>USING GEM</i></h3>
+<br><a NAME="2.1"></a>2.1)How do I (???)
+<p>Many of the general usage questions are probably
+answered in the manual or release notes. The pd mailing list is also
+a good place to find answers as well.
+<p><a NAME="2.2"></a>2.2) How do I make GEM run?
+<p>GEM is not an executable. It requires Pd to
+work and is loaded in at run time. For example, I have an alias on
+the SGI which does
+<p>/usr/people/mdanks/pd/bin/pd -lib /usr/people/mdanks/pd/gem/Gem
+<p>and on WinNT
+<p>\pdDir\pd\bin\pd -lib /pdDir/pd/gem/Gem
+<p>on UNIX-systems you will probably want to use a <tt>.pdrc</tt> file,
+ where you can put the command-line arguments for pd that you "always" need.
+<p>If you don't see a startup message from GEM, then something went wrong.
+<p>Most people use use the command shell to start Pd.
+It is not very difficult to configure Pd to run from double-clicking on the icon.
+<p>----
+<br><a NAME="2.3"></a>2.3) Why doesn't GEM run?
+<p><b>Notice that the -lib flag always requires Unix
+styles slashes</b>. This is the case even on Windows.
+<p>You may also want to use the -nosound flag.
+For instance, my PC has problems using audio (it leaks memory), so I just
+turn off the audio part of Pd. However, other people can't get GEM
+to work if the -nosound is used (on Win95). You can also try the
+-dac or -adc flags (for digital-analog-conversion only and analog-digital-conversion
+only).
+<p>----
+<br><a NAME="2.4"></a>2.4) I've got it running. Now what?
+<p>Try out the manual. It will step you through
+the basics.
+<br> You will also want to look at the example files.
+Assuming that everything is installed correctly, you can get to the examples
+by going to the Help menu in Pd and selecting examples. A bunch of
+the patches should start with gem&lt;something>. The best one is
+<i>gem/01.basic/01.redSquare.pd</i>
+It puts a red square up on the screen and allows you to rotate it. <i>gemImage.pd</i>
+shows how to load in a TIFF file. <i>gem/03.lighting/04.moveSpheres.pd</i>
+moves two spheres around the screen. Try the other ones.
+<br> Most of the GEM objects have test patches which
+give some information about the various controls for the object.
+<p>----
+<br><a NAME="2.5"></a>2.5) On IRIX 5.3, why does GEM dump with an rld error?
+<p>GEM only works under IRIX 6.2+. The rld error
+is probably something about not having glBindTextureEXT (or something).
+OpenGL 1.0 has some extensions to speed up texture mapping (which are an
+integral part of OpenGL 1.1). However, these don't exist on IRIX
+5.3. If you recompile GEM (see the next question), things should
+work fine.
+<br> I don't have access to an IRIX machine, so don't
+expect any builds from me. Upgrading to IRIX 6.2+ is worth it.
+<p>----
+<br><a NAME="2.6"></a>2.6) Why can't I compile GEM on IRIX 5.3?
+<p>There was probably an error saying that the compiler
+couldn't find the file "dmedia/vl_vino.h" in pix_videoSGI.cpp. IRIX
+6.2+ adds new functionality to the media libraries which makes life much
+easier. You cannot compile pix_video or pix_indycam as is under 5.3.
+You can remove them from the Pix/Makefile and from the linker part of the
+global Makefile. You will also need to recompile the Td and Tiff
+libraries.
+<p>There shouldn't be any problems doing this. I haven't tried any
+of this, so if it works for someone, please let me know.
+<p>----
+<br><a NAME="2.7"></a>2.7) Why is GEM slow in general?
+<p>Examine what you are doing. If you are constantly
+changing textures, then this is probably your problem. If you have
+models with a million triangles, then this is probably the problem.
+Compare what you are doing with realistic specs on your system. Some
+systems slow down when they have to draw very large polygons (slow fill
+rate).
+<br> You can also turn on profiling to see how long it
+takes to render a frame. Send a profile message to the gemwin object.
+The number that is printed is the number of milliseconds one frame takes
+to render. 50 milliseconds is 20 frames per second. 'profile 2' is
+good if you want to see how long the image processing is taking.
+<br> profile 0 - turn off profiling
+<br> profile 1 - turn on profiling
+<br> profile 2 - turn on profiling
+and don't cache pixes
+<p>----
+<br><a NAME="2.8"></a>2.8) Why is GEM slow on IRIX?
+<p>If you are having major slowdowns, then please let
+me know. I have gotten very good performance on most machines (Indy,
+O2, Impact, Onyx2).
+<p>----
+<br><a NAME="2.9"></a>2.9) Why is GEM slow on WinNT/Win95?
+<p>You probably don't have hardware acceleration.
+You can use software rendering, but it basically useless except for extremely
+basic patches. You can get a good graphics accelerator for really
+cheap these days. I recommend a card based on nVidia's chipsets,
+such as the TNT2 or GeForce, but there are other companies such as 3dfx
+and Matrox. Make sure that you are running the latest drivers for
+your card. The basic drivers that come with the cards are usually
+very bad.
+<br> Also, PCs don't deal with lots of texture maps very
+well (they are bus limited, at least until AGP), so if you are trying to
+use lots of constantly changing texture maps
+(especially with [pix_multiimage], [pix_video] or [pix_film]), that will cause problems.
+<p>----
+<br><a NAME="2.10"></a>2.10) Why is GEM slow on Linux?
+<p>It is because you have to use Mesa, which might be
+running iin software. Mesa (<a href="http://www.mesa.org">http://www.mesa.org</a>)
+is an awesome package by Brian Paul (brianp@avid.com) which "emulates"
+OpenGL. Basically, it is a fully compliant OpenGL package, but it
+isn't officially sanctioned by the OpenGL ARB, such, it is doesn't have
+the OpenGL name. There is an acceleration package for the many graphics
+card, but I don't know anything about it.
+<br>nVidia is being very supportive of Linux:
+their TNT2 and GeForce cards work under Linux with hardware-acceleration of openGL.
+(but the drivers are proprietary)
+<br>radeon cards should also be supported very well under linux (even with open-source drivers)
+<p>----
+<br><a NAME="2.11"></a>2.11) If I resize the window, everything looks strange.
+<p>GEM doesn't trap resize events in IRIX or Linux (this
+is not a problem in WinNT). This means that OpenGL doesn't have the
+correct information to render properly. If you want to resize the
+window, send a 'dimen x y' message to gemwin before you create the window.
+<p>----
+<br><a NAME="2.12"></a>2.12) Can GEM run on a 3Dfx Voodoo card?
+<p>I (this is: Mark Danks) have a Voodoo2 card, which runs fine under WinNT.
+I use the OpenGL beta driver from 3Dfx at work all the time without any
+problems and, except that the Voodoo takes over the full screen, it seems
+to work fine. You will need to download the OpenGL Beta driver from
+3Dfx's web site at http://www.3dfx.com and put the OpenGL32.dll into the
+same directory as pd.exe (NOT gem.dll). Debugging patches is much
+easier if you have two monitors, one for the 3-D card and one for the 2-D
+card.
+<p>IMPORTANT: You MUST set the environment variable
+<p>GEM_SINGLE_CONTEXT = 1
+<p>to make the Voodoo card work. It will make a window 640x480 (which
+is the correct size for TV video out on my Canopus V2 card). On WinNT,
+right click "My Computer" and go to "Properties". On the "Environment"
+tab, you need to add the variable "GEM_SINGLE_CONTEXT" with a value of
+1.
+<br>Resizing the GEM window with a Voodoo card is not
+a great idea. The Voodoo card can only display certain window sizes and
+will clip the graphics.
+<p>For the tech heads in the audience...I create an
+OpenGL context at startup and never actually display its associated window.
+This means that GEM objects can create display lists, call OpenGL commands,
+etc. in their constructors, even if no window is actually being displayed.
+However, with the Voodoo card, there can only be one OpenGL context.
+So, instead of creating one context and just holding onto it in the background,
+I create the normal GEM window and associate the OpenGL context with it...and
+the user can never destroy or close that window.
+<p>----
+<br><a NAME="2.13"></a>2.13) Will GEM support hardware transform and lighting
+(T &amp; L)?
+<p>Absolutely! Unlike some other APIs, OpenGL
+will automatically use hardware accelerated transform and lighting if the
+card has it. GEM gets great performance from cards like nVidia's
+GeForce.
+<p><a NAME="2.14"></a>2.14) I get an error "GEM needs Truecolor visual
+support".
+<p>This error means that your X display is running with
+paletted colors, which is the result of limited color depth. If you
+start the X display with
+<p>startx -- -bpp 16
+<p>or some higher number, then it should work fine. 32-bit color
+is the best.
+<p>
+<hr WIDTH="100%"><a NAME="ViewingObjects"></a><h3><i>VIEWING OBJECTS</i></h3>
+<br><a NAME="3.1"></a>3.1)Why does everything seem dim?<
+<p>You probably turned on lighting but don't have any
+lights in the world. Either add a light with <i>world_light</i> or
+<i>light</i>
+or turn lighting off by sending a message 'lighting 0' to the <i>gemwin</i>.
+You can also send a reset message to <i>gemwin</i> to set it back to the
+startup state (which doesn't have any lighting).
+<p>----
+<br><a NAME="3.2"></a>3.2) Why does everything seem dark?
+<p>See question 3.1.
+<br> If you are using <tt>view</tt> in your patch to change the viewpoint,
+you may not be pointing in the correct direction. You also might have translated
+everything outside of the current viewport.
+<br> Also, if you have been using single buffering ('buffer
+1' message to <i>gemwin</i>), then you might still be in that mode.
+Either send a 'buffer 2' message or a 'reset' message to <i>gemwin</i>.
+Then, destroy and create your window.
+<p>
+<hr WIDTH="100%"><a NAME="TextureMapping"></a><h3><i>TEXTURE MAPPING</i></h3>
+<br><a NAME="4.1"></a>4.1) My image doesn't appear. What is going
+on?
+<p>Normally images have to be texture-mapped onto Geos.
+You have to use [pix_texture] to map the current image onto a Geo.
+"Current" means that any pix-manipulation that is done after texturing will not be displayed.
+<p>Any Geo has a color (which is initially set to white).
+If you have set the color to black, your Geo (including the image) might be very dark.
+If you are using alpha-blending, make sure that the Geo is not invisible.
+<p>Normally images that want to be texture mapped with openGL should have dimensions that are a power of 2 in both height and width.
+Now [pix_texture] will make this totally transparent to you (so normally you don't have to care about the size of the image).
+However with non-power-of-2 images <i>pix_coordinate</i> might not behave as expected,
+because these images need absolute texture-coordinates rather than normalized ones
+(as are used with power-of-2 images): so if the texture-coordinates are set to "(0,0) (1,0) (1,1) (0,1)" you might see only the first pixel of the image (which might be black).
+<p>Also, make sure that GEM can find your image (ie,
+that the path name is correct).
+<p>----
+<br><a NAME="4.2"></a>4.2) My image looks strange. What is going
+on?
+<p>GEM supports gray8, YUV, and RGBA images. If
+it sees that the number of bits per channel and the number of channels
+is something that it should be able to handle, it tries to load the raw
+data. If you have compressed or stored the pixel data in some "strange"
+format, then GEM will probably not read the information correctly.
+<br> Also, if it is an RGBA image, then make sure that
+the alpha channel is something useful (this only matters if you are using
+the alpha channel, like in the alpha object or pix_mask).
+<p>----
+<br><a NAME="4.3"></a>4.3) Why does GEM say that it can't handle a gray
+image?
+<p>This error message occurs whenever a pix object receives
+a gray8 image and the implementor hasn't provided a way to deal with that
+format of image. (Implementors often only provide functions for GEM's <i>native</i>
+color-format RGBA. Any other color-format (like BGR) will try to call the function
+for gray8 images, which might not be supported.)
+ If you do not want to change the image format with some extern image-programm
+(like Photoshop or the Gimp) you might want to try <i>pix_rgba</a>
+or harass whoever made the object to add the functionality.
+<p>----
+<br><a NAME="4.4"></a>4.4) What image formats can GEM handle?
+<p>GEM can read in TIFF, JPEG, and SGI images.
+These can be in any color format. Gray scale images are loaded in
+as gray scale (ie, one byte per pixel). Everything else is loaded
+in or converted to an RGBA image (ie, four bytes per pixel). If there
+is an alpha channel, then it will be respected. Otherwise, the alpha
+channel will be set to fully opaque (alpha == 255).
+<p>GEM can write TIFF and JPEG images.
+TIFF-images will be full RGBA-images, wheras JPEG-files only support (compressed) RGB.
+<p>----
+<br><a NAME="4.5"></a>4.5) What movie formats can GEM handle?
+<p>The movie formats GEM can handle (still) depend on the platform
+you are using.
+<p>On Windoze you can read all AVI-files you have codecs for
+<p>On linux the readable formats depend on the libraries you had installed when you compiled GEM.
+Currently there is (optional) support for AVI, quicktime (*.MOV) and MPEG (*.MPG) files.
+Not all quicktime-formats are supported. This is unfortunate but is due to linux restrictions.
+I highly recommend that you install the mpeg3-library from Heroine because it is much more stable than mpeg1 (which comes with many linux-distributions).
+If you have compiled in support for libavifile, you will be able to open Micro$oft-AVI-files.
+If you have installed the proper codecs
+(libavifile supports a mechanism for loading codecs from windows-DLLs) you should be able to
+open almost any format.
+
+If you have serious problems, mail them <a href="mailto:zmoelnig@iem.at">to me</a>.
+(Be ready to upload the movie-file that won't work)
+<p>----
+<br><a NAME="4.6"></a>4.6) Why is <i>pix_draw</i> so slow?
+<p><i>pix_draw</i> is almost never hardware accelerated
+on PCs graphics accelerator. This means that it runs <i>extremely</i>
+slowly. Always use <i>pix_texture</i>, even if you are just displaying
+an image.
+<p>
+<hr WIDTH="100%"><a NAME="WorkingWithPd"></a><h3><i>WORKING WITH PD</i></h3>
+<br><a NAME="5.1"></a>5.1) Why do I get clicks in the audio?
+<p>If you are getting a constant stream of clicks in
+your audio, then it is probably because you are trying to do graphics and
+audio in the same process. Rendering a graphics frame usually takes
+longer than the size of the audio buffer, which is why you get clicks (the
+clicks are usually at 20Hz...the typical frame rate).
+<br> One way around this is to use two computers, one
+for graphics and one for audio. If you have enough processing power
+(or dual processors), then you can run two versions of Pd, one for graphics
+and one for audio. Just use <i>netsend</i> and <i>netreceive</i>
+to have the two versions of Pd talk to each other.
+<p>----
+<br><a NAME="5.2"></a>5.2) How do I get audio data to GEM?
+<p>One simple way to get raw audio values right now is
+to use <i>snapshot~</i>. Just set up a <i>metro</i> which bangs <i>snapshot~</i>
+and use the floating point value. If you want "musical" information,
+then use objects such as <i>env~</i>.
+You might also have a look at the <i>pix_sig2pix~</i> which interprets audio-data as pixels
+and its counterpart <i>pix_pix2sig~</i>
+<p>----
+<br><a NAME="5.3"></a>5.3) Why can't GEM find an image/model file?
+<p>This means that GEM can't locate the file.
+If you use an absolute path (with / for instance), then GEM will look there.
+Otherwise, GEM will look in the directory of where the patch is.
+Then pd/GEM will search the paths you specified at startup with the <i>-path</i> flag.
+<p>Check the following:
+<p>1) Does the file exist?
+<br> 2) Did you make a typo in the filename?
+<br> 3) Is the file in the search-path ?
+<p>----
+<br><a NAME="5.4"></a>5.4) How can I optimize my patches?
+<p>One of the biggest performance hits is having UI
+elements in your patch which have to be updated. The biggest performance
+hog is the number box. While the number box is great for debugging,
+make sure that they are all gone from your "release" patch. If you
+run a performance meter, you will see that whenever Tcl/Tk has to update
+the user interface, it sucks the entire processor. Another examples
+of this is when you move a lot of objects at once, everything jerks and
+slides across the screen. There are probably ways to improve this...
+<br> Another problem is doing unneccessary calculations.
+When you are throwing lots of numbers around, especially packing/unpacking,
+doing vector math, etc., they add up. If the calculations are going
+unused (for instance, that part of the patch is turned off), then do not
+trigger the math objects. Use <i>spigot</i> or <i>gate</i> and block
+the events early. This is especially important with objects that
+send a lot of numbers, like ~ objects or <i>line</i>/<i>tripleLine</i>.
+<p>
+<hr WIDTH="100%"><a NAME="NewGemObjects"></a><h3><i>WRITING NEW GEM OBJECTS</i></h3>
+<br><a NAME="6.1"></a>6.1) How do I write a new GEM object?
+<p>For the time being, you have to look at the code.
+It is fairly well documented and straight forward (if you know C++ and
+OOP). Start with an object which is similar to what you want and
+derive a new class. The biggest issue right now is how to load in
+GEM as a DSO/DLL. For SGIs, you will need to setenv LD_LIBRARY_PATH.
+On NT, you will need to have your path include the directory with GEM.
+<p>----
+<br><a NAME="6.2"></a>6.2) What are the default OpenGL states?
+<p>GemMan (and by association, gemwin) disables alpha
+testing, alpha blending, culling, and lighting. Lighting defaults
+to two sided, with GL_COLOR_MATERIAL enabled. The viewport is set
+to
+<p>float xDivy = (float)m_width / (float)m_height;
+<br> glMatrixMode(GL_PROJECTION);
+<br> glLoadIdentity();
+<br> glFrustum(-xDivy, xDivy, -1.0, 1.0, 1.0, 20.0);
+<br> gluLookAt(0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0, 1.0,
+0.0);
+<br> glMatrixMode(GL_MODELVIEW);
+<br> glViewport(0, 0, m_width, m_height);
+<p>which gives a range of about -4 to 4 in X and Y at the origin.
+This is a small range, but changing it now would break a lot of patches.
+<p>The specific functions to look at are:
+<p>GemMan::windowInit()
+<br>GemMan::resetValues()
+<br>gemhead::renderGL()
+<p>
+<hr WIDTH="100%"><a NAME="ObjectSpecific"></a><h3><i>OBJECT SPECIFIC</i></h3>
+<br><a NAME="7.1"></a>7.1) Why doesn't &lt;object> exist on &lt;platform>?
+<p>Usually, this is because I don't have the resources
+to get the object running on that platform. If an object that you
+want doesn't exist on your platform, then ask for it! However, if
+it is tied to hardware, then it is much less likely that I will be able
+to do anything about it (unless someone donates the hardware to me...)
+<p>----
+<br><a NAME="7.2"></a>7.2) Why doesn't <i>gemtablet</i> work?
+<p><i>gemtablet</i> only works on WinNT. I don't
+have drivers for IRIX or Linux (also, see question 7.4)
+<br> If GEM can find the tablet, then it will print a
+message at window creation time. If you don't see a message, then
+GEM doesn't think that you have a tablet.
+<br> The tablet is mapped to the size of the GEM graphics
+window.
+<p>---
+<br><a NAME="7.3"></a>7.3) I don't want GEM to take over my tablet.
+How do I stop it?
+<p>Set the environment variable
+<p>GEM_NO_TABLET = 1
+<p>----
+<br><a NAME="7.4"></a>7.4) Why doesn't <i>gemmouse</i> work in IRIX?
+<p>Basically, I don't have physical access to an SGI machine.
+This makes it hard to do some of the OS specific work.
+It should be straightforward to do the event handling, so if someone gets
+it working, I would love to include it (and give you credit). All
+you have to do is call the correct event functions from GemEvent.h and
+everything should just start to work (ie, gemmouse doesn't have any OS
+specific code in it).
+<p>----
+<br><a NAME="7.5"></a>7.5) Why doesn't gemorb work?
+<p>You need to make sure that your SpaceOrb is hooked
+up correctly. I am using a library which isn't supported by SpaceTec so
+there can be problems, although I have not had any.
+<br> &lt;RANT> When will companies wake up and actually
+provide drivers and support for their products under WinNT? &lt;/RANT>
+<p>----
+<br><a NAME="7.6"></a>7.6) What is wrong with <i>pix_video</i> in WinNT?
+<p>I haven't completely figured out how to get access
+to the video stream in WinNT. I'm using Video for Windows with a
+Connectix QuickCam, as well as an Intel Video Capture Card, and it seems
+to assume that you are only writing to a file or previewing into a window.
+Windows tries to take over the system and doesn't really provide any stable
+hooks (unlike IRIX). If anyone knows how to deal with this, please
+let me know.
+<p><a href="index.html">[return]</a>
+<br>
+<br>
+</body>
+</html>
diff --git a/Gem/manual/GemWPd.html b/Gem/manual/GemWPd.html
index b564d99..46c863a 100644
--- a/Gem/manual/GemWPd.html
+++ b/Gem/manual/GemWPd.html
@@ -1,140 +1,140 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="Author" content="Mark Danks">
- <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
- <title>Using GEM with Pd</title>
-</head>
-<body>
-
-<center>
-<h2>
-<u>Using GEM with Pd</u></h2></center>
-&nbsp;&nbsp;&nbsp; An important fact is that GEM is NOT an application.
-It is a library that the application Pd loads in at run-time.&nbsp; Most
-of this information is taken directly from the GEM FAQ.
-<p><a href="#GEMIrix">How do I install GEM on IRIX?</a>
-<br><a href="#GEMWinNT">How do I install GEM on Win95/NT/2k?</a>
-<br><a href="#GEMlinux">How do I install GEM on linux?</a>
-<br><a href="#GEMmacos">How do I install GEM on macOS-X?</a>
-<br><a href="#runIRIX">How do I run GEM on IRIX?</a>
-<br><a href="#runWinNT">How do I run GEM on Win95/NT/2k?</a>
-<br><a href="#runlinux">How do I run GEM on linux?</a>
-<br><a href="#runmacos">How do I run GEM on linux?</a>
-<br><a href="#noRun">Why doesn't GEM run?</a>
-<p><img SRC="tribar.gif" height=13 width=561>
-<h4>
-<a NAME="GEMIrix"></a><u>How do I install GEM and Pd on IRIX?</u></h4>
-See the readme for installing Pd.
-<p>Uncompress and untar the GEM file that you downloaded.&nbsp; GEM should
-be located at
-<p>pd/gem
-<p>depending on where you have installed Pd.
-<p>If you run the shell script, GEM.INSTALL.sh, then all of the example
-files and documention
-<br>should be put in the correct locations.
-<p><img SRC="tribar.gif" height=13 width=561>
-<h4>
-<a NAME="GEMWinNT"></a><u>How do I install GEM and Pd on WinNT?</u></h4>
-See the readme for installing Pd.
-<p>TODO: there should be a install package somewhere
-<p>Unzip the GEM file that you downloaded so that it is at
-<p>pd\gem
-<p>depending on where you have installed Pd.
-<p>If you run GEM.INSTALL.bat, then all of the example files and documentation
-should be put in the correct locations.
-<p><img SRC="tribar.gif" height=13 width=561>
-<h4>
-<a NAME="GEMlinux"></a><u>How do I install GEM and Pd on linux?</u></h4>
-See the readme for installing Pd.
-<p>Uncompress and untar the GEM file that you downloaded so that it is at
-<p>pd/gem
-<p>depending on where you have installed Pd.
-<p>chdir into &lt;pd/gem&gt;/src/Gnu
-<p>read the README.build
-<p>run <tt>./configure</tt> and afterwards <tt>make</tt>
-<p>If you run <tt>make install</tt>, then all of the example files and documentation
-should be put in the correct locations.
-<p><img SRC="tribar.gif" height=13 width=561>
-<h4>
-<a NAME="GEMmacos"></a><u>How do I install GEM and Pd on macOS-X?</u></h4>
-See the readme for installing Pd.
-<p>TODO: there should be a install package somewhere
-<p><img SRC="tribar.gif" height=13 width=561>
-<h4>
-<a NAME="runIRIX"></a><u>How do I run GEM on IRIX?</u></h4>
-&nbsp;&nbsp; To use GEM type something like:
-<p>/usr/people/mdanks/pd/bin/pd -lib /usr/people/mdanks/pd/gem/Gem
-<p>(where /usr/people/mdanks is the path to the pd directory). Check out
-the README for Pd to see examples of the -lib flag. If you just try to
-"run" GEM, you will get an error! Notice that last word is a capital Gem.
-If you get a "can't find gem_setup" error, then that is the problem. Look
-in the GEM FAQ
-<br>for trouble shooting suggestions.
-<p>If you don't see startup messages from GEM, then something went wrong.
-<br>Also, you might need to add pd/bin to your PATH environment variable.
-<p><img SRC="tribar.gif" height=13 width=561>
-<h4>
-<a NAME="runWinNT"></a><u>How do I run GEM on Win95/NT?</u></h4>
-&nbsp;&nbsp;&nbsp; It is best to start Pd from a DOS command line.&nbsp;
-If you go to the Start menu, you should find an application called "Command
-Prompt" under the Program menu.&nbsp; You need to change to the drive where
-you installed Pd.&nbsp; For instance, if it is on your D: drive, just type
-d: at the prompt.
-<p>&nbsp;&nbsp; To use GEM type something like:
-<p>\pd\bin\pd -lib /pd/gem/Gem
-<p>depending on where you installed Pd.
-<p>&nbsp;&nbsp;&nbsp; Check out the README for Pd to see examples of the
--lib flag. If you just try to double click GEM, you will get an error!
-Notice that last word is a capital Gem. If you get a "can't find gem_setup"
-error, then that is the problem. Look in the GEM FAQ for trouble shooting
-suggestions.
-<p>If you don't see a startup message from GEM, then something went wrong.
-<p>&nbsp;&nbsp;&nbsp; Most people use the command shell to start Pd.&nbsp;
-It is difficult to configure Pd to run from double-clicking on the icon.
-<p>&nbsp;&nbsp;&nbsp; Also, you might need to add pd/bin to your PATH environment
-variable.
-<p><img SRC="tribar.gif" height=13 width=561>
-<h4>
-<a NAME="runIRIX"></a><u>How do I run GEM on linux?</u></h4>
-&nbsp;&nbsp; To use GEM type something like:
-<p>/usr/people/mdanks/pd/bin/pd -lib /usr/people/mdanks/pd/gem/Gem
-<p>(where /usr/people/mdanks is the path to the pd directory). Check out
-the README for Pd to see examples of the -lib flag. If you just try to
-"run" GEM, you will get an error! Notice that last word is a capital Gem.
-If you get a "can't find gem_setup" error, then that is the problem. Look
-in the GEM FAQ
-<br>for trouble shooting suggestions.
-<p>If you don't see startup messages from GEM, then something went wrong.
-<br>Also, you might need to add pd/bin to your PATH environment variable.
-<p><img SRC="tribar.gif" height=13 width=561>
-<h4>
-<a NAME="runIRIX"></a><u>How do I run GEM on macOS-X?</u></h4>
-&nbsp;&nbsp; To use GEM type something like:
-<code>/usr/local/bin/pd -lib /Users/zmoelnig/pd/Gem</code>
-<p>(where /usr/local/bin/pd is the path to the pd directory and
-/Users/zmoelnig/pd is the path where the <i>Gem.pd_darwin</i> resides).
-Check out the README for Pd to see examples of the -lib flag. If you just try to
-"run" GEM, you will get an error! Notice that last word is a capital Gem.
-If you get a "can't find gem_setup" error, then that is the problem. Look
-in the GEM FAQ
-<br>for trouble shooting suggestions.
-<p>If you don't see startup messages from GEM, then something went wrong.
-<br>Also, you might need to add pd/bin to your PATH environment variable.
-<p><img SRC="tribar.gif" height=13 width=561>
-<h4>
-<a NAME="noRun"></a><u>Why doesn't GEM run?</u></h4>
-&nbsp;&nbsp;&nbsp; Notice that the -lib flag always requires Unix styles
-slashes, even if you are on Windows.&nbsp; This means that you need to
-do <i>-lib /gem/Gem</i>, not <i>-lib \gem\Gem</i>
-<p>&nbsp;&nbsp;&nbsp; You may also want to use the -nosound flag.&nbsp;
-For instance, my PC has problems using audio (it leaks memory), so I just
-turn off the audio part of Pd.&nbsp; However, other people can't get GEM
-to work if the -nosound is used (on Win95).&nbsp; You can also try the
--dac or -adc flags (for digital-analog-conversion only and analog-digital-conversion
-only).
-<p><a href="index.html">[return]</a>
-<br>&nbsp;
-</body>
-</html>
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Mark Danks">
+ <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
+ <title>Using GEM with Pd</title>
+</head>
+<body>
+
+<center>
+<h2>
+<u>Using GEM with Pd</u></h2></center>
+&nbsp;&nbsp;&nbsp; An important fact is that GEM is NOT an application.
+It is a library that the application Pd loads in at run-time.&nbsp; Most
+of this information is taken directly from the GEM FAQ.
+<p><a href="#GEMIrix">How do I install GEM on IRIX?</a>
+<br><a href="#GEMWinNT">How do I install GEM on Win95/NT/2k?</a>
+<br><a href="#GEMlinux">How do I install GEM on linux?</a>
+<br><a href="#GEMmacos">How do I install GEM on macOS-X?</a>
+<br><a href="#runIRIX">How do I run GEM on IRIX?</a>
+<br><a href="#runWinNT">How do I run GEM on Win95/NT/2k?</a>
+<br><a href="#runlinux">How do I run GEM on linux?</a>
+<br><a href="#runmacos">How do I run GEM on linux?</a>
+<br><a href="#noRun">Why doesn't GEM run?</a>
+<p><img SRC="tribar.gif" height=13 width=561>
+<h4>
+<a NAME="GEMIrix"></a><u>How do I install GEM and Pd on IRIX?</u></h4>
+See the readme for installing Pd.
+<p>Uncompress and untar the GEM file that you downloaded.&nbsp; GEM should
+be located at
+<p>pd/gem
+<p>depending on where you have installed Pd.
+<p>If you run the shell script, GEM.INSTALL.sh, then all of the example
+files and documention
+<br>should be put in the correct locations.
+<p><img SRC="tribar.gif" height=13 width=561>
+<h4>
+<a NAME="GEMWinNT"></a><u>How do I install GEM and Pd on WinNT?</u></h4>
+See the readme for installing Pd.
+<p>TODO: there should be a install package somewhere
+<p>Unzip the GEM file that you downloaded so that it is at
+<p>pd\gem
+<p>depending on where you have installed Pd.
+<p>If you run GEM.INSTALL.bat, then all of the example files and documentation
+should be put in the correct locations.
+<p><img SRC="tribar.gif" height=13 width=561>
+<h4>
+<a NAME="GEMlinux"></a><u>How do I install GEM and Pd on linux?</u></h4>
+See the readme for installing Pd.
+<p>Uncompress and untar the GEM file that you downloaded so that it is at
+<p>pd/gem
+<p>depending on where you have installed Pd.
+<p>chdir into &lt;pd/gem&gt;/src/Gnu
+<p>read the README.build
+<p>run <tt>./configure</tt> and afterwards <tt>make</tt>
+<p>If you run <tt>make install</tt>, then all of the example files and documentation
+should be put in the correct locations.
+<p><img SRC="tribar.gif" height=13 width=561>
+<h4>
+<a NAME="GEMmacos"></a><u>How do I install GEM and Pd on macOS-X?</u></h4>
+See the readme for installing Pd.
+<p>TODO: there should be a install package somewhere
+<p><img SRC="tribar.gif" height=13 width=561>
+<h4>
+<a NAME="runIRIX"></a><u>How do I run GEM on IRIX?</u></h4>
+&nbsp;&nbsp; To use GEM type something like:
+<p>/usr/people/mdanks/pd/bin/pd -lib /usr/people/mdanks/pd/gem/Gem
+<p>(where /usr/people/mdanks is the path to the pd directory). Check out
+the README for Pd to see examples of the -lib flag. If you just try to
+"run" GEM, you will get an error! Notice that last word is a capital Gem.
+If you get a "can't find gem_setup" error, then that is the problem. Look
+in the GEM FAQ
+<br>for trouble shooting suggestions.
+<p>If you don't see startup messages from GEM, then something went wrong.
+<br>Also, you might need to add pd/bin to your PATH environment variable.
+<p><img SRC="tribar.gif" height=13 width=561>
+<h4>
+<a NAME="runWinNT"></a><u>How do I run GEM on Win95/NT?</u></h4>
+&nbsp;&nbsp;&nbsp; It is best to start Pd from a DOS command line.&nbsp;
+If you go to the Start menu, you should find an application called "Command
+Prompt" under the Program menu.&nbsp; You need to change to the drive where
+you installed Pd.&nbsp; For instance, if it is on your D: drive, just type
+d: at the prompt.
+<p>&nbsp;&nbsp; To use GEM type something like:
+<p>\pd\bin\pd -lib /pd/gem/Gem
+<p>depending on where you installed Pd.
+<p>&nbsp;&nbsp;&nbsp; Check out the README for Pd to see examples of the
+-lib flag. If you just try to double click GEM, you will get an error!
+Notice that last word is a capital Gem. If you get a "can't find gem_setup"
+error, then that is the problem. Look in the GEM FAQ for trouble shooting
+suggestions.
+<p>If you don't see a startup message from GEM, then something went wrong.
+<p>&nbsp;&nbsp;&nbsp; Most people use the command shell to start Pd.&nbsp;
+It is difficult to configure Pd to run from double-clicking on the icon.
+<p>&nbsp;&nbsp;&nbsp; Also, you might need to add pd/bin to your PATH environment
+variable.
+<p><img SRC="tribar.gif" height=13 width=561>
+<h4>
+<a NAME="runIRIX"></a><u>How do I run GEM on linux?</u></h4>
+&nbsp;&nbsp; To use GEM type something like:
+<p>/usr/people/mdanks/pd/bin/pd -lib /usr/people/mdanks/pd/gem/Gem
+<p>(where /usr/people/mdanks is the path to the pd directory). Check out
+the README for Pd to see examples of the -lib flag. If you just try to
+"run" GEM, you will get an error! Notice that last word is a capital Gem.
+If you get a "can't find gem_setup" error, then that is the problem. Look
+in the GEM FAQ
+<br>for trouble shooting suggestions.
+<p>If you don't see startup messages from GEM, then something went wrong.
+<br>Also, you might need to add pd/bin to your PATH environment variable.
+<p><img SRC="tribar.gif" height=13 width=561>
+<h4>
+<a NAME="runIRIX"></a><u>How do I run GEM on macOS-X?</u></h4>
+&nbsp;&nbsp; To use GEM type something like:
+<code>/usr/local/bin/pd -lib /Users/zmoelnig/pd/Gem</code>
+<p>(where /usr/local/bin/pd is the path to the pd directory and
+/Users/zmoelnig/pd is the path where the <i>Gem.pd_darwin</i> resides).
+Check out the README for Pd to see examples of the -lib flag. If you just try to
+"run" GEM, you will get an error! Notice that last word is a capital Gem.
+If you get a "can't find gem_setup" error, then that is the problem. Look
+in the GEM FAQ
+<br>for trouble shooting suggestions.
+<p>If you don't see startup messages from GEM, then something went wrong.
+<br>Also, you might need to add pd/bin to your PATH environment variable.
+<p><img SRC="tribar.gif" height=13 width=561>
+<h4>
+<a NAME="noRun"></a><u>Why doesn't GEM run?</u></h4>
+&nbsp;&nbsp;&nbsp; Notice that the -lib flag always requires Unix styles
+slashes, even if you are on Windows.&nbsp; This means that you need to
+do <i>-lib /gem/Gem</i>, not <i>-lib \gem\Gem</i>
+<p>&nbsp;&nbsp;&nbsp; You may also want to use the -nosound flag.&nbsp;
+For instance, my PC has problems using audio (it leaks memory), so I just
+turn off the audio part of Pd.&nbsp; However, other people can't get GEM
+to work if the -nosound is used (on Win95).&nbsp; You can also try the
+-dac or -adc flags (for digital-analog-conversion only and analog-digital-conversion
+only).
+<p><a href="index.html">[return]</a>
+<br>&nbsp;
+</body>
+</html>
diff --git a/Gem/manual/Gloss.html b/Gem/manual/Gloss.html
index 1d42709..fcf35c9 100644
--- a/Gem/manual/Gloss.html
+++ b/Gem/manual/Gloss.html
@@ -1,41 +1,41 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="Author" content="Mark Danks">
- <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
- <title>Glossary/Index</title>
-</head>
-<body>
-
-<center>
-<h2>
-<u>Glossary</u></h2></center>
-<a NAME="Alpha"></a>Alpha - The amount of opacity.&nbsp; An alpha equal
-to 1.0 means completely opaque.&nbsp; An alpha equal to 0.0 means completely
-transparent.
-<p><a NAME="Controls"></a>Controls - GEM objects which access the low levels
-of GEM, such as window managers.
-<p><a NAME="Geos"></a>Geos - GEM objects which have a shape of some kind,
-such as a cube.
-<p><a NAME="Manips"></a>Manips - GEM objects which manipulate the geos.
-<p><a NAME="MarkEx"></a>MarkEx - A collection of objects which help with
-data manipulation, especially for usage in GEM.
-<p><a NAME="Nongeos"></a>Nongeos - GEM objects which do not have an explicit
-shape, yet affect the rendering in some way.
-<p><a NAME="OpenGL"></a><a href="http://www.opengl.org">OpenGL</a> - A
-graphics API which exists on many different platforms.<br>
-Gem can <i>also</i> be used as a wrapper for openGL, allowing to program openGL without having to
-compile
-<p><a NAME="Particles"></a>Particles - GEM objects which involve the particle
-system.
-<p><a NAME="Pd"></a><a href="http://pd.iem.at">Pd</a>
-- A visual programming language for audio processing.&nbsp; This is the
-host application for GEM.
-<p><a NAME="Pixes"></a>Pixes - Image processing objects in GEM
-<p><a NAME="Texture"></a>Texture mapping - Applying an image to a geometric
-object.
-<p><a href="index.html">[return]</a>
-<br>&nbsp;
-</body>
-</html>
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Mark Danks">
+ <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
+ <title>Glossary/Index</title>
+</head>
+<body>
+
+<center>
+<h2>
+<u>Glossary</u></h2></center>
+<a NAME="Alpha"></a>Alpha - The amount of opacity.&nbsp; An alpha equal
+to 1.0 means completely opaque.&nbsp; An alpha equal to 0.0 means completely
+transparent.
+<p><a NAME="Controls"></a>Controls - GEM objects which access the low levels
+of GEM, such as window managers.
+<p><a NAME="Geos"></a>Geos - GEM objects which have a shape of some kind,
+such as a cube.
+<p><a NAME="Manips"></a>Manips - GEM objects which manipulate the geos.
+<p><a NAME="MarkEx"></a>MarkEx - A collection of objects which help with
+data manipulation, especially for usage in GEM.
+<p><a NAME="Nongeos"></a>Nongeos - GEM objects which do not have an explicit
+shape, yet affect the rendering in some way.
+<p><a NAME="OpenGL"></a><a href="http://www.opengl.org">OpenGL</a> - A
+graphics API which exists on many different platforms.<br>
+Gem can <i>also</i> be used as a wrapper for openGL, allowing to program openGL without having to
+compile
+<p><a NAME="Particles"></a>Particles - GEM objects which involve the particle
+system.
+<p><a NAME="Pd"></a><a href="http://pd.iem.at">Pd</a>
+- A visual programming language for audio processing.&nbsp; This is the
+host application for GEM.
+<p><a NAME="Pixes"></a>Pixes - Image processing objects in GEM
+<p><a NAME="Texture"></a>Texture mapping - Applying an image to a geometric
+object.
+<p><a href="index.html">[return]</a>
+<br>&nbsp;
+</body>
+</html>
diff --git a/Gem/manual/Images.html b/Gem/manual/Images.html
index 182d153..cc6eb99 100644
--- a/Gem/manual/Images.html
+++ b/Gem/manual/Images.html
@@ -1,112 +1,112 @@
-<!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>
+<!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>
diff --git a/Gem/manual/Input.html b/Gem/manual/Input.html
index fe089d0..3b027e1 100644
--- a/Gem/manual/Input.html
+++ b/Gem/manual/Input.html
@@ -1,19 +1,19 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="Author" content="Mark Danks">
- <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
- <title>Input devices</title>
-</head>
-<body>
-
-<center>
-<h2>
-<u>Input devices</u></h2></center>
-
-<p><br>Nothing here yet
-<p><a href="index.html">[return]</a>
-<br>&nbsp;
-</body>
-</html>
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Mark Danks">
+ <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
+ <title>Input devices</title>
+</head>
+<body>
+
+<center>
+<h2>
+<u>Input devices</u></h2></center>
+
+<p><br>Nothing here yet
+<p><a href="index.html">[return]</a>
+<br>&nbsp;
+</body>
+</html>
diff --git a/Gem/manual/Intro.html b/Gem/manual/Intro.html
index 23e8d23..165ad27 100644
--- a/Gem/manual/Intro.html
+++ b/Gem/manual/Intro.html
@@ -1,62 +1,62 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="Author" content="Mark Danks">
- <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
- <title>GEM - Introduction</title>
-</head>
-<body>
-
-<center>
-<h2>
-<u>Introduction</u></h2></center>
-GEM is the Graphics Environment for Multimedia. It was originally written by
-<a href="http://www.danks.org/mark">Mark Danks</a> to generate real-time computer graphics,
-especially for audio-visual compositions.
-Because GEM is a visual programming environment, users do not need any experience
-in traditional computer languages.
-<p>GEM is a collection of externals which allow the user to create
-<a href="http://www.opengl.org">OpenGL</a>
-graphics within <a href="http://www.crca.ucsd.edu/~msp/software.html">Pd</a>,
-a program for real-time audio processing by <a href="http://www.crca.ucsd.edu/~msp">Miller
-Puckette</a> (of <a href="http://www.ircam.fr">Max</a> fame).
-<p>There are many different shapes and objects, including polygonal graphics,
-lighting, texture mapping, image processing, and camera motion. All of
-this is possible in real-time without any previous programming experience.
-Because GEM is an add-on library for <a href="http://www.crca.ucsd.edu/~msp/software.html">Pd</a>,
-users can combine audio and graphics, controlling one medium from another.
-<p>GEM is supported in part by a grant from the <a href="http://www.intel.com">Intel
-Research Council</a> for the <a href="http://www.gvm.com">The Global Visual
-Music</a> project of <a href="http://felix.usc.edu/vibeke.html">Vibeke
-Sorensen</a>, <a href="http://www.crca.ucsd.edu/~msp">Miller Puckette</a>
-and <a href="http://www.earunit.org/rand.htm">Rand Steiger</a>.
-<p>An important thing to remember is that GEM is NOT an application.&nbsp;
-It is a library that Pd loads at run-time.&nbsp; Make sure that you see
-the section on <a href="GemWPd.html">using GEM with Pd</a>.&nbsp; This
-manual assumes that you have Pd working correctly and can load up patches
-already.&nbsp; If you do not have that working yet, look at the Pd manual
-and the GEM FAQ.&nbsp; Also, it is assumed that you have a basic understanding
-of how to use Pd and the idea behind the data flow model.&nbsp; In other
-words, if I ask you to pass a message with 3 floats into an object, you
-would know what I mean.
-<p>The system requirements vary depending on your system and what you are
-trying to do.&nbsp; In general, you should have the most powerful computer
-available and the best graphics accelerator on the market.&nbsp; In reality,
-people have been doing some amazing work with a Pentium II and an <a href="http://www.nvidia.com">nVidia
-Riva TNT</a> or <a href="http://www.3dfx.com">3Dfx Voodoo2</a> card.&nbsp;
-If you are on an SGI, then everything from an O2 up seems to be okay.&nbsp;
-The biggest requirement is that you have some kind of OpenGL graphics accelerator.&nbsp;
-This means that a Matrox Millennium II will not run very quickly.
-<p>The other factor is what you are trying to do.&nbsp; Pushing real-time
-video around requires a fast bus, which really only exists on SGIs.&nbsp;
-Doing thousands of texture mapped polygons is great on a PC...if it is
-a constant texture.&nbsp; There are many issues which mean that there is
-no one answer to "Is this system good enough?".&nbsp; In general, you will
-have to try and see.
-<p>GEM is now maintained by <a href="http://www.iem.at/info/personal/jz.htm">IOhannes m zm&ouml;lnig</a>.
-So any bug-reports and donations should go to him instead of Mark...
-<p><a href="index.html">[return]</a>
-<br>&nbsp;
-</body>
-</html>
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Mark Danks">
+ <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
+ <title>GEM - Introduction</title>
+</head>
+<body>
+
+<center>
+<h2>
+<u>Introduction</u></h2></center>
+GEM is the Graphics Environment for Multimedia. It was originally written by
+<a href="http://www.danks.org/mark">Mark Danks</a> to generate real-time computer graphics,
+especially for audio-visual compositions.
+Because GEM is a visual programming environment, users do not need any experience
+in traditional computer languages.
+<p>GEM is a collection of externals which allow the user to create
+<a href="http://www.opengl.org">OpenGL</a>
+graphics within <a href="http://www.crca.ucsd.edu/~msp/software.html">Pd</a>,
+a program for real-time audio processing by <a href="http://www.crca.ucsd.edu/~msp">Miller
+Puckette</a> (of <a href="http://www.ircam.fr">Max</a> fame).
+<p>There are many different shapes and objects, including polygonal graphics,
+lighting, texture mapping, image processing, and camera motion. All of
+this is possible in real-time without any previous programming experience.
+Because GEM is an add-on library for <a href="http://www.crca.ucsd.edu/~msp/software.html">Pd</a>,
+users can combine audio and graphics, controlling one medium from another.
+<p>GEM is supported in part by a grant from the <a href="http://www.intel.com">Intel
+Research Council</a> for the <a href="http://www.gvm.com">The Global Visual
+Music</a> project of <a href="http://felix.usc.edu/vibeke.html">Vibeke
+Sorensen</a>, <a href="http://www.crca.ucsd.edu/~msp">Miller Puckette</a>
+and <a href="http://www.earunit.org/rand.htm">Rand Steiger</a>.
+<p>An important thing to remember is that GEM is NOT an application.&nbsp;
+It is a library that Pd loads at run-time.&nbsp; Make sure that you see
+the section on <a href="GemWPd.html">using GEM with Pd</a>.&nbsp; This
+manual assumes that you have Pd working correctly and can load up patches
+already.&nbsp; If you do not have that working yet, look at the Pd manual
+and the GEM FAQ.&nbsp; Also, it is assumed that you have a basic understanding
+of how to use Pd and the idea behind the data flow model.&nbsp; In other
+words, if I ask you to pass a message with 3 floats into an object, you
+would know what I mean.
+<p>The system requirements vary depending on your system and what you are
+trying to do.&nbsp; In general, you should have the most powerful computer
+available and the best graphics accelerator on the market.&nbsp; In reality,
+people have been doing some amazing work with a Pentium II and an <a href="http://www.nvidia.com">nVidia
+Riva TNT</a> or <a href="http://www.3dfx.com">3Dfx Voodoo2</a> card.&nbsp;
+If you are on an SGI, then everything from an O2 up seems to be okay.&nbsp;
+The biggest requirement is that you have some kind of OpenGL graphics accelerator.&nbsp;
+This means that a Matrox Millennium II will not run very quickly.
+<p>The other factor is what you are trying to do.&nbsp; Pushing real-time
+video around requires a fast bus, which really only exists on SGIs.&nbsp;
+Doing thousands of texture mapped polygons is great on a PC...if it is
+a constant texture.&nbsp; There are many issues which mean that there is
+no one answer to "Is this system good enough?".&nbsp; In general, you will
+have to try and see.
+<p>GEM is now maintained by <a href="http://www.iem.at/info/personal/jz.htm">IOhannes m zm&ouml;lnig</a>.
+So any bug-reports and donations should go to him instead of Mark...
+<p><a href="index.html">[return]</a>
+<br>&nbsp;
+</body>
+</html>
diff --git a/Gem/manual/Lighting.html b/Gem/manual/Lighting.html
index dcff171..5c30fb9 100644
--- a/Gem/manual/Lighting.html
+++ b/Gem/manual/Lighting.html
@@ -1,107 +1,107 @@
-<!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>
+<!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>
diff --git a/Gem/manual/ListObjects.html b/Gem/manual/ListObjects.html
index 2708993..da6ab37 100644
--- a/Gem/manual/ListObjects.html
+++ b/Gem/manual/ListObjects.html
@@ -1,231 +1,231 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="Author" content="Mark Danks">
- <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
- <title>List of GEM objects</title>
-</head>
-<body>
-
-<center>
-<h2>
-<u>List of GEM objects</u></h2></center>
-<a href="#Controls">Controls</a>
-<br><a href="#Manips">Manipulators</a>
-<br><a href="#Geos">Geos</a>
-<br><a href="#Particles">Particles</a>
-<br><a href="#Nongeos">Nongeos</a>
-<br><a href="#Pixes">Pixes</a>
-<br><a href="#TV">TV</a>
-<br><a href="#MarkEx">MarkEx</a>
-<p>
-<hr WIDTH="100%"><a NAME="Controls"></a><i><u>Controls</u></i>
-<br>gemhead - the start of rendering chain
-<br>gemwin - the window manager
-<br>gemmouse - outputs the mouse position and buttons in the GEM window
-<br>gemkeyboard - outputs the keycode of a key pressed when you are in the GEM window (there might be different keycodes in Windows/Linux)
-<br>gemkeyname - outputs a symbolic description of a key pressed when you are in the GEM window (there might be different symbols in Windows/Linux)
-<br>gemorb - outputs the position, rotation, and buttons for a Space Orb
-<br>gemtablet - outputs the pen position, pressure, and buttons in the
-GEM window
-<p>
-<hr WIDTH="100%">
-<br><a NAME="Manips"></a><i><u>Manipulators</u></i>
-<br>accumrotate - accumulate a rotation
-<br>alpha - enable/disable alpha blending
-<br>ambient - set the ambient color with a vector
-<br>ambientRGB - set the ambient color with 3 discrete values
-<br>camera -
-<br>color - set the color with a vector
-<br>colorRGB - set the color with 3 discrete values
-<br>depth - enable/disable depth testing
-<br>diffuse - set the diffuse color with a vector
-<br>diffuseRGB - set the diffuse color with 3 discrete values
-<br>emission - set the emissive color with a vector
-<br>emissionRGB - set the emissive color with 3 discrete values
-<br>linear_path - generate a path from an array of points
-<br>ortho - change the view to orthogonal, with the viewport the size of
-the window
-<br>polygon_smooth - turn on anti-aliasing for the objects below
-<br>rotate - rotate with an angle and vector
-<br>rotateXYZ - rotate with 3 discrete values
-<br>scale - scale with a vector
-<br>scaleXYZ - scale with 3 discrete values
-<br>separator - push the OpenGL state for the rest of the chain and pop
-when done
-<br>shininess - set the shininess of an object
-<br>specular - set the specular color with a vector
-<br>specularRGB - set the specular color with 3 discrete values
-<br>spline_path - generate a spline from an array of knots
-<br>translate - translate with a vector
-<br>translateXYZ - translate with 3 discrete values
-
-<p><a NAME="Geos"></a><i><u>Geos</u></i>
-<br>circle - render a circle
-<br>colorSquare - render a colored square (evtl. with color gradients)
-<br>cone - render a cone
-<br>cube - render a cube
-<br>cuboid - render a box
-<br>curve - render a Bezier curve
-<br>curve3d - render a surface
-<br>cylinder - render a cylinder
-<br>disk - render a disk
-<br>imageVert - make pixel colors to a height field map
-<br>model - render an Alias|Wavefront model
-<br>multimodel - render a series of Alias|Wavefront models, render by number
-<br>newWave - render a wave (that is evolving over time)
-<br>polygon - render a polygon
-<br>primTri - a triangle primitive
-<br>rectangle - render a rectangle
-<br>ripple - a rectangle with distorted (over time) texture-coordinates
-<br>rubber - a grid where you can move one of the grid-points
-<br>slideSquare - render a number of sliding squares
-<br>sphere - render a sphere
-<br>square - render a square
-<br>teapot - render a teapot
-<br>text2d - render 2-D text (a bitmap)
-<br>text3d - render 3-D text (polygonal)
-<br>textextruded - render an extruded 3D-text
-<br>textoutline - render outlined text (polygonal)
-<br>triangle - render a triangle
-<p><a NAME="Particles"></a><i><u>Particles</u></i>
-<br>part_head - The start of a particle group
-<br>part_color - Set the range of colors for the new particles
-<br>part_damp - set the damping for particles
-<br>part_draw - Apply the actions and render the particles.&nbsp; Accepts
-a message "draw line" or "draw point" to change the drawing style.
-<br>part_follow - Particles will follow each other like a snake
-<br>part_gravity - Have the particles accelerate in a direction
-<br>part_info - get the information (position, color, size,...) of each particle
-<br>part_killold - Remove particles past a certain age
-<br>part_killslow - Remove particles below a certain speed
-<br>part_orbitpoint - Orbit the particles around a specified point
-<br>part_render - render the remaining gem-tree as particles.
-<br>part_size - Set the size of new particles
-<br>part_source - Generate particles
-<br>part_targetcolor - Change color of the particles toward the specified
-color
-<br>part_targetsize - Change size of the particles toward the specified
-size
-<br>part_velocity - Set the velocity domain
-(distribution like CONE and the appropriate arguments)
-<br>part_vertex - emit a single particle
-
-<p><a NAME="Nongeos"></a><i><u>Nongeos</u></i>
-<br>light - make a point light
-<br>world_light - make a light at infinity
-<p><a NAME="Pixes"></a><i><u>Pixes</u></i>
-<br>pix_2grey - convert rgb pixels to grey (still an RGBA image)
-<br>pix_a_2grey - convert rgb pixels to grey based on alpha channel
-<br>pix_add - add two pixes together
-<br>pix_aging - super8-like aging effect
-<br>pix_alpha - set the alpha value of a pix
-<br>pix_background - let through only pixels that differ from a static "background" image
-<br>pix_backlight - a backlight photo effect
-<br>pix_biquad - 2p2z-filter for subsequent images
-<br>pix_bitmask - apply a bitmask to a pix
-<br>pix_blob - get center of gravity
-<br>pix_buf - buffer a pix
-<br>pix_buffer - storage room for pixes (like [table] for floats)
-<br>pix_buffer_read/pix_buffer_write - put/get pixes into/from a pix_buffer
-<br>pix_chroma_key - color keying (like "blue-box")
-<br>pix_coloralpha - set the alpha-channel of a pix as a mean-value of the color-components
-<br>pix_colormatrix - recombine the RGBA-channels with matrix-operation
-<br>pix_color - set the color of a pix (leaving alpha alone)
-<br>pix_colorreduce - reduce the number of colors (statistically)
-<br>pix_composite - composite two pixes together
-<br>pix_convolve - convolve a pix with a kernal
-<br>pix_coordinate - set the texture coordinates
-<br>pix_crop - get a sub-image of a pix
-<br>pix_curve - apply color-curves onto a pix
-<br>pix_data - get pixel data information
-<br>pix_delay - frame-wise delay
-<br>pix_diff - get absolute difference of two pixes
-<br>pix_dot - rasterize a pix with big dots
-<br>pix_draw - draw a pix
-<br>pix_dump - dump the pixel-data as a long list of floats
-<br>pix_duotone - reduce the number of colors by thresholding
-<br>pix_film - use a movie file as a pix source for image-processing
-<br>pix_flip - flip the pixels of a pix
-<br>pix_gain - apply a gain to a pix
-<br>pix_grey - convert any pix into greyscale colorspace
-<br>pix_halftone - rasterize a pix like it was printed in a newspaper
-<br>pix_histo - get the histogram of a pix
-<br>pix_hsv2rgb - transform a pix from HSV-colorspace into RGB-colorspace
-<br>pix_image - load in an image file
-<br>pix_imageInPlace - load a series of image files directly into texture-buffer, display by number
-<br>pix_info - get information about the pix (like dimension, colorspace,...)
-<br>pix_invert - invert a pix
-<br>pix_kaleidoscope - as if you were looking at the pix through a kaleidoscope
-<br>pix_levels - level adjustment
-<br>pix_lumaoffset - y-offset pixels depending on their luminance
-<br>pix_mask - mask a pix based on another pix
-<br>pix_metaimage - recompose an image out of smaller versions of itself
-<br>pix_mix - mix to pixes together
-<br>pix_motionblur - motionblur an image
-<br>pix_movie - use a movie file as a pix source and load it immediately into the texture-buffer
-<br>pix_movement - set the alpha-channel with respect to the change between two frames
-<br>pix_multiply - multiply two pixes
-<br>pix_multiimage - load in a series of image files, display by number
-<br>pix_normalize - normalize a pix
-<br>pix_offset - add an offset to a pix (wrapping instead of clipping)
-<br>pix_pix2sig~ - interpret a pix as 4 (RGBA) audio-signals
-<br>pix_posterize - posterization photo effect
-<br>pix_puzzle - shuffle an image
-<br>pix_rds - generate a Random Dot Stereogram out of the image (aka: Magic Eye (tm))
-<br>pix_rectangle - generate a rectangle in a pix buffer
-<br>pix_refraction - break up an image into coloured "glass-bricks"
-<br>pix_resize - resize a pix to next power of 2
-<br>pix_rgb2hsv - transform a pix from RGB-colorspace into HSV-colorspace
-<br>pix_rgba - transform a pix of any format into RGBA
-<br>pix_roll - (sc)roll through an image (wrapping)
-<br>pix_rtx - swap time-axis and x-axis
-<br>pix_scanline - take every nth line of the original image
-<br>pix_set - set the pixel-data with a long list of floats
-<br>pix_sig2pix~ - interpret 4 audio-signals as (RGBA) image-data
-<br>pix_snap - capture the render window into a pix
-<br>pix_snap2tex - capture the render window directly as a texture
-<br>pix_subtract - subtract two pixes
-<br>pix_tIIR - time-base Infinite-Impulse-Response filter (for motion-bluring,...) with settable number of poles/zeros
-<br>pix_takealpha - take the alpha channel of one pix and put it into another pix
-<br>pix_texture - use a pix as a texture map
-<br>pix_threshold - apply a threshold to a pix
-<br>pix_video - use a video camera as a pix source
-<br>pix_write - capture the render window to disk
-<br>pix_zoom - zoom into a pix (using OpenGL)
-
-<p><a NAME="openGL"></a><i><u>openGL</u></i>
-there are more than 250 objects that
-form a complete wrapper around the openGL set of functions
-(as defined in the openGL-1.2 standard).<br>
-each openGL-function is prefixed with "GEM", eg:
-<i>[GEMglVertex3f]</i> is wrapped around <i>glVertex3f</i>.
-
-<p><a NAME="MarkEx"></a><i><u>MarkEx</u></i>
-<br>alternate - alternate between two outlets
-<br>average - average a sequence of numbers
-<br>change - only output on change
-<br>counter - count bangs
-<br>invert - non-zero numbers to zero, zero to 1
-<br>multiselect/multisel - a select object which accepts a list in the
-right inlet
-<br>oneshot - send a bang, then block until reset
-<br>randomF / randF - floating point random numbers
-<br>strcat - string concatentation
-<br>tripleLine - do a line with three numbers
-<br>tripleRand - random with three numbers
-<br>vector+ / v+ - add a scalar to a vector
-<br>vector- / v- - subtract a scalar from a vector
-<br>vector* / v* - multiply a vector by a scalar
-<br>vector/ / v/ - divide a vector by a scalar
-<br>vectorpack / vpack - attach a scalar to the end of a vector
-<br>rgb2hsv - convert a list of three floats from RGB to an HSV value
-<br>hsv2rgb - convert a list of three floats from HSV to an RGB value
-<br>abs~ - absolute value of a signal
-<br>reson~ - resonant filter
-<p><a href="index.html">[return]</a>
-<br>&nbsp;
-<br>&nbsp;
-</body>
-</html>
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Mark Danks">
+ <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
+ <title>List of GEM objects</title>
+</head>
+<body>
+
+<center>
+<h2>
+<u>List of GEM objects</u></h2></center>
+<a href="#Controls">Controls</a>
+<br><a href="#Manips">Manipulators</a>
+<br><a href="#Geos">Geos</a>
+<br><a href="#Particles">Particles</a>
+<br><a href="#Nongeos">Nongeos</a>
+<br><a href="#Pixes">Pixes</a>
+<br><a href="#TV">TV</a>
+<br><a href="#MarkEx">MarkEx</a>
+<p>
+<hr WIDTH="100%"><a NAME="Controls"></a><i><u>Controls</u></i>
+<br>gemhead - the start of rendering chain
+<br>gemwin - the window manager
+<br>gemmouse - outputs the mouse position and buttons in the GEM window
+<br>gemkeyboard - outputs the keycode of a key pressed when you are in the GEM window (there might be different keycodes in Windows/Linux)
+<br>gemkeyname - outputs a symbolic description of a key pressed when you are in the GEM window (there might be different symbols in Windows/Linux)
+<br>gemorb - outputs the position, rotation, and buttons for a Space Orb
+<br>gemtablet - outputs the pen position, pressure, and buttons in the
+GEM window
+<p>
+<hr WIDTH="100%">
+<br><a NAME="Manips"></a><i><u>Manipulators</u></i>
+<br>accumrotate - accumulate a rotation
+<br>alpha - enable/disable alpha blending
+<br>ambient - set the ambient color with a vector
+<br>ambientRGB - set the ambient color with 3 discrete values
+<br>camera -
+<br>color - set the color with a vector
+<br>colorRGB - set the color with 3 discrete values
+<br>depth - enable/disable depth testing
+<br>diffuse - set the diffuse color with a vector
+<br>diffuseRGB - set the diffuse color with 3 discrete values
+<br>emission - set the emissive color with a vector
+<br>emissionRGB - set the emissive color with 3 discrete values
+<br>linear_path - generate a path from an array of points
+<br>ortho - change the view to orthogonal, with the viewport the size of
+the window
+<br>polygon_smooth - turn on anti-aliasing for the objects below
+<br>rotate - rotate with an angle and vector
+<br>rotateXYZ - rotate with 3 discrete values
+<br>scale - scale with a vector
+<br>scaleXYZ - scale with 3 discrete values
+<br>separator - push the OpenGL state for the rest of the chain and pop
+when done
+<br>shininess - set the shininess of an object
+<br>specular - set the specular color with a vector
+<br>specularRGB - set the specular color with 3 discrete values
+<br>spline_path - generate a spline from an array of knots
+<br>translate - translate with a vector
+<br>translateXYZ - translate with 3 discrete values
+
+<p><a NAME="Geos"></a><i><u>Geos</u></i>
+<br>circle - render a circle
+<br>colorSquare - render a colored square (evtl. with color gradients)
+<br>cone - render a cone
+<br>cube - render a cube
+<br>cuboid - render a box
+<br>curve - render a Bezier curve
+<br>curve3d - render a surface
+<br>cylinder - render a cylinder
+<br>disk - render a disk
+<br>imageVert - make pixel colors to a height field map
+<br>model - render an Alias|Wavefront model
+<br>multimodel - render a series of Alias|Wavefront models, render by number
+<br>newWave - render a wave (that is evolving over time)
+<br>polygon - render a polygon
+<br>primTri - a triangle primitive
+<br>rectangle - render a rectangle
+<br>ripple - a rectangle with distorted (over time) texture-coordinates
+<br>rubber - a grid where you can move one of the grid-points
+<br>slideSquare - render a number of sliding squares
+<br>sphere - render a sphere
+<br>square - render a square
+<br>teapot - render a teapot
+<br>text2d - render 2-D text (a bitmap)
+<br>text3d - render 3-D text (polygonal)
+<br>textextruded - render an extruded 3D-text
+<br>textoutline - render outlined text (polygonal)
+<br>triangle - render a triangle
+<p><a NAME="Particles"></a><i><u>Particles</u></i>
+<br>part_head - The start of a particle group
+<br>part_color - Set the range of colors for the new particles
+<br>part_damp - set the damping for particles
+<br>part_draw - Apply the actions and render the particles.&nbsp; Accepts
+a message "draw line" or "draw point" to change the drawing style.
+<br>part_follow - Particles will follow each other like a snake
+<br>part_gravity - Have the particles accelerate in a direction
+<br>part_info - get the information (position, color, size,...) of each particle
+<br>part_killold - Remove particles past a certain age
+<br>part_killslow - Remove particles below a certain speed
+<br>part_orbitpoint - Orbit the particles around a specified point
+<br>part_render - render the remaining gem-tree as particles.
+<br>part_size - Set the size of new particles
+<br>part_source - Generate particles
+<br>part_targetcolor - Change color of the particles toward the specified
+color
+<br>part_targetsize - Change size of the particles toward the specified
+size
+<br>part_velocity - Set the velocity domain
+(distribution like CONE and the appropriate arguments)
+<br>part_vertex - emit a single particle
+
+<p><a NAME="Nongeos"></a><i><u>Nongeos</u></i>
+<br>light - make a point light
+<br>world_light - make a light at infinity
+<p><a NAME="Pixes"></a><i><u>Pixes</u></i>
+<br>pix_2grey - convert rgb pixels to grey (still an RGBA image)
+<br>pix_a_2grey - convert rgb pixels to grey based on alpha channel
+<br>pix_add - add two pixes together
+<br>pix_aging - super8-like aging effect
+<br>pix_alpha - set the alpha value of a pix
+<br>pix_background - let through only pixels that differ from a static "background" image
+<br>pix_backlight - a backlight photo effect
+<br>pix_biquad - 2p2z-filter for subsequent images
+<br>pix_bitmask - apply a bitmask to a pix
+<br>pix_blob - get center of gravity
+<br>pix_buf - buffer a pix
+<br>pix_buffer - storage room for pixes (like [table] for floats)
+<br>pix_buffer_read/pix_buffer_write - put/get pixes into/from a pix_buffer
+<br>pix_chroma_key - color keying (like "blue-box")
+<br>pix_coloralpha - set the alpha-channel of a pix as a mean-value of the color-components
+<br>pix_colormatrix - recombine the RGBA-channels with matrix-operation
+<br>pix_color - set the color of a pix (leaving alpha alone)
+<br>pix_colorreduce - reduce the number of colors (statistically)
+<br>pix_composite - composite two pixes together
+<br>pix_convolve - convolve a pix with a kernal
+<br>pix_coordinate - set the texture coordinates
+<br>pix_crop - get a sub-image of a pix
+<br>pix_curve - apply color-curves onto a pix
+<br>pix_data - get pixel data information
+<br>pix_delay - frame-wise delay
+<br>pix_diff - get absolute difference of two pixes
+<br>pix_dot - rasterize a pix with big dots
+<br>pix_draw - draw a pix
+<br>pix_dump - dump the pixel-data as a long list of floats
+<br>pix_duotone - reduce the number of colors by thresholding
+<br>pix_film - use a movie file as a pix source for image-processing
+<br>pix_flip - flip the pixels of a pix
+<br>pix_gain - apply a gain to a pix
+<br>pix_grey - convert any pix into greyscale colorspace
+<br>pix_halftone - rasterize a pix like it was printed in a newspaper
+<br>pix_histo - get the histogram of a pix
+<br>pix_hsv2rgb - transform a pix from HSV-colorspace into RGB-colorspace
+<br>pix_image - load in an image file
+<br>pix_imageInPlace - load a series of image files directly into texture-buffer, display by number
+<br>pix_info - get information about the pix (like dimension, colorspace,...)
+<br>pix_invert - invert a pix
+<br>pix_kaleidoscope - as if you were looking at the pix through a kaleidoscope
+<br>pix_levels - level adjustment
+<br>pix_lumaoffset - y-offset pixels depending on their luminance
+<br>pix_mask - mask a pix based on another pix
+<br>pix_metaimage - recompose an image out of smaller versions of itself
+<br>pix_mix - mix to pixes together
+<br>pix_motionblur - motionblur an image
+<br>pix_movie - use a movie file as a pix source and load it immediately into the texture-buffer
+<br>pix_movement - set the alpha-channel with respect to the change between two frames
+<br>pix_multiply - multiply two pixes
+<br>pix_multiimage - load in a series of image files, display by number
+<br>pix_normalize - normalize a pix
+<br>pix_offset - add an offset to a pix (wrapping instead of clipping)
+<br>pix_pix2sig~ - interpret a pix as 4 (RGBA) audio-signals
+<br>pix_posterize - posterization photo effect
+<br>pix_puzzle - shuffle an image
+<br>pix_rds - generate a Random Dot Stereogram out of the image (aka: Magic Eye (tm))
+<br>pix_rectangle - generate a rectangle in a pix buffer
+<br>pix_refraction - break up an image into coloured "glass-bricks"
+<br>pix_resize - resize a pix to next power of 2
+<br>pix_rgb2hsv - transform a pix from RGB-colorspace into HSV-colorspace
+<br>pix_rgba - transform a pix of any format into RGBA
+<br>pix_roll - (sc)roll through an image (wrapping)
+<br>pix_rtx - swap time-axis and x-axis
+<br>pix_scanline - take every nth line of the original image
+<br>pix_set - set the pixel-data with a long list of floats
+<br>pix_sig2pix~ - interpret 4 audio-signals as (RGBA) image-data
+<br>pix_snap - capture the render window into a pix
+<br>pix_snap2tex - capture the render window directly as a texture
+<br>pix_subtract - subtract two pixes
+<br>pix_tIIR - time-base Infinite-Impulse-Response filter (for motion-bluring,...) with settable number of poles/zeros
+<br>pix_takealpha - take the alpha channel of one pix and put it into another pix
+<br>pix_texture - use a pix as a texture map
+<br>pix_threshold - apply a threshold to a pix
+<br>pix_video - use a video camera as a pix source
+<br>pix_write - capture the render window to disk
+<br>pix_zoom - zoom into a pix (using OpenGL)
+
+<p><a NAME="openGL"></a><i><u>openGL</u></i>
+there are more than 250 objects that
+form a complete wrapper around the openGL set of functions
+(as defined in the openGL-1.2 standard).<br>
+each openGL-function is prefixed with "GEM", eg:
+<i>[GEMglVertex3f]</i> is wrapped around <i>glVertex3f</i>.
+
+<p><a NAME="MarkEx"></a><i><u>MarkEx</u></i>
+<br>alternate - alternate between two outlets
+<br>average - average a sequence of numbers
+<br>change - only output on change
+<br>counter - count bangs
+<br>invert - non-zero numbers to zero, zero to 1
+<br>multiselect/multisel - a select object which accepts a list in the
+right inlet
+<br>oneshot - send a bang, then block until reset
+<br>randomF / randF - floating point random numbers
+<br>strcat - string concatentation
+<br>tripleLine - do a line with three numbers
+<br>tripleRand - random with three numbers
+<br>vector+ / v+ - add a scalar to a vector
+<br>vector- / v- - subtract a scalar from a vector
+<br>vector* / v* - multiply a vector by a scalar
+<br>vector/ / v/ - divide a vector by a scalar
+<br>vectorpack / vpack - attach a scalar to the end of a vector
+<br>rgb2hsv - convert a list of three floats from RGB to an HSV value
+<br>hsv2rgb - convert a list of three floats from HSV to an RGB value
+<br>abs~ - absolute value of a signal
+<br>reson~ - resonant filter
+<p><a href="index.html">[return]</a>
+<br>&nbsp;
+<br>&nbsp;
+</body>
+</html>
diff --git a/Gem/manual/Particles.html b/Gem/manual/Particles.html
index 7b8ceb6..4a4f80c 100644
--- a/Gem/manual/Particles.html
+++ b/Gem/manual/Particles.html
@@ -1,19 +1,19 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="Author" content="Mark Danks">
- <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
- <title>Particles</title>
-</head>
-<body>
-
-<center>
-<h2>
-<u>Particles</u></h2></center>
-
-<p><br>Nothing here yet
-<p><a href="index.html">[return]</a>
-<br>&nbsp;
-</body>
-</html>
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Mark Danks">
+ <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
+ <title>Particles</title>
+</head>
+<body>
+
+<center>
+<h2>
+<u>Particles</u></h2></center>
+
+<p><br>Nothing here yet
+<p><a href="index.html">[return]</a>
+<br>&nbsp;
+</body>
+</html>
diff --git a/Gem/manual/Pixes.html b/Gem/manual/Pixes.html
index badf8bc..6b90842 100644
--- a/Gem/manual/Pixes.html
+++ b/Gem/manual/Pixes.html
@@ -1,105 +1,105 @@
-<!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>
+<!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>
diff --git a/Gem/manual/Texture.html b/Gem/manual/Texture.html
index 1de889c..0e35a1d 100644
--- a/Gem/manual/Texture.html
+++ b/Gem/manual/Texture.html
@@ -1,126 +1,126 @@
-<!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>
+<!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>
diff --git a/Gem/manual/Utility.html b/Gem/manual/Utility.html
index c8f6e17..b2e619e 100644
--- a/Gem/manual/Utility.html
+++ b/Gem/manual/Utility.html
@@ -1,149 +1,149 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="Author" content="Mark Danks">
- <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
- <title>Utility objects</title>
-</head>
-<body>
-
-<center>
-<h2>
-<u>Utility objects</u></h2></center>
-There are a number of objects which were written to make it easier to use
-both GEM and pd.&nbsp; For instance, you often pass around 3 floats at
-a time in GEM, either for position or colors.&nbsp; To help with this,
-there are a collection of vector objects.&nbsp; Use the list below to find
-out about the objects.
-<p>These objects used to be in a separate library called MarkEx, but they
-have now been folded into GEM.
-<p><a href="#counter">counter</a> - count the number of bangs
-<br><a href="#average">average</a> - average a series of numbers together
-<br><a href="#change">change</a> - only output when there is a change in
-the number
-<br><a href="#invert">invert</a> - invert a number
-<br><a href="#randF">randomF/randF</a> - floating point random number
-<br><a href="#tripleLine">tripleLine</a> - line object for 3 values
-<br><a href="#tripleRand">tripleRand</a> - three random numbers
-<br><a href="#vector">vector objects</a> - process a series of numbers
-<br><a href="#hsv2rgb">hsv2rgb and rgb2hsv</a> - convert between RGB and
-HSV color space
-<p><img SRC="tribar.gif" height=13 width=561>
-<h3>
-<a NAME="counter"></a>counter</h3>
-
-<center><img SRC="counter.jpg" BORDER=1 height=85 width=87></center>
-
-<p>The inlets are:
-<br>bang (increment or decrement the counter)
-<br>set direction (1 = count up, 2 = count down, 3 = count up and down)
-<br>set low value
-<br>set hight value
-<br>The outlet is the current count.
-<p>So in this case, the top <i>counter</i> will count up from 1 to 10.&nbsp;
-The bottom <i>counter</i> will count up from 2 to 5.
-<p>The <i>counter</i> also accepts the messages reset and clear.&nbsp;
-Reset immediately sets the counter to its low value and outputs the value.&nbsp;
-The clear message means that the next bang will set the <i>counter</i>
-to its low value.
-<p><img SRC="tribar.gif" height=13 width=561>
-<h3>
-<a NAME="average"></a>average</h3>
-The <i>average</i> object just averages a series of numbers as they come
-in.&nbsp; The left inlet accepts a single float.&nbsp; It then outputs
-the current average.&nbsp; The default number of floats to average together
-is 10, but that can be changed by sending a new value to the right inlet.
-<p>The <i>average</i> object also accepts the messages clear and reset.&nbsp;
-Clear will immediately set all of the values that the object has been storing
-for averaging to 0.&nbsp; With the reset message, you must pass in a number
-to set all of the values.
-<p><img SRC="tribar.gif" height=13 width=561>
-<h3>
-<a NAME="change"></a>change</h3>
-<i>Change</i> only accepts a number into its left inlet.&nbsp; If the number
-is the same as the last number sent to the <i>change</i> object, then it
-does nothing.&nbsp; If the number is different, then the <i>change</i>
-object will output the new number and store it for the next comparision.
-<p>This object is very useful for the == object and others like it, since
-they send a 0 or a 1 every time they do a comparision, and you usually
-only care when the state actually changes.
-<p><img SRC="tribar.gif" height=13 width=561>
-<h3>
-<a NAME="invert"></a>invert</h3>
-The <i>invert</i> object is very simple.&nbsp; If the number sent to its
-left inlet is equal to 0., then <i>invert</i> outputs a 1.&nbsp; If the
-number is not equal to 0., the <i>invert</i> outputs a 0.
-<p><img SRC="tribar.gif" height=13 width=561>
-<h3>
-<a NAME="randF"></a>randomF/randF</h3>
-One problem with the <i>random</i> object in pd is that it only sends out
-integers.&nbsp; This a real problem in GEM, where you often want a value
-between 0 and 1.&nbsp; <i>randomF</i> is exactly like the <i>random</i>
-object.
-<p>When the left inlet gets a bang, <i>randomF</i> outputs a random number
-between 0 and the given range.&nbsp; The range can be set with a number
-to the right inlet.
-<p><i>randF</i> is just an alternate name for <i>randomF</i>.
-<p><img SRC="tribar.gif" height=13 width=561>
-<h3>
-<a NAME="tripleLine"></a>tripleLine</h3>
-
-<center><img SRC="tripleLine.jpg" BORDER=1 height=92 width=111></center>
-
-<p>The <i>line</i> object is really great for dealing with a single number.&nbsp;
-To do a line with 3 values, like an RGB color value, means that you have
-to unpack, do a <i>line</i>, then repack the number.&nbsp; Not only is
-it a pain, but it expensive computationally.
-<p><i>tripleLine</i> behaves just like the <i>line</i> object, only it
-accepts three numbers to interpolate between.&nbsp; In the example, <i>tripleLine</i>
-will interpolate from the current values to 1., .2, .4 over 1000 milliseconds.&nbsp;
-The default output resolution is 50 milliseconds, which is the same default
-rendering time.&nbsp; Going faster with GEM objects will not produce any
-benefit, unless you increase the frames per second.
-<p><img SRC="tribar.gif" height=13 width=561>
-<h3>
-<a NAME="tripleRand"></a>tripleRand</h3>
-
-<center><img SRC="tripleRand.jpg" BORDER=1 height=89 width=149></center>
-
-<p>Just as using <i>tripleLine</i> makes it easier to interpolate between
-3 values at once, <i>tripleRand</i> makes it easy to generate three random
-values.&nbsp; In the above example, when the bang is sent, <i>tripleRand</i>
-will create three values and output them, with the first between 0 - 1,
-the second between 0 - .5, and the third from 0 - .8.
-<p><img SRC="tribar.gif" height=13 width=561>
-<h3>
-<a NAME="vector"></a>Vector objects</h3>
-The vector math objects are
-<br><i>vector+ </i>or<i> v+</i>
-<br><i>vector- </i>or<i> v-</i>
-<br><i>vector* </i>or<i> v*</i>
-<br><i>vector/ </i>or<i> v/</i>
-<br>All of the above objects perform math on a list of numbers.&nbsp; The
-left inlet accepts a list of numbers of any length.&nbsp; The right inlet
-accepts a single value, which is the operand for the computation.&nbsp;
-In other words, they work just like the normal *, +, -, and / objects,
-except they can handle more than one number in the left inlet.
-<p>There are two other objects which are also useful.
-<p>The first is <i>vectorabs </i>or<i> vabs</i>. It computes the absolute
-value on a list of numbers.
-<p>The second object is <i>vectorpack </i>or<i> vpack</i>. <i>vpack</i>
-accepts a list of numbers in the left inlet and a single number into the
-right inlet.&nbsp; The output is a single list of numbers that is the vector
-with the single number appended to the end.&nbsp; This is very useful when
-you want to change the time for a <i>tripleLine</i> without unpacking and
-repacking all of the data.<i></i>
-<p><img SRC="tribar.gif" height=13 width=561>
-<h3>
-<a NAME="hsv2rgb"></a>hsv2rgb and rgb2hsv</h3>
-These two objects convert three numbers between HSV and RGB color space.&nbsp;
-HSV stands for hue, saturation, and value.&nbsp; The simple way to think
-of HSV space is that hue is the "color", such as red, blue, etc, the saturation
-is how intense the color is, and the value is how bright the color is.
-<p>You can get some really nice effects by varying the hue of a color,
-because the brightness will not change while you do it.
-<p><img SRC="tribar.gif" height=13 width=561>
-<p><a href="index.html">[return]</a>
-</body>
-</html>
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Mark Danks">
+ <meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
+ <title>Utility objects</title>
+</head>
+<body>
+
+<center>
+<h2>
+<u>Utility objects</u></h2></center>
+There are a number of objects which were written to make it easier to use
+both GEM and pd.&nbsp; For instance, you often pass around 3 floats at
+a time in GEM, either for position or colors.&nbsp; To help with this,
+there are a collection of vector objects.&nbsp; Use the list below to find
+out about the objects.
+<p>These objects used to be in a separate library called MarkEx, but they
+have now been folded into GEM.
+<p><a href="#counter">counter</a> - count the number of bangs
+<br><a href="#average">average</a> - average a series of numbers together
+<br><a href="#change">change</a> - only output when there is a change in
+the number
+<br><a href="#invert">invert</a> - invert a number
+<br><a href="#randF">randomF/randF</a> - floating point random number
+<br><a href="#tripleLine">tripleLine</a> - line object for 3 values
+<br><a href="#tripleRand">tripleRand</a> - three random numbers
+<br><a href="#vector">vector objects</a> - process a series of numbers
+<br><a href="#hsv2rgb">hsv2rgb and rgb2hsv</a> - convert between RGB and
+HSV color space
+<p><img SRC="tribar.gif" height=13 width=561>
+<h3>
+<a NAME="counter"></a>counter</h3>
+
+<center><img SRC="counter.jpg" BORDER=1 height=85 width=87></center>
+
+<p>The inlets are:
+<br>bang (increment or decrement the counter)
+<br>set direction (1 = count up, 2 = count down, 3 = count up and down)
+<br>set low value
+<br>set hight value
+<br>The outlet is the current count.
+<p>So in this case, the top <i>counter</i> will count up from 1 to 10.&nbsp;
+The bottom <i>counter</i> will count up from 2 to 5.
+<p>The <i>counter</i> also accepts the messages reset and clear.&nbsp;
+Reset immediately sets the counter to its low value and outputs the value.&nbsp;
+The clear message means that the next bang will set the <i>counter</i>
+to its low value.
+<p><img SRC="tribar.gif" height=13 width=561>
+<h3>
+<a NAME="average"></a>average</h3>
+The <i>average</i> object just averages a series of numbers as they come
+in.&nbsp; The left inlet accepts a single float.&nbsp; It then outputs
+the current average.&nbsp; The default number of floats to average together
+is 10, but that can be changed by sending a new value to the right inlet.
+<p>The <i>average</i> object also accepts the messages clear and reset.&nbsp;
+Clear will immediately set all of the values that the object has been storing
+for averaging to 0.&nbsp; With the reset message, you must pass in a number
+to set all of the values.
+<p><img SRC="tribar.gif" height=13 width=561>
+<h3>
+<a NAME="change"></a>change</h3>
+<i>Change</i> only accepts a number into its left inlet.&nbsp; If the number
+is the same as the last number sent to the <i>change</i> object, then it
+does nothing.&nbsp; If the number is different, then the <i>change</i>
+object will output the new number and store it for the next comparision.
+<p>This object is very useful for the == object and others like it, since
+they send a 0 or a 1 every time they do a comparision, and you usually
+only care when the state actually changes.
+<p><img SRC="tribar.gif" height=13 width=561>
+<h3>
+<a NAME="invert"></a>invert</h3>
+The <i>invert</i> object is very simple.&nbsp; If the number sent to its
+left inlet is equal to 0., then <i>invert</i> outputs a 1.&nbsp; If the
+number is not equal to 0., the <i>invert</i> outputs a 0.
+<p><img SRC="tribar.gif" height=13 width=561>
+<h3>
+<a NAME="randF"></a>randomF/randF</h3>
+One problem with the <i>random</i> object in pd is that it only sends out
+integers.&nbsp; This a real problem in GEM, where you often want a value
+between 0 and 1.&nbsp; <i>randomF</i> is exactly like the <i>random</i>
+object.
+<p>When the left inlet gets a bang, <i>randomF</i> outputs a random number
+between 0 and the given range.&nbsp; The range can be set with a number
+to the right inlet.
+<p><i>randF</i> is just an alternate name for <i>randomF</i>.
+<p><img SRC="tribar.gif" height=13 width=561>
+<h3>
+<a NAME="tripleLine"></a>tripleLine</h3>
+
+<center><img SRC="tripleLine.jpg" BORDER=1 height=92 width=111></center>
+
+<p>The <i>line</i> object is really great for dealing with a single number.&nbsp;
+To do a line with 3 values, like an RGB color value, means that you have
+to unpack, do a <i>line</i>, then repack the number.&nbsp; Not only is
+it a pain, but it expensive computationally.
+<p><i>tripleLine</i> behaves just like the <i>line</i> object, only it
+accepts three numbers to interpolate between.&nbsp; In the example, <i>tripleLine</i>
+will interpolate from the current values to 1., .2, .4 over 1000 milliseconds.&nbsp;
+The default output resolution is 50 milliseconds, which is the same default
+rendering time.&nbsp; Going faster with GEM objects will not produce any
+benefit, unless you increase the frames per second.
+<p><img SRC="tribar.gif" height=13 width=561>
+<h3>
+<a NAME="tripleRand"></a>tripleRand</h3>
+
+<center><img SRC="tripleRand.jpg" BORDER=1 height=89 width=149></center>
+
+<p>Just as using <i>tripleLine</i> makes it easier to interpolate between
+3 values at once, <i>tripleRand</i> makes it easy to generate three random
+values.&nbsp; In the above example, when the bang is sent, <i>tripleRand</i>
+will create three values and output them, with the first between 0 - 1,
+the second between 0 - .5, and the third from 0 - .8.
+<p><img SRC="tribar.gif" height=13 width=561>
+<h3>
+<a NAME="vector"></a>Vector objects</h3>
+The vector math objects are
+<br><i>vector+ </i>or<i> v+</i>
+<br><i>vector- </i>or<i> v-</i>
+<br><i>vector* </i>or<i> v*</i>
+<br><i>vector/ </i>or<i> v/</i>
+<br>All of the above objects perform math on a list of numbers.&nbsp; The
+left inlet accepts a list of numbers of any length.&nbsp; The right inlet
+accepts a single value, which is the operand for the computation.&nbsp;
+In other words, they work just like the normal *, +, -, and / objects,
+except they can handle more than one number in the left inlet.
+<p>There are two other objects which are also useful.
+<p>The first is <i>vectorabs </i>or<i> vabs</i>. It computes the absolute
+value on a list of numbers.
+<p>The second object is <i>vectorpack </i>or<i> vpack</i>. <i>vpack</i>
+accepts a list of numbers in the left inlet and a single number into the
+right inlet.&nbsp; The output is a single list of numbers that is the vector
+with the single number appended to the end.&nbsp; This is very useful when
+you want to change the time for a <i>tripleLine</i> without unpacking and
+repacking all of the data.<i></i>
+<p><img SRC="tribar.gif" height=13 width=561>
+<h3>
+<a NAME="hsv2rgb"></a>hsv2rgb and rgb2hsv</h3>
+These two objects convert three numbers between HSV and RGB color space.&nbsp;
+HSV stands for hue, saturation, and value.&nbsp; The simple way to think
+of HSV space is that hue is the "color", such as red, blue, etc, the saturation
+is how intense the color is, and the value is how bright the color is.
+<p>You can get some really nice effects by varying the hue of a color,
+because the brightness will not change while you do it.
+<p><img SRC="tribar.gif" height=13 width=561>
+<p><a href="index.html">[return]</a>
+</body>
+</html>
diff --git a/Gem/manual/WriteCode.html b/Gem/manual/WriteCode.html
index d4d0480..1fb8e30 100644
--- a/Gem/manual/WriteCode.html
+++ b/Gem/manual/WriteCode.html
@@ -1,41 +1,41 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="Author" content="Mark Danks">
- <meta name="Author" content="IOhannes m zmölnig">
- <title>Writing new objects</title>
-</head>
-<body>
-
-<center>
-<h2>
-<u>Creating new GEM objects</u></h2></center>
-Look at the source code :-)&nbsp; GEM is written in C++, which means that
-you have to jump through some hopes to interact properly with Pd, which
-is written in C.&nbsp; If you look in Base/CPPExtern.h, you will see a
-collection of macros which you can use to help you create new objects.&nbsp;
-Use one of the GEM objects which is closest to what you want to do as a
-template.
-<p>One problem on SGI...you will need to
-<p>setenv LD_LIBRARY_PATH "/where/ever/pd/gem"
-<p>so that rld (the run-time linker) can find the GEM dso.&nbsp; Because
-you are linking with GEM, Pd isn't involved with the run time linking process;
-it is all done when Pd calls dlopen.
-<p>On NT, there is much the same problem...
-<p>set your PATH environment variable to \where\ever\pd\gem
-<p>or
-<p>make sure that your new .dll is located in the same directory where
-GEM is.
-<p>On NT, all of the classes and functions are exported through declexport/declimport.&nbsp;
-You shouldn't have to do anything to call the functions.&nbsp; I have not
-had any problems making other dll's which are loaded into Pd at runtime.&nbsp;
-You need to make certain that you are exporting the correct functions.&nbsp;
-If your dll cannot find the gem.dll, then it will silently fail.
-<p>And of course, e-mail IOhannes m zmölnig (<a href="mailto:zmoelnig@iem.at">zmoelnig@iem.at</a>) if you have any problems,
-questions, or solutions
-<p><img SRC="tribar.gif" height=13 width=561>
-<p><a href="index.html">[return]</a>
-<br>&nbsp;
-</body>
-</html>
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Mark Danks">
+ <meta name="Author" content="IOhannes m zmölnig">
+ <title>Writing new objects</title>
+</head>
+<body>
+
+<center>
+<h2>
+<u>Creating new GEM objects</u></h2></center>
+Look at the source code :-)&nbsp; GEM is written in C++, which means that
+you have to jump through some hopes to interact properly with Pd, which
+is written in C.&nbsp; If you look in Base/CPPExtern.h, you will see a
+collection of macros which you can use to help you create new objects.&nbsp;
+Use one of the GEM objects which is closest to what you want to do as a
+template.
+<p>One problem on SGI...you will need to
+<p>setenv LD_LIBRARY_PATH "/where/ever/pd/gem"
+<p>so that rld (the run-time linker) can find the GEM dso.&nbsp; Because
+you are linking with GEM, Pd isn't involved with the run time linking process;
+it is all done when Pd calls dlopen.
+<p>On NT, there is much the same problem...
+<p>set your PATH environment variable to \where\ever\pd\gem
+<p>or
+<p>make sure that your new .dll is located in the same directory where
+GEM is.
+<p>On NT, all of the classes and functions are exported through declexport/declimport.&nbsp;
+You shouldn't have to do anything to call the functions.&nbsp; I have not
+had any problems making other dll's which are loaded into Pd at runtime.&nbsp;
+You need to make certain that you are exporting the correct functions.&nbsp;
+If your dll cannot find the gem.dll, then it will silently fail.
+<p>And of course, e-mail IOhannes m zmölnig (<a href="mailto:zmoelnig@iem.at">zmoelnig@iem.at</a>) if you have any problems,
+questions, or solutions
+<p><img SRC="tribar.gif" height=13 width=561>
+<p><a href="index.html">[return]</a>
+<br>&nbsp;
+</body>
+</html>
diff --git a/Gem/manual/index.html b/Gem/manual/index.html
index 6d67068..c6739d5 100644
--- a/Gem/manual/index.html
+++ b/Gem/manual/index.html
@@ -1,67 +1,67 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="Author" content="Mark Danks; IOhannes m zm&ouml;nig">
- <title>Gem Manual</title>
-</head>
-<body>
-
-<center>
-<h2>
-<u>GEM Manual</u></h2></center>
-
-<center><img SRC="redSquare.jpg" ALT="a simple patch" BORDER=2 height=138 width=91></center>
-
-<p>This is the first attempt at a manual for GEM, so bear with me.
-Any comments are appreciated. Send them to <a href="mailto:mark@danks.org">Mark Danks</a>
-<hr>
-In fact, this ought to be the second attempt at such a manual. There will not be much now.
-But send any comments to <a href="mailto:zmoelnig@iem.at">IOhannes m zm&ouml;lnig</a> instead.
-<p><img SRC="tribar.gif" height=13 width=561>
-<p><a href="Intro.html">Introduction</a>
-<br>&nbsp;&nbsp;&nbsp; An introduction to GEM and what you can do with
-it.&nbsp; The general system requirements are also described here.
-<p><a href="GemWPd.html">Using GEM with Pd</a>
-<br>&nbsp;&nbsp;&nbsp; How to use GEM with Pd.&nbsp; This includes how
-to start Pd so that the GEM library is loaded and working properly.
-<p><a href="BasicObj.html">Basic objects</a>
-<br>&nbsp;&nbsp;&nbsp; The basic objects that GEM has.&nbsp; This section
-shows you how to create a simple patch.
-<p><a href="Images.html">Images</a>
-<br>&nbsp;&nbsp;&nbsp; Using images is an important part of GEM. Here you
-will load in images and learn the basics of dealing with images.
-<p><a href="Texture.html">Texture mapping</a>
-<br>&nbsp;&nbsp;&nbsp; Loading in images is only one part.&nbsp; Applying
-those images to 3-D shapes is called texture mapping.
-<p><a href="Pixes.html">Pixes (image processing)</a>
-<br>&nbsp;&nbsp;&nbsp; Once you have texture mapped the images, you will
-probably want to process and change them in response to user interaction.&nbsp;
-The <i>pix</i> objects provide this functionality.
-<p><a href="Lighting.html">Lighting</a>
-<br>&nbsp;&nbsp;&nbsp; Shading and lighting are easy with the lighting
-objects.
-<p>Particles
-<br>&nbsp;&nbsp;&nbsp; Particle systems can create effects such as smoke,
-fire, and water.
-<p><a href="Utility.html">Utility objects</a>
-<br>&nbsp;&nbsp;&nbsp; To help you deal with the data which GEM uses, there
-are a number of utility objects.
-<p>Input devices
-<br>&nbsp;&nbsp;&nbsp; GEM provides interaction with the mouse and other
-input devices.
-<p>Advanced
-<br>&nbsp;&nbsp;&nbsp; Now that you know all about the other objects, here
-are a few of the more advanced ones.
-<p><a href="WriteCode.html">Writing new objects</a>
-<br>&nbsp;&nbsp;&nbsp; How to write new objects for GEM.
-<p><a href="GemFaq.html">FAQ</a>
-<br>&nbsp;&nbsp;&nbsp; Frequently asked questions about GEM.
-<p><a href="ListObjects.html">List of Objects</a>
-<br>&nbsp;&nbsp;&nbsp; All of the objects in GEM with a very brief description..
-<p><a href="Gloss.html">Glossary/Index</a>
-<br>&nbsp;&nbsp;&nbsp; A collection of definitions and links to explanations.
-<p><img SRC="tribar.gif" height=13 width=561>
-<br>&nbsp;
-</body>
-</html>
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Mark Danks; IOhannes m zm&ouml;nig">
+ <title>Gem Manual</title>
+</head>
+<body>
+
+<center>
+<h2>
+<u>GEM Manual</u></h2></center>
+
+<center><img SRC="redSquare.jpg" ALT="a simple patch" BORDER=2 height=138 width=91></center>
+
+<p>This is the first attempt at a manual for GEM, so bear with me.
+Any comments are appreciated. Send them to <a href="mailto:mark@danks.org">Mark Danks</a>
+<hr>
+In fact, this ought to be the second attempt at such a manual. There will not be much now.
+But send any comments to <a href="mailto:zmoelnig@iem.at">IOhannes m zm&ouml;lnig</a> instead.
+<p><img SRC="tribar.gif" height=13 width=561>
+<p><a href="Intro.html">Introduction</a>
+<br>&nbsp;&nbsp;&nbsp; An introduction to GEM and what you can do with
+it.&nbsp; The general system requirements are also described here.
+<p><a href="GemWPd.html">Using GEM with Pd</a>
+<br>&nbsp;&nbsp;&nbsp; How to use GEM with Pd.&nbsp; This includes how
+to start Pd so that the GEM library is loaded and working properly.
+<p><a href="BasicObj.html">Basic objects</a>
+<br>&nbsp;&nbsp;&nbsp; The basic objects that GEM has.&nbsp; This section
+shows you how to create a simple patch.
+<p><a href="Images.html">Images</a>
+<br>&nbsp;&nbsp;&nbsp; Using images is an important part of GEM. Here you
+will load in images and learn the basics of dealing with images.
+<p><a href="Texture.html">Texture mapping</a>
+<br>&nbsp;&nbsp;&nbsp; Loading in images is only one part.&nbsp; Applying
+those images to 3-D shapes is called texture mapping.
+<p><a href="Pixes.html">Pixes (image processing)</a>
+<br>&nbsp;&nbsp;&nbsp; Once you have texture mapped the images, you will
+probably want to process and change them in response to user interaction.&nbsp;
+The <i>pix</i> objects provide this functionality.
+<p><a href="Lighting.html">Lighting</a>
+<br>&nbsp;&nbsp;&nbsp; Shading and lighting are easy with the lighting
+objects.
+<p>Particles
+<br>&nbsp;&nbsp;&nbsp; Particle systems can create effects such as smoke,
+fire, and water.
+<p><a href="Utility.html">Utility objects</a>
+<br>&nbsp;&nbsp;&nbsp; To help you deal with the data which GEM uses, there
+are a number of utility objects.
+<p>Input devices
+<br>&nbsp;&nbsp;&nbsp; GEM provides interaction with the mouse and other
+input devices.
+<p>Advanced
+<br>&nbsp;&nbsp;&nbsp; Now that you know all about the other objects, here
+are a few of the more advanced ones.
+<p><a href="WriteCode.html">Writing new objects</a>
+<br>&nbsp;&nbsp;&nbsp; How to write new objects for GEM.
+<p><a href="GemFaq.html">FAQ</a>
+<br>&nbsp;&nbsp;&nbsp; Frequently asked questions about GEM.
+<p><a href="ListObjects.html">List of Objects</a>
+<br>&nbsp;&nbsp;&nbsp; All of the objects in GEM with a very brief description..
+<p><a href="Gloss.html">Glossary/Index</a>
+<br>&nbsp;&nbsp;&nbsp; A collection of definitions and links to explanations.
+<p><img SRC="tribar.gif" height=13 width=561>
+<br>&nbsp;
+</body>
+</html>
diff --git a/Gem/pix_drum.pd_darwin b/Gem/pix_drum.pd_darwin
index aa278fe..0b6deb9 100755
--- a/Gem/pix_drum.pd_darwin
+++ b/Gem/pix_drum.pd_darwin
Binary files differ
diff --git a/Gem/pix_fiducialtrack.pd_darwin b/Gem/pix_fiducialtrack.pd_darwin
index 565cb19..7e4e233 100755
--- a/Gem/pix_fiducialtrack.pd_darwin
+++ b/Gem/pix_fiducialtrack.pd_darwin
Binary files differ
diff --git a/Gem/pix_hit.pd_darwin b/Gem/pix_hit.pd_darwin
index 1d5aa37..8fd8140 100755
--- a/Gem/pix_hit.pd_darwin
+++ b/Gem/pix_hit.pd_darwin
Binary files differ
diff --git a/Gem/pix_mano.pd_darwin b/Gem/pix_mano.pd_darwin
index 4c83115..8faded6 100755
--- a/Gem/pix_mano.pd_darwin
+++ b/Gem/pix_mano.pd_darwin
Binary files differ
diff --git a/Gem/rgb2hsv-help.pd b/Gem/rgb2hsv-help.pd
index 1d8b9a8..f4f45aa 100644
--- a/Gem/rgb2hsv-help.pd
+++ b/Gem/rgb2hsv-help.pd
@@ -1,21 +1,21 @@
-#N canvas 172 190 600 500 10;
-#X text 124 68 GEM object;
-#X text 138 23 rgb2hsv;
-#X text 89 388 convert between RGB colorspace and HSV colorspace;
-#X text 91 412 RGB is red \, green \, blue;
-#X text 91 434 HSV is hue \, saturation \, value (luminance);
-#X obj 123 220 rgb2hsv;
-#X msg 122 156 1 0 0;
-#X msg 357 160 0 1 1;
-#X obj 123 299 print hsv;
-#X obj 357 303 print rgb;
-#X obj 357 226 hsv2rgb;
-#X msg 414 159 0.6 1 0.5;
-#X msg 185 155 0 0.2 0.5;
-#X text 215 21 hsv2rgb;
-#X connect 5 0 8 0;
-#X connect 6 0 5 0;
-#X connect 7 0 10 0;
-#X connect 10 0 9 0;
-#X connect 11 0 10 0;
-#X connect 12 0 5 0;
+#N canvas 172 190 600 500 10;
+#X text 124 68 GEM object;
+#X text 138 23 rgb2hsv;
+#X text 89 388 convert between RGB colorspace and HSV colorspace;
+#X text 91 412 RGB is red \, green \, blue;
+#X text 91 434 HSV is hue \, saturation \, value (luminance);
+#X obj 123 220 rgb2hsv;
+#X msg 122 156 1 0 0;
+#X msg 357 160 0 1 1;
+#X obj 123 299 print hsv;
+#X obj 357 303 print rgb;
+#X obj 357 226 hsv2rgb;
+#X msg 414 159 0.6 1 0.5;
+#X msg 185 155 0 0.2 0.5;
+#X text 215 21 hsv2rgb;
+#X connect 5 0 8 0;
+#X connect 6 0 5 0;
+#X connect 7 0 10 0;
+#X connect 10 0 9 0;
+#X connect 11 0 10 0;
+#X connect 12 0 5 0;