Home
Manual - Tcl3D
Contents
1. glTexParameteri GL TEXTURE 2D GL TEXTURE MIN FILTER GL LINEAR glTexParameteri GL TEXTURE 2D GL TEXTURE MAG FILTER GL LINEAR glTexImage2D GL TEXTURE 2D 0 3 SimgWidth imgHeight 0 GL_RGBA GL_ UNSIGNED BYTE SimgData Delete the image data vector SimgData delete Example 2 Read an image from the OpenGL framebuffer and save it with the Img library proc SaveImg imgName set w toglWidth set h toglHeight set numChans 4 set vec tcl3dVector GLubyte expr w Sh SnumChans glReadPixels 0 0 w h GL RGBA GL UNSIGNED BYTE vec set ph image create photo width w height h tcl3dVectorToPhoto vec ph w h numChans set fmt string range file extension SimgName 1 end Sph write SimgName format fmt image delete phImg Svec delete proc ReshapeCallback toglwin set toglWidth Stoglwin width set toglHeight Stoglwin height The actual size of the Togl window toglWidth toglHeight which is needed in command SaveImg can be saved in a global variable when the reshape callback is executed See the NeHe demo program Lesson41 tcl or any demo using textures for examples on how to use the photo image utilities Implementation details The functionality of this module is implemented in the following files Implementation files tcl3dVector tcl Header files None Wrapper files tkphoto i 4 3 7 Screen
2. l1 ERSION zip External libraries DSO s and Tcl3D package for Mac OS X 13d IRIX64 VERSION zip External libraries DSO s and Tcl3D package for SGI IRIX ic 13d src VERSION zip Tcl3D source distribution Cc Sources EC tcl3d starpack VERSION zip Tcl3D sources for creating starpacks Table 2 1 Tcl3D distribution packages The term VERSION is a template for the Tcl3D version number i e for the currently available version it must be replaced with 0 5 0 2 1 Installation of a binary distribution There are two possibilities to install a Tcl3D binary distribution onto your computer 2 1 1 Installation from a Tcl3D starpack The following prerequisites are needed when installing from a Tcl3D starpack An OpenGL driver suitable for your graphics card It is recommend to download and install an up to date OpenGL driver from the manufacturer of your graphics card especially if intending to write shader programs in GLSL or Cg Download unzip and start a Tcl3D starpack presentation as described in chapter 1 5 In the right menu pane you will see 3 buttons in the Installation and Information menu see Figure 1 3 on page 8 These allow you to extract the Tcl3D packages fc 3d0 5 0 the external libraries extlibs and the demo programs demos onto the file system so you can use Tcl3D from tclsh or wish The Tcl3D package folder tc 3d0 5 0 should be copied into the library sect
3. 7 Release notes Tcl3D Doing 3D with Tcl 7 Release notes This chapter shows the release and feature history of Tcl3D both graphically and in text form It also contains a list of obsolete functions 7 1 Release history Tcl3D Version 0 1 Tcl3D Version 0 2 F A A Released 2006 01 07 Major rewrite and support of new libraries OpenGL 2 0 OpenGL Released 2005 05 29 as TclOgl Basic OpenGL wrapping Togl widget with Tcl callbacks extensions Cg SDL gauges Domain created Tcl3D Demos and Applications Tel3D Demos and Applications tcl3dGauges Tel Extension Package SWIG generated Tel interfaces H Tel Interface 4 SWIG generated Tel interfaces i Tel Interface tcl3dCg tel3dSDL Cg Shading Joystick Tcl3D Version 0 3 Tcl3D Version 0 3 1 Released 2006 02 12 Enhanced font handling in Togl Library FTGL added Mac OS X support supplied by Daniel Steffen Released 2006 06 16 Support for GL2PS and ODE alpha added Starpack versions Tcl3D Demos and Applications Tcl3D Demos and Applications tcl3dGauges tcl3dGauges Tel Extension Package Tel Extension Package SWIG generated Tel interfaces 4 1 i SWIG generated Tel interfaces q Tel Interface tcl3dCi tcl3dSDL tcl3dFTGL tcl3dCg tcl3dSDL tcl3dFTGL Cg Shading Joystick and CD Font Rendering Cg Shading Joystick and CD Font Rendering tel3dGl2ps tcl3dOde OpenGL to PS PDF Physics Engine Tcl3D Version 0 3 2 Tcl3D Version 0 3 3 Released 2007 02
4. set viewList tcl3dVectorToList viewport 4 set mvList tcl3dVectorToList S mvmatrix 16 set projList tcl3dVectorToList S projmatrix 16 set realy expr Sviewport get 3 y 1 set winList gluUnProject x realy 0 0 mvList projList viewList puts gluUnProject return value lindex SwinList 0 puts format World coords at z 0 0 are Sf Sf f lindex SwinList 1 lindex SwinList 2 lindex S winList 3 Note The above listed exceptions are only valid for the GLU library The optional modules have not been analysed in depth regarding the constness of parameters Tcl3D User Manual Version 0 5 0 December 2010 Page 23 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 3 Wrapping in detail Tcl3D Doing 3D with Tcl Tcl3D 0 4 3 adds two new functions tcl3d0glProject and tcl3d0glUnProject with the same signature aS gluProject and gluUnProject with the following exception The parameters for the viewport the modelview matrix and the projection matrix can be specified as a tcl3dVector See Redbook demo unprojectVec tcl for an example Tcl3D User Manual Version 0 5 0 December 2010 Page 24 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 3 Wrapping in detail Tcl3D Doing 3D with Tcl 3 2 Wrapping reference card The notation TYPE stands for any scalar value char int float etc as well as inherited scalar types like GLboolean GLin
5. Each optional module wrapping a library eg SDL has to have at least 2 files in folder tclfiles pkgindex tcl and tcl3dPKGQuery tcl The latter file contains procedures to query functionality related to package PKG All procedures contained in this file must be able to work even if the corresponding dynamic library does not exist or is just a dummy This file must be loaded in pkgindex tcl before the dynamic library All other package related Tcl files should be loaded after the dynamic library 2 3 2 Extending with a Tcl utility 2 3 3 Extending with a C C utility 2 3 4 Extending with a newer version of an external library 2 3 5 Extending with a new external library Tcl3D User Manual Version 0 5 0 December 2010 Page 18 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 3 Wrapping in detail Tcl3D Doing 3D with Tcl 3 Wrapping in detail This chapter explains how parameters and return values of the C and C based library functions are mapped to Tcl command parameters and return values The intention of the wrapping mechanism was to be as close to the C interface and use Tcl standard types wherever possible e C functions are mapped to Tcl commands C constants are mapped to Tcl global variables Some C enumerations are mapped to Tcl global variables and are inserted into a Tcl hash table for lookup by name The mapping described in this chapter is consistently applied to all l
6. LL ar A http www kroc tk tclkit darwin html http www patthoyts tk tclkit Tcl Tk 8 5 8 Tcl Tk starpack Tklmg 1 4 SVN Revision 315 http sourceforge net projects tkimg Snack 2 2 http www speech kth se snack Tablelist 4 12 http Awww nemethi de Twapi 2 2 3 Windows only http twapi magicsplat com 1 4 Supported platforms The following table gives an overview on the availability of the different TclI3D modules on the supported operating systems It also tries to give an indication on the quality of the module Mac OS X 32 bit Intel a oe P fo tcl3dGl2ps Lo E a tcl3d0de tcl3d0sg tcl3dGauges Table 1 2 Availability of TcI3D modules Legend for Table 1 2 Column Wrap Column Test Tcl3D User Manual Version 0 5 0 December 2010 Page 6 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 1 Introduction Tcl3D Doing 3D with Tcl Interface of module fully wrapped Module extensively tested No errors known Interface of module partially wrapped Module tested Minor errors known 0 Module not yet wrapped 0 Module in work Module not available for the platform Module not available for the platform Short summary The Windows and Linux ports are supported best and are regularly tested on different graphics card and OpenGL driver combinations On IRIX every module exc
7. 6 0 and CygWin deprecated ct Ph Build environment Windows XP SP3 VS Express 2005 SP1 SuSE Linux 10 2 32 bit 2 6 18 gcc 4 1 2 SuSE Linux 10 2 64 bit 2 6 18 gcc 4 1 2 Mac OSX 10 4 11 gcc 4 0 1 Tcl3D User Manual Version 0 5 0 December 2010 Page 68 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 7 Release notes Tcl3D Doing 3D with Tcl SGI IRIX 6 5 22 gcc 3 4 6 Nekoware Version 0 4 0 2008 12 30 OpenGL wrapping now based on GLEW Enhancements New features CAUTION Possibly incompatible changes OpenGL wrapping is now based on GLEW because the previously used OglExt extension library is no longer supported OpenGL version now supported is 3 0 based on GLEW version 1 5 1 No C dependency anymore in the core modul No more initialization tcl3dOglExtInit of th xtended OpenGL functionality needed This is done now when creating the Togl widget The old OpenGL extension library OglExt automatically detected if OpenGL functions are not implemented in the OpenGL driver and did nothing in that case This had the disadvantage that programs seem to run but indeed were missing an extension function New OpenGL utility procedures tcl3d0glHaveFunc tcl3d0glGetFuncList tcl3d0glGetFuncSignatureList tcl3d0glGetFuncVersionList CAUTION Possibly incompatible change Togl s command line parameter swapinterval is set to zero by defaul
8. Help and documentation Demos and tutorials The information menu gives you access to different types of information OpenGL I Tcl3D which are shown as animated OpenGL text More detailed information can be obtained by using the tcl3dinfo tcl script located in the demos directory in category Tcl3DSpecific The help and documentation menu gives you some online information about how to use the Tcl3D presentation framework The demo and tutorials menu has lots of sample programs divided into 3 categories Library specific demos contains scripts showing features specific to the wrapped library Tutorials and books contains scripts which have been converted from C to Tcl3D coming from the following sources OpenGL Red Book NeHe tutorials Kevin Harris CodeSampler web site Vahid Kazemi s GameProgrammer page Nopper s OpenGL core profile demos Tcl3D specific demos contains scripts demonstrating and testing Tcl3D specific features Some notes about the demos contained in the starpack OpenSceneGraph related demos are not included in the starpack Depending on your operating system graphics card and driver some of the programs may raise an error message or will not work properly As the demos contained within the starpack were written to be standalone programs no error recovery was implemented The programs typically just quit This is why you may get a confirmation window from time to time asking you if you
9. The PDF files generated with Gl2ps are not displayed correctly with the Preview program on a Mac Acrobat Reader displays them correctly tcl3d0glGetVersion and tcl3d0glGetPackageInfo dump core on Mac OSX if no Tog window has been created On other systems the function returns an empty string in that case See also the note about glGetString in chapter 4 2 5 5 Starpack internals For an introduction to Tclkits starkits and starpacks see Jean Claude Wippler s homepage at http www equi4 com 5 5 1 Starpack issue 1 If shipping external libraries with your starpack you have to copy them to the file system before they can be used A convenient place is the directory containing the starpack Check if all necessary external libraries exists in the directory containing the starpack Copy them to the filesystem if necessary set _tcl3dExecDir file dirname starkit topdir set _ tcl3dD1lList glob nocomplain dir file join starkit topdir extlibs info sharedlibextension foreach starkitName tcl3dDllList set osName file join tcl3dExecDir file tail starkitName if file exists SosName set retVal catch file copy force starkitName tcl3dExecDir puts Copying DLL starkitName to directory tcl3dExecDir if retVal 0 error Error copying DLL starkitName to directory _ tcl3dExecDir This aforementioned solution seems to be the
10. toglwin proc ReshapeProc toglwin proc DisplayProc toglwin Tcl3D User Manual Version 0 5 0 December 2010 Page 27 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl Note Starting with Tcl3D version 0 5 0 the Togl version used in Tcl3D is based on version 2 0 The advantages are Tcl_Obj based callback functions and a cleaner code base All callbacks now have the same signature i e only the Togl widget identifier This introduces an incompatibilty with previous Tcl3D versions where the Reshape callback function had additional parameters for the new width and height of the Togl window See the Tcl3D demos or the example below for backward compatible changes to the Reshape callback Display options swapinterval Enable disable synchronisation to vertical blank signal multisamplebuffers Enable disable the multisample buffer multisamplesamples Set the number of multisamples Default settings are swapinterval swapInterval SwapInterval 0 0 multisamplebuffers multisampleBuffers MultisampleBuffers 0 0 multisamplesamples multisampleSamples MultisampleSamples 2 2 Note Multisampling was implemented for the Togl widget in Tcl3D version 0 3 2 If working with older versions of Tcl3D you may enable multisampling outside of Tcl3D as follows With NVidia cards you can enable multisampling under Windows via the NVidia driver GUI Und
11. 0 OpenGL 3 3 0 0 OpenGL 4 0 5 0 OpenGL 4 1 0 0 Total 618 404 Table 5 3 Deprecated OpenGL functions The deprecated functions can be easily determined with the Tcl3D utility procedure tcl3d0gl1GetFuncDeprecated The following example script prints out all deprecated functions Tcl3D User Manual Version 0 5 0 December 2010 Page 60 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 5 Miscellaneous TcI3D information Tcl3D Doing 3D with Tcl foreach f tcl3d0glGetFunchList set depr tcl3d0glGetFuncDeprecated f if Sdepr ne 0 0 puts Deprecated since OpenGL version Sdepr Sf Output Deprecated since OpenGL version 3 1 glAccum Deprecated since OpenGL version 3 1 glAlphaFunc Deprecated since OpenGL version 3 1 glAreTexturesResident Deprecated since OpenGL version 3 1 glArrayElement Deprecated since OpenGL version 3 1 glBegin The next table contains an overview of deprecated functions sorted into categories See the OpenGL 4 0 API Qick Reference Card for further details It is available from the OpenGL website Category Examples Vertex Specification glBegin glEnd glVertex glNormal glColor glTexCoord Vertex Arrays glVertexPointer glEnableClientState glArrayElement Display Lists glNewList glCallList glGenLists glListBase Lighting glMaterial glLight glLightModel glShadeModel Texturin
12. 0 25 0 75 0 75 0 75 0 75 0 5 Tel l t curveKnots 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 crexampie uNurbsCurve theNurb 8 ScurveKnots 2 ScurvePt 4 GLU MAP1 TRIM 2 Table 3 9 Wrapping of GLU functions The two aforementioned functions which provide output parameters with TYPE are gluProject and gluUnProject These are handled as a special case in the SWIG interface file glu i The 3 output parameters are given the keyword OUTPUT so SWIG handles them in a special way SWIG builds a list consisting of the normal function return value and all parameters marked with that keyword This list will be the return value of the corresponding Tcl command Definition in glu h Redefinition in SWIG interface file glu i extern GLint gluUnProject Lint gluUnProject GLdouble winxX GLdouble winyY double winX GLdouble winyY GLdouble winZ double winZ const double model const GLdouble model const double proj const GLdouble proj const Lint view const GLint view double objX double OUTPUT double objY double OUTPUT double ob jZ double OUTPUT Table 3 10 Wrapping exceptions for GLU Example usage see Redbook example unproject tc for complete code glGetIntegerv GL VIEWPORT viewport glGetDoublev GL MODELVIEW MATRIX Smvmatrix glGetDoublev GL PROJECTION MATRIX projmatrix
13. a new Tcl3D Vector containing the image data of a Tk photo image Only GL_UNSIGNED_BYTE currently supported Table 4 11 tcl3dUtil Image utility commands Note The Img extension is recommended to have access to lots of image formats Ex amples Example 1 Read an image into a Tk photo and use it as a texture map set texture tcl3dVector GLuint 1 Memory for 1 texture identifier proc LoadImage imgName set retVal catch set phImg image create photo file SimgName err1l if retVal 0 error Error reading image SimgName Serrl else set numChans tcl3dPhotoChans phImg if SnumChans 3 amp amp SnumChans 4 error Error Only 3 or 4 channels allowed S numChans supplied set w image width SphImg set h image height S phImg set texImg tcl3dVectorFromPhoto phImg numChans image delete phImg return list texImg w h proc CreateTexture Load an image into a tcl3dVector set imgInfo LoadImage Wall bmp set imgData lindex SimgInfo 0 set imgWidth lindex SimgInfo 1 Tcl3D User Manual Version 0 5 0 December 2010 Page 43 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl set imgHeight lindex S imgInfo 2 Create the texture identifiers glGenTextures 1 texture glBindTexture GL TEXTURE 2D texture get 0
14. all wrapped OpenGL functions Deprecated Use tclOglGetFuncVersion instead GetVersionList Get list of wrapped OpenGL versions and extensions tExtensionLi Get list of all OpenGL extensions tcl3d0glIsFuncWrapped Check if OpenGL or GLU function is wrapped Get the signature of an OpenGL or GLU function tcl3d0glGetFuncVersion Get the version or extension name of an OpenGL function Get the version or extension name of an OpenGL enumeration Get the OpenGL version an OpenGL function has been declared deprecated Ee 3d0g1GetUr Get the URL of the official documentation of an OpenGL item tcl3d0glGetVersionFuncs Get the function names of an OpenGL version or Tcl3D User Manual Version 0 5 0 December 2010 Page 31 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl Re l extension tcl3do0glGetVersionEnums Get the enumeration names of an OpenGL version or extension tcl3do0glGetExtSuffixes Get list of allowed OpenGL extension suffixes tcl3d0g1FindFunc Find an OpenGL core or extension function Pe ld tcl3do0glSetMode Set the execution mode of OpenGL functions Table 4 1 tcl3dOgl helper commands Note The functions glGetString and gluGetString as well as the corresponding high level functions tcl3d0glGetVersions and tcl3d0glGetExtensions only return correct values if a Togl w
15. and get rotation as Quaternion Table 4 18 tcl3dUtil ArcBall commands Tcl3D User Manual Version 0 5 0 December 2010 Page 48 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl Examples See the demo program ftg Demo tcl for an example on how to use the trackball procedures See the NeHe demo program Lesson48 tcl for an example on how to use the ArcBall procedures Implementation details The functionality of the trackball module is implemented in the following files Implementation files tcl3dUtilTrackball c tcl3dUtilTrackball tcl Header files tcl3dUtilTrackball h Wrapper files utili The functionality of the ArcBall module is implemented in the following files Implementation files tcl3dUtilArcBall c Header files tcl3dUtilArcBall h Wrapper files utili 4 3 12 C based utilities for demo applications This sub module implements C based utility functions for some of the demo applications Overview tcl3dDemoOgILogo implements an animated 3 dimensional OpenGL logo It is used in demo animlogo tel in directory LibrarySpecificDemos tcl3dOgI tcl3dDemoReadRedBooklmg implements a parser for the simple image file format used in some of the RedBook demos It is used in demos colormatrix tcl colortable tcl convolution tcl histogram tcl and minmax tel in directory TutorialsAndBooks RedBook tcl3dHeightmap implements a c
16. capture module This module implements functions for capturing window contents into either a photo image an image file or the clipboard Overview Tcl3D User Manual Version 0 5 0 December 2010 Page 44 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl The following table lists the available functions of this module For a detailed description of the functions see the Tcl3D Reference Manual 5 or the source code files as listed in section Implementation details at the end of this chapter Copy contents of a widget and all of its sub widgets into a photo image tcl L Copy contents of a widget and all of its sub widgets into a photo image and save the image to a file Copy the contents of a Tk canvas into a photo image le i i 3dCanvas2Fi Copy the contents of a Tk canvas into a photo image and save the image to a file Copy the contents of the Windows clipboard into a photo image tcl3dClipboard2File Copy the contents of the Windows clipboard into a photo image and save the image to a file 3 tcl tel tcl Copy a photo into the Windows clipboard tel cl tcl tcl Copy the contents of the top level window Alt PrtSc into the Windows clipboard Copy the contents of the whole desktop PrtSc into the Windows clipboard Copy the contents of the top level window Alt PrtSc into a photo image Copy the contents of the top level window A
17. commands and enums of SDL and FTGL modules Added new functionality to tcl3dUtil Simple scrollable Tk widgets Tcl3D User Manual Version 0 5 0 December 2010 Page 70 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 7 Release notes Tcl3D Doing 3D with Tcl for demo programs trackball emulation used in FTGLdemo tcl Added new functionality to tcl3dUtil tcl3dVectorFromByteArray tcl3dVectorToByteArray Convert Tcl binary strings to tcl3dVectors and vice versa see demo bytearray tcl Bug fix in OglExt wrapping Parameters of type float and double were wrapped incorrectly Version 0 2 2006 01 07 Major rewrite of TclOgl Major rewrite and inclusion of several new 3D libraries OpenGL 2 0 and extensions NVidia s Cg library SDL the Simple Direct Media Library 4 gauge widgets Thanks to Victor G Bonilla for supplying this library Utility library Renamed from tclogl to Tc13D Created domain tcl3d org Version 0 1 2005 05 29 Initial version First version called TclOgl introduced at the Tcl Europe 2005 conference Supported features include basic OpenGL wrapping 7 3 Obsolete functions The following table shows all obsolete functions Most of these functions have just been renamed to get a more consistent naming scheme The obsolete functions are still available but may be removed in future versions Tc
18. greensize bluesize double depth depthsize accum accumredsize accumgreensize accumbluesize accumalphasize alpha alphasize stencil stencilsize auxbuffers privatecmap overlay stereo cursor time sharelist sharecontext ident indirect pixelformat swapinterval multisamplebuffers multisamplesamples createproc displayproc reshapeproc coreprofile major minor These configuration options behave like standard Tcl options and can be queried as such package require tcl3d or just package require tcl3dogl 25 0 togl t t configure height height Height 400 400 displayproc displayproc Displayproc t configure displayproc DisplayCallback t configure displayproc displayproc displayproc Displayproc DisplayCallback O ole A HH oe ole Callback procedures To be usable from the Tcl level the Togl widget has been extended to support 3 new configuration options for specifying Tcl callback procedures createproc ProcName Procedure is called when a new widget is created reshapeproc ProcName Procedure is called when the widget s size is changed displayproc ProcName Procedure is called when the widget s content needs to be redrawn Default settings are createproc createproc Createproc displayproc displayproc Displayproc reshapeproc reshapeproc Reshapeproc The callback procedures must have the following signatures proc CreateProc
19. identical to the enumeration name e GLboolean e GLenum GLbitfield e CGenum e CGGLenum e CGprofile e CGtype e CGresource e CGerror Tcl3D User Manual Version 0 5 0 December 2010 Page 19 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 3 Wrapping in detail Tcl3D Doing 3D with Tcl The mapping is explained using the 3 OpenGL enumeration types The Cg types are handled accordingly GLenum as function input parameter can be supplied as numerical value or as name Input parameter GLenum Enable GLenum cap C declaration C example Tcl example Table 3 2 Wrapping of a GLenum input parameter GLbitfield as function input parameter can be supplied as numerical value or as name Note A combination of bit masks has to be specified as a numerical value like this glClear expr GL COLOR BUFFER BIT GL_ DEPTH BUFFER BIT Input parameter GLbitfield C declaration C example glClear GL COLOR BUFFER BIT 1Clear GL COLOR BUFF lear GL COLOR B Tcl example Table 3 3 Wrapping of a GLbitfield input parameter GLboolean as function input parameter can be supplied as numerical value or as name Input parameter GLboolean C declaration EdgeFlag GLboolean flag C example L ag GL TRUE Tcl example Table 3 4 Wrapping
20. library have differing copyrights The original Wavefront parser code is copyrighted by Nate Robins The original GLUT shape code is copyrighted by Mark Kilgard The original code of tcl3dSphere is copyrighted by Paul Bourke The original code of tcl3dHelix is copyrighted by Dario Corno The original code of tcl3dArcBall is copyrighted by Tatewake com The original code of tcl3dTrackball is copyrighted by Gavin Bell et al The Tcl3D gauge library is copyrighted by Victor G Bonilla and distributed under the BSD license The original Togl widget is copyrighted by Brian Paul and Benjamin Bederson and distributed under the BSD license see http sourceforge net projects togl The modified Tcl3D version of Togl is copyrighted by Paul Obermeier and distributed under the BSD license See the following table of wrapped unmodified libraries for their license conditions Library License More information GLEW Modified BSD license http glew sourceforge net glew txt Cg Redistributable license http developer nvidia com object cg_toolkit html see file license pdf in Cg installation FTGL LGPL http sourceforge net projects ftgl Freetype Freetype License BSD style http www freetype org FTL TXT GL2PS LGPL See file COPYING GL2PS in directory tcl3dGI2ps ODE BSD http www ode org ode license html OSG OpenSceneGraph Public License http www openscenegraph org project
21. of a GLboolean input parameter 3 1 2 Pointer input parameters The mapping of const TYPE pointers is handled in file te 3dPointer i Constant pointers as function input parameter must be supplied as a Tcl list Input parameter const TYPE SIZE const TYPE void glMaterialfv GLenum face GLenum pname C declaration const GLfloat params GLfloat mat diffuse 0 7 0 7 0 7 1 0 F glMaterialfv GL FRONT GL DIFFUSE mat diffuse set mat _ diffuse 0 7 0 7 0 7 1 glMaterialfv GL FRONT GL DIFFUSE Smat_ diffuse C example Tcl example Table 3 5 Wrapping of a pointer input parameter Note Tcl3D User Manual Version 0 5 0 December 2010 Page 20 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 3 Wrapping in detail Tcl3D Doing 3D with Tcl This type of parameter is typically used to specify small vectors 2D 3D and 4D as well as control points for NURBS e Unlike in the C version specifying data with the scalar version of a function ex glVertex3f is faster than the vector version ex gl Vertex3fv in Tcl Tcl lists given as parameters to a Tcl3D function have to be flat i e they are not allowed to contain sublists When working with lists of lists you have to flatten the list before supplying it as an input parameter to a Tcl3D function One way to do this is shown in the example below set ctrlpoints 4 0 4 0 0 0 20 4 0 04 04 glMaplf GL M
22. tcl3dVector member functions setrgb setrgba Bug fixes Corrected tcl3d0glHaveVersion New demos 4 new demos added since release 0 4 3 These have been previously released as Tcl3D Demo of the month New application OpenGL Information Center Build environment Windows 7 64 bit VS 2008 Express 32 bit Tcl 8 5 8 SWIG 1 3 40 SUSE Linux 11 2 32 bit gcc 4 4 1 Tcl 8 5 7 SWIG 1 3 36 SUSE Linux 11 2 64 bit gcc 4 4 1 Tcl 8 5 7 SWIG 1 3 36 OSX 10 5 0 SnowLeopard gcc 4 2 1 32 bit Tcl 8 5 8 SWIG 1 3 40 Version 0 4 3 2010 07 31 Bug fix and maintenance release Enhancements New features GLEW version updated to 1 5 4 OpenGL support now up to 3 3 and 4 0 FTGL version updated to 2 1 3 RC5 Fixes problems with Non Ascii characters SWIG version 1 3 40 tested for correct wrapping Added support for Visual Studio 2010 New Makefile variable TKDIR for systems having Tcl and Tk in separate directories New utility functions tcl3dVecMath All tcl3dVec3f and tcl3dMatf have corresponding double precision functions tcl3dVec3d and tcl3dMatd New replacement functions for OpenGL functions operating on matrices which do not exist in OpenGL 3 2 tcl3dMultMatrixf tcl3dMultMatrixd tcl3dRotatef tcl3dRotated tcl3dScalef tcl3dScaled tc3dTranslatef tcl3dTranslated tcl3dViewMath tcl3d0rtho tcl3dFrustum tcl3dPerspective tcl3dLookAt as replace
23. the underlying windowing system this feature must be handled by the Togl widget The open issues list is considered as obsolete with OpenGL versions greater than 3 2 e Tesselation can be done better and faster with GeometryShaders Indexed color mode has been declared deprecated Tcl3D User Manual Version 0 5 0 December 2010 Page 57 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 5 Miscellaneous TcI3D information Tcl3D Doing 3D with Tcl 5 4 Known bugs The tiltmeter widget from the tcl3dGauge package is not working correctly with Tcl versions less than 8 4 7 because of a bug in the namespace implementation Picking with depth values does not work correctly as depth is returned as an unsigned int mapping the internal floating point depth values 0 0 1 0 to the range 0 2 1 As Tcl only supports signed integers some depth values are incorrectly transferred into the Tcl commands SWIG versions up to 1 3 24 had an annoying but not critical bug in the Tcl library file swigtcl8 swg Please check if your version has a line printf Searching s n key in function SWIG Tcl _ GetConstant and delete this line if existent swigtcl8 swg can be found in usr lib swig1 3 tcl or usr share swig VERSION tcl on Linux or in the lib tcl subdirectory of your SWIG Windows installation e SWIG version 1 3 21 as delivered with SUSE 9 3 does not correctly wrap the ODE library
24. 10 Page 16 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 2 Installation Tcl3D Doing 3D with Tcl Additional check file Customize support for tcl3dOsg include osg Object Table 2 5 Customization settings Note Do not set a macro to 0 but comment the corresponding line i e undefine as shown in the following example WRAP FEATURE 1 enables the feature WRAP FEATURE 1 disables the feature Each Makefile of an optional module additionally checks for the existence of an important include file as listed in column Additional check file to enable extension support for Tcl3D 2 2 4 Step 4 Compilation and installation The following commands should compile and install the Tcl3D package gt gmake gt gmake install The make process prints out lines about the success of wrapping optional modules Tcl3D built with Cg support Tcl3D built without ODE support The starpack is not generated by default If you installed the starpack distribution package you have to go into the directory starpack and call make there Note To test the generated starpack copy it into a temporary directory and start it from there as the starpack will copy external libraries into the current directory First installation tests Start a tclsh or wish shell and type the following two commands gt package require tcl3d gt togl t Now use either the command tcl3dShowPackageInfo for graphic
25. 10 Page 46 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl 4 3 10 3D Model and shapes module This module provides functions for reading 3D models in Wavefront format and creating basic shapes Overview The following tables list the available functions of this module For a detailed description of the functions see the Tcl3D Reference Manual 5 or the source code files as listed in section Implementation details at the end of this chapter g Unitize a model by translating it to the origin and scaling it to fit in a unit cube around the origin mDimensions lmUnitize lmScale lmReverseWinding lmFacetNormals lmVertexNormals lmLinearTexture lmSpheremapTextur Calculates the dimensions width height depth of a model Scales a model by a given amount Reverse the polygon winding for all polygons in this model Generates facet normals for a model Generates smooth vertex normals for a model Generates texture coordinates according to a linear projection of the texture map Generates texture coordinates according to a spherical projection of the texture map Deletes a GLMmodel structure Reads a model description from a Wavefront OBJ file Writes a model description in Wavefront OBJ format to a file Renders the model to the current OpenGL context using the mode specified Generates and returns a display list for the model using th
26. 13dVector command set ind 23 set vec tcl3dVector GLfloat 123 Create Vector of 123 GLfloats Copyright 2005 2010 by Paul Obermeier All rights reserved Tcl3D User Manual Version 0 5 0 December 2010 Page 39 of 74 4 Modules in detail Tcl3D Doing 3D with Tcl Svec set Sind 1017 0 Set element at index 23 to 1017 0 set x Svec get Sind Get element at index 23 puts S vec elemsize Prints out 4 Svec addvec 33 2 10 Add 33 to ten elements starting at index 2 vec delete Free the allocated memory Note Indices start at zero The following example shows the usage of the tcl 3dVectorFromLinspace command Create a GLdouble vector of length 5 with values from 0 to 0 1 gt set v tcl3dVectorFromLinspace GLdouble 0 0 1 5 gt tcl3dVectorPrint v 5 000 025 050 075 100 BWHrR O O OQQON See also the test program vectorlinspace tci for more examples See the demo program bytearray tc l and vecmanip tcl for examples on how to use the ByteArray procedures for generating textures in Tcl Implementation details The functionality of this module is implemented in the following files Implementation files tcl3dVector tcl Header files None Wrapper files vector i bytearray i As stated in chapter 3 1 2 some of the OpenGL functions need a pointer to a contiguous block of allocated memory SWIG already provides a feature to automatically generate wrapper functions for all
27. 2010 Page 67 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 7 Release notes Tcl3D Doing 3D with Tcl Starpack related Added Tablelist version 4 12 Updated Twapi version to 2 2 3 Cg support for Darwin t New utility functions tcl3d0glGetGlewVersion tcl3dCameraModel tcl3dTeapotModel t New OpenGL information and query functions tcl3d0glGetVersionList tcl3d0gliIsFuncWrapped tcl3d0glGetFuncSignature tcl3d0glGetFuncVersion tcl3d0glGetEnumVersion tcl3d0glGetFuncDeprecated tcl3d0glGetUrl tcl3d0glGetVersionFuncs tcl3d0glGetVersionEnums Bug fixes t Corrected presentation framework to work with Tcl Tk 8 6 New demos t New application OpenGL GoogleMock Creator Version 0 4 1 2009 08 23 New module tcl3dOsg Enhancements New features Bug fixes Corrected bug in OpenGL wrapper createGlewSwigFile tcl Removed Suppor t 7 new demos added since release 0 4 1 These have been previously released as Tcl3D Demo of the month Build environment Windows XP SP3 VS Express 2005 SP1 t SUSE Linux 10 2 32 bit 2 6 18 gcc 4 1 2 t SUSE Linux 10 2 64 bit 2 6 18 gcc 4 1 2 t Mac OSX 10 4 11 us Geer EON l t SGI IRIX 6 5 22 gcc 3 4 6 Nekoware h or OpenSceneGraph support t New optional module tcl3dOsg wrapping the OpenSceneGraph library Wrapping is based on OpenSceneGraph version 2 8 2 Several de
28. 25 Demo cleanup and first official Mac OS X support Windowing Released 2008 09 14 Bug fixes minor enhancements and several new demos system specifics incorporated into Tog widget New module tcl3dDemoUtil Tel3D Demos and Applications Tel3D Demos and Applications tcl3dGauges tcl3dGauges Tel Extension Package Tel Extension Package SWIG generated Tel interfaces H Tel Interface 1 SWIG generated Tel interfaces H Tel Interface tcl3dCg tcl3dSDL tcl3dFTGL tcl3dCi tel3dSDL tcl3dFTGL Cg Shading Joystick and CD Font Rendering Cg Shading Joystick and CD Font Rendering tel3dGI2ps tcl3dOde tcl3dDemouUtil tel3dGl2ps tcl3dOde tel3dDemoUtil OpenGL to PS PDF Physics Engine C utilities for demos OpenGL to PS PDF Physics Engine C utilities for demos Tcl3D User Manual Version 0 5 0 December 2010 Page 64 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 7 Release notes Tcl3D Version 0 4 0 Released 2008 12 30 OpenGL wrapping based on GLEW 1 5 1 Support of OpenGL 3 0 Reorganization of Tcl3D core module tcl3dGauges Tel Extel Package SWIG generated Tel interfaces Tel Interface tcl3dCg tcl3dSDL tel3dFTGL Cg Shading Joystick and CD Font Rendering tel3dGI2ps tcl3dOde OpenGL to PS PDF Physics Engine Tcl3D Version 0 4 2 Released 2010 03 28 OpenGL wrapping based on GLEW 1 5 3 Support of OpenGL 3 2 Updated Cg and Gl2ps modules Advanced OpenGL information functions tcl3dGauges Tel Exter Pac
29. 3 above described package folders into the directory containing the starpack 2 1 2 Installation from a binary package The following prerequisites are needed when using a TcI3D binary package An OpenGL driver suitable for your graphics card It is recommend to download and install an up to date OpenGL driver from the manufacturer of your graphics card especially if intending to write shader programs in GLSL or Cg A Tcl Tk version greater or equal to 8 5 The Img extension is needed to have access to various image formats which are used as OpenGL textures For some demos the snack extension is used To generate screenshots from the Tcl3D presentation the Twapi extension is needed on Windows It is therefore recommended to use an ActiveTcl distribution 25 which contains all of the above listed Tcl extensions Download and unzip the following distribution packages suitable for your operating system tcl3d 0S 0 5 0 zip e tcl3d demos 0 5 0 zip Then copy the resulting folders into the appropriate directories as described in the previous chapter 2 2 Installation of a source distribution This chapter outlines the general process of compiling customising and installing the Tcl3D package See the file Readme txt in the source code distribution for additional up to date information 2 2 1 Step 1 Prerequisites The following prerequisites are needed when using a TcI3D source package e An OpenGL dr
30. 5 0 pkgindex tcl v tcl3dCg pkgindex tcl tcl3dCg dylib E tcl3dCgQuery tcl tcl3dCgUtil tcl E tcl3dFTGL E tcl3dGauges E tcl3dGi2ps E tcl3dOde E tcl3dOg OB tcl3dOsg E tcl3dSDL vvvrvrvryvyy Figure 1 1 Tcl3D package layout The next figure shows the currently available modules of Tcl3D Modules with blue text color have been updated since the last release The Tcl3D Modules tcl3dGauges Tcl Extension Package SWIG generated Tcl interfaces i Tcl Interface tcel3dCg tcl3dSDL tcl3dFTGL Cg Shading Joystick and CD Font Rendering tcl3dGI2ps tcl3dOde tcl3dOsg OpenGL to PS PDF Physics Engine OpenSceneGraph Figure 1 2 Overview of TclI3D modules 1 2 Modules overview This chapter gives a short overview of the modules available in Tcl3D Tcl3D User Manual Version 0 5 0 December 2010 Page 3 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 1 Introduction Tcl3D Doing 3D with Tcl 1 2 1 Tcl3D core module The Tcl3D core module tce 3dOg consists of the following 3 sub modules Togl OpenGL e Util Note The Tcl3D core module is free of C code since version 0 4 0 Togl Enhanced Togl widget This sub module is an enhanced version of the Togli 6 widget a Tk widget for displaying OpenGL graphics The following enhancements are currently implemented e Callback functions in Tcl Better bitmap font support e Multisampling support e Swap Interval suppor
31. AP1 VERTEX 3 0 0 1 0 3 4 join ctrlpoints The mapping of const void pointers is handled by SWIG standard typemaps Constant void pointers as function input parameter must be given as a pointer to a contiguous piece of memory of appropriate size Input parameter const void SIZE const void C decl ti void glVertexPointer GLint size GLenum type eclaration GLsizei stride const GLvoid ptr static GLint vertices 25 25 100 325 175 25 C example 175 325 250 25 325 325 glVertexPointer 2 GL INT 0 vertices set vertices tcl3dVectorFromArgs GLint 25 25 100 325 175 25 Tcl example 175 325 250 25 325 325 glVertexPointer 2 GL INT 0 vertices Table 3 6 Wrapping of a void pointer input parameter Note The allocation of usable memory can be accomplished with the use of the tcl3dVector commands which are described in chapter 4 3 5 This type of parameter is typically used to supply image data or vertex arrays See also the description of the image utility module in chapter 4 3 6 3 1 3 Output parameters The mapping of non constant pointers is handled by the SWIG standard typemaps Non constant pointers as function output parameter must be given as a pointer to a contiguous piece of memory of appropriate size tc13dVector See note above Tcl3D User Manual Version 0 5 0 December 2010 Page 21 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 3 Wrapp
32. Freeglut uses 7 for the grid parameter Original GLUT and TclI3D use 14 as grid parameter Tcl3D User Manual Version 0 5 0 December 2010 Page 32 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl All supported GLUT compatible shapes Demo glutShapes tcl Examples The following code snippet shows how to call tc13d0gl1GetVersions foreach glIinfo tcl3d0glGetVersions puts lindex glInfo 0 lindex glInfo 1 GL VENDOR ATI Technologies Inc NDERER ATI Radeon HD 5800 Series GL VERSION 3 2 9704 Compatibility Profile Context GLU_VERSION 1 2 2 0 Microsoft Corporation GL SHADING LANGUAGE VERSION 1 50 GLEW VERSION 1 5 4 The following code snippet shows how to call tc13d0g1GetExtensions foreach glinfo tcl3d0glGetExtensions puts lindex SglInfo 0 foreach ext lsort lindex S glInfo 1 puts tSext GL EXTENSIONS GL ARB depth _ texture GL ARB fragment program GL ARB imaging GLU _ EXTENSIONS GL_EXT_bgra Note tcl3dOglGetExtensions lists the extensions supported by the running OpenGL driver Use tcl3dOglGetExtensionList to geta list of all specified OpenGL extensions See the demo program tcl3dInfo tcl for other examples on how to use these procedures 4 3 tcl3dOgl gt Util Tcl3D utility library This
33. INCOMPATIBILITY Reshape callback does not have width and height parameters anymore Use the Togl width and height methods to get the widget s size Starpack related Updated Img version to 1 4 SVN Revision 315 glusCreateTorus glusDestroyShape GLUS shapes glusCreatePlane glusCreateCube glusCreateSphere These functions return a dictionary containg the geometry in tcl3dVectors to be used in vertex array objects VAO New utility functions Shader utility functions tcl3d0glReadShaderFile tcl3d0glBuildProgram tcl3d0glCompileProgram tcl3dOglLinkProgram tcl3d0glDestroyProgram tcl3dReadImg Read an image and return a dictionary containing the image data in a tcl3dVector as well as additional image information width height format nchans tcl3d0glGetVersionNumber Get OpenGL version as a dict tcl3d0glGetProfile Get OpenGL profile information the after idle command tcl3dAfterIdle Workaround for resize problems on the Mac caused by Tcl3D User Manual Version 0 5 0 December 2010 Page 66 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 7 Release notes Tcl3D Doing 3D with Tcl tcel3dGetDirList Utility function to get the contents of a directory tcl3dDirSelect An enhanced ttk Combobox widget for selecting directories or files tcl3dVectorEqual Check two Tcl13D vectors for equality tcl3dCgResetError Reset the Cg error condition New
34. Tcl Table 4 24 tcl3dOsg utility commands See the demo programs contained in directory demos OpenSceneGraph for examples on how to use the OSG functions 4 10 tcl3dGauges Tcl3D package for displaying gauges This package implements the following gauges airspeed altimeter compass tiltmeter This is an optional module Requirements for this module None all files are contained in the Tcl3D distribution The gauge package has been implemented by Victor G Bonilla See the demo programs gaugedemo tcl and gaugetest tc l for examples on how to use the gauges Tcl3D User Manual Version 0 5 0 December 2010 Page 54 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 5 Miscellaneous Tcl3D information Tcl3D Doing 3D with Tcl 5 Miscellaneous Tcl3D information This chapter contains miscellaneous information about Tcl3D e License information e Programming hints e Open issues e Known bugs Starpack internals e OpenGL deprecation mode 5 1 License information The SWIG wrapper files as well as the C and Tcl utility files of all modules are copyrighted by Paul Obermeier and distributed under the BSD license See below for exceptions regarding single files and the external libraries The Tcl3D utility library files see below for exceptions are copyrighted by Paul Obermeier and distributed under the BSD license The following files of the Tcl3D utility
35. Tcl3D Doing 3D with Tcl Tcl3D Doing 3D with Tcl T INTRODUC TION iiinis aa a aiaa aria da a 2 11 Architecte overdo urcarea a a a a aa ace iecuinn 2 12 Moduls cn cei wt tt iis ti sm 3 22 Installation of a source distribution ssnssssssnnnnrnnnnnnnnnnnnnnnrnnnnnnnnnnnnnnnnennnnnnnnnnnnennnnnnnnnne 12 2 o Nn T D Sak ese ee ei 18 2 WRAPPING IN DETAIL araa aaa aaa a at a a aE a aa a vebeassantonaanceasg 19 4 2 tcl3dOgl E Wrapper for OpenGL functionality ssssessnenssnnnnnsnnnnnnnnnnsnnnennnes 29 2 a Badoak TED wahy UBAP itt ii Sa cle i a 33 4 4 tcl3dCg Wrapper for NVidia s Cg shading language ssssssssssssssensnnnnnnrrnnnnnnnsnnnnna 50 4 5 tcl3dSDL Wrapper for the Simple DirectMedia Library sssssssssnnnnnnsssnnnsssnnenssrensssrene 50 4 6 tcl3dFTGL Wrapper for the OpenGL Font Rendering Library sssssseceeesseeeeeeeees 51 4 7 tcl3dGl2ps Wrapper for the OpenGL To Postscript Library ssssesseeeeeeeeeeeeeeeeeeees 52 4 8 tcl3dOde Wrapper for the Open Dynamics ENQine cccceeeseeeeeeeeeeeeeeeeeeeseeeeeeeeees 52 4 9 tcl3dOsg Wrapper for the OpenSceneGraph library ccccccececeeeeeeeeeeeeeeeeeseeeeeeeeees 53 4 10 tcl3dGauges Tcl3D package for displaying QAUQCS 1 ccs ie ceesecenseesnesesneeseseedeneree 54 5 MISCELLANEOUS TCL3D INFORMATION ccccccsscsceeeeseesseesee
36. TclI3D Vector by calling the low level memory allocation routine new_TYPE and create a new Tcl procedure tcl3dVectoriInd Get index of a Tcl3D Vector De a image See next chapter for detailed description ee ee eee tel3dvectorToList tel3dVectorTostring tc rToByteArray Table 4 9 tcl3dUtil tcl3dVector utility commands Note The tcl3dFromString and tcl3dVectorToString commands can be replaced with the corresponding ByteArray Commands which are much faster For functions converting photos into vectors and vice versa see the next chapter about image manipulation The tcl3dVector command creates a new Tcl procedure with the following subcommands which wrap the low level vector access functions described above Get vector element at a given index TYPE_getitem Set vector element at a given index to supplied value TYPE_setitem Set 3 vector elements starting at given index TYPE_setrgb Set 4 vector elements starting at given index TYPE_setrgba Set range of vector elements to supplied value TYPE_setarray Add supplied value to a range of vector elements TYPE_addarray mulvec Muliply supplied value to a range of vector elements TYPE mularray Delete a tcl3dVector delete TYPE Determine the size of an element in bytes TYPE_elemsize Table 4 10 tcl3dUtil tcl3dVector subcommands Examples The following example shows the usage of the tc
37. al package information or tcl3dGet PackageInfo for textual package information If these procedures fail you may try the low level information supplied in the Tcl array __tcl3dPkgInfo gt parray _ tcl3dPkgInfo __tcl3dPkgInfo tcl3dcg avail 0 Cg library not wrapped 1 05 40 __tcl3dPkgInfo tcl3dcg version __tcl3dPkgInfo tcl3dftgl avail __tcl3dPkgInfo tcl3dftgl version Version Tcl3D Basic should print out information similar to the lines listed below when calling tcl3dGetPackagelInfo tcl3dcg 0 Cg library not wrapped tcl3dftgl 0O FTGL library not wrapped tcl3dgauges 1 0 5 0 Tcl3D User Manual Version 0 5 0 December 2010 Page 17 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 2 Installation Tcl3D Doing 3D with Tcl tcl3dgl2ps 0 GL2PS library not wrapped tcl3dode ODE library not wrapped tcl3dogl 0 5 0 1 4 APPLE 1 6 16 0 1 tcl3dosg 0 OSG library not wrapped O SDL library not wrapped tcl3dsdl Version Tcl3D Complete should print out information similar to the lines listed below when calling tcl3dGetPackageInfo tcl3dcg 05s 0 220017 tcl3dftgl 0 5 0 2 1 3 rc5 tcl3dgauges 1 0 5 0 tcl3dgl2ps O50 Jb 34 54 tcl3dode OaS Oo OF tcl3dogl 0 5 0 1 4 APPLE 1 6 16 tcl3dosg 04 5 0 248 5254 tcl3dsdl 0455 0 26249 2 3 Extending Tcl3D 2 3 1 General information
38. and return the elapsed seconds Table 4 13 tcl3dUtil Stop watch commands Examples See the demo program spheres tcl for an example on how to use these procedures to measure the rendering frame rate Implementation details The functionality of this module is implemented in the following files Implementation files tcl3dUtilStopWatch c Header files tcl3dUtilStopWatch h Wrapper files utili 4 3 9 Random number module This module provides functions to generate random numbers Overview The following table lists the available functions of this module For a detailed description of the functions see the Tcl3D Reference Manual 5 or the source code files as listed in section Implementation details at the end of this chapter 3dNewRandomGen Initialize a new random number generator 3dGetRandomInt Generate a pseudo random integer number tcl3dGetRandomFloat Generate a pseudo random floating point number Table 4 14 tcl3dUtil Random number commands tel tcl3dDeleteRandomGen Delete a random number generator tel cl Examples See the demo program mandelbrot tcl for an example on how to use these procedures to set up random colors for fractal generation Implementation details The functionality of this module is implemented in the following files Implementation files tcl3dUtilRandom c Header files tcl3dUtilRandom h Wrapper files utili Tcl3D User Manual Version 0 5 0 December 20
39. are accessible via the Tcl command tcl3dVector with the exception of the TYPE ind functions An example for the usage of GLfloat_ind for optimised access to vectors can be found in NeHe demo Lesson37 tcl File bytearray i provides the implementation and wrapper definitions to convert Tcl binary strings ByteArrays into Tcl3D Vectors tcl3dByteArray2Vector and vice versa tcl3dVector2ByteArray Comparison of the different vector methods There are 4 different methods of setting vectors Method 1 Svec set Sindex val Set the elements with the tcl3dVector object method set Most elegant way but also the slowest Only useful for small vectors Method 2 s type setitem vec Sindex val Set the elements with the tcl3dVector low level function setitem Not so elegant because you need to know the type of the vector but much faster than method 1 Method 3 tcl3dListToVector type list vec len Set the elements with the low level functions tcl3dListToVector_TYPE introduced in Tcl3D 0 3 3 Not so elegant because you need to know the type of the tcl3dVector and you have to build a Tcl list before setting the tcl3dVector This is the fastest way Method 4 set vec tcl3dVectorFromList type list Set the elements with the utility function tcl3dVectorFromList which internally calls the low level functions tcl3dListToVector_TYPE You don t have to care about allocating a tcl3dVector of approriate size This is only slig
40. ate Tcl3D version Wrapped OpenGL Wrapped file version OpenGL 1 0 01 1992 OpenGL 1 1 01 1997 Tcl3D User Manual Version 0 5 0 December 2010 Copyright 2005 2010 by Paul Obermeier All rights reserved Page 65 of 74 7 Release notes Tcl3D Doing 3D with Tcl OpenGL version Release date TcI3D version Wrapped OpenGL Wrapped file version OpenGL 1 2 03 1998 OpenGL 1 2 1 10 1998 OpenGL 1 3 08 2001 OpenGL 1 4 07 2002 OpenGL 1 5 07 2003 OpenGL 2 0 09 2004 05 2005 Tcl3D 0 1 0 OpenGL 1 1 gl h 01 2006 Tcl3D 0 2 0 OpenGL 2 0 OglExt OpenGL 2 1 07 2006 OpenGL 3 0 07 2008 12 2008 Tcl3D 0 4 0 OpenGL 3 0 GLEW 1 5 1 OpenGL 3 1 03 2009 OpenGL 3 2 08 2009 03 2010 Tcl3D 0 4 2 OpenGL 3 2 GLEW 1 5 3 OpenGL 3 3 03 2010 OpenGL 4 0 03 2010 07 2010 Tcl3D 0 4 3 OpenGL 4 0 GLEW 1 5 4 OpenGL 4 1 07 2010 12 2010 GES DO S10 OpenGL 4 1 GLEW 1 5 7 Table 7 1 Tcl3D release timeline 7 2 Release details Version 0 5 0 2010 12 31 Tcl Tk updated to version 8 5 using ttk and dicts Enhancements New features Tcl Tk 8 5 8 now used as standard Tcl version dicts and ttk are used in Tcl3D library and demos Incorporated features from Togl 2 0 Use of Tcl Obj instead of strings Code cleanup GLEW version updated to 1 5 7 OpenGL support now up to 4 1
41. best possible solution today but has the following two disadvantages Windows user will typically place the starpack onto the desktop Starting the starpack inflates the desktop with lots of DLL s e On Linux Unix the current directory typically is not included in the LD_LIBRARY_PATH variable That s why the starpacks are distributed in it s own folder and the Unix distributions come with an additional start shell script tcl 3dsh OS VERSION sh Tcl3D User Manual Version 0 5 0 December 2010 Page 58 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 5 Miscellaneous TcI3D information Tcl3D Doing 3D with Tcl bin sh Startup script for tcl3dsh the Tcl3D starpack Unix iD LIBRARY PATH LD LIBRARY PATH TRIX D LIBRARYN32_PATH LD LIBRARYN32_ PATH Darwin DYLD LIBRARY PATH DYLD LIBRARY PATH export LD LIBRARY PATH export LD LIBRARYN32 PATH export DYLD LIBRARY PATH tcl3dsh 0S 0 5 0 5 5 2 Starpack issue 2 Some of the external libraries need files for initialization ex the FTGL library needs the name of a TrueType font file to construct it s OpenGL commands This font file has to be on the real filesystem so that the FTGL library can find it and not in the virtual filesystem of the starpack Tcl3D supports a utility procedure tc13dGetExtFile which you should use if intending to use a Tcl3D script depending on such a library in a star
42. converted from C C to Tcl3D coming from the following sources OpenGL Red Book 20 NeHe tutorials 16 e Kevin Harris CodeSampler web site 17 Vahid Kazemi s GameProgrammer page 18 e Nopper s OpenGL core profile demos 23 e Category Library specific demos contains scripts showing features specific to the wrapped library Category Tcl3D specific demos contains scripts demonstrating and testing Tcl3D specific features Category OpenSceneGraph contains scripts demonstrating and testing the wrapper of the OpenSceneGraph library The next figure shows an excerpt from the demo hierarchy Tcl3D Demo Hierarchy Categories LibraryS pecificD emos OpenSceneGraph Tcl3DSpecificDemos TutorialsAndBooks TutorialsAndBooks OpenSceneGraph Tcl3DSpecificD emos Demo scripts LibraryS pecificD emos CodeS ampler GameProgrammer NeHe RedBook modelViewer tcl CodeS ampler GameProgrammer NeHe Demo scripts Demo scripts Demo scripts ogl_alpha_blending_frarm ogl_alpha_blending_textc ogl_axis_aligned_billboarc GL_Blending tel GL_Envmap tel GL_Font tel GL_Lighting tcl GL_Motionblur tel GL_Primitives tel Lesson06 tcl ogl_benchmark_sphere tc ogl_cg_multitexture tcl ogl_color_tracking tcl Figure 6 1 TcI3D demo hierarchy Tcl3D User Manual Version 0 5 0 December 2010 Page 63 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved
43. date New features OpenGL 1 5 07 2003 Vertex buffer objects occlusion queries extended shadowing functions OpenGL 2 0 09 2004 User programmable shaders OpenGL Shading Language GLSL OpenGL 2 1 07 2006 Pixel buffer objects sRGB textures non square matrices GLSL 1 20 OpenGL 3 0 07 2008 Frame buffer objects hardware instancing vertex array objects GLSL 1 30 Introduction of a deprecation mechanism OpenGL 3 1 03 2009 Texture Buffer Objects Uniform Buffer Objects GLSL 1 40 Removal of legacy functionality OpenGL 3 2 08 2009 Geometry Shader Sync and Fence objects GLSL 1 50 OpenGL 3 3 03 2010 Backport of OpenGL 4 0 functionality for use on previous GPU HW GLSL 3 30 OpenGL 4 0 03 2010 Shader subroutines 64 bit floating point support GLSL 4 00 OpenGL 4 1 07 2010 OpenGL ES compatibility GLSL 4 10 Table 5 2 OpenGL release timeline Starting with OpenGL 3 1 the functionality of the fixed function pipeline was declared deprecated About 65 of all existing OpenGL functions have been declared deprecated as can be seen in the following table Note that this table only takes the core functions into account no OpenGL extension functions OpenGL version Number of Number of functions deprecated functions OpenGL 1 1 336 272 OpenGL 1 2 4 1 OpenGL 1 3 46 37 OpenGL 1 4 47 38 OpenGL 1 5 19 0 OpenGL 2 0 93 36 OpenGL 2 1 6 0 OpenGL 3 0 55 20 OpenGL 3 1 4 0 OpenGL 3 2 3
44. e mode specified Eliminate weld vectors that are within an epsilon of each other lmDelete 1lmReadOBJ lmWriteOBJ glmList Table 4 15 tcl3dUtil Wavefront reader commands Draw a textured cube with given center and size a Draw a helix with given center radius and number of twists tcl3dSphere Draw a sphere with given radius precision tcl3dCameraModel Draw a model of a simple camera tcl3dTeapotModel Draw a teapot with quads Table 4 16 tcl3dUtil Shape commands Examples See the demo program gaugedemo tcl for an example on how to use the Wavefront parser functions See NeHe demo program Lesson23 tcl for an example on how to use tc13dCube See NeHe demo program Lesson36 tcl for an example on how to use tc13dHelix See demo program og _benchmark_sphere tcl for an example on how to use tc13dSphere tcl Implementation details Tcl3D User Manual Version 0 5 0 December 2010 Copyright 2005 2010 by Paul Obermeier All rights reserved Page 47 of 74 4 Modules in detail Tcl3D Doing 3D with Tcl The tcl3dModel and tcl3dModelFmtObj files provide a parser for reading model files in Alias Wavefront format The code to read and draw the models is a modified version of the parser from Nate Robin s OpenGL tutorial 19 The tcl3dShapes files implement a sphere based on an algorithm found at Paul Bourke s excellent pages 22 as well as a cube and a helix based on algorith
45. e supported list of platforms Improved Mac OS X support Fixed resize problems in presentation framework Consistent mouse button behaviour across operating systems Trackball module supports multiple windows CAUTION Incompatible change Additional Togl window parameter in procedures tcl3dTbAnimate tcl3dTbInit tcl3dTbMatrix Thanks to Michael Magoga for this patch New OpenGL utility procedures tcl3d0glGetIntState tcl3d0glGetFloatState tcl3d0glGetDoubleState tcl3d0glGetMaxTextureSize tcl3d0glGetMaxTextureUnits tcl3d0glGetViewport tcl3d0glGetShaderInfoLog tcl3d0glGetProgramInfoLog tcl3d0glGetShaderSource tcl3d0glShaderSource tcl3d0glGetInfoLogARB New low level routines for copying Tcl lists into a vector tcl3dListToVector TYPE Tcl3D User Manual Version 0 5 0 December 2010 Page 69 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 7 Release notes Tcl3D Doing 3D with Tcl Tcl utility procedure tcl3dVectorFromList updated to transparently use the new low level routines Starpacks now allow drag and drop of TclKit files tcl3dGetExtFile not constrained to Starkits anymore Thanks to Jean Claude Gohard for supplying a vfs and zvfs enabled version New utility functions for random number generation same algorithm at C and Tcl level Bug fixes Bug fix in tcl3dGauges Eliminated bgerror procedures Thanks to Alexandre Ferrieux and Synic for hints o
46. eier All rights reserved 8 References Tcl3D Doing 3D with Tcl 8 References Tcl3D specific references 1 2 3 4 5 Tcl3D homepage http www tcl3d org Tcl3D page on the Tclers Wiki http wiki tcl tk 15278 Tcl3D discussion page on the Tclers Wiki http wiki tcl tk 16057 Tcl3D Demo of the month page on the Tclers Wiki http wiki tcl tk 17771 Tcl3D Reference Manual http www tcl3d org html docs html Libraries wrapped with Tcl3D 6 7 8 9 10 11 12 13 14 15 Togl page at SourceForge http sourceforge net projects togl Cg download http developer nvidia com object cg_toolkit html SDL download http www libsdl org FTGL download http sourceforge net projects ftgl Freetype download http www freetype org GL2PS download http www geuz org gl2ps ODE download http www ode org OSG download http www openscenegraph org GLEW http glew sourceforge net GLsdk library http oss sgi com projects ogl sample sdk html Demos used in TclI3D 16 17 18 19 20 21 22 23 NeHe s tutorials http nehe gamedev net Kevin Harris code samples http www codesampler com oglsrc htm Vahid Kazemi s GameProgrammer page http www gameprogrammer org Nate Robins OpenGL tutorials http www xmission com nate tutors html The Redbook sources http www op
47. em with an OpenGL extension you should also include the output of the following statement puts tcl3d0glGetExtensions If Tcl3D procedures are not found ex invalid command name tcl3dShowPackageInfo print out some low level information parrayi ecisdPkoimko The following distribution packages are currently available Which packages are needed depends on the proposed usage See the next chapters for detailed information Tcl3D User Manual Version 0 5 0 December 2010 Page 10 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 2 Installation Tcl3D Doing 3D with Tcl Tc ERSION odt Tcl3D user manual this document OpenOffice format c13D Manual VERSION pdf Tcl3D user manual this document PDF format Tcl3D RefManual VERSION pdf Tcl3D reference manual c13D DemoRef VERSION pdf Tcl3D demo programs reference 13d demos VERSION zip Tcl3D demo sources tcl3d demoimgs VERSION zip Screenshots of all Tcl3D demo programs Starpacks tel3dsh win32 VERSTON zip tel3dsh Linux VERSION zip tel3dsh Darwin VERSION zip tel3dsh IRIX64 VERSION zip Binary packages tcl3d win32 VERSION zip External libraries DLL s and Tcl3D package for Windows tcl3d Linux VERSION zip External libraries DSO s and Tcl3D package for 32 bit Linux tcl3d Linux64 VERSION zip External libraries DSO s and Tcl3D package for 64 bit Linux z d n
48. engl redbook com source OpenGL GLUT demos http www opengl org resources code samples glut_examples demos demos html Paul Bourke s textured sphere http local wasp uwa edu au pbourke texture spheremap Nopper s OpenGL core profile demos http nopper tv opengl html Tools needed for Tcl3D development 24 25 26 SWIG Simplified Wrapper and Interface Generator http www swig org ActiveTcl Batteries included distribution http www activestate com Starpack Wiki page http wiki tcl tk 3663 Documentation Tcl3D User Manual Version 0 5 0 December 2010 Page 73 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 8 References Tcl3D Doing 3D with Tcl 27 Woo Neider Davis OpenGL Programming Guide Addison Wesley The Redbook 28 OpenGL Wiki page http wiki tcl tk 2237 29 OpenGL Extension Registry http www opengl org registry Miscellaneous 30 Roger E Critchlow s Frustum http www elf org pub frustum01 zip 31 Paul Obermeier s Portable Software http www posoft de Tcl3D User Manual Version 0 5 0 December 2010 Page 74 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved
49. ept OSG and Cg which is not available for SGI has been wrapped and seems to be running fine but no extensive tests have been done The OS X port is tested on a MacBook only with limited graphics capabilities 1 5 Getting started The easiest way to get started is using a Tcl3D starpack Starpacks for Windows Linux IRIX and Mac OS X Intel based can be downloaded from http www tcl3d org See chapter 2 for a detailed information about all available Tcl3D distribution packages The only prerequisite needed for using the Tcl3D starpack distribution is an installed OpenGL driver Everything else even the Tcl interpreter is contained in the starpack The starpacks are distributed as a ZIP compressed file Unzipping this file creates a directory containing the starpack tcl3dsh OS VERSION Distributions for Unix systems contain an additional shell script tcl3dsh OS VERSION sh which should be used for starting the Tcl3D starpack After starting the starpack a toplevel Tk window labeled Tc13D as well as a console window labeled Tc13D Console should appear similar to starting a wish shell The console window should contain the following usage message as well as a tcl3d prompt Type pres to start Tcl3D presentation Type inst to write the Tcl3D installation packages to disk Note Temporary and output files are written to C tmp tcl3dData tmp The OpenSceneGraph library and demos are not included in this p
50. er Linux you can set the environment variable GL FSAA MODE to 1 e The default value for swapinterval has been changed in version 0 4 0 from 1 to O i e if this option is not specified a TcI3D program does not wait for the vertical blank signal but runs at maximum speed Profile options coreprofile Enable disable the OpenGL core profile major Set the OpenGL major number for the core profile minor Set the OpenGL minor number for the core profile Default settings are coreprofile coreProfile CoreProfile false 0 major major Major 1 1 minor minor Minor 0 0 4 1 3 A simple Tcl3D template A template for a Tcl3D application looks like follows package require tcl3d proc CreateCallback toglwin glShadeModel GL SMOOTH glClearColor 0 0 0 0 0 0 0 5 glClearDepth 1 0 glEnable GL DEPTH TEST Enable smooth shading Black background Depth buffer setup Enable depth testing 35 E SE OE Tcl3D User Manual Version 0 5 0 December 2010 Page 28 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl proc ReshapeCallback toglwin w 1 h 1 set w Stoglwin width z Get Togl window width set h Stoglwin height A Get Togl window height glViewport 0 0 w h Reset the current viewport glMatrixMode GL PROJECTION Select the projection matrix glLoadIdentity 5 Reset the projection matrix Calcu
51. er or floating point value which is often given in C code examples with an enumeration as shown in the next example extern void glTexParameteri GLenum target GLenum pname GLint param It is called in C typically ae follows glTexParameteri GL TEXTURE 2D GL TEXTU Ww E WRAP_S GL_REPEAT 1TexParameteri a RE 2D GL TEXTURE MAG FILTER GL_ NEAREST As the 3 parameter is not of type GLenum you have to specify the numerical value in Tcl glTexParameteri GL TEXTURE 2D GL TEXTURE_WRAP_S GL_ REPEAT glTexParameteri GL TEXTURE 2D GL TEXTURE MAG FILTER GL_ NEAREST If called with the enumeration name iT _TEXTURE_2D GL TEXTURE WRAP S GL REPEAT lTexParameteri GL you will get the above error message Hint 4 Error expected floating point number but got 08201905 p float This error message indicates that a tcl3dVector has been specified as parameter to a function which expects a Tcl list This often happens when using one of the glMultMatrix commands Use a sequence like shown below to convert the tcl3dVector into a Tcl list before supplying it to the function set matAsList tcl3dVectorToList mat 16 glMultMatrixf SmatAsList Hint 5 Error Package tcl3dcg couldn t load library C Tcl lib tcl3d tcl3dCg tcl3dCg dll this
52. exture size tcl3d0glGetMaxTextureUnits Get maximum number of texture units Get current viewport as a 4 element Tcl list cl3doglGetShaderStat Utility function for easier use of OpenGL function glGetShaderiv Utility function for easier use of OpenGL function glGetProgramiv tcl3d0glGetShaderInfoLog Utility function for easier use of OpenGL function glGetShaderInfolLog tcl3do0gl1Get ProgramInfoLog Utility function for easier use of OpenGL function glGetProgramInfoLog tcl3doglGetShaderSource Utility function for easier use of OpenGL function glGetShaderSource tc 3d0g1Get InfoLogARB Utility function for easier use of OpenGL function glGetInfoLogARB tcl3d0glShaderSource Utility function for easier use of OpenGL function glShaderSource Read a shader file Compile a shader program tcl3doglLinkProgram Link a shader program Build a shader program Destroy a shader program glMultiDrawElements Procedure to implement the OpenGL function glMultiDrawElements tcl3d0glGetGlError Check if an OpenGL related error has been occurred tcel3do0glGetFuncList Return a list of the names of all wrapped OpenGL functions OglGetFuncSignatureList Return a list of the C signatures of all wrapped OpenGL functions Deprecated Use tclOg GetFuncVersionList Return a list of the OpenGL versions or extensions of
53. for Version 1 or 2 Additionally copy the folder extlibs contained in distribution package tcl3d 0S 0 5 0 zip into the source code folder tcl3d Then unzip tcl3d starpack 0 5 0 zip into the source code folder tcl3d You should end up with a directory and file structure as shown in the next figure Tcl3D User Manual Version 0 5 0 December 2010 Page 14 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 2 Installation Tcl3D Doing 3D with Tcl 3 E config_cygwin 0 demos E config_Darwin a O extlibs E config_IRIX64 O starpack E config_Linux O swigfiles E config _Linux64 O tcl3dcg E config_mingw tel3dFTGL E config_win32 O tcl3dGauges E make macros H tel3dGl2ps E make oscheck O tcl3dode E make wrap O tcladogl E Makefile O tcl3dosq E pkgIndex tcl O tel3d5DL E Readme txt E Tcl3D_Announce txt Tcl3D_License txt Figure 2 2 Tcl3D Complete starpack directory structure Note The starpack distribution package contains Tclkits for all supported operating systems as well as supporting Tcl packages tklmg snack needed for the Tcl3D demonstration programs 2 2 2 Step 2 Configuration Before compiling edit the appropriate config_ file to fit your platform compiler combination Configuration file MinGW gcc Table 2 3 Tcl3D configuration files Note Visual C 6 0 and CygWin support have been deprecated e MinGW is
54. g glTexEnv glGetTexEnv glBitmap Matrix operations glLoadMatrix glMultMatrix glTranslate glRotate Raster operations glDrawPixels glCopyPixels glPixelTransfer glRasterPos State glPushAttrib glPushClientAttrib glPosAttrib Fog and Clipping glFog glClipPlane Evaluation glMap glMapGrid glEvalCoord glEvalMesh Selection and Feedback glInitNames glLoadName glFeedbackBuffer glPassThrough Convolution filters glConvolutionFilter2D glConvolutionParameter ColorTables glColorTable glCopyColorTable glGetColorTable Table 5 4 Deprecation categories The deprecated functions are still supported by the OpenGL drivers Typically these operate in the so called Compatibility Profile where all functionality of the fixed function pipeline is still available You have to expilicitly switch to the OpenGL core profile by using the extension WGL GLX_ARB create context Note This extension functionality is available via the Tog command line coreprofile For the deprecated matrix functions replacement functions have been integrated into the OpenGL module of Tcl3D All functions have the same signature with the exception that the Tcl3D functions have an additional parameter at the end for returning the calculated matrix void gluPerspective GLdouble fovy GLdouble aspect GLdouble zNear GLdouble zFar void tcl3dPerspective double fovy double aspect double zNear double zFar float res Tcl3D User Manual Version 0 5 0 Dece
55. htly slower than method3 The test program vectorspeed tcl implements the above mentioned four different methods and shows output similar to the following lines D tcl3d tcl3d0gl tests gt tclsh vectorspeed tcl Number of runs 100 Size of vectors 1000 Tcl3D User Manual Version 0 5 0 December 2010 Page 42 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl Setting 100000 el nts per method SetMethod1l 25339 3 microseconds per iteration SetMethod2 3637 8 microseconds per iteration SetMethod3 659 2 microseconds per iteration SetMethod4 736 2 microseconds per iteration 4 3 6 Image utility module Thi s module provides access to Tk photo images Overview The following table lists the available functions of this module For a detailed description of the fun ctions see the Tcl3D Reference Manual 5 or the source code files as listed in section Implementation details at the end of this chapter Tcl3D command Description tc 13dPhotoChans Return the number of channels of a Tk photo 13dVectorToPhoto Copy from OpenGL raw image format into a Tk photo The photo image must have been initialized with the appropriate size and type 13dPhotoToVector Copy a Tk photo into a tc13dVector in OpenGL raw image format The tcl3dVector must have been allocated with the approriate size and type tcl3dvectorFromPhoto Create
56. ibraries wrapped with Tcl3D It is optimized to work best with the OpenGL interface 3 1 Wrapping description Conventions used in this chapter Every type of parameter is explained with a typical example from the OpenGL wrapping e The notation TYPE stands for any scalar value char int float enum etc as well as inherited scalar types like GLboolean GLint GLfloat etc It is not used for type void or GLvoid The notation struct stands for any C struct The decision how to map C to Tcl types was mainly inspired to fit the needs of the OpenGL library best The same conventions are used for the optional modules too e Function parameters declared as const pointers are interpreted as input parameters Parameters declared as pointer are interpreted output parameters 3 1 1 Scalar input parameters The mapping of most scalar types is handled by SWIG standard typemaps Scalar types as function input parameter must be supplied as numerical value Input parameter TYPE C declaration void glTranslatef GLfloat x GLfloat y GLfloat z 1Translatef 1 0 2 0 3 0 1Translatef x y zZ tef 1 0 2 0 3 0 tef x Sy z C example Tcl example Table 3 1 Wrapping of a scalar input parameter The mapping of the following enumerations is handled differently see file tcl3dConstHash i They can be specified either as numerical value like the other scalar types or additionally as a name
57. in your OpenGL driver implementation With GLEW you will get a core dump when trying to use such a function because the function pointer is NULL You should therefore always check either the OpenGL version implemented in your driver tcl3d0glHaveVersion the availability of the extensions you intend to use tcl13d0glHaveExtension or to be absolutely sure check the availability of each OpenGL function in your initialization code tc13d0glHaveFunc Starting with Tcl3D version 0 4 1 the utility procedure tcl3dSetSafeMode can be used to avoid core dumps and to get information about which OpenGL functions are not available in your driver Use the demo tcel3dInfo tcl to get information about the supported OpenGL functions of your installed OpenGL driver Hint 7 The demo applications are using a procedure called Cleanup to remove or unset demo data This procedure is only needed when running the demo from the presentation framework Do not put Cleanup into the exit procedure ExitProg because an after handler might still be running in the presentation framework Cleanup is not needed if running a demo application as a standalone script 5 3 Open issues e GLU callbacks are currently not supported This implies that tesselation does not work because this functionality relies heavily on the usage of C callback functions There is currently no possibility to specify a color map for OpenGL indexed mode As color maps depend on
58. indow has been created i e a rendering context has been established This holds true for function tc13d0glHaveFunc too e See Hint 6 in chapter 5 2 for the differences between the GLEW extension library and the previously used OgIExt extension library GLUT shapes library Implementation files tcl3dShapesGlut c tcl3dShapesTeapot c tcl3dShapesGlut tcl Header files tcl3dShapesGlut h Wrapper files tcl3dOgl i The shapes library consists of C files tcl3dShapesTeapot c for the teapot tcl3dShapesGlut c for all other GLUT shapes and the common header file tcl3dShapesGlut h and the Tcl file tcl3dShapesGlut tcl The GLUT shape objects are available under identical names for porting test and demonstration programs to Tcl3D These shapes are used extensively in the examples of the OpenGL redbook 27 See there for a description of the functions and its parameters lutSolidCone lutSolidCube glutWireCube tSolidDodecahedron glutWireDodecahedron tSolidiIcosahedron glutWireIcosahedron lidOctahedron glutWireOctahedron lidSphere glutWireSphere lidTeapot lutWireTeapot lidTetrahedron lutWireTetrahedron lidTorus lutWireTorus Table 4 2 tcl3dO0gl GLUT shape commands g g gI g gi gI g a Q 4 Note The teapot implementation differs in the original GLUT and the freeglut implementation If using the teapot in a benchmark application note that
59. ing in detail Tcl3D Doing 3D with Tcl TYPE SIZE void SIZE TYPE void LGetFloatv GLenum pname GLfloat params C declaration ReadPixels GLint x GLint y GLsizei width Lsizei height GLenum format Lenum type GLvoid pixels Lfloat values 2 1GetFloatv GL LINE WIDTH GRANULARITY values C example Lubyte vec malloc w h 3 lReadPixels 0 0 w h GL RGB GL UNSIGNED BYT t values tcl3dVector GLfloat 2 1GetFloatv GL LINE WIDTH GRANULARITY Svalues Tcl example set vec tcl3dVector GLubyte expr w Sh 3 lReadPixels 0 0 w h GL RGB GL UNSIGNED BYTE vec Table 3 7 Wrapping of a pointer output parameter 3 1 4 Function return values The mapping of return values is handled by the SWIG standard typemaps Scalar return values are returned as the numerical value Pointer to structs are returned with the standard SWIG mechanism of encoding the pointer in an ASCII string Function return TYPE STRUCT GLuint glGenLists GLsizei range GLUnurbs gluNewNurbsRenderer void GLuint sphereList glGenLists 1 C example GLUnurbsObj theNurb gluNewNurbsRenderer gluNurbsProperty theNurb GLU SAMPLING TOLERANCE set sphereList glGenLists 1 Tcl example set theNurb gluNewNurbsRenderer gluNurbsProperty theNurb GLU SAMPLING TOL Table 3 8 Wrapping of a function return value The ne
60. ion OpenGL colors are returned as a list of 3 unsigned bytes rg b tcl3dName2rgbf Convert a color specification into the corresponding OpenGL representation OpenGL colors are returned as a list of 3 floats in the range 0 1 rg b tcl3dName2rgba Convert a color specification into the corresponding OpenGL representation OpenGL colors are returned as a list of 4 unsigned bytes rg b a Tcl3D User Manual Version 0 5 0 December 2010 Page 37 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl Tcl3D command Description 13dName2rgbaf Convert a color specification into the corresponding OpenGL representation OpenGL colors are returned as a list of 4 floats in the range 0 1 rgba 13dRgb2Name Convert an OpenGL RGB color representation into a hexadecimal Tcl color name string OpenGL colors are specified as unsigned bytes in the range 0 255 13dRgbazName Convert an OpenGL RGBA color representation into a hexadecimal Tcl color name string OpenGL colors are specified as unsigned bytes in the range 0 255 13dRgbf2Name Convert an OpenGL RGB color representation into a hexadecimal Tcl color name string OpenGL colors are specified as floats in the range 0 1 13dRgbaf2zName Convert an OpenGL RGBA color representation into a hexadecimal Tcl color name string OpenGL colors are specified as floats in the range 0 1 Table 4 8 tcl3dUtil Color u
61. ion of your Tcl installation ex C Tcl ib If write access to this Tcl directory is not permitted you can copy the tcl3d0 5 0 directory somewhere else eg C mytci3d or home user mytcl3d To have Tcl look for packages in this location you must set the TCLLIBPATH environment variable with the above specified directory name as value Note that on Windows the path must be written with slashes not backslashes set TCLLIBPATH C mytcl3d Tcl3D User Manual Version 0 5 0 December 2010 Page 11 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 2 Installation Tcl3D Doing 3D with Tcl e The files contained in the external libraries folder extlibs should be copied into a directory which is listed in your PATH environment variable Windows or your LD_LIBRARY_PATH environment variable Unix e The demonstration programs folder demos can be copied to any convenient place of your file system Note The starpack does not contain the tcl3dOsg library files and demo applications due to space limitations Now you are ready for using Tcl3D from a standard Tcl interpreter by starting a tclsh or wish program and issuing the following command package require tcl13d Alternatively you can extract the 3 installation folders with one of the following methods e Start the Tcl3D starpack and issue the command inst in the console Start the Tcl3D starpack with command line parameter inst Both steps will copy the
62. iver suitable for your graphics card It is recommend to download and install an up to date OpenGL driver from the manufacturer of your graphics card especially if intending to write shader programs in GLSL or Cg A Tcl Tk version greater or equal to 8 5 Tcl3D User Manual Version 0 5 0 December 2010 Page 12 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 2 Installation Tcl3D Doing 3D with Tcl The Img extension is needed to have access to various image formats which are used as OpenGL textures For some demos the snack extension is used To generate screenshots from the Tcl3D presentation the Twapi extension is needed on Windows It is therefore recommended to use an ActiveTcl distribution 25 which contains all of the above listed Tcl extensions To build the Tcl3D modules from source the following additional tools need to be installed and accessable from the command line GNU make http www gnu org SWIG gt 1 3 36 http www swig org Table 2 2 Tools for building Tcl3D Note e A binary version of SWIG for IRIX is available from my private home page http www posoft de e Tcl3D prior to version 0 4 1 has been successfully generated and tested with SWIG versions 1 3 24 1 3 29 and 1 3 36 For wrapping the OpenSceneGraph library SWIG version 1 3 36 is needed Older versions of SWIG as stated above are not supported anymore with Tcl3D versions 0 4 1 and newer See chap
63. kage SWIG generated Tel interfaces tcl3dCi tcl3dSDL tcl3dFTGL Cg Shading Joystick and CD Font Rendering tcl Tcl3D Version 0 5 0 Released 2010 12 31 Development based on Tcl Tk 8 5 8 OpenGL wrapping based on GLEW 1 5 7 Support of OpenGL 4 1 Tog supports selection of OpenGL core profile Tcl Extension Package SWIG generated Tcl interfaces Tcl Interface tcl3dCg tcl3dSDL tcl3dFTGL F Cg Shading Joystick and CD Font Rendering tcl3dGI2ps tcl3dOde tcel3dOsg OpenGL to PS PDF Physics Ei OpenSceneGraph Figure 7 1 Tcl3D graphical release history Tcl3D Doing 3D with Tcl Tcl3D Version 0 4 1 Released 2009 08 23 New module tcl3dOsg wrapping the OpenSceneGraph library tcl3dGauges Tel Extension Package Tel Interface SWIG generated Tel interfaces tcl3dCg tcl3dSDL tcl3dFTGL Cg Shading Joystick and CD Font Rend tel3dGI2ps tcl3dOde tcl3dOsg OpenGL to PS PDF Physics Engi OpenSceneGraph Tcl3D Version 0 4 3 Released 2010 07 31 OpenGL wrapping based on GLEW 1 5 4 Support of OpenGL 3 3 and 4 0 Utility functions for fixed function pipeline replacement Updated FTGL module tcl3dGauges Tcl Extension Package SWIG generated Tcl interfaces Tcl Interface tcl3dCi tcl3dSDL tcl3dFTGL Cg Shading Joystick and CD Font Rendering tcl3dGI2ps tcl3dOde tel3dOsg OpenGL to PS PDF Physics Engine OpenSceneGraph The following table shows the Tcl3D releases in relation to official OpenGL releases OpenGL version Release d
64. l We install the Tcl3D package into the same location as the Tcl distribution The installed Tcl version is 8 5 WITH DEBUG 1 INSTDIR usr local TCLDIR usr local TKDIR usr local TCLMINOR 5 Compile without debugging information The Tcl Tk installation is located in C Programme Tcl We install the TcI3D package into a separate directory The installed Tcl version is 8 6 WITH DEBUG INSTDIR C Programme Tcl TCLDIR C Programme poSoft TKDIR C Programme poSoft TCLMINOR 6 Instead of editing the configuration file you may alternatively create a file called make private in the top level directory of Tcl3D and add lines according to your needs ifeq KERNEL win32 INSTDIR F Programme poSoft TCLDIR F Programme Tcl TKDIR F Programme Tcl endif ifeq KERNEL mingw INSTDIR F Programme poSoft TCLDIR F Programme Tcl TKDIR F Programme Tk endif 2 2 3 Step 3 Customization The optional modules can be included or excluded from the compilation step by setting the following macros in file make wrap in the top level directory of the Tcl3D source tree Additional check file Customize support for tcl3dCg Customize support for tcl3dSDL include SDL h Customize support for tcl3dFTGL include FTGL h Customize support for tcl3dGl2ps Customize support for tcl3dOde ode ode h Tcl3D User Manual Version 0 5 0 December 20
65. l3D User Manual Version 0 5 0 December 2010 Page 71 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 7 Release notes Tcl3D Doing 3D with Tcl Version Old Name New Name tcl3dCheckCgError tcl3dCgGetError tcl3dGetCgProfileList tcl3dCgGetProfileList tcl3dFindCgProfile tcl3dCgFindProfile tcl3dFindCgProfileByNum tcl3dCgFindProfileByNum tcl3dPrintCgProgramInfo tcl3dCgPrintProgramInfo 0 3 2 tcl3dHeightMapFromPhoto tcl3dDemoUtilHeightMapFromPhoto tcl3dReadImage tcl3dReadRedBookImage tcl3dCreatePdf tcl3dGl2psCreatePdf tcl3dInit tcl3dO0glExtInit tcl3dCheckGlError tcl3d0glGetError tcl3dPhoto2Vector tcl3dPhotoToVector tcl3dHaveExtension tcl3d0glHaveExtension tcl3dHaveVersion tcl3d0glHaveVersion tcl3dGetVersions tcl3d0glGetVersions 0 3 3 tcl3dGetExtensions tcl3d0g1GetExtensions tcl3dGetStates tcl3d0glGetStates tcl3dVector2Photo tcl3dVectorToPhoto Still existent for backwards 0 4 0 tcl3d0glExtInit compatibility but functionality not needed anymore 0 4 1 TYPE convert TYPE cast tcl3d0glGetFuncSignatureList Use tcl3d0glGetFuncSignature instead 0 4 2 tcl3d0glGetFuncVersionList Use tcl3d0glGetFuncVersion instead tcl3d0glGetStates No replacement function Table 7 2 List of obsolete functions Tcl3D User Manual Version 0 5 0 December 2010 Page 72 of 74 Copyright 2005 2010 by Paul Oberm
66. late the aspect ratio of the window gluPerspective 45 0 expr double w double h 0 1 100 0 glMatrixMode GL MODELVIEW Select the modelview matrix glLoadIdentity 7 Reset the modelview matrix proc DisplayCallback toglwin Clear color and depth buffer glClear expr GL COLOR BUFFER BIT GL DEPTH BUFFER BIT glLoadIdentity Reset the current modelview matrix glTranslatef 0 0 0 0 5 0 Transformations glRotatef xrot 1 0 0 0 0 0 glRotatef yrot 0 0 1 0 0 0 glRotatef zrot 0 0 0 0 1 0 drawGeometry Draw the actual geometry Stoglwin swapbuffers Swap front and back buffer frame fr pack fr expand 1 fill both Create a Togl widget with a depth buffer and doublebuffering enabled togl fr toglwin width 250 height 250 double true depth true createproc CreateCallback reshapeproc ReshapeCallback displayproc DisplayCallback grid fr toglwin row 0 column 0 sticky news to be specified at widget creation time 4 2 tcl3dOgl gt OpenGL Wrapper for OpenGL functionality This module wraps OpenGL functionality up to OpenGL Version 4 1 GLU library functions based on Version 1 2 and several OpenGL extensions It is implemented with the help of the GLEW 14 library Standard shapes box sphere cylinder teapot with a GLUT compatible syntax are supplied in this module too Requirements for this m
67. library or a dependent library could not be found in library path This typically indicates that the dependent library or libraries ex cg dil or cgGL dll are not found i e they are not in a directory contained in your Path environment variable Error Package tcl3dcg couldn t load library C Tcl lib tcl3d tcl3dCg tcl3dCg dll Tcl3D User Manual Version 0 5 0 December 2010 Page 56 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 5 Miscellaneous TcI3D information Tcl3D Doing 3D with Tcl permission denied This typically indicates that the dependent library or libraries ex cg dil or cgGL dll were found but you do not have the permissions to execute the library These errors may occur with the following Tcl3D modules Tcl 3D module Affected libraries og all eqGL dil libftgl dll freetype6 dll ode dll osg dil osgDB 4lll SDL dill Although the examples shown in this hint use Windows specific library names the above mentioned errors may occur on Unix systems as well Hint 6 The OpenGL extension library Og Ext used in Tcl3D versions before 0 4 for wrapping OpenGL functions and the currently used GLEW library have an important difference OpenGL functions not available in the installed OpenGL driver have been ignored by the OgIExt library i e transformed into a no op The disadvantage of this behaviour was that you did not get any feedback about not available functions
68. lt PrtSc into a photo image and save the image to a file Table 4 12 tcl3dUtil Capture commands Note All of the functionality requires the help of the Img extension Some of the functionality requires the help of the Twapi extension and is therefore available only on Windows Examples See the demo program presentation tcl for an example on how to use these procedures to save screenshots of the available Tcl3D demos by right clicking on the demo name Implementation details The functionality of this module is implemented in the following files Implementation files tc 3dUtilCapture tcl Header files None Wrapper files None 4 3 8 Timing module This module provides functions for timing purposes Overview The following table lists the available functions of this module For a detailed description of the functions see the Tcl3D Reference Manual 5 or the source code files as listed in section Implementation details at the end of this chapter Tcl3D User Manual Version 0 5 0 December 2010 Page 45 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl Tcl3D command Description Create a new stop watch and return it s identifier tcl3dDeleteSwatch Delete an existing stop watch tcl3dStopSwatch Stop a running stop watch Start a stop watch Reset a stop watch i e set the time to zero seconds tcl3dLookupSwatch Lookup a stop watch
69. mber 2010 Page 61 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 5 Miscellaneous Tcl3D information Tcl3D Doing 3D with Tcl Deprecated function Tcl3dOgl function glFrustum tcl3dFrustum glOrtho tcl3d0rtho gluPerspective tcl3dPerspective gluLookAt tcl3dLookAt glRotate f d tcl3dRotate f d glTranslate f d tcl3dTranslate f d glScale f d tcl3dScale f d glLoadIdentity tcl3dMatflIdentity tcl3dMatdIdentity glMultMatrix f d tcl3dMatfMult f d glLoadMatrix f d No replacement use glUniformMatrix functions instead glMatrixMode No replacement glPushMatrix No replacement glPopMatrix No replacement Table 5 5 TcI3D replacement functions Tcl3D User Manual Copyright 2005 2010 Version 0 5 0 December 2010 by Paul Obermeier All rights reserved Page 62 of 74 6 Demo applications Tcl3D Doing 3D with Tcl 6 Demo applications More than 200 TclI3D applications for testing and demonstration purposes are currently available Most of these applications were converted from existing demonstration programs written in C C found on the web A detailed list of all demos is available online on the Tcl3D homepage at http www tcl3d org demos or in the TclI3D Demo Manual The Tcl3D demo applications are divided into 4 categories Category Tutorials and books contains scripts which have been
70. ment for the corresponding gl and glu functions New sub command elemsize to determine the size in bytes of an element of a tcl3dVector New functions tcl3d0glProject and tcl3d0glUnProject in addition to gluProject and gluUnProject using tcl3dVectors instead of Tcl lists New OpenGL information and query function tcl3d0glGetExtensionList Enhanced OpenGL information and query functions tcl3d0glGetFuncList tcl3d0glGetVersionList tcl3d0glIsFuncWrapped tcl3d0glGetFuncSignature tcl3d0glGetFuncVersion tcl3d0glGetEnumVersion tcl3d0glGetFuncDeprecated tcl3d0glGetUrl tcl3d0glGetVersionFuncs tcl3d0glGetVersionEnums Bug fixes Corrected wrapping of OpenGL enumerations Some enumerations did not get wrapped New demos 5 new demos added since release 0 4 2 These have been previously released as Tcl3D Demo of the month Build environment Windows 7 64 bit VS 2008 Express 32 bit SuSE Linux 10 2 32 bit 2 6 18 gcc 4 1 2 SuSE Linux 10 2 64 bit 2 6 18 gcc 4 1 2 Mac OSX 10 4 11 ARo eea PAON Tcl Tk 8 4 18 SWIG 1 3 40 Version 0 4 2 2010 03 28 Bug fix and maintenance release Enhancements New features GLEW version updated to 1 5 3 OpenGL support now up to 3 2 Cg version updated to 2 2 0017 Cg 2 2 February 2010 release Gl2ps version updated to 1 3 5 Tcl3D User Manual Version 0 5 0 December
71. mo and test programs showing the new functionality t Support for Visual Studio 2008 Improved detection of OS and compiler in make files To detect if using a DOS console for compilation th xistence of environment variable VSINSTALLDIR is checked This variable is also used to detect a NET compiler i e VS2005 or VS2008 which need manifests t Corrected build files and support for MinGW t SWIG version 1 3 38 tested for correct wrapping t Cg version updated to 2 2 0006 t Gl2ps version updated to 1 3 3 t New utility functions tcl3d0glSetMode tcl3d0glSetNormalMode tcl3d0glSetSafeMode tcl3d0glSetDebugMode to switch between the 3 OpenGL execution modes Normal Safe Debug Corresponding buttons added in the presentation framework New utility function tcl3dVectorFromLinspace to create new linearly spaced Tcl3D Vector Added test file vectorlinspace tcl New utility functions tcl3d0glFindFunc tcl3d0glGetExtSuffixes to find an implemented OpenGL function from it s core name by searching all known extension names Added test file findFuncs tcl CAUTION Incompatible changes if used from the Tcl level Replaced Int8 Float32 with corresponding GLbyte GLfloat typedefs Also changed function names accordingly glGetStringi was not wrapped Corrected bug in tcl3dUtilFractal c tcl3dFractalToPhoto had incorrect x and y scaling atures for Visual C
72. module implements several utilities in C and Tcl offering functionality needed for 3D programs It currently contains the following components 3D vector and transformation matrix component Information component Tcl3D User Manual Version 0 5 0 December 2010 Page 33 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl File utility component e Color names component Large data component tcl3dVector Image utility component e Screen capture component e Timing component Random number component 3D model and shapes component e Virtual trackball and arcball component C C based utilities for demo applications Requirements for this module None all files are contained in the Tcl3D distribution The master SWIG file for wrapping the utility library is util i 4 3 1 3D vector and transformation matrix module This module provides miscellaneous 3D vector and 4x4 transformation matrix functions Overview The following tables list the available functions of this module For a detailed description of the functions see the Tcl3D Reference Manual 5 or the source code files as listed in section Implementation details at the end of this chapter tcl3dVec3Print Print the contents of a 3D vector onto standard output tcl3dvec3fCompare Compare two 3D vectors Compare two 3D vectors sd Fill a 3D vector with 0 0 0 0 0 0 Copy a 3D vecto
73. ms found in the NeHe tutorials 23 and 36 16 Implementation files tcl3dModel c tcl3dModelFmtObj c tcl3dShapesMisc c Header files tcl3dModel h tcl3dModelFmtObj h tcl3dShapesMisc h Wrapper files utili Note The standard GLUT shapes are described in chapter 4 2 4 3 11 Virtual trackball and arcball module This module provides functions for emulating a trackball and an arcball Overview The following tables list the available functions of this module For a detailed description of the functions see the Tcl3D Reference Manual 5 or the source code files as listed in section Implementation details at the end of this chapter The trackball module implements the following commands tel3dTbInit Call this initialization procedure before any other trackball procedure tcl3dTbAnimate Call with parameter 1 or GL_ TRUE if you want the trackball to continue spinning after the mouse button has been released Call with parameter 0 or GL_ FALSE if you want the trackball to stop spinning after the mouse button has been released Table 4 17 tcl3dUtil Trackball commands The ArcBall module implements the following commands Create new ArcBall with given width and height tcl3dDeleteArcBall Delete an ArcBall tcl3dSetArcBallBounds Update mouse bounds for ArcBall Call this procedure from the reshape callback Update start vector and prepare for dragging Update end vector
74. n a toplevel window ccl3dHavecg 13dHaveSDL 13dHave tel3dHaveGl2ps tcl3dHavedsg Table 4 6 tcl3dUtil Information commands Examples The following code snippet shows how to call tcl13dGetPackageInfo foreach pkgInfo tcl3dGetPackageInfo puts lindex SpkgInfo 0 lindex S pkgInfo 1 tcl3dcg 10 5 0 2 2 0017 tcl3dftgl 1 025 0 2 1 3 re5 tcl3dgauges 1 0 5 0 tcl3dgl2ps 1 0 5 0 1 3 5 tcl3dode 1 05530 0 572103 tcl3dogl 10 5 0 1 4 APPLE 1 6 16 tcl3dosg 1 045 0 248 2 tcl3dsdl 1 1O 2 5 33 0 T2209 Implementation details The functionality of this module is implemented in the following files Implementation files tcl3dUtillnfo tcl Header files None Wrapper files None 4 3 3 File utility module This module provides miscellaneous functions for file related tasks Handling of temporary directories and file access from a starpack Overview The following table lists the available functions of this module For a detailed description of the functions see the Tcl3D Reference Manual 5 or the source code files as listed in section Implementation details at the end of this chapter Tcl3D User Manual Version 0 5 0 December 2010 Page 36 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl tcl3dGetTmpDir Get the name of a temporary directory tcl3dCreateTmpDir Create a unique temporar
75. n tcl works but the texts are displayed as 2D bitmaps only Most OpenGL only demos should work Version 2 Tcl3D Complete OpenGL support plus optional modules Needed tcl3d srce 0 5 0 zip Needed tcl3d 0S 0 5 0 zip Recommended tcl3d demos 0 5 0 zip Unzip tcl3d src 0 5 0 zip in a folder of your choice This creates a new folder tcl3d containing the sources Unzip tcl3d demos 0 5 0 zip into the new folder tcl3d Unzip tc13d 0S 0 5 0 zip into a temporary folder Then copy the dynamic libraries contained in subfolder extlibs OS into a directory which is listed in your PATH environment variable Windows or your LD_LIBRARY_PATH environment variable Unix You should end up with a directory and file structure as shown in figure 2 1 If you want to build the tcl3dCg module you have to download and install the Cg toolkit version 2 2 0017 from 7 After installation copy all the Cg header files into the tel3dCg Twapi directory These files are not included in the Tcl3D distribution because of license issues The dynamic libraries of Cg are included in the Tcl3D distribution package tc13d 0S 0 5 0 zip If you want to wrap only a sub set of the supported optional modules edit the make wrap file appropriately See chapter 2 2 3 Step 3 Customization for details Version 3 Tcl3D Star Tcl3D Basic or TclI3D Complete with starpack support Needed Installation of Version 1 or 2 Needed tcl3d starpack 0 5 0 zip Perform the steps as described
76. n this bug Several bug fixes in the presentation framework Thanks to Philip Quaiffe for hints and other useful discussions Several other minor bug fixes New demos 19 new demos added since release 0 3 2 These have been previously released as Tcl3D Demo of the month Version 0 3 2 2007 02 25 Demo cleanup and first official Mac OS X support Unification of demo applications and presentation framework New module tcl3dDemoUtil for C C based utility functions needed by some of the demos for speed issues More NeHe tutorials added Lessons 14 22 24 26 28 33 36 37 41 45 48 Nine demos from www GameProgrammer org added Updated Tcl3D manual Created separate demo overview document Added support to capture screenshots Module tcl3dCapture Added new functionality to tcl3dUtil ArcBall emulation Added windowing system specifics SwapInterval Multisampling to the tcl3dTogl widget Added support for Visual Studio 2003 7 1 and 2005 8 0 Enhanced tcl3dVector functionality Utility functions for manipulation of image data stored in tcl3dVectors tcl3dVectorCopy tcl3dVectorCopyChannel tcl3dVectorManip tcl3dVectorManipChannel tcl3dVector member functions for content independent manipulation setvec addvec mulvec tcl3d0de now uses ODE version 0 7 and is available for Windows Linux Mac OS X and Irix Wrapper still in alpha version and not complete tcl3dGl2ps now uses GL2PS ve
77. nds Requirements for this module None all files are contained in the Tcl3D distribution 4 1 1 Togl commands The following is a list of currently available Togl commands The commands changed or new in Tcl3D are marked bold and explained in detail below For a description of the other commands see the original Tog documentation configure render swapbuffers makecurrent postredisplay loadbitmapfont unloadbitmapfont width height Bitmap fonts Specifying bitmap fonts can be accomplished with the loadbitmapfont command The font can either be specified in XLFD format or Tk like with the following options family courier times weight medium bold slant regular italic size PixelSize Examples Stoglwin loadbitmapfont courier bold r 10 Tcl3D User Manual Version 0 5 0 December 2010 Page 26 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl Stoglwin loadbitmapfont family fixed size 12 weight medium slant regular See the tcl3dTog Fonts tcl and tcl3dFont tc l demos for more examples on how to use fonts with Togl 4 1 2 Togl options The following is a list of currently available Togl options The options changed or new in Tcl3D are marked bold and explained in detail below For a description of the other options see the original Tog documentation height width setgrid rgba redsize
78. ocating and freeing memory of any type This SWIG feature Sarray functions has been extended and replaced with 2 new SWIG commands sbaseTypeVector for scalar types and complexTypeVector for complex types like structs It not only creates setter and getter functions for accessing single elements of the allocated memory but also adds functions to set ranges of the allocated memory Wrapper functions for the following scalar types are defined in file tel3dVectors i GLshort Tcl3D User Manual Version 0 5 0 December 2010 Page 40 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl Q GI G QJ is mapped to Lushort uns Lonea sort T e tcl3dVectors of type char unsigned char GLchar and GLcharARB are not supported because the corresponding typemaps would collide with the standard SWIG mapping for C strings Use types GLbyte and GLubyte if you need tcl3dVectors with element sizes of 1 byte The generated wrapper code looks like this Example shown for GLdouble static double new_GLdouble int nelements return double calloc nelements sizeof double static void delete _GLdouble double ary free ary static int GLdouble elemsize double ary return sizeof ary 0 static double GLdouble_getitem double ary int index return ary index static
79. odule An OpenGL driver suitable for your graphics card It is recommend to download and install an up to date OpenGL driver from the manufacturer of your graphics card especially if intending to write shader programs in GLSL or Cg The master SWIG file for wrapping the OpenGL library is tel3dOgI i OpenGL library Tcl3D User Manual Version 0 5 0 December 2010 Page 29 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl Implementation files tcl3dOg Query tcl tcl3dOgIUtil tcl tcl3dOglHelp txt Header files glew h glu h Wrapper files glew i glewautogen i glu i The wrapping for this module is based on the header files glew h and glu h Note The original GLEW header file is not usable for direct wrapping with Swig so it s infor mation is used for generating the wrapper files glewdefs i and glewfuncs i during the build process with Tcl script createSwigAndHelpFile tcl File tel3dOg Help tcl is automatically generated by script createSwigAndHelpFile tcl too See the ReadmeGlew txt file in subdirectory GLSpec for more detailled information about the GLEW wrapping and update process The next figure shows the dependencies of the build process www opengl org OpenGL Reference Manuals createFuncUrlList tcl createExtUrlList tcl glFuncUrlList txt glExtUrIList txt oe oe ci tel3dOglHelp txt poeta createSwigAndHelpFile tcl glExtUrlLis
80. on Tcl3D Doing 3D with Tcl e tcl3dOde e tcl3dOsg tcl3dGauges tcl3dCg Wrapper for NVidia s Cg shading language This module wraps NVidia s Cg 7 shader library and adds some Cg related utility procedures A detailed description of this module can be found in chapter 4 4 tcl3dSDL Wrapper for the Simple DirectMedia Library This module wraps the SDL 8 library and adds some SDL related utility procedures Currently only the functions related to joystick and CD ROM handling have been wrapped and tested A detailed description of this module can be found in chapter 4 5 tcl3dFTGL Wrapper for the OpenGL Font Rendering Library This module wraps the FTGL 9 library and adds some FTGL related utility procedures The following font types are available Bitmap font 2D Pixmap font 2D e Outline font Polygon font e Texture font Extruded font A detailed description of this module can be found in chapter 4 6 tcl3dGl2ps Wrapper for the OpenGL To Postscript Library This module wraps the GL2PS 11 library and adds some GL2PS related utility procedures GL2PS is a C library providing high quality vector output PostScript PDF SVG for an OpenGL application A detailed description of this module can be found in chapter 4 7 tcl3dOde Wrapper for the Open Dynamics Engine This module wraps the OpenSource physics engine ODE 12 and adds some ODE related utility procedures This module is still work in progress It
81. onverter from a Tk photo image into a heightmap It is used in NeHe demo Lesson45 tcl in directory TutorialsAndBooks NeHe Implementation details The functionality of the OpenGL logo animation is implemented in the following files Implementation files tcl3dDemoOglLogo c Header files tcl3dDemoOgILogo h Wrapper files utili The functionality of the RedBook image parser module is implemented in the following files Implementation files _tcl3dDemoReadRedBooklimg c Header files tcl3dDemoReadRedBooklmg h Wrapper files util The functionality of the heightmap module is implemented in the following files Tcl3D User Manual Version 0 5 0 December 2010 Page 49 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl Implementation files heightmap i tcl3dDemoHeightMap tcl Header files None Wrapper files heightmap i 4 4 tcl3dCg Wrapper for NVidia s Cg shading language This module wraps NVidia s Cg 7 library based on version 2 2 0017 and adds some Cg related utility procedures This is an optional module Requirements for this module The Cg library and header files Runtime libraries are included in the Tcl3D distribution The master SWIG file for wrapping the Cg library is tel3dCg i Implementation files tcl3dCgQuery tcl tcl3dCgUtil tcl Header files All files in subdirectory Cg Wrapper files i The wrapping fo
82. pack See chapter 4 3 3 for a description of the starpack related file utilities A typical usage is shown in the following code segment set fontfile file join file dirname info script Vera ttf tcl3dGetExtFile is available only in versions 0 3 1 and up You may check availability of command first if running scripts with older Tcl3D versions if info proc tcl3dGetExtFile eq tcl3dGetExtFile Get the font file in a starpack independent way set fontfile tcl3dGetExtFile fontfile 5 6 OpenGL deprecation mode The next table shows the release history of OpenGL versions with short comments regarding the introduction of new features Version Release date New features OpenGL 1 0 01 1992 First release based on SGI s IRIS GL OpenGL 1 1 01 1997 Textures and texture formats on GPU hardware OpenGL 1 2 03 1998 Volume textures packed pixels normal rescaling image processing OpenGL 1 2 1 10 1998 Multi textures OpenGL 1 3 08 2001 Cubemap texture multi sampling texture unit combine operations OpenGL 1 4 07 2002 Hardware shadowing support fog coordinates automatic mipmap generation Tcl3D User Manual Version 0 5 0 December 2010 Page 59 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 5 Miscellaneous Tcl3D information Tcl3D Doing 3D with Tcl Version Release
83. r sd tcl3dVec3fCopy Copy a 3D vector tcl3dVec3fLength Calculate the length of a 3D vector tcl3dVec3fNormalize Normalise a 3D vector tcl3dVec3 Distance tel3dVec3 DotProduct tel3dvec3fSubtract Table 4 3 tcl3dUtil 3D vector commands Note All above listed 3D vector commands are available for single precision prefix tcl3dVec3f and double precision prefix tc13dVec3a floating point numbers Ee Mae eai f TEE tcl t dMat f i i tcl3dMatfRotate Build a rotation matrix based on angle and axis t dMatf i i ters tfRotateX Build a rotation matrix based on angle around x axis Tcl3D User Manual Version 0 5 0 December 2010 Page 34 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl tel3dMatf Scalev tel3dMatf TransformPoint 13d atl tcl atfTransformVector Transform a 3D vector by a given matrix a SaaS lone Table 4 4 tcl3dUtil Matrix commands Note All above listed 4x4 matrix commands are available for single precision prefix tcl3dMatf and double precision prefix tcl13dMatd floating point numbers Replacement function for glOrtho Replacement function for glFrustum Replacement function for gluPerspective Replacement function for gluLookAt Table 4 5 tcl3dUtil View commands Examples See the test programs matmathtest tcl and
84. r this module is based on the unmodified Cg header files Cg utility module Get the version of the wrapped Cg library E TE t 3dCgResetError Reset the Cg error condition 3dCgFindProfile Find a supported Cg profile by name tcl3dCgFindProfileByNum _ Find a supported Cg profile by it s numerical value tcl3dCgPrintProgramInfo Print the Cg program information onto standard output Table 4 19 tcl3dCg utility commands cl i el tcl3dCgGetError Check if a Cg related error has occured tcl3dCgGetProfileList Get a list of Cg profile names tel indPr el P 7 l See the demo programs contained in directory LibrarySpecificDemos tcl3dCg for examples on how to use the Cg functions 4 5 tcl3dSDL Wrapper for the Simple DirectMedia Library This module wraps the SDL 8 library based on version 1 2 9 and adds some SDL related utility procedures Note e Currently only the functions related to joystick and CD ROM handling have been wrapped and tested This is an optional module Requirements for this module The SDL library and header files Libraries and header files are included in the Tcl3D distribution The master SWIG file for wrapping the Simple DirectMedia library is tel3dSDL i Tcl3D User Manual Version 0 5 0 December 2010 Page 50 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl Implementation files tcl3dSDLQ
85. resentation tcl3d gt Typing pres in the console window starts the Tcl3D presentation showing an introductionary animation as shown in the screenshot below The available key and mouse bindings are shown in the console window Tcl3D User Manual Version 0 5 0 December 2010 Page 7 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 1 Introduction Tcl3D Doing 3D with Tcl is Normal Debug Information Tcl3D packages OpenGL information OpenGL extensions AS HrQuGght ta you Wy eee Paul Obermerer Installation I Install Tcl packages d Install TcI3D demos Install external libraries Figure 1 3 Tcl3D presentation intro Binding Action o y O Start animation Stop animation Table 1 3 Tcl3D presentation shortcuts The presentation can also be started directly by using pres as a command line parameter to the Tcl3D starpack Description of the Tcl3D starpack The starpack tcl3dsh can be used as a standalone executable like wish with builtin Tcl3D atest and presentation program for Tcl3D an installer for the Tcl3D specific libraries the external libraries and demo programs The Tcl3D presentation is divided into 3 sections Tcl3D User Manual Version 0 5 0 December 2010 Page 8 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 1 Introduction Tcl3D Doing 3D with Tcl Information and installation
86. rsion 1 3 2 tcl3dCg now uses Cg version 1 5 0015 The 1 4 versions of Cg did not work with OS X on Intel platforms Version 0 3 1 2006 06 19 Starpack support for Tcl3D Starpack version of Tcl3D including demos and external libraries First shown at TclEurope 2006 New optional module tcl3dG1l2ps wrapping the OpenGL To Postscript library Thanks to Ian Gay for idea and first implementation New optional module tcl3d0de wrapping the Open Dynamics Engine Very alpha preview Windows only More NeHe tutorials added Lessons 19 21 Version 0 3 2006 02 12 MacOS X and enhanced font support Support for Mac OS X added Thanks to Daniel A Steffen for supplying patches and binaries New optional module tcl3dFTGL wrapping the OpenGL font rendering library FTGL based on freetype fonts Corrected and enhanced font handling under Windows in the tcl3dTogl widget No more private Tcl header files needed Added new font related demo programs tcl3dFont tcl tcl3dToglFonts tcl ftglTest tcl ftglDemo tcl Added new SDL demo related to CD ROM handling cdplayer tcl Added some of NeHe s OpenGL tutorials If an optional library is not installed no error message is created New procedures to check existence of optional modules tcl3dHaveCg tcl3dHaveSDL tcl3dHaveFTGL Get information on Tcl3D subpackages with tcl3dGetPackageInfo and tcl3dShowPackagelInfo Information program tcl3dInfo tcl enhanced to support
87. s interface may change in the future A detailed description of this module can be found in chapter 4 8 tcl3dOsg Wrapper for the OpenSceneGraph library This module wraps the OpenSceneGraph library OSG 13 and adds some OSG related utility procedures A detailed description of this module can be found in chapter 4 9 tcl3dGauges Tcl3D package for displaying gauges This package implements the following gauges as a pure Tcl package airspeed altimeter compass tilt meter Tcl3D User Manual Version 0 5 0 December 2010 Page 5 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 1 Introduction Tcl3D Doing 3D with Tcl A detailed description of this module can be found in chapter 4 10 1 3 Library versions The following table shows a list of the library versions used in the Tcl3D infrastructure Lib Version Comment URL GLEW 1 5 7 Included in Tcl3D source tree http glew sourceforge net Togl 2 0 Modified version included in http sourceforge net projects tog Tcl3D source tree s used fo 1 Cg 2 2 0017 February 2010 release http developer nvidia com object cg_toolkit html FTGL 2 1 3 Release Candiate 5 http sourceforge net projects ftgl GL2PS 1 3 5 Included in Tcl3D source tree http Awww geuz org gl2ps ODE 0 7 0 http sourceforge net projects opende OSG 2 8 2 http Awww openscenegraph org SDL 1 2 9 http www libsdl org index php
88. s module is based on the unmodified FTGL header files FTGL utility module Tcl3D command Description 13dFTGLGetVersion Get the version of the wrapped FTGL library 13dFTGLGetBBox Get bounding box of a string Table 4 21 tcl3dFTGL utility commands Tcl3D User Manual Version 0 5 0 December 2010 Page 51 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl See the demo programs contained in directory LibrarySpecificDemos tcI3dFTGL for examples on how to use the FTGL functions 4 7 tcl3dGl2ps Wrapper for the OpenGL To Postscript Library This module wraps Christophe Geuzaine s GL2PS 11 library based on version 1 3 5 and adds some GL2PS related utility procedures Note GI2PS currently does not support textures This is an optional module Requirements for this module None all files are contained in the Tcl3D distribution The master SWIG file for wrapping the Gl2ps library is tel3dGl2ps i Implementation files g 2ps c tcl3dGI2psQuery tcl tcl3dG 2psutil tcl Header files gl2ps h Wrapper files gl2ps i The wrapping for this module is based on the unmodified GL2PS implementation and header files Gl2ps utility module Tcl3D command Description 13dGl2psGetVersion Get the version of the wrapped GL2PS library 13dG12psCreatePdf Create a PDF file from current Togl window content Table 4 22 tcl3dGl2ps utili
89. s osg attachment LGPL style wiki Legal LICENSE txt SDL LGPL http www libsdl org license Igpl php Table 5 1 License information of wrapped libraries Tcl3D User Manual Version 0 5 0 December 2010 Page 55 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 5 Miscellaneous TcI3D information Tcl3D Doing 3D with Tcl 5 2 Programming hints Hint 1 Most OpenGL examples written in C use the immediate mode As Tcl is a scripted language and each OpenGL call has to go through the wrapper interface it s almost always a bad idea in terms of speed to translate these examples one by one Using display lists or vertex arrays does not add much complexity to your Tcl3D program but enhances performance significantly Try the Spheres tcl or ogi_benchmark_sphere tcl demo for an example how display lists or vertex arrays can speed up your Tcl3D application Also note that immediate mode and display lists are marked deprecated in OpenGL 3 1 Hint 2 Do not use global variables GL VERSION X Y ex info exists GL VERSION 1 3 to check the OpenGL version supported on your computer This does not work because these variables are all defined independently of the underlying OpenGL implementation Use the utility functions tcl3dHaveVersion and tcl3dHaveExtension instead Hint 3 Error expected integer but got GL REPEAT Some OpenGL functions expect an integ
90. sed on version 2 8 2 and adds some OSG related utility procedures Note This is the first release of the OpenSceneGraph wrapper It is far from being finished or error free and work in progress It s interface may change in the future Check out the Tcl3D homepage for more up to date information This is an optional module Requirements for this module The OSG library and header files Libraries and header files are included in the Tcl3D distribution Implementation files tcl3dOsg tcl Header files All files in subdirectory include Wrapper files osg i tcl3dOsg i The wrapping for this module is based on the unmodified OSG header files OSG utility module Get the version of the wrapped OSG library Convert a keysym into decimal and vice versa Get the bitmap image of a node type tcl3d0OsgVecPrint Print the contents of an osg Vec class tcl3d0sgMatPrint Print the contents of an osg Matrix class tcl3dOsgSendButtonPress Procedures to transfer the corresponding Tk event to the tcl3d0sgSendButtonRelease OSG event queue osgGA EventQueue tcl3d0sgSendMouseMotion 13d0sgSendKeyPress 13d0sgSendKeyReleas tcl3d0sgSendWindowResize 3d0sgAddTrackballBindings Add OS independent mouse bindings for trackball usage Tcl3D User Manual Version 0 5 0 December 2010 Page 53 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with
91. sesseseeeeesseseeeesseseeesseeess 55 Sage cig hee normato iscus SR Tent rene cnerTE entre non NCE nT arene ae Renney 55 9 2 Programimiing PMS a ei i et lca lan aisle ce tno ck 56 ERRET IE I CI EE ahs ces a aha E ET AA LA E R E anata A E AE E 57 55 OG ACK NATOMAS acisini aatar aaa Ri 58 SG CTE aL depreci MODE dsa 59 6 DEMO APPLICATIONS ne ee ee aaa aaa eee 63 T RELEASE NOTES iccrisninasisceianctsanesarsataranssnnsaresdnisadnenssinians avendtabsaiaresabosiatasned deinesueesesedbanneannioal 64 ce a a a a A ea 64 CA eer Eo eae al 2 e eae ee tee oe ee eee me ee nee nee tre eee ee eee een nee ee era eee ee eee 66 Ta CODON TS TUNING iaieiiea a a aa 71 S REFERENCE S iiaiai iil i iii ok ik ehh A ie aio iii ei i 73 Tcl3D User Manual Version 0 5 0 December 2010 Page 1 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 1 Introduction Tcl3D Doing 3D with Tcl 1 Introduction TcI3D enables the 3D functionality of OpenGL and various other portable 3D libraries at the Tcl scripting level It s main design requirement is to wrap existing 3D libraries without modification of their header files and with minimal manual code writing The Tcl API shall be a direct wrapping of the C C based library APs with a natural mapping of C types to according Tcl types This is accomplished mostly with the help of SWIG 24 the Simplified Wrapper and Interface Generator Tcl3D is based on ideas of Roger E Critchlow
92. supported for the C modules only The C modules te 3dFTGL and tcl3dOsg can not be used with the supplied binaries of the libraries e Visual Studio NET 2003 corresponds to compiler version 7 1 e Visual Studio 2005 corresponds to compiler version 8 0 e Visual Studio 2008 corresponds to compiler version 9 0 e Visual Studio 2010 corresponds to compiler version 10 0 To detect if using a DOS console for compilation the existence of environment variable VSINSTALLDIR is checked This variable is also used to detect a NET compiler i e VS2005 VS2008 or VS2010 which need manifests For Unix systems the name after the underscore is derived from the Unix commands uname s and uname m See the file make oscheck for details on the mapping of the command output The following lines in the config_ files may be edited Tcl3D User Manual Version 0 5 0 December 2010 Page 15 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 2 Installation Tcl3D Doing 3D with Tcl WITH DEBUG If you don t want debug information remove ALL characters after the equal sign Set to your preferred installation directory Set to where your Tcl installation is located on disk Set to where your Tk installation is located on disk Set to your installed Tcl minor version Table 2 4 Tcl3D configuration variables Examples Compile with debugging information The Tcl Tk installation is located in usr loca
93. t A detailed description of this sub module can be found in chapter 4 1 OpenGL Wrapper for OpenGL functionality This sub module wraps OpenGL functionality up to OpenGL Version 4 1 the GLU library functions based on Version 1 2 and most of the available OpenGL extensions It is implemented with the help of the GLEW 14 library Standard shapes box sphere cylinder teapot with a GLUT compatible syntax are supplied here too A detailed description of this sub module can be found in chapter 4 2 Util Tcl3D utility library This sub module implements C and Tcl utilities offering basic functionality needed for 3D programs It currently consists of the following components 3D vector and transformation matrix component Information component e File utility component Color names component e Large data component tcl3dVector Image utility component Screen capture component e Timing component Random number component 3D model and shapes component e Virtual track and arcball component C based utility functions for some of the demo applications A detailed description of this sub module can be found in chapter 4 3 1 2 2 Tcl3D optional modules The following Tcl3D optional modules are currently available e tcl3dCg e tcl3dSDL e tcl3dFTGL e tcl3dGl2ps Tcl3D User Manual Version 0 5 0 December 2010 Page 4 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 1 Introducti
94. t GLfloat etc It is not used for type void or GLvoid The notation STRUCT stands for any C struct C parameter type uposTean ipierield const void Output parameter Type void Numerical value STRUCT SWIG encoded pointer to struct Table 3 11 Tcl3D wrapping reference Tcl3D User Manual Version 0 5 0 December 2010 Page 25 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl 4 Modules in detail This chapter explains in detail the different modules Tcl3D is currently built upon Tcl3D core module Togl Enhanced Togl widget OpenGL Wrapper for OpenGL functionality Util Tcl3D utility library Tcl3D optional modules tcl3dCg Wrapper for NVidia s Cg shading language e tcl3dSDL Wrapper for the Simple DirectMedia Library e tcl3dFTGL Wrapper for the OpenGL Font Rendering Library e tcl3dGl2ps Wrapper for the OpenGL To Postscript Library tcl3dOde Wrapper for the Open Dynamics Engine tcl3dOsg Wrapper for the OpenSceneGraph library tcl3dGauges Tcl3D package for displaying gauges 4 1 tcl3dOgl gt Togl Enhanced Togl widget Togl 6 is a Tk widget with support to display graphics in an OpenGL context The original version only supported issuing drawing commands in C To be usable from the Tcl level it has been extended with configuration options for specifying Tcl callback comma
95. t so that demos always run with maximum framerate instead of being fixed to the display s refresh rate Removed now obsolete swapinterval 0 statements in several demos Demo tcl3dInfo tcl updated to display OpenGL version information function signature and availability of all wrapped OpenGL functions User and reference manuals updated Bug fixes GLEW has wrong glPointParameterfv functions signatures float instead of const float according to OpenGL standard Changed in glew h file tcl3dVecMath c had incorrect tcl3dMatfRotate function Thanks to Stefan Augustiniack for patch Removed features Removed obsolete versions 0 1 and 0 2 from Tcl3D homepage Removed compatibility function for version 0 1 CAUTION Possibly incompatible change Removed wrapping of Windows specific OpenGL functions wgl Operating system specific functions should only be used in the Togl code New demos 4 new demos added since release 0 3 3 These have been previously released as Tcl3D Demo of the month Build environment Windows XP SP3 VS Express 2005 SP1 SuSE Linux 10 2 32 bit 2 6 18 gcc 4 1 2 SuSE Linux 10 2 64 bit 2 6 18 gcc 4 1 2 Mac OSX 10 4 11 rogee 4 0a1 SGI IRIX 6 5 22 gcc 3 4 6 Nekoware Version 0 3 3 2008 09 14 Bug fix and maintenance release Enhancements Added 64 bit Linux to th
96. t html glewdefs i glewfunes i tcl3dOglHelp tcl Figure 4 1 Build dependencies of the tcl3dOgl module The following Tcl3D specific commands are implemented in this module Tcl3D command Description tcl3doglHaveFunc Check availability of an OpenGL function in the OpenGL driver tcl3doglHaveExtension Check if a given OpenGL extension is provided by the OpenGL implementation Check if a specific OpenGL version is available 1GetVersions Query the OpenGL library with the keys GL_VENDOR GL_RENDERER GL_VERSION GLU_VERSION and return the results as a list of key value pairs tcl3do0glGetExtensions Query the OpenGL library with the keys GL_ EXTENSIONS ONS and return the results as a list of tcl3d0glGetStates Query all state variables of the OpenGL library and return the results as a list of sub lists Each sublist contains a Tcl3D User Manual Version 0 5 0 December 2010 Page 30 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl LL flag indicating the sucess of the query the querying command used the key and the value s Deprecated Get OpenGL integer state variable Get OpenGL float state variable Get OpenGL double state variable Get maximum t
97. ter 5 4 for known bugs with other SWIG versions Download and unzip the following distribution packages suitable for your operating system tcl3d srce 0 5 0 zip tcl3d 0S 0 5 0 zip e tcl3d demos 0 5 0 zip tcl3d starpack 0 5 0 zip Example installation procedures Version 1 Tcl3D Basic OpenGL support no external libraries Needed tcl3d srce 0 5 0 zip Recommended tcl3d demos 0 5 0 zip Unzip tcl3d src 0 5 0 zip in a folder of your choice This creates a new folder tcl3d containing the sources Unzip tcl3d demos 0 5 0 zip into the new folder tcl3d You should end up with a directory and file structure as shown in the next figure Tcl3D User Manual Version 0 5 0 December 2010 Page 13 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 2 Installation Tcl3D Doing 3D with Tcl a B E config_cygwin demos E config_Darwin O swiafiles E config_IRIX64 H O tcl3dcg E config_Linux tcl3dFTGL E config_Linux64 O tcl3dGauges E config_mingw 5 tcl3dGl2ps 3 config_win32 O tel3dode E make macros O tcl3doql E make oscheck 4 O tcl3dOsq E make wrap tcl3dSDL E Makefile Ej pkgIndex tcl E Readme txt E Tel3D_Announce txt E Tcl3D_License txt Figure 2 1 Tcl3D Basic directory structure If only basic OGL support is needed disable the optional modules by commenting all WRAP _ macro lines in file make wrap The presentation framework presentatio
98. tility commands Examples See the test program colorNames tcl for examples on how to use these procedures tcl3dName2Hex white returns FFFFFF tcl3dName2Hexa white returns FFFFFFFE tcl3dName2rgb white returns 255 255 255 tcl3dRgb2Name 255 255 255 returns FFFFFE tcl3dName2rgba white returns 255 255 255 255 tcl3dRgba2Name 255 255 255 255 returns FFFFFFFE tcl3dName2rgbf white returns 1 0 1 0 1 0 tcl3dRgbf2Name 1 0 1 0 1 0 returns FFFFFF tcl3dName2rgbaf white returns 1 0 1 0 1 0 1 0 tcl3dRgbaf2Name 1 0 1 0 1 0 1 0 returns FFFFFFFEF tcl3dName2rgb 0a0c0e returns 10 12 14 Implementation details The functionality of this module is implemented in the following files Implementation files tcl3dUtilColors tcl Header files None Wrapper files None 4 3 5 Large data module This module provides miscellaneous functions for handling large data like textures and vertex arrays Overview Tcl3D User Manual Version 0 5 0 December 2010 Page 38 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl The following table lists the available functions of this module For a detailed description of the functions see the Tcl3D Reference Manual 5 or the source code files as listed in section Implementation details at the end of this chapter Tcl3D command Description tcl Create a new
99. ty commands See NeHe demo Lesson02 tcl or the benchmarking demo sphere tcl in directory LibrarySpecificDemos tcl3dOg I for an example on how to use the GL2PS functions for PDF export 4 8 tcl3dOde Wrapper for the Open Dynamics Engine This module wraps the ODE 12 library based on version 0 7 and adds some ODE related utility procedures Note e This module is still work in progress It s interface may change in the future This is an optional module Requirements for this module The ODE library and header files Libraries and header files are included in the Tcl3D distribution The master SWIG file for wrapping the Open Dynamics Engine library is tel3dOde i Implementation files tcl3dOdeQuery tcl tcl3dOdeUtil tcl Header files All files in subdirectory ode Wrapper files ode i The wrapping for this module is based on the unmodified ODE header files Tcl3D User Manual Version 0 5 0 December 2010 Page 52 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl ODE utility module Tcl3D command Description Get the version of the wrapped ODE library Table 4 23 tcl3dOde utility commands See the demo programs contained in directory LibrarySpecificDemos tcl3Ode for examples on how to use the ODE functions 4 9 tcl3dOsg Wrapper for the OpenSceneGraph library This module wraps the OpenSceneGraph 13 library ba
100. uery tcl tcl3dSDLUtil tcl Header files All files in subdirectory include Wrapper files sdl i The wrapping for this module is based on the unmodified SDL header files SDL utility module Tcl3D command Description Get the version of the wrapped SDL library Convert a SDL focus state bitfield into a string representation Convert a SDL button state bitfield into a string representation representation Peres ee lee SDL event related enumerations into a string representation tcl3dSDLFrames2MSF Convert CD frames into minutes seconds frames representation representation Table 4 20 tcl3dSDL utility commands See the demo programs contained in directory LibrarySpecificDemos tcI3dSDL for examples on how to use the SDL functions 4 6 tcl3dFTGL Wrapper for the OpenGL Font Rendering Library This module wraps the FTGL 9 library based on version 2 1 3 RC5 and adds some FTGL related utility procedures The FTGL library depends on the Freetype2 library 10 This is an optional module Requirements for this module The FTGL and Freetype2 library and header files Libraries and header files are included in the Tcl3D distribution The master SWIG file for wrapping the OpenGL Font Rendering library is tel3dFTGL i Implementation files tcl3dFTGLQuery tcl tcl3dFTGLUtil tcl Header files All files in subdirectory include Wrapper files ftgl i The wrapping for thi
101. vecmathtest tcl for examples on how to use these procedures Also take a look at the demo program og _fps_controls tcl for a real world example Implementation details The functionality of this module is implemented in the following files Implementation files tcl3dVecMath c tcl3dViewMath c tcl3dVecMath tcl Header files tcl3dVecMath h tcl3dViewMath h Wrapper files util i 4 3 2 Information module This module provides convenience functions for querying Tcl3D package related information Overview The following table lists the available functions of this module For a detailed description of the functions see the Tcl3D Reference Manual 5 or the source code files as listed in section Implementation details at the end of this chapter Tcl3D User Manual Version 0 5 0 December 2010 Page 35 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl Tcl3D command Description 13dHavePackage Check if a Tcl package is available in a given version tcl3dGetLibraryInfo Return the library version corresponding to supplied Tcl3D package name tPackageInfo Return a list of sub lists containing Tcl3D package information Each sub list contains the name of the Tcl3D sub package the availability flag 0 or 1 the sub package version as well as the version of the wrapped library 13dShowPackageInfo Display the version info returned by tcl 3dGetPackagelInfo i
102. void GLdouble_ setitem double ary int index double value ary index value static void GLdouble setrgb double ary int index double r double g double b ary index ary t t index ary t t index r g b ll ll static void GLdouble setrgba double ary int index double r double g double b double a ary index r ary t t index g ary t tindex b ary t tindex a static void GLdouble_setvector double ary double value int startIndex int len int 1 int endIndex startIndex len for i startIndex i lt endIndex i ary i value static void GLdouble_addvector double ary double value int startIndex int len int i int endIndex startIndex len Tcl3D User Manual Version 0 5 0 December 2010 Page 41 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 4 Modules in detail Tcl3D Doing 3D with Tcl for i startIndex i lt endIndex i ary i double value static void GLdouble mulvector double ary double value int startIndex int len int i int endIndex startIndex len for i startIndex i lt endIndex i ary i double value static double GLdouble_ind double ary int incr return ary incr static double GLdouble cast void ary return double ary These low level functions are typically not used directly They
103. want to quit the presentation In most cases you may proceed with other demos but be warned that strange effects may occur Tcl3D User Manual Version 0 5 0 December 2010 Page 9 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 2 Installation Tcl3D Doing 3D with Tcl 2 Installation Precompiled packages for Windows Linux IRIX and Intel based Mac OS X the source code of the Tcl3D package as well as test and demonstration programs can be downloaded from the Tcl3D home page at http www tcl3d org The precompiled packages have been generated on the following operating system compiler combinations Operating system Compiler Tck Tk Swig Windows 7 64 bit VS Express 2008 32 bit 3 5 8 1 3 40 SuSE Linux 11 2 32 bit gcc 4 4 1 8 5 7 143 36 2 6 31 SuSE Linux 11 2 64 bit gcc 4 4 1 Bi Deel Lz 33330 2 6 31 Mac OSX 10 5 0 gcc 4 2 1 32 bit 8 5 8 1 3 40 SnowLeopard SGI IRIX 6 5 22 gcc 3 4 6 Nekoware Please report problems or errors to info tcl3d org Use the following script when sending bug reports or questions to supply me with information about your environment catch console show package require tcl3d togl t Print information about the OS parray tcl platform Print information about the Tcl3D modules puts tcl3dGetPackageInfo Prin puts t information about the OpenGL driver tcl3d0glGetVersions If it s a probl
104. who formerly created an OpenGL Tcl binding called Frustum 30 Note Text in this manual with a light blue background color indicate changes since the last release of this manual 1 1 Architecture overview The Tcl3D package currently consists of the following building blocks also called modules throughout the manual Tcl3D core module tcl3dOgl i i j ing OpenGL content OpenGL Wrapper for core OpenGL functionality GL Version 4 1 GLU Version 1 2 and OpenGL extensions Util Tcl3D utility library Math functions standard shapes stop watch demo Tcl3D optional module cl3dCq Wrapper for NVidia s Cg shading language cl3dSDL Wrapper for the Simple DirectMedia Librar cl3dGl2ps Wrapper for the OpenGL To Postscript librar cl3dOde Wrapper for the Open Dynamics Engine cl3dOsg Wrapper for the OpenSceneGraph librar E cl3dGauges Tcl3D package for displaying gauges Table 1 1 Overview of TclI3D modules cl3dFTGL Wrapper for the OpenGL Font Rendering library Each module is implemented as a separate Tcl package and can be loaded explicitely with the Tcl package command ex package require tcl3dsd1 All available Tcl3D modules can be loaded with a single command package require tcl13d Note Package names are all lower case Tcl3D User Manual Version 0 5 0 December 2010 Page 2 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 1 Introduction Tcl3D Doing 3D with Tcl v tcl3d0
105. xt lines show an example of SWIG s pointer encoding set theNurb gluNewNurbsRenderer puts StheNurb _10fa1500 p GLUnurbs The returned name can only be used in functions expecting a pointer to the appropriate struct 3 1 5 Exceptions from the standard rules The GLU library as specified in header file glu h does not provide an API that is using the const specifier as consistent as the GL core library So one class of function parameters TYPE is handled differently with GLU functions Arguments of type TYPE are used both as input and output parameters in the C version In GLU 1 2 most functions use this type as input parameter Only two functions use this type as an output parameter Tcl3D User Manual Version 0 5 0 December 2010 Page 22 of 74 Copyright 2005 2010 by Paul Obermeier All rights reserved 3 Wrapping in detail Tcl3D Doing 3D with Tcl So for GLU functions there is the exception that TyPE is considered an input parameter and therefore is wrapped as a Tcl list Input parameter TYPE GLU onl void gluNurbsCurve GLUnurbs nobj GLint nknots C decl ti GLfloat knot GLint stride eclaration GLfloat ctlarray GLint order GLenum type float rvePt 4 2 0 25 0 5 0 25 0 75 t0757 OTS 1075 Os SKF C float rveKnots 8 0 0 0 0 0 0 0 0 Tempe 1 0 1 0 1 0 1 0 uNurbsCurve theNurb 8 curveKnots 2 amp curvePt 0 0 4 GLU MAP1 TRIM 2 t curvePt 0 25 0 5
106. y directory tcl3dGenExtName Create a name on the file system Use this function if writing to a file from a script which may be running from within a starpack Get a name on the file system Use this function if a file is needed for reading from an external Tcl3D library like font files used by FTGL or shader files and the script may be executed from within a starpack Table 4 7 tcl3dUtil File utility commands Examples See the demo program Lesson02 tcl for an example usage of tcl3dGenExtName and demo ftg Test tcl for an example usage of tcl3dGetExtFile Implementation details The functionality of this module is implemented in the following files Implementation files tcl3dUtilFile tcl Header files None Wrapper files None 4 3 4 Color names module This module provides miscellaneous functions for handling color specifications in Tcl and OpenGL style Overview The following table lists the available functions of this module For a detailed description of the functions see the Tcl3D Reference Manual 5 or the source code files as listed in section Implementation details at the end of this chapter tcl3dGetColorNames Return a list of all supported Tcl color names tcl3dFindColorName Check if supplied color name is a valid Tcl color name representation RRGGBB representation RRGGBBAA tcl3dName2zrgb Convert a Tcl color specification into the corresponding OpenGL representat
Download Pdf Manuals
Related Search
Related Contents
Mini Tracker 506 User Manual 1 - Edilportale Módulo de Rendición de Fondos Manual de Usuario Perfil Sostenedor Zanussi ZX77/3 Owner's Manual 着ぐるみ使用マニュアル HANDLEIDING MODE D`EMPLOI Sanyo S750i User's Manual Nokia 6820 User Guide Samsung GM8TH3005AD0EU energy-saving lamp V7 Carry Case Associate Copyright © All rights reserved.
Failed to retrieve file