Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2006-08-13Bugfix #4878Ton Roosendaal
In UV-Face-select mode, a CTRL+click can activate a new Object but keeps the UV-Face-select mode. This skips the initialization required for this mode, causing a crash, so it better should end the mode. (It used to work in past though...)
2006-08-12Bugreport #4787 mentioned subpixel render issues, especially for smallTon Roosendaal
images (like used for rendering icons). When working during Orange on new render pipeline, I've left this topic alone for a while... subpixel precision testing is very time consuming and needs concentration for a while. :) This commit brings back precision as it was for 2.41. Below a short explanation of the solved issues. - the window matrix for rendering is kept constant during all OSA passes, this to ensure clipping happens for each pass identically. - a subpixel offset is only applied on filling in the z-buffer - this offset is inverse corrected for shadepixel code, only on 2 places Another nasty issue is that for filtered rendering (gauss etc), the tiles (or entire image) is temporally increased 2 pixel in size. This caused a 'dark' (or sky color) edge on the rendering. During Orange that was solved with a hardcoded clipping offset value, which only corrected for larger pictures (like > 500 pixels in size). Now this clipping offset is correctly calculated, based on render size. Last issue: the view border in 3d window was calculated using integers, giving small errors in display too. Now it uses float, so visually the view border is more close to what a render shows.
2006-08-09Bugfix #4843Ton Roosendaal
Added a call to compatible_eul() after applying camera rotation in fly, this ensures you can insert rotation keys nicer.
2006-07-31Siggraph show commit!Ton Roosendaal
- pending commit for OSX intel systems, with intel graphics. These now call an extra swapbuffers after glFlush(). Code is ifdeffed, and doesnt affect other systems. - show-off commit: option to have transparent nodes over the composite result. Only draws Image for active Viewer Node now, and image doesnt translate nor zoom (which isnt bad though). Set in themes the alpha color of "node backdrop" to make nodes transparent.
2006-07-19Bugfix #4724Ton Roosendaal
Actually a bug since dark ages... the code that tries to find the view correction (zoom) factor for grabbing stored result in a global. With multiple 3d windows open, with different views, that could result in wrong correction. Just made the factor a local property in View3D.
2006-07-07doubled the speed of mouse rotation, halved the mousewheel speed and WASDRF ↵Campbell Barton
dont accelerate anymore.
2006-07-03BeBraw noticed that canceling fly mode didnt return to Ortho mode. fixedCampbell Barton
2006-06-29slight change to the way the shift key works in fly mode.Campbell Barton
2006-06-27Dont fly in linked library data.Campbell Barton
Changed Ctrl for upright into 2 toggles, X and Zkeys enable uprighting of the camera for each axis. Uprighting is also simplified.
2006-06-27rolling at different views would change speed because the roll detection ↵Campbell Barton
only realy detects if we're rolling, but not by how much. Just clamped a max roll angle so you dont notice this.
2006-06-26prev commit broke canceling a fly, works again.Campbell Barton
2006-06-26Made fly mode use the camera when in camera view rather then jumping out of ↵Campbell Barton
camera view for the actua flying as it did before.
2006-06-25Made Shift key slow down the flying by a to a 10th to work more like ↵Campbell Barton
blender. alt is now mouselook Simplified traveling on x/y/z axis and use WASDRF with RF for up and down. Added cancel to the header tip Made Esc/RMB go back to the initial view for normal perspective views (previously only worked for Camera view)
2006-06-24This better be the last fix!Campbell Barton
Non camera objects work, you can now fly a cube to place it!
2006-06-24Added strafe (side stepping) with WASD keys - for all those quake junkies!Campbell Barton
2006-06-24Draw.c fixed error in exception I added with string max length.Campbell Barton
Window.py added note about the view offset being flipped. editview.c Fly mode timed redraws so motion is the same speed erespective of scene complexity.
2006-06-21Fixed error in fly mode mouse scaling,Campbell Barton
Commented almost all variables in fly() to say what they do Added BIF_view3d_previewrender_signal so preview is redone after flying- its not working at the moment but it shiould :/ Made the 3d view use the cameras near/far clipping while flying.
2006-06-21Bugfix #4392Ton Roosendaal
Lasso select didn't check for clipped away coordinates, causing wrong selections in some cases (reported for edit mode Armature).
2006-06-20Fixed fly mode so moving from camera mode to prespective dosent move the view.Campbell Barton
Applied the same fix when panning from camera view.
2006-06-09fixed the logic for some of the ifs and remove a unused varCampbell Barton
2006-06-09Fixed a bug when holding down shift before there was any motion.Campbell Barton
Doubled the speed of rotation
2006-06-08Replaced old fly mode for a fly mode that works in all 3 view types - ortho, ↵Campbell Barton
perspective and camera (cheating, but its still usefull) This one uses the 3d perspective view rather then the camera, and is nicer and easier to control then the old fly mode. it also gives some help in the header. Shift+F to try it.
2006-04-18small change to deselectall, just made it so that pressing Akey didnt do ↵Campbell Barton
anything if there wasnt anything to sel/desel. notice that if you pressed Akey when no objects in the view it still pushed an undo event, redrew and counted all and change the memory usage in the status. mainly added not to waist undo slots.
2005-12-28Christmas coding work!Ton Roosendaal
********* Node editor work: - To enable Nodes for Materials, you have to set the "Use Nodes" button, in the new Material buttons "Nodes" Panel or in header of the Node editor. Doing this will disable Material-Layers. - Nodes now execute materials ("shaders"), but still only using the previewrender code. - Nodes have (optional) previews for rendered images. - Node headers allow to hide buttons and/or preview image - Nodes can be dragged larger/smaller (right-bottom corner) - Nodes can be hidden (minimized) with hotkey H - CTRL+click on an Input Socket gives a popup with default values. - Changing Material/Texture or Mix node will adjust Node title. - Click-drag outside of a Node changes cursor to "Knife' and allows to draw a rect where to cut Links. - Added new node types RGBtoBW, Texture, In/Output, ColorRamp - Material Nodes have options to ouput diffuse or specular, or to use a negative normal. The input socket 'Normal' will force the material to use that normal, otherwise it uses the normal from the Material that has the node tree. - When drawing a link between two not-matching sockets, Blender inserts a converting node (now only for value/rgb combos) - When drawing a link to an input socket that's already in use, the old link will either disappear or flip to another unused socket. - A click on a Material Node will activate it, and show all its settings in the Material Buttons. Active Material Nodes draw the material icon in red. - A click on any node will show its options in the Node Panel in the Material buttons. - Multiple Output Nodes can be used, to sample contents of a tree, but only one Output is the real one, which is indicated in a different color and red material icon. - Added ThemeColors for node types - ALT+C will convert existing Material-Layers to Node... this currently only adds the material/mix nodes and connects them. Dunno if this is worth a lot of coding work to make perfect? - Press C to call another "Solve order", which will show all possible cyclic conflicts (if there are). - Technical: nodes now use "Type" structs which define the structure of nodes and in/output sockets. The Type structs store all fixed info, callbacks, and allow to reconstruct saved Nodes to match what is required by Blender. - Defining (new) nodes now is as simple as filling in a fixed Type struct, plus code some callbacks. A doc will be made! - Node preview images are by default float ********* Icon drawing: - Cleanup of how old icons were implemented in new system, making them 16x16 too, correctly centered *and* scaled. - Made drawing Icons use float coordinates - Moved BIF_calcpreview_image() into interface_icons.c, renamed it icon_from_image(). Removed a lot of unneeded Imbuf magic here! :) - Skipped scaling and imbuf copying when icons are OK size ********* Preview render: - Huge cleanup of code.... - renaming BIF_xxx calls that only were used internally - BIF_previewrender() now accepts an argument for rendering method, so it supports icons, buttonwindow previewrender and node editor - Only a single BIF_preview_changed() call now exists, supporting all signals as needed for buttos and node editor ********* More stuff: - glutil.c, glaDrawPixelsSafe() and glaDrawPixelsTex() now accept format argument for GL_FLOAT rects - Made the ColorBand become a built-in button for interface.c Was a load of cleanup work in buttons_shading.c... - removed a load of unneeded glBlendFunc() calls - Fixed bug in calculating text length for buttons (ancient!)
2005-12-17Orange: New option "Shadow Bias", to extend the boundary between shadow orTon Roosendaal
no shadow a little bit. Uses same threshold function as the "Bias" button. (That latter still works, and will use an automatic bias value based on the geometry, to prevent terminator errors in raytracing). Anyhoo, with this manual bias you can get rid of terminator problems for weird diffuse shaders now as well (like tangent or fresnel). Committed a few more files than needed, that's just code cleanup.
2005-12-06Orange branch: Revived hidden treasure, the Groups!Ton Roosendaal
Previous experiment (in 2000) didn't satisfy, it had even some primitive NLA option in groups... so, cleaned up the old code (removed most) and integrated it back in a more useful way. Usage: - CTRL+G gives menu to add group, add to existing group, or remove from groups. - In Object buttons, a new (should become first) Panel was added, showing not only Object "ID button" and Parent, but also the Groups the Object Belongs to. These buttons also allow rename, assigning or removing. - To indicate Objects are grouped, they're drawn in a (not theme yet, so temporal?) green wire color. - Use ALT+SHIFT mouse-select to (de)select an entire group But, the real power of groups is in the following features: -> Particle Force field and Guide control In the "Particle Motion" Panel, you can indicate a Group name, this then limits force fields or guides to members of that Group. (Note that layers still work on top of that... not sure about that). -> Light Groups In the Material "Shaders" Panel, you can indicate a Group name to limit lighting for the Material to lamps in this group. The Lights in a Group do need to be 'visible' for the Scene to be rendered (as usual). -> Group Duplicator In the Object "Anim" Panel, you can set any Object (use Empty!) to duplicate an entire Group. It will make copies of all Objects in that Group. Also works for animated Objects, but it will copy the current positions or deforms. Control over 'local timing' (so we can do Massive anims!) will be added later. (Note; this commit won't render Group duplicators yet, a fix in bf-blender will enable that, next commit will sync) -> Library Appending In the SHIFT-F1 or SHIFT+F4 browsers, you can also find the Groups listed. By appending or linking the Group itself, and use the Group Duplicator, you now can animate and position linked Objects. The nice thing is that the local saved file itself will only store the Group name that was linked, so on a next file read, the Group Objects will be re-read as stored (changed) in the Library file. (Note; current implementation also "gives a base" to linked Group Objects, to show them as Objects in the current Scene. Need that now for testing purposes, but probably will be removed later). -> Outliner Outliner now shows Groups as optio too, nice to organize your data a bit too! In General, Groups have a very good potential... for example, it could become default for MetaBall Objects too (jiri, I can help you later on how this works). All current 'layer relationships' in Blender should be dropped in time, I guess...
2005-11-17Special Orange request; support for SoftBody Goal weights for Lattices.Ton Roosendaal
Animating detailed clothes with softbody becomes messy, so now we'll try it this way. :) It simply uses the W (weight) value, as already available in each Lattice Point. Only had to make it editable; - NKey panel - or press W in editmode Further there's a minimalistic W button in the softbody Panel!
2005-10-28Here's another milestone: Shape Keys now can be inserted in Actions and NLATon Roosendaal
It works like for moving Object Ipos to the Action, press the Action icon in the header of the IpoWindow, to the left of the mode selection menu. It then creates an Action (if not existed) and moves the Shape Ipo to the Action, using custom channel "Shape". Main code change was that evaluating Ipo Curves for Relative Shapes had to be recoded, but that's pretty minor and even much cleaner. (added "curval" in the KeyBlock struct). That this feature can work is thanks to the full modifier/derivedmesh recode Daniel did, can't give him enough credits! :) Also; small fixes in Outliner, for clicking on the Ipo icon (sets the Ipo window to show that Ipo).
2005-10-22Long on the wishlist!Ton Roosendaal
- CTRL+click in EditMesh now extrudes selection. If no selection, it adds a new vertex. Try it on a full selected monkey. Fun! :) - CTRL+click now also adds the new stuff aligned with the view, as if you had translated it to the mouse cursor. Only new vertices are added with respect to 3D cursor location.
2005-10-10Stage two of the giant animation recode project; Ipo/Action/NLA cleanupTon Roosendaal
-> Note; added 2 new c files (split editipo.c). MSVC needs upgrade. Impatient people can check the goodies in CMS: http://www.blender3d.org/cms/Action_and_NLA_editor.706.0.html Most work was on trying to unwind the spaghetti for editing ipos. Too much history and bad design got added here. Most evident changes: - made generic 'context' for detecting which Ipo is being edited, or to assign ipos or to retrieve ipo curves. - made generic insertkey() for all ipo types, including actions - shuffled a lot of code around to make things more logical. Also made sure local functions are not exported It is far from ready... when action/nla was added in Blender, a lot of duplicate code was generated. That's for another time. Now the goodies; - made Actions to allow any Ipo type - made NLA to define active actions, for Action window too - corrected timing for active action, so it shows the 'real time', as defined in NLA editor. I did update python code, but that would require testing. Testing is needed for this commit in general, too many changes happened on all levels of the animation system. :) Will keep track of all reports this evening, hopefully it doesnt break the pre-release schedule!
2005-10-05* Added a Select -> Inverse for object mode, availableMatt Ebb
in the 3d view header and toolbox.
2005-10-04Posemode, ALT+R,G,S didn't work always, this because SHIFT+mouse selectingTon Roosendaal
accidentally could unselect the object itself. It can be that older saved files still show this issue, then just select another object, and select the armature again. :)
2005-10-03Bugfix #3046Ton Roosendaal
When using 3d window "unlocked" (own layer and own camera possible), the dependency updates didn't work, these were only using Scene layers. Changed the dependency graph call DAG_scene_flush_update() to accept an argument for all visible layers in a Screen.
2005-09-20Made EditMode armature border-selecting smarter.Ton Roosendaal
Rule now is: - If there's points in the border, only the points get selected (and an entire Bone when both points are in border) - If no points in the border, the tip gets selected for connected Bones, the entire Bone gets selected for non-connected Bones. OK OOPz, check this! :)
2005-08-23Bretch's patch for 2D transform. ThanksMartin Poirier
Using new transform code to handle UV window. With the ground work done, Transform could more easily be extended to handle IPO window now. Tracker item: http://projects.blender.org/tracker/?func=detail&atid=127&aid=2946&group_id=9
2005-08-22Three little feats;Ton Roosendaal
- Vpaint and Wpaint now use our own custom cursor, this was a very old plan anyway. It uses the 'knife' now, we need a good brush icon for it! - On scaling bones in editmode, the deform distance info gets scaled now too when no "Envelope" draw mode was set. - Disabled front buffer drawing of objects with CTRL+select in Edit Mode. Uses a regular redraw now (like for select in Object Mode btw)
2005-08-21Fix for setting in perspective view mode the ALT+B clipping planes.Ton Roosendaal
Fun: do exact camera viewborder to see camera volume!
2005-08-20New feature; User definable Clipping Planes.Ton Roosendaal
Press ALT+B in 3d window, draw a rect, and it becomes a clipping volume of 4 planes. You then can rotate the view anyway you like. Works for each 3d window individually. Disable it with another ALT+B press. Commit is huge because it had to change all selection code as well. The user-clipping planes are in 'eye space', the other clipping happens in projected 'viewport space'. Nice to notice is that the 'x=3200' convention (to denote a coordinate is clipped) now is a define. Define value is still a number though... but we now can get up to screens of 12000 pixels without issues! Known issue; here it refuses to draw the 'object centers' or Lamp icons within the clipping region. Can't find any reason for it... however, we might move to non-pixmaps for it anyway. Testing might reveil numerous issues, will be standby for it. Curious? Check this http://www.blender.org/bf/rt4.jpg
2005-08-20 - convert all DerivedMesh map functions to use index basedDaniel Dunbar
mapping (instead of Edit{Vert,Edge,Face} pointers) - dropped convertToDispListMeshMapped (whew, glad of it too) - added DerivedMesh drawMappedFaces function - dropped EM suffix for DerivedMesh functions, it was neither particularly correct nor descriptive - converted test_index_mface to test_index_face that also corrects MCol and TFace. Good thing we had three versions of this routine, you never know when one might burn down. - removed flipnorm_mesh, not used anymore (and was incorrect to boot) - Getting face select to work with modifiers turned out to be much more complicated than expected. Reworked mapping architecture for modifiers - basically elements in a DispListMesh are now required to be stored in an order that corresponds exactly to original ordering. MVert/MEdge/MFace all have a new flag ME_XXX_STEPINDEX that is set on each element that is set on the first derived element of each original element. I can't say the code to follow these requirements for subsurf is particularly transparent, but on the upside it is a reasonably consistent and simple system that is memory efficient and allows keeping the DispListMesh structure. - rewrote mirror modifier to be simpler/conform to new requirements for mapped DispListMesh structure. This also means that mirror interacts much better with incremental subsurf calculation (it used to recalc one entire side on any topology change, now it generally avoids that). - added EM_{init,free}_index_arrays and EM_get_{vert,edge,face}_for_index functions to handle mapping indices back into appropriate EditMesh structures. - bug fix, make edges didn't recalc object data - bug fix, initial image assignment to TFace's didn't recalc object data - new feature, added circle select support for FACESELECT - bug fix, creating new faces in editmode duplicated the TFACE active flag - but there should only be one active tface - bug fix, possible crash when deleting all faces in faceselect mode on mesh with tfaces... Still todo: TFace edge drawing is still not always correct in face mode, in particular with a mirror modifier when mesh has edges (and no preceeding subsurf). Have not yet decided how to deal with this. Best solution is probably to do switch to meshes all having MEdge's, in which case I can get rid of TFace edge flags (and need to recalc modifiers on tface selection change).
2005-08-16New! When weight-painting a Mesh, and select a Bone, you can use transformTon Roosendaal
options on the Bone (G, R, S). The manipulator doesn't show btw. Is usful to get immediate feedback on how painted weights behave with Bones. Martin; I had to change the T_POSE behaviour in code a bit... it now stores in TransInfo the actual posed armature being transformed. Maybe, some day, we'll get mixed posechannel/object transform? Not much required at the moment though. :)
2005-08-15A nice character modeling time-saver:Ton Roosendaal
In WeightPaint mode, pose-mode armatures now allow selecting Bones, but without making the Armature object active. Selecting a Bone then results in selecting the associated vertexgroup. :) Little quirk; all armatures with posemode then draw selectable...
2005-08-15 - added view3d_get_object_project_mat function, returns mat to projectDaniel Dunbar
object cos into screenspace without mucking with gl matrices. - added view3d_project_ functions, take arguments instead of using globals - removed View3D.{mx,my,mxo,myo} - switch drawobject foreachScreenVert functions to use new projection functions - switch edge slide to use new projection functions, fixes erratic behavior (project was using wrong mat I believe) - bug fix in edgeslide, nearest edge to start was one-off
2005-08-09Big commit, had to rework lots of selection stuff so that thingsDaniel Dunbar
worked properly with modifiers. Needs more testing I am sure. No, honestly, I wasn't just cleaning for the hell of it, it was *necessary* (I would never do such a thing). Selection should work completely with cage options of modifiers now. - added DerivedMesh foreach functions to iterate over mapped verts/edges/face centers. These replaced some of the drawing functions and are more general anyway. Special edge drawing functions remain for performance reasons. - removed EditFace xs, ys fields - added general functions to iterate over screen coordinates of mesh/curve/lattice objects - removed all calc_*verts* functions that were used for storing screen coordinates in objects. they were recalc'd on the fly for most situations anyway, so now we just always do that. calc_*verts_ext was one of those calls that did dirty things deep down in the callstack (changing curarea and poking at matrices) - rewrote all vertex level selection routines (circle, lasso, bbox) and closest vertex routines (rightmouse select) to use the new system. This cleaned up the selection code a lot and the structure of selection is much easier to see now. This is good for future work on allowing modifiers to completely override the selection system. It also points out some discrepancies in the way selection is handled that might be nice to resolve (mesh vertex selection has fancy stuff to try to help with selecting overlapping, but it only works w/o bbuf select, and curves/lattices don't have at all). - had to remove ton's code to move Manipulator to cage location, this is not reliable (can come up with a different method if requested) - as it happens BezTriple.s and BPoint.s are basically available to be removed, just need to rewrite editipo code that still does background calc of screen coordinates - MVert.{xs,ys} are still around because they are abused in some places for other info (not sure if this is safe actually, since they are short's and the mvert limit went up). And did I mention this commit is comes out to -305 lines? Well it does.
2005-07-27Cleanup & goodies for rigging geeks! :)Ton Roosendaal
- PoseMode: Wkey menu, "Flip Left/Right Names". On selected bones, it flips the L/R tags in names, and calls the proper code to rename everything that's related (constraint targets, bone-childs, etc). - PoseMode: Shift+S snapmenu: snap cursor to selected now works - Outliner: select bones now correctly sets 'active' flag for bones, updating the UI as well. Also made sure you cannot select hidden bones in outliner. - 3DWindow: in PoseMode/EditMode draws name of active Bone too (with user option "Draw active object name" set. - Added the new Armature/PoseMode options in View3D pulldowns. Cleanup: - moved Pose code from editaction.c to poseobject.c - removed BSE_editaction.h and BSE_editaction_types.h, moved contents of it to BIF_editaction.h. One include per C file should be fine. :) I know the src/ structure would require more elaborated includes, but we don't have that now...
2005-07-24- Armature editmode now supports lasso. Please be aware that in editmode,Ton Roosendaal
armatures actually only consists of points, flushing bone selection based on points that are selected. Renamed the "Lines" drawmode for bones to "Sticks". Thanks Basse! :) - Fix; crash in selecting in editmode armature (commit 1 hour ago) - Fix; in editmode, bones didn't transform (same commit) - Fix; in drawmode "Sticks", names could go weird in editmode (commit two days ago)
2005-07-23Killed silly modal PoseMode mode! :)Ton Roosendaal
- PoseMode now is a state Armature Objects can be in. So, while in PoseMode for an Armature, you can just select another Object or Armature. - The old PoseMode options (transform, insert keys etc) are accessible with making the Armature Object 'active' (and have object in PoseMode). - At this moment no multiple Poses can be transformed/edited at the same time. - The old hotkey CTRL+TAB, and view3d header menu, still work to set an Object's PoseMode It was quite a lot recode, so tests & reports are welcome. Oh, as a bonus I added Lasso Select for Bones in PoseMode! It selects using only the line between root and tip of the Bone.
2005-07-16More armature goodies;Ton Roosendaal
The B-Bones! (where the B can be read as 'block' or 'bezier' or 'b-spline') - set option on/off in edit buttons, armature panel - scaling of B-bones only works in editmode, use ALT+S to make bones fatter or thinner. Also works for constrainted transform - In pose mode, you now have a buttons panel with per-bone settings too Here you can find the "segments" button, which allows bones to interpolate between previous/next bones, including roll. - Buttons to control interpolation ("In" and "Out" are disabled, doesn't work satisfying yet NOTE: this doesn't give deform yet! Main purpose for now is to test if this drawing method serves to animate/pose armatures well. Still need to review proper interpolation methods... maybe bezier is too limited.
2005-07-15 - switch em_{vert,solid,wire}offs to be unsignedDaniel Dunbar
- some other twiddles to fix mixed signedness compiler warnings And from the "Dear lazy programmers" file: After you have extern declared a variable 5 or more times at the top a function, you would have actually saved a lot of effort by just putting it in the header where it belonged. Or perhaps you thought by hiding it no one else would notice you were using global variables to pass information around. Tsk tsk.
2005-07-12Cleanup of Armature 3d drawing.Ton Roosendaal
- In Solid drawmode, bones get drawn solid too now. Including Outline- selection color, if that's set. Disable it by setting Object-buttons "drawtype" for the Armature. Color used for solid bones is in Theme editor. - EditMode armature now follows (Mesh edit) theme colors (Vertex, Edge) - PoseMode armature has ThemeColor for selection, and draws three extra colors now; - blue shade for bones with action Ipos - yellow for bones with IK - green for bones with a constraint - "X ray" now only works for PoseMode... needs review, can be done better - "Draw Names" option uses theme color too, also indicates selection. Fixes; - In Armature EditMode, the deformed Mesh goes to rest-position - Border select didn't clear 'active' flag in Bones in PoseMode - Mouse-click select didn't work when a dashed line was close to Bone
2005-07-11Boundbox select object mode optimisation.Martin Poirier
Changed selectprojektie (and renamed to view3d_opengl_select as suggested by Ton) to accept a buffer size, so boundbox can adapt it's buffer size to the number of object in scene. Also, the loop is done more smartly, since glSelect fills the buffer in the same order as the drawing order, so we save lops of looping on unselected object (which used to go through all the buffer before finding that they weren't selected). This scheme could probably be applied to all the other loops using glSelect. (good project for newbie coders)