text:
Windows and Viewports
- Windows
- Viewports
- Cameras
- Backgrounds
- Foregrounds
- Tutorial - Without Simple Scene Manager
- Exercises
Windows and Viewports
This chapter is all about windows and viewports. What a window is should be self explanatory, as of course, OpenSG needs a window which it will render into. Viewports are rectangular areas within the window. Applications can have an arbitrary number of Windows, each of which can have one or more viewports. All applications you have seen so far, had one window with one viewport, which were provided by the simple scene manager, but that is by no means a limitation of the system.
I will also introduce foregrounds and backgrounds, as these are closely related to windows and viewports. Foregrounds can be used to display logos or they can even be used to capture a screenshot amongst other things, whereas backgrounds do exactly what you expect them to do: clear the background in different ways.
As I mentioned above, every application needs a window. We always have created a simple GLUTWindow right at the very beginning of the main function.
#!cpp int main(int argc, char **argv) { osgInit(argc,argv); int winid = setupGLUT(&argc, argv); GLUTWindowPtr gwin= GLUTWindow::create(); gwin->setId(winid); gwin->init(); scene =createScenegraph(); // ....
Of course the GLUT Window is not the only one. Here is a list of all available windows
- GLUTWindow
- QTWindow
- XWindow
- Win32Window
- PassiveWindow
- ClusterWindow
- MultiDisplayWindow
- SortFirstWindow
The first four windows are providing a connection between OpenSG and the windowing system you are using. GLUT and Qt windows actually do have some advantages compared to the others, because both work on many different platforms, where as X Windows are restricted to UNIX boxes and Win32 windows to the Microsoft platform. Additionally GLUT and Qt windows might be a bit easier to use as there are wrapper classes that may help you out. We have used GLUT windows all the way, so you should be familiar with that. For Qt you can have a look at Qt?
So what does a window actually do? First of all, it is responsible for output of the rendered images. It does no handling of input events or similar things. A window keeps its instances of viewports and manages OpenGL context creation and activation/deactivation. It also handles detection of OpenGL extensions.
The PassiveWindow is a bit different from the others. A passive window does not handle an OpenGL context. It's purpose is to fit seamlessly into other OpenGL programs. Passive windows can be used with any window and GUI system that supports OpenGL. See section Tutorial/OpenSG1/QT? for an example using passive windows.
The last three windows, cluster, multi display and sort first windows are used for clustering. These will be discussed in more detail in chapter Clustering.
At the end of this chapter there will be a tutorial where we will set up an application from scratch, without the simple scene manager. This tutorial may explain the usage of windows and viewports better than words can tell.
A Window must at least have one viewport, but can have more. A viewport represents a part of the screen that is being rendered into. One or more viewports can, but don't have to, cover the whole window. Every viewport can only be attached to one window. A typical use of multiple viewports is the perspective/front/left/right view you might know from a modeling package or other applications.
Typical use of four viewports
The size of a viewport is defined by providing values for left, right, top and bottom borders. These can either be between 0 and 1 (inclusively) or greater than 1. The first variant means the size of the viewport is relative to the window size whereas values above 1 specify the size in pixels. You should decide which variant to use depending on whether the viewports should scale together with the window if it is resized or not. Here is an example showing a window with two viewports, one defined relatively and the other absolute.
Resizing window with two different viewports
The yellow viewport is defined relative to the window, whereas the red viewport's values are given absolutly in pixels. When the window is resized the yellow viewports changes it's size too, but the red one doesn't change shape or position at all.
You can also pass a -1 to one or more parameters which means that the most possible space is taken by the viewport. An exception to these sizing rules is the PassiveViewport which simply ignores all given values, as they are taken from the currently active OpenGL context.
In order to use a viewport correctly you not only need to define its size, but some additional things are needed: A node of the scenegraph (usually the root node) where rendering traversal should begin, a camera and a background are needed. Optionally you can provide one or more foreground(s).
As you might guess there are also different types of viewports. The one that came along with the simple scene manager was a standard viewport. Here is a list of all available viewports
- osg::Viewport
- osg::PassiveViewport
- osg::ColorBufferViewport
- osg::StereoBufferViewport
Well, the default Viewport is what you want in most cases. Passive viewports are needed to integrate OpenSG into existing OpenGL programs. The color buffer viewport allows rendering in specific color channels and finally the stereo buffer viewport is used mostly for active stereo applications. Stereo with shutter glasses for example need four buffers which are provided by osg::StereoBufferViewport. Passive stereo can be achieved with default viewports. Again, more on that in Clustering.
A camera is of course needed for every application. The camera defines what is actually being rendered. The same way as you can have multiple viewports, you can also have multiple cameras. However, one camera can be attached to more than one viewport. The most important parameters of a camera are its position and orientation. Cameras in OpenSG behave similar to light sources - their position is defined by the transformation of the beacon they are assigned. In most cases you will have a transformation node right below the root node and use it as a beacon for the camera. However, if you want the user to drive a car, for example, it would make sense to attach the camera to the car geometry, thus every transformation applied to the car geometry will also be applied to the camera as well.
Good news is, that we only need one matrix to describe the position and orientation of the camera, but bad news is that often you are given two points in space, one where the camera is located and one where it is looking at and another vector telling you where "up" is from the camera's point of view. Whenever you want to use these values you would have to calculate the matrix in order to use them with OpenSG. Well, luckily that has been done for you
already: the osg::MatrixLookAt function from OSGMatrixUtility.h does that job!
OpenSG cameras are using the same coordinate system conventions like OpenGL: the camera is looking along the negative z-axis, y points up and x points right.
In addition to position and orientation there are some internal camera parameters which may differ from camera to camera. However, the near- and far clipping planes are needed by every camera.
In OpenGL you have two matrices that are responsible for transforming the world onto the rectangular area which is your screen: GL_MODELVIEW and GL_PROJECTION matrix. OpenSG stores internally three matrices, because the projection matrix is split up into two: one for the real projection and another for a projection transformation. The last one is needed for non-coplanar multi-screen projections like a CAVE. However, we don't need to pay special attention
to that, for now.
Here is a short overview of the different cameras you can use with OpenSG
Perspective Camera
This is the most common camera. Unless you are doing something special you will be fine with this camera. There is only one additional attribute, the vertical field of view defines the opening angle of the camera. The horizontal field of view is automatically adjusted to create a square aspect ratio. If your pixels are not square you can set the pixel aspect ratio in the aspect Field. Like all angles in OpenSG, the value for the fov is given in radians not in degrees!
Here is an example on how to setup a camera
#!cpp PerspectiveCameraPtr camera = PerspectiveCamera::create(); beginEditCP(camera); camera->setBeacon( some_node ); camera->setFov( deg2rad( 60 ) ); camera->setNear( 0.5 ); camera->setFar( 8000 ); endEditCP(camera);
Let us assume that one centimeter equals one unit, then we would have created a camera with an opening angle of 60 degrees, a near clipping plane half a centimeter in front of the camera and the far clipping plane 80 meters away
Clipping Planes and Vertical Field of View
Matrix Camera
Sorry, the matrix camera is not related to the movie trilogy and hence cannot produce that matrix camera effect called 'bullet time'. However if you want to help the development of OpenSG... ;-)
The matrix camera is a very simple one as it keeps the modelview and perspective matrices directly and ignores all other attributes it may have. Under certain circumstances this may be very useful, especially if you are integrating OpenSG into an existing OpenGL program by using a passive window as well as passive viewports. With this camera you are very close to standard OpenGL behaviour.
Camera Decorators
A decorator can be used instead of the original camera object, where the decorator enhances the original in some way. Here is an example: For a stereo application you need two cameras and if you are moving the camera around you normally would have to do things twice. With camera decorators you can use two osg::ShearedStereoCameraDecorator which will point both to the same camera. The decorators will be assigned to the viewports instead of the camera. If you now move the camera both virtual cameras represented by the decorators will move simultanously. And again, more on stereo in chapter Clustering.
A big advantage of decorators in general is, that you can easily change the object which is decorated by some other and maintain the enhancements the decorators provide. In our example you could exchange a perspective camera with a matrix camera and the stereo setup won't be destroyed!
Here is an overview of the decorators currently available
Stereo Decorators
There are actually two different decorators for stereo solutions. Both have some attributes in common. The eye separation defines the distance between the eyes and is provided in model units. You should be very careful with this value, as too small or big values will destroy the stereo effect (and may make people sick...). Finally you need to tell the decorator if it is the left or the right one. This is handled by a simple boolean variable where true indicates the left eye.
OSG::ShearedStereoCameraDecorators are used for typical passive stereo applications, where two beamers are projecting the image and the audience is wearing polarisation glasses. They add one additional attribute, the distance to the zero parallax plane. The zero parallax plane is a plane where the left and right image perfectly overlap, i.e. the parallax is zero. This value should reflect the distance from the user's point of view to the image plane.
The following code creates a decorator for the right eye and a corresponding viewport
#!cpp cameraDecorator = ShearedStereoCameraDecorator::create(); beginEditCP(cameraDecorator); cameraDecorator->setLeftEye(false); cameraDecorator->setEyeSeparation(6); cameraDecorator->setDecoratee(some_camera); cameraDecorator->setZeroParallaxDistance(200); rightViewport = OSG::Viewport::create(); beginEditCP(rightViewport); rightViewport->setCamera ( cameraDecorator ); rightViewport->setBackground( some_background ); rightViewport->setRoot ( root ); rightViewport->setSize ( .5,0,1,1 ); endEditCP(rightViewport); endEditCP(cameraDecorator);
I choose 6 for the eye separation and 200 for the distance to the image plane. This would make sense only, if one unit is equal to one centimeter. You might have to adjust these values according to your units.
OSG::ProjectionStereoCameraDecorators are mainly used for head-tracked stereo applications like a CAVE. I will not discuss this decorator here unless there is a public demand for it. ;-)
Tile Camera Decorator
This kind of decorator is used to scale some rectangular area up to full viewport size. It's mainly use is to divide a large rendering area into some small areas which are displayed on a different screen each. The parameters of the camera can be set up as if you were using one large viewport. This is much easier than placing several cameras side by side to archive the same effect.
In Darmstadt, Germany there is a wall of screens, called HEye Wall, with 6 * 4 screens which is capable of stereo rendering. A 48 + 1 node cluster running OpenSG is driving the HEye Wall. Instead of using 48 cameras it is sufficient to use only one single camera and let the decorators do the rest!
The Heye Wall in Darmstadt, Germany
Well, a background does simply what a background is supposed to do. Any region that was not covered by any object, just rendered, is filled with
a background. Every viewport must have exactly one background, it can not have more. However, it is of course possible to swap backgrounds during runtime.
There are several different backgrounds at your disposal.
Solid Background
OSG::SolidBackground is the most simple and common of all backgrounds, it simply fills the screen with one color. Setting up such a background is very easy. The following example will generate a red background.
#!cpp SolidBackgroundPtr bg = SolidBackground::create(); beginEditCP(bg, SolidBackground::ColorFieldID); bg->setColor(Color3f(1,0,0)); endEditCP(bg, SolidBackground::ColorFieldID);
Gradient Background
OSG::GradientBackground enables you to fill the background with a color gradient. To specify the gradient you can use any number of color keys. Gradients in OpenSG are always vertical. Every color key needs a value between 0 (bottom) and 1 (top). If no color key is given the background will be black, if only one key is given the background will be identical to a solid background with the same color. Regions which are not filled will be drawn in black, too.
Here is a little example that will set up a gradient background, which fades from black to white.
#!cpp GradientBackgroundPtr gb = GradienBackground::create(); beginEditCP(gb); gb->addLine(Color3f(0,0,0),0.0); gb->addLine(Color3f(1,1,1),0.0); endEditCP(gb);
Image Background
You also can use images for the background with osg::ImageBackground. The image can be scaled to fill the whole viewport, else it will be drawn from the lower left corner, leaving unoccupied regions in a user defined color. Please notice that the image is not used like a texture, thus image backgrounds are not as fast to draw than the others. Setting up an image background is also very simple. The following example will create a background with some image, which will not be scaled to fit the viewport and left areas will be drawn black.
#!cpp ImageBackgroundPtr imBkg = ImageBackground::create(); beginEditCP(imBkg, ImageBackground::ColorFieldMask | ImageBackground::ImageFieldMask | ImageBackground::ScaleFieldMask ); imBkg->setColor(Color3f(0,0,0)); imBkg->setImage(some_image); imBkg->setScale(false); endEditCP(imBkg, ImageBackground::ColorFieldMask | ImageBackground::ImageFieldMask | ImageBackground::ScaleFieldMask );
Please notice that the image that need to be passed to setImage() is not just some jpg file or similar. You need to pass an osg::Image object. The tutorial at the end of this chapter will show you how to use an image background.
Passive Background
Well, like the other passive components encountered so far, the osg::PassiveBackground does nothing at all, thus there are no fields to set. It's main purpose is to make it possible to have two or more overlapping viewports to generate combined images.
Sky Background
The most exciting background for virtual reality environments is most likely to be the osg::SkyBackground. Inspired by the VRML background node the OpenSG sky background is actually a sky box. By setting some parameters you can quickly create a ground-sky environment, but even more interesting is to use six specially designed textures, which then can simulate an infinite environment that will move if the user looks around, but always be infinitely far away, so you don't have to worry about moving out of the skybox.
All six images of a skybox stichted together
Foregrounds are painted on top of the rendered image. They can be used to add a logo or a watermark for example, but a foreground can also be used to grab a rendered image into an osg::Image or store it in a file. There can be more than one foreground assigned to a viewport. If that is the case they are evaluted in the same order as they were added.
Image Foreground
The most common foreground is the osg::ImageForeground which is often used to add a logo to a rendered scene. That image can be either RGB or RGBA. The image foreground supports correct alpha blending.
Polygon Foreground
The osg::PolygonForeground draws a single polygon with an optional texture on top of the rendered image. It's main purpose is to achieve the same results as with the default image foreground, but by using a texture rather than an image, which is quite faster to compute as this process is better accelerated by the graphics hardware.
The usage might be a bit strange (at least it seems to me ;-) ) - you need a set of 2D points and an equal number of 3D points to define the polygon and it's position on screen. If values for the 2D points are greater than one, the starting point is the lower left corner and for values smaller then -1 are using the upper right corner as origin. This allows you to define polygons that are independent of the viewport size. The 3D points define the texture coordinates used by the 2D points, which allows you to use 3D textures as a Foreground, or to pass 3 parameters to the Material used to render the polygon.
Grab Foreground
The osg::GrabForeground can be used to grab a rendered image into an osg::Image. The size and position of the image define the area that will be grabbed. If you create the image only and leave it's size to default values (i.e 1D image with 1 pixel) the whole viewport will be grabbed. It might be a bit confusing that there is no such method like grab() or anything else that will actually invoke the grabbing process, but the grab is executed every time the frame is rendered. So if you are implementing something like a screenshot function you should deactivate the foreground after fetching the image to avoid grabbing one image each frame!
The GrabForeground is inactive by default and needs to be activated by setting its boolean "active" flag to true.
The following example shows how you could set up a grab foreground. We are creating an image in RGBA color mode with size 1 to grab the whole viewport.
#!cpp GrabForegroundPtr grab = GrabForeground::create(); beginEditCP(grab); grabImage = Image::create(); beginEditCP(grabImage); grabImage->set(GL_RGBA, 1); endEditCP(grabImage); grab->setImage(grabImage); grab->setActive(true); endEditCP(grab); //mgr is of type osg::SimpleSceneManager //We get a pointer to the foreground multifield from the viewport MFForegroundPtr *foregrounds = mgr->getWindow()->getPort(0)->getMFForegrounds(); //now we simple add it to the foreground multifield foregrounds->push_back(grab);
Whenever a frame is rendered the osg::Image grabImage will store the rendered frame overwriting a possibily previously stored frame.
File Grab Foreground
osg::FileGrabForeground works pretty much the same way grab foreground does. However as the name implies the result is stored in a file rather than in an OpenSG image object. There is a boolean flag to tell the system whether this foreground is active or not, inherited from the GrabForeground. Furthermore you do not need to create an image instance as this is done automatically for you, but you have to provide a filename for the image to be stored. You are not limited storing single files only, it is also possible to store image sequences. The filename is given in a printf style thus naming an image "image%d" will lead to an image sequence as an internal frame counter will replace the variable in the filename with the counter value. If you use %04d instead you will have leading zeros in your filename which might be very useful for other applications that are capable to create a video from an image sequence source.
Simple Statistics Foreground
This foreground is subject to change, so hang on...
Graphic Statistics Foreground
same as simple statistics foreground
Tutorial - Without Simple Scene Manager
As promised, we are going to build an application which will show a torus only. Again? Well, this time we are doing it from bottom up, without the comfortable support of the simple scene manager! Additionally we are going to use nice backgrounds and a logo in the foreground and add a screenshot feature which will grab the rendered image and save it in a file! To make the whole thing complete we are going to use two viewports thus we are having two different viewing angles on our sceen! So here we go:
Here is an overview of what we are going to do.
Application overview
This time we will start with a completely empty file! So open your editor of choice and create a new file and store it in the progs folder like the other tutorial files. First thing we need are a lot of include files:
#!cpp #include <OpenSG/OSGGLUT.h> #include <OpenSG/OSGConfig.h> #include <OpenSG/OSGSimpleGeometry.h> #include <OpenSG/OSGGLUTWindow.h> #include <OpenSG/OSGSolidBackground.h> #include <OpenSG/OSGDirectionalLight.h> #include <OpenSG/OSGPerspectiveCamera.h> #include <OpenSG/OSGTransform.h> #include <OpenSG/OSGRenderAction.h> #include <OpenSG/OSGViewport.h> #include <OpenSG/OSGGradientBackground.h> #include <OpenSG/OSGImageBackground.h> #include <OpenSG/OSGImage.h> #include <OpenSG/OSGImageForeground.h> #include <OpenSG/OSGFileGrabForeground.h>
All include files should be familiar to you, however you might wonder why we need "OSGTransform.h" where we have used transformations before without ever including this header. Well, the simple scene manager we are going to drop this time, included a lot of needed files, like stuff for background, camera, viewports and some important cores. As we are going to do it without the simple scene manager, we need to include all those files by hand now. For the lazy ones, like me, you can of course simply include "OSGSimpleSceneManager.h" even if you don't want to use the manager...
As long as not stated otherwise all coming blocks of code should be added to the bottom of the file, i.e. below the block you just added.
Alright, now activate the OpenSG namespace, because we do not want to begin with OSG:: every time
#!cpp OSG_USING_NAMESPACE
We will need some global variables later on, so we are going to define them all now. Don't worry if you don't know what they will be for.
#!cpp NodePtr scene; PerspectiveCameraPtr leftCamera; PerspectiveCameraPtr rightCamera; ViewportPtr leftViewport; ViewportPtr rightViewport; WindowPtr window; NodePtr leftCamBeacon, rightCamBeacon, lightBeacon, lightNode; RenderAction *renderAction;
The purpose of most variables should be obvious. The render action is needed for anything to render, but simply take it as it is, actions will be discussed in chapter Traversal.
Okay, let us insert our forward declaration like we ever did:
#!cpp int setupGLUT( int *argc, char *argv[] );
Very well, our header is ready now. Now we can begin writing down the main function. We will begin with initializing OpenSG and a GLUT windows
#!cpp int main(int argc, char **argv) { osgInit(argc,argv); int winid = setupGLUT(&argc, argv);
Normally we would create the scenegraph now and create an instance of the simple scene manager. This time we will create a node with a group node, which will be a placeholder for the scenegraph we'll add later on.
#!cpp NodePtr scene = Node::create(); beginEditCP(scene); scene->setCore(Group::create()); endEditCP(scene);
Now we can begin with creating some needed objects the simple scene manager would have taken care of otherwise. As we want two different views on the same scene, we need two viewports and two cameras.
#!cpp // okay, that's not very spectacular anymore... leftCamera = PerspectiveCamera::create(); rightCamera = PerspectiveCamera::create(); //set attributes for camera beginEditCP(leftCamera); leftCamera->setBeacon(leftCamBeacon); leftCamera->setFov(deg2rad(90)); leftCamera->setNear(0.1); leftCamera->setFar(100); endEditCP(leftCamera); //same stuff for the other one beginEditCP(rightCamera); rightCamera->setBeacon(rightCamBeacon); rightCamera->setFov(deg2rad(90)); rightCamera->setNear(0.1); rightCamera->setFar(100); endEditCP(rightCamera);
So we just created two cameras with a field of view of 90 degrees. The near clipping plane is 0.1 units away from the camera where the far clipping plane is 100 units away.
Good, next we need a background. We decided previously to have one gradient and one image background.
#!cpp GradientBackgroundPtr leftBkg = GradientBackground::create(); beginEditCP(leftBkg); leftBkg->addLine(Color3f(0,0,0),0); leftBkg->addLine(Color3f(1,1,1),1); endEditCP(leftBkg);
The gradient background can have an arbitary number of different colors. We only want to have a gradiant background black (bottom) to white (top). You could simply add another line with another color and position. Fell free to experiment with that when this application is running for the first time (At this point of time you won't see anything).
The image background needs an image beforehand, so we first load one
#!cpp //load the image file ImagePtr bkgImage = Image::create(); beginEditCP(bkgImage); bkgImage->read("data/front.jpg"); endEditCP(bkgImage);
Now the background itself
#!cpp ImageBackgroundPtr rightBkg = ImageBackground::create(); beginEditCP(rightBkg); rightBkg->setImage(bkgImage); rightBkg->setScale(true); endEditCP(rightBkg);
By now we have an image background displaying data/front.jpg which will be scaled to whatever size the viewport has. Now we have everything we need to create the viewports (i.e. camera, background and a root node).
#!cpp leftViewport = Viewport::create(); rightViewport = Viewport::create(); beginEditCP(leftViewport); leftViewport->setCamera(leftCamera); leftViewport->setBackground(leftBkg); leftViewport->setRoot(scene); leftViewport->setSize(0,0,0.5,1); endEditCP(leftViewport); beginEditCP(rightViewport); rightViewport->setCamera(rightCamera); rightViewport->setBackground(rightBkg); rightViewport->setRoot(scene); rightViewport->setSize(0.5,0,1,1); endEditCP(rightViewport);
As you can see, both viewports are of course quite similar. They both now have a camera, the corresponding background, the same root node and different sizes. If you recall what we have said about sizes of viewports earlier you can see, that we now have a viewport which covers the left half of the screen whereas the other covers the right half. We have provided the size not in pixel format, so the viewports will scale as the window is being resized.
Finally we complete the main() function by creating the window and the render action that will be needed for actually rendering the windows content
#!cpp //and the render action - more on that later renderAction = RenderAction::create(); GLUTWindowPtr gwin= GLUTWindow::create(); gwin->setId(winid); gwin->setSize(300,300); window = gwin; // add the viewports to the new window window->addPort(leftViewport); window->addPort(rightViewport); window->init(); glutMainLoop(); return 0; }
For successfull compilation, you need the GLUTsetup() function we defined at the beginning.
#!cpp int setupGLUT(int *argc, char *argv[]) { glutInit(argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); int winid = glutCreateWindow("OpenSG First Application"); return winid; }
Well, compilation will work, but execution results in an error, which tells you that there is no display callback function defined. That is true, so extend your setupGLUT function with these lines just before the return statement.
#!cpp glutDisplayFunc(display); glutIdleFunc(display);
as well as this block between the main() and setupGLUT() functions
#!cpp void display(void) { window->render(renderAction); }
You now can execute the application, although there really is not much to see. You will see an error telling you that the camera has no beacon and you can see the gradient background only... anyway, we are not quite done yet, for a minimal application there is still a light source missing and beacons for the light and camera(s). So this will be our next step, to create a working scenegraph. We also add a torus to have at least some visible geometry. Locate the following lines at the beginning of the main() function
#!cpp NodePtr scene = Node::create(); beginEditCP(scene); scene->setCore(Group::create()); endEditCP(scene);
and replace them with our well know call of
#!cpp scene =createScenegraph();
Next add the createScenegraph() function - place the code that belongs to it before the main() function! First we create a simple torus and we also create the nodes that will act as a beacon for the cameras and the light source.
#!cpp NodePtr createScenegraph(){ //create geometry - just a simple torus NodePtr torus = makeTorus(1,5,8,16); //create transformations & beacons for cameras & light leftCamBeacon = Node::create(); rightCamBeacon = Node::create(); lightBeacon = Node::create();
now we fill the three nodes we just created with life:
#!cpp // the following style is a bit different than from before // this is only to remind you that beginEditCP()'s can also // be interleaved beginEditCP(leftCamBeacon); beginEditCP(rightCamBeacon); beginEditCP(lightBeacon); //create Transformations TransformPtr leftCamTrans, rightCamTrans, lightTrans; leftCamTrans = Transform::create(); rightCamTrans = Transform::create(); lightTrans = Transform::create(); beginEditCP(leftCamTrans); beginEditCP(rightCamTrans); beginEditCP(lightTrans); Matrix leftM, rightM, lightM; leftM.setTransform(Vec3f(-5,6,10)); rightM.setTransform(Vec3f(5,-6,10)); lightM.setTransform(Vec3f(1,10,2)); leftCamTrans->setMatrix(leftM); rightCamTrans->setMatrix(rightM); lightTrans->setMatrix(lightM); endEditCP(leftCamTrans); endEditCP(rightCamTrans); endEditCP(lightTrans); leftCamBeacon->setCore(leftCamTrans); rightCamBeacon->setCore(rightCamTrans); lightBeacon->setCore(lightTrans); endEditCP(leftCamBeacon); endEditCP(rightCamBeacon); endEditCP(lightBeacon); // -- end of camera beacon creation
Note that this can be quite a bit more compact when using CPEdit and makeCoredNode(), if you can use a more current version than 1.2.
All three nodes now contain a transformation core with a different transformation matrix. Relative to the origin, the first camera is located in the upper left corner where as the second is in the lower right, both 10 units away along the z axis. The light will be located 10 units above the origin.
Next, we create the light source for the scene. As we have only very simple geometry in our scene, one directional light should be sufficient.
#!cpp //create the light source DirectionalLightPtr dLight = DirectionalLight::create(); beginEditCP(dLight); dLight->setDirection(Vec3f(0,1,2)); //color information dLight->setDiffuse(Color4f(1,1,1,1)); dLight->setAmbient(Color4f(0.2,0.2,0.2,1)); dLight->setSpecular(Color4f(1,1,1,1)); //set the beacon dLight->setBeacon(lightBeacon); endEditCP (dLight);
The beacon is set, but we will also need a node which will contain the light as a core to define what should be lit (see also Point Light).
#!cpp // create the node that will contain the light source lightNode = Node::create(); beginEditCP(lightNode); lightNode->setCore(dLight); lightNode->addChild(torus); endEditCP(lightNode);
We are nearly finished for the first working version, we are just missing the root node:
#!cpp // now create the root and add all children NodePtr root = Node::create(); beginEditCP(root); root->setCore(Group::create()); root->addChild(lightNode); root->addChild(leftCamBeacon); root->addChild(rightCamBeacon); root->addChild(lightBeacon); endEditCP(root); return root; }
Now try to compile and execute the application. It should look like this
Two different viewports on the same scene
As you can see, the torus is displayed from two different positions. This is really not a miracle as we have defined different locations for both cameras. This is nice, but if you resize the window, the viewports are not scaled correctly although they should! The reason is, that we have not specified the GLUT reshape callback function. Add this line to the setupGLUT() function
#!cpp glutReshapeFunc(reshape);
and add this block of code right below the display() function
#!cpp void reshape(int w, int h) { window->resize(w, h); glutPostRedisplay(); }
If you compare this function with the previous reshape function you will notice that the only thing that changed, is a replacement of the simple scene manager object with the window object.
Now the application can be resized correctly. We are still missing functionality we wanted to implement: the foreground is still missing as well as the snapshot feature. First we create a foreground which will display a png file in the right viewport. In the main() function locate the lines that say
#!cpp rightViewport->setRoot(scene); rightViewport->setSize(0.5,0,1,1); endEditCP(rightViewport); //and the render action - more on that later renderAction = RenderAction::create();
and add the following new code right before the renderAction is created.
#!cpp // add a logo foreground to the right viwport //load the logo image file ImagePtr frgImage = Image::create(); beginEditCP(frgImage); frgImage->read("data/logo.png"); endEditCP(frgImage); ImageForegroundPtr imgFrg = ImageForeground::create(); beginEditCP(imgFrg); //NOTE: the position values are between 0 and 1 //and are relative to the viewport! imgFrg->addImage(frgImage,Pnt2f(0.1,0)); endEditCP(imgFrg);
Now we have loaded an image from a file like we did for the image background. After that, we created the image foreground and simply added the image. The position I provided via Pnt2f is the location of the image relative to the lower left corner of that viewport. As these values are smaller than one, these are meant relative the same way when defining sizes of viewports.
The foreground still would not be visible, because we need to add it to the foreground field of a viewport. That is done by the following line of code
#!cpp //add the created foreground by appending it to //the vieports foreground multifield rightViewport->getMFForegrounds()->push_back(imgFrg);
Finally we need to add another foreground that will allow us to capture the screen into files. This is with the osg::FileGrabForeground. The code can be placed right below the code you just added
#!cpp //create the foreground for screenshot functionality FileGrabForegroundPtr fileGrab = FileGrabForeground::create(); beginEditCP(fileGrab); fileGrab->setActive(false); fileGrab->setName("data/screenshot%04d.jpg"); endEditCP(fileGrab); //add this one to the right viewport, too rightViewport->getMFForegrounds()->push_back(fileGrab);
We added the foreground the same way we did with the image foreground. We only set two attributes for the file grab foreground. We set a file name and also set it's active flag to false, to avoid that the applications starts to shot screenshots right at the beginning. Rather we want to de-/ activate this feature by pressing the 's' key. Maybe you find the filename a bit unusual - if I would have set it to "data/screenshot.jpg" every screenshot taken, would have overwritten that file. Of course that can be exactly what you want, but I decided, we want to have a series of images taken. The %d is replaced by some internal counter variable and %04d means that there are leading zeros until four digits are used. Therefore the images series is screenshot0001.jpg screenshot0002.jpg and so on.
Let us add the keyboard callback to enable the user to switch screen capturing on and off. Add this to the setupGLUT function
#!cpp glutKeyboardFunc(keyboard);
add this right below the reshape() function
#!cpp void keyboard(unsigned char k, int x, int y){ switch(k) { case 27: { osgExit(); exit(1); } break; case 's': { // The return value is actually a pointer to on osgPtr class // I don't know if that makes much sense at all... MFForegroundPtr foregrounds = *(window->getPort(1)->getMFForegrounds()); FileGrabForegroundPtr fg = FileGrabForegroundPtr::dcast(foregrounds[1]); if (!fg->getActive()) { std::cout << "start recording..." << std::endl; fg->setActive(true); } else { std::cout << "stopped" << std::endl; fg->setActive(false); } } break; } }
This one looks a bit more complicated... well, if the 's' key is pressed we enter the corresponding case statement, where we first get an osg::MFForegroundPtr variable, which is actually a multi field that contains all osg::ForegroundPtr of this specific viewport. The viewport we have chosen is the right one with the image background. Remember we added the viewport with the gradient background first, which will become viewport number 0 and the right viewport therefore becoming number 1 which we got above the call of window->getPort(1). The return value of getMFForegrounds() is actually a pointer to the osg::MFForegroundPtr datastructure. We simply dereference the pointer and now have the multi field correctly stored. In the next line we 'extract' the osg::FileGrabForeground which is number 1, because we first added the image foreground which is number 0 - same procedure as with the viewport numbers. However, the multi field stores osg::ForegroundPtr and we need to downcast it to the correct type. As we know that this foreground is a file grab foreground, we invoke a dynamic cast. Finally we have the foreground we are looking for and can now set the active attribut. By the way: I know that it would be easier to store the foreground as a global variable, but I wanted to show you how elements of OpenSG can be retrieved from more complex data structures. With bigger projects it won't be possible to store everything globally
Our application is complete now. One hint for those with fast machines: Do not turn on screen capturing for to long, or you will have lots of jpg files...
One essential functionaliy is indeed still missing! We are not able to navigate in any means. Well, this is up to you now, have a look at the exercises ;-)
- 1) Sky Background
Try to use a sky background with textures. You can find the needed textures in the progs/data folder. The files are called right.jpg, top.jpg,... and so on.
- 2) Navigator
Navigation is not possible in our tutorial. Implement a mouse driven navigation comparable to the navigation possibilities from the other tutorials.
Important Hint: You can save a great amount of time, if you have a closer look at the osg::Navigator helper class. This class is also used by the simple scene manager.
Attachments (7)
- 4ports.png (213.6 KB) - added by cneumann 10 years ago.
- viewports_new.png (12.0 KB) - added by cneumann 10 years ago.
- camera.png (7.1 KB) - added by cneumann 10 years ago.
- heye_wall.png (107.5 KB) - added by cneumann 10 years ago.
- skybox.png (84.5 KB) - added by cneumann 10 years ago.
- scene_setup.png (61.2 KB) - added by cneumann 10 years ago.
- 2viewports.png (122.6 KB) - added by cneumann 10 years ago.
Download all attachments as: .zip


text: A couple of statements to clarify here... A 60's Planar will only give equal or better results if you like the character of the older lens/coatings. The modern version with multicoating, recomputed for modern glass and manufactured to tighter tolerances will propably give consistently higher test numbers. As for older meters being inherently less accurate, here too you would need to qualify which meter and for what type of measurement. A good norwood director on a film set would likely be as accurate as any other meter but remember we are talking about incident readings exclusively here and a half-stop on color negative film is all the resolution/accuracy that's needed. Learning the dome is more important than the 10th stop display in this instance... Eric Goldstein -----Original Message----- From: Marvin Wallace <Marvin0@xxxxxxxxxxxxxx> Sent: May 30, 2005 7:34 PM To: rollei_list@xxxxxxxxxxxxx Subject: [rollei_list] Re: Old film An interesting distinction here between the photographer and the collecter. A Rollei a 1960's Planar will give equal or better results than the modern equivalent; old film is not as good as modern film; older b/w papers are sometimes better because of the higher silver content. And ask for old light meters ! A modern light meter will give a more accurate measurement of light; so that the lighting conditions can be more accurately translated to film (modern film) which records better. I am always surprised that people use old meters the modern equivalents are much better. An analogy regarding the use of light meters would be, the USA making a Space Rocket and then using a compass as the guidance system. Marvin. -----Original Message----- From: rollei_list-bounce@xxxxxxxxxxxxx [mailto:rollei_list-bounce@xxxxxxxxxxxxx] On Behalf Of Richard Knoppow Sent: 31 May 2005 05:12 To: rollei_list@xxxxxxxxxxxxx Subject: [rollei_list] Re: Old film ----- Original Message ----- From: "Don Williams" <dwilli10@xxxxxxxxxx> To: <rollei_list@xxxxxxxxxxxxx> Sent: Monday, May 30, 2005 12:23 PM Subject: [rollei_list] Re: Old film > At 05:10 PM 5/28/2005, Dick wrote: > . . . . . > >> Silver is more stable than dye but is actually not >> very >>stable unless toned. Silver sulfide is extremely stable. >>Silver sulfide images are the result of using any of >>several >>Sulfiding toners, often called Sepia toners. Kodak Brown >>Toner and the very similar Agfa Viradon are examples of >>such >>toners. > > I think I have a variety of prints, some of which may be > tintype, in a box > I picked up from my stepfather many years ago. I think > some of them are > indeed tarnishing a bit. Any suggestions. (I haven't > even looked in there > in a couple of years, since some of the photos were in > mounts and I didn't > want to sort out the broken glass, guess it's about time. > > DAW > > Tintypes, more properly Ferrotypes, are photos made by coating a very thin sensitive layer on polished metal. Since silver in very thin layers is reflective, a direct positive is had by making the backing black. The silver image looks white in comparison. Tintype coating may be gelatin but many were also made using collodion. Restoring them is really a job for a professional conservator. Regular prints can show the effects of oxidation of the silver by "mirroring" or "bronzing". This is an effect where the image silver is oxidized, the oxide being extremely fine is able to migrate to the surface where it may be again reduced to metallic silver by other pollutants. The result is a noticeable shiny area especially over the denser portions of the image. negatives, in principle, are also subject to this redox effect but the image silver grains are so much larger than print grains that the effect is rare. There are treatments that can remove the surface material. They consist in general of bleaching in a permanganate bleach and redeveloping. Any such treatment can destroy the print so the best procedure is to make the best copy negative or scan possible before trying any remedial treatment. Kodak has a couple of good books on identifying and preserving old images. I have to search mine out to give you publication data. Again, its wise to consult a professional before attempting anything other than copying damaged old images. I am not sure if your reference to broken glass refers glass slide mounts of glass plate negatives. The emulsions of broken glass plate negatives can often be transferred to a new support. There are techniques for stripping both gelatin emulsion and collodion (wet plate) coating but I am not an expert. --- Richard Knoppow Los Angeles, CA, USA dickburk@xxxxxxxxxxxxx --- Rollei List - Post to rollei_list@xxxxxxxxxxxxx - Subscribe at rollei_list-request@xxxxxxxxxxxxx with 'subscribe' in the subject field OR by logging into www.freelists.org - Unsubscribe at rollei_list-request@xxxxxxxxxxxxx with 'unsubscribe' in the subject field OR by logging into www.freelists.org - Online, searchable archives are available at http://www.freelists.org/archives/rollei_list

subset: commoncrawl


text:
Kukla's Korner Hockey
Video- Matt Cooke With An Elbow
by Paul on 03/20/11 at 04:57 PM ET
Comments (86)
The Rangers Ryan Mcdonagh was the receipent. He did return to the game while Cooke received five for elbowing, a ten and game misconduct.
note 3:14pm, Changed the video for one with better quality.
Filed in: NHL Teams, New York Rangers, Pittsburgh Penguins, | KK Hockey | Permalink
Tags: matt+cooke, ryan+mcdonagh
If Cooke were on my team, I'd be a hypocrite if I didn't immediately put him on waivers.
Not really realistic.
For one, I don't think there are conventional waivers after the trade deadline. Even if there were, that would take up a post-trade-deadline roster move and you only get 4.
Bylsma blaming Cooke for the loss in the post-game presser.
Posted by steviesteve on 03/20/11 at 05:50 PM ET
I wasn't making this an Islanders issue. Nobody cares about the Islanders. Just decided to take a shot at that joke of an organization. Back to Cooke being an idiot…
Posted by cs6687 on 03/20/11 at 03:44 PM ET
I think you just did bring up the Islanders again. The Islanders have nothing to do with what Matt Cooke did today!
You guys can't seem to stay on subject. I guess I should feel good about it. The fact that the Islanders get under your skin makes me so proud of their organization.
I'm with you. Let's make this an Islander discussion. LOL
Posted by RogerNYLA on 03/20/11 at 05:51 PM ET
I love the way Penguin fans are changing the subject and trying to make this and Islander issue. So sad. LOL
My discussion of Gillies was in response to the remark made above by Hockey2219. As also mentioned above, no one cares about the Islanders.
Posted by gretzky_to_lemieux on 03/20/11 at 05:51 PM ET
no one cares about the Islanders.
Posted by gretzky_to_lemieux on 03/20/11 at 03:51 PM ET
I've actually forgotten that they're a real life NHL franchise on at least a dozen occasions this season alone.
Maybe because they barely are one?
Bylsma blaming Cooke for the loss in the post-game presser.
Posted by steviesteve on 03/20/11 at 03:50 PM ET
Good. Tight game, looking to get at least a point with TBL nipping at their heels…and you pull a stupid stunt like that? Have to be smarter. Stupid, stupid, stupid play.
Posted by Flashtastick56 from Meriden, CT on 03/20/11 at 05:55 PM ET
My discussion of Gillies was in response to the remark made above by Hockey2219. As also mentioned above, no one cares about the Islanders.
Uh huh…Gillies is an Islander and obviously when you bring up the Islanders (saying no one cares about the Islanders) you're in fact bringing up the Islanders. This is like one of those Airplane movies.
Posted by RogerNYLA on 03/20/11 at 05:58 PM ET
Gillies had two incidences. Against the pens was awful, and against the Clutterbuck, which was a high hit and deserved a suspension, but was a reaction to Clutterbuck intentionally boarding one of the Islanders. Gillies sucks, sure, but Cooke is a a dirtier player in the NHL and that's all there is too it.
Posted by Hockey2219 on 03/20/11 at 03:08 PM ET
Hey Roger…ask this guy if he's a Penguins fan. Because he's the first one that brought up that neanderthal on skates.
Just go away. You're way worse than Evilpens.
Posted by Flashtastick56 from Meriden, CT on 03/20/11 at 06:00 PM ET
I've actually forgotten that they're a real life NHL franchise on at least a dozen occasions this season alone.
God, this is great! Eating your insides up, huh? LOL
The contempt says volumes, believe me!
Posted by RogerNYLA on 03/20/11 at 06:02 PM ET
UMMMM Where was the Blame for his Incompetent Coaching of the PP ?? 2-45
Typical Nutless, Spineless & Brainless Twit that he has always been
Posted by Evilpens on 03/20/11 at 06:02 PM ET
UMMMM Where was the Blame for his Incompetent Coaching of the PP ?? 2-45
Probably because this is a thread discussing Matt Cooke's latest brain fart, not a 'how bad is the Penguins power play' thread.
Posted by cs6687 on 03/20/11 at 06:04 PM ET
OK, everyone has had their fair share of back and forth, off topic talk.
Please stay on topic, it's Sunday, a day of rest and relaxation.
Posted by Paul from Motown Area on 03/20/11 at 06:04 PM ET
God, this is great! Eating your insides up, huh? LOL
The contempt says volumes, believe me!
Listen very closely: Start chainsaw, then your stick your hands and/or head into it.
Posted by cs6687 on 03/20/11 at 06:06 PM ET
Just go away. You're way worse than Evilpens.
OK. Take care.
Posted by RogerNYLA on 03/20/11 at 06:09 PM ET
Seth Rorabaugh's (humorous, but spot-on) take, from Empty Netters:
-What do you say about Matt Cooke? Lots of things actually. He's a dirty player. Period. He's a talanted palyer. He's vital to the penalty kill. He's competent with the puck. And he's amazing on the forecheck. But all of that is lost by the fact that he's a dirty player. And today, he was a liablity.
-He deserve a 10-game suspension at the very least. But this is a [garage league] the NHL. Don't expect more than eight.
Posted by Jeff OKWingnut from Quest for 12 on 03/20/11 at 06:15 PM ET
Stupid. Selfish and dirty play. Bench him. I would say waive him, but then he would be taking runs at Penguins instead.
Posted by Russian Rocket on 03/20/11 at 06:41 PM ET
Cooke changed the game, and gave the Rangers life when they were outplayed most shifts up to that point. A damn shame when players like Neal were having a hell of a game.
Honest question here, even if the Penguins wanted to waive/suspend him, would that 1) violate any terms that the NHLPA could sue them for, or 2) be possible in a salary cap era where they'd likely still need to pay his salary? I guess they would have to send him to AHL to get the salary off the books, right? Remember, the Pens are pretty damn close to the cap last I checked.
Posted by penguinsfan on 03/20/11 at 06:50 PM ET
Wow….Pens fans saying he isn't a barbarian like Trevor Gillies? Laughable….Try pulling your head from wherever it is and watch the clip. Looked a lot like the Gillies/Tangradi hit, didn't it?
At least Islanders fans can admit Gillies is a goon. Try removing your black & gold glasses and look at this objectively. Cooke should get 12 games for this. The angle proves it.
Posted by Mickey Malice from Austin TX on 03/20/11 at 07:25 PM ET
Well mario,
The World breathlessly awaits your comdenation of the latest "head-Shot".
I'm guessing a press confrence will be held, and fists will be pounded upon podiums in anger at the wreckless style of play in the NHL. These actions must be stopped!! Mr. commissioner, do something!!!
Oh wait…....it's just cooke being cooke. No harm No foul.
Posted by Down River Dan on 03/20/11 at 07:36 PM ET
Honest question here, even if the Penguins wanted to waive/suspend him, would that 1) violate any terms that the NHLPA could sue them for, or 2) be possible in a salary cap era where they'd likely still need to pay his salary? I guess they would have to send him to AHL to get the salary off the books, right? Remember, the Pens are pretty damn close to the cap last I checked.
I don't think they would be able to do anything at all until the offseason.
Buyouts can only happen in certain weeks of the summer, AHL rosters are finalized the day after the NHL trade deadline and cannot be changed, trades are done until the playoffs are over (I think waivers are as well, though they -might- still exist in some form) and a team suspension for something a player did to a player on another team sounds like something the PA would grieve.
The only thing they would be able to do is give Cooke the Georges Laraque/Dan Cloutier 'even though we're paying you and you're taking up a roster spot, don't come to the rink, ever again' treatment.
Posted by steviesteve on 03/20/11 at 07:39 PM ET
@CS6687 I wasn't making this an Islanders issue.
huh? because you said:
The only thing I can guarantee is that the Rangers won't be planning an all-out assault on the Penguins next season like that other joke team that plays in New York did back in February.
Joke team? you mean like the one that employs Matt Cooke, and says they want nothing to do with the game if this is what it comes to?!?!
It is funny that you somehow attack the Islanders for what they did and claim it was worse…......they had guys injured also in a previous game, now i don't agree with how Gillies and others went about it, something needed to be done (for the franchise to stand up for itself)
What was Cooke retaliating against? What sad story will he come up with.
I am an Islanders fan and I wouldn't hold it against the Rags if they at least did some fighting against the Pens (no matter what happens to Cooke)if they play them in the playoffs or next season.
You know its bad that most Pens fans wont defend Cooke AND wont make any backhanded excuses (like attacking the Islanders, which weren't playing in this game and have ZERO to do with him)
Cooke deserves getting the book thrown at him. Gillies did it twice, how many head shots Cooke has done in his career?? Has it been dozens of times because I can find a lot of evidence on youtube,
Posted by Pnut from Earth on 03/20/11 at 07:49 PM ET
Roger, would you please stop spamming a thread about Matt Cooke elbowing Ryan McDonough with stuff about the Islanders that is of interest to nobody? I don't see anybody from Rochester ranting about the Americans.
Posted by steviesteve on 03/20/11 at 07:53 PM ET
Mario Lemieux had some good ideas about how to deal with these kinds of hits last week. At the time, I thought his credibility was undermined by the fact that his franchise continued to employ Cooke. I was told on these boards that I was being an idiot.
Again, Mario has the opportunity to do something. I would think a charitable donation commensurate with the team fine he proposed is in order, bearing in mind that under the system he proposed any team fine would be doubled in the case of a player who had twice offended in the same season.
At the very least, discipline against Cooke from within the Pens organization is long overdue. I hope the League throws the book at him this time, but if they don't the Pens should. Maybe they both should.
Posted by Da lil Guy from Guelph, Ontario on 03/20/11 at 07:59 PM ET
Posted by Down River Dan on 03/20/11 at 05:36 PM ET
Still waiting…....
Posted by Rumbear from Top O the Hasek, Czech out my recliner..... on 03/20/11 at 08:10 PM ET
Don't forget, Cooke has two years left on his contract AND a no-trade clause.
When they signed the three-year deal the Pens had to include the NTC to bring down the value of the contract.
Trading him in the off-season isn't an option unless somebody is crazy enough to really REALLY want him. It's too late this season to put him on waivers for the purpose of sending him to W/B-S because the clear day rosters were set weeks ago.
I'm envisioning a nine-game suspension by the league and a healthy scratch status for the entirety of the Pens playoff run.
Contract buy-out in the summer?
Posted by David Lee from Greensboro, NC on 03/20/11 at 08:17 PM ET
Dumb dumb dumb by Cooke. Just doesn't get it. Pens had control of the game and then it was gone. We'll see what happens tomorrow. Sure Cooke will get a minimum of 8, probably should be more but Callahan got up and was fine.
Wow….Pens fans saying he isn't a barbarian like Trevor Gillies? Laughable….Try pulling your head from wherever it is and watch the clip. Looked a lot like the Gillies/Tangradi hit, didn't it?
I must have missed the part where he punched a guy while he was down and then taunted him in the runway.
Posted by pens fan in baltimore on 03/20/11 at 08:19 PM ET
I am an Islanders fan
That sucks.
My point was Cooke can actually be a very good player when he's not doing stupid things like he did today. Gillies? A hack and loser with no skill and would be a rent-a-cop if the Islanders weren't employing him. I'm done talking about that loser organization in Long Island. Back to discussing real, successful hockey teams…
Posted by cs6687 on 03/20/11 at 08:30 PM ET
Don't forget; YOUR team was a bunch of losers as well at one point, when they TANKED for Lemieux and Jagr. Just because you got lucky with Crosby and got a cup for a total of 3 to the Islanders' FOUR, doesn't make you any better. You gotta win another cup for that, and you're not doing it this year.
If you want to talk about loser organizations, try using your memory a bit and recognizing the fact that your teams' method of escaping failure was to throw games. True competitive spirit.
You fail.
Posted by Mickey Malice on 03/20/11 at 08:40 PM ET
Contract buy-out in the summer?
He's over 30 and the Penguins are always against the cap, meaning $1.1 million or so in phantom cap costs for the next 4 years (if my buyout math is right) isn't something they'll be likely to want to live with.
Their best hope is trading him for pennies-on-the-dollar return to a team in the west. Even though excellent penalty killers (plays on the best PK unit in the league and leads all skaters with SH goals and points) with great defensive stats (the Globe and Mail ranked him 3rd at forward using sabremetrics in January) that score 15 goal/year, have fantastic work habits and favorable cap hits don't exactly grow on trees, I can't figure there will be anything resembling a bidding war in the current climate.
Still, Cooke contributes enough that someone who needs bottom six veteran forwards that kill penalties well and will either overlook or view his baggage as a net positive should be expected take a flyer on him if they can get him for nothing.
Anaheim comes to mind almost immediately. Perhaps Edmonton as well, as he'd be the best checking-liner on that team by a mile.
Posted by steviesteve on 03/20/11 at 08:43 PM ET
The thing with Mario Lemieuxs statement a while back about these kind of plays…he basically excused Cooke by saying if the rules were in place then this wouldn't happen. So until the rules get in place, Cooke is free to roam. Mario didn't take responsibility he just passed the buck on to NHL, yet, his own player continues to give examples of why there needs to be a Cooke rule.
Posted by TheFreak on 03/20/11 at 08:50 PM ET
Roger, just stop.
The Penguins sent, I think, 4 players to the All-Star Game and missed the playoffs by 1 point (mostly because of injuries) the year they drafted Jagr.
Posted by steviesteve on 03/20/11 at 08:50 PM ET
Mickey Malice, yes, the Penguins tanked to get Jagr. They knew four other teams would pass on him (sarcasm). The Penguins did not tank to get Crosby, Malkin, etc. They couldn't compete without a salary cap (you know back when Bobby Holik got paid $9 million/season), so they chose to rebuild. They made the most of their drafting.
I'd like for you to prove where the Penguins threw games for years and years.
You fail.
Posted by cs6687 on 03/20/11 at 09:00 PM ET
Gee, injuries…..kinda like the Islanders have led the league in 3 out of the last four seasons…..
Point being, it's a 2 way street.
Posted by Mickey Malice on 03/20/11 at 09:01 PM ET
How long have you been a hockey fan?
Posted by Mickey Malice on 03/20/11 at 09:04 PM ET
About twenty years. I remember when the Penguins, instead of going for a tie in the last game of the regular season in 1989-90 against Buffalo that would have clinched a playoff berth, threw 79 games and almost four periods of a hockey season down the toilet by letting Buffalo score with less than a minute left to miss the playoffs to gamble to get Jagr.
Posted by cs6687 on 03/20/11 at 09:08 PM ET
Honest question here, even if the Penguins wanted to waive/suspend him, would that 1) violate any terms that the NHLPA could sue them for, or 2) be possible in a salary cap era where they'd likely still need to pay his salary? I guess they would have to send him to AHL to get the salary off the books, right? Remember, the Pens are pretty damn close to the cap last I checked.
Posted by penguinsfan on 03/20/11 at 04:50 PM ET
Steviesteve was right, but I'd like to see Mario try something new.
I think there is a way they could suspend him without having to worry about his cap (although it would involve putting him on unconditional waivers, where he might get picked up).
You could make the argument that he violated team rules. If Shero, Mario, Bylsma, and everybody else has talked to him about these kinds of plays and he keeps making them, then he's an insubordinate player.
My question would be whether the NHLPA would fight on Cooke's behalf to keep him in the league…
Posted by J.J. from Kansas on 03/20/11 at 09:19 PM ET
from wikipedia:
The team had the league's worst record in both the 1983 and 1984 seasons, and with the team suffering financial problems, it again looked as though the Penguins would fold. Mario Lemieux, one of the most highly touted NHL draft picks in history, was due to be drafted in the 1984 NHL Entry Draft. Heading towards the end of the season ahead of the New Jersey Devils, who were placed last, the Penguins made a number of questionable moves that appeared to weaken the team in the short-term. The Penguins posted three six-game winless streaks in the last 21 games of the season (out of which they won only three) and earned the right to draft Lemieux amidst protests from Devils president Bob Butera.[4] Pittsburgh coach Lou Angotti later admitted that a conscious decision was made to end with as the team with the worst record, stating in an interview with the Pittsburgh Post-Gazette that a mid-season lunch prompted the plan, in light of the fact that there was a high chance of the franchise folding if Lemieux was not drafted.[5] In particular, Angotti gave the example of a game the Penguins were winning 3–1, at which point general manager Eddie Johnston asked the coach "what are you doing?" in the first intermission of the game that was eventually lost 6–3. The Penguins were still, despite losing ten of their last twelve games, only two games away from losing Lemieux to the Devils.[5] However, Angotti stated that he did not feel comfortable with the plan, even though it worked and saved the franchise. Other teams offered substantial trade packages for the draft choice, but the Penguins kept the pick.
Posted by Mickey Malice on 03/20/11 at 09:21 PM ET
2009 Yann Danis=1990 Mario Lemieux
Posted by steviesteve on 03/20/11 at 09:24 PM ET
I never disagreed that the Penguins tanked to get Lemieux, Mickey Mouse.
Posted by cs6687 on 03/20/11 at 09:44 PM ET
The Islanders haven't made the playoffs for the last four seasons. They obviously tanked to get Tavares, Bailey, and are currently tanking to get whomever they get in June. Right, Mickey Mouse?
Posted by cs6687 on 03/20/11 at 09:46 PM ET
How much more vidence does a league need? That was a blatant attempt to injure and not even remotely close to being a hockey play. At least the refs got this call right, giving Cooke five, ten and a game. Colin Campbell better be looking closely at this and not employing his fool Wheel of Justice. I wonder if the Pens will bench Cooke before it even gets to the NHL brass level.
Posted by Iggy Rules on 03/20/11 at 10:54 PM ET
OK. Take care.
Posted by RogerNYLA on 03/20/11 at 04:09 PM ET
Jesus…who'd have thunk it would be that easy?
Posted by Flashtastick56 from Meriden, CT on 03/20/11 at 11:59 PM ET
Add a Comment
Please limit embedded image or media size to 575 pixels wide.
Add your own avatar by joining Kukla's Korner, or logging in and uploading one in your member control panel.
Captchas bug you? Join KK or log in and you won't have to bother.
Most Recent Blog Posts
Viktor Arvidsson Gets A Seven-Year Deal With Nashville
Morning Line- An Eastern Conference Executive
Time Is On The Side Of The New York Islanders Regarding A Contract For John Tavares
Printed Season Tickets In Montreal Will Cost More
Testing, Can You Hear Me, Testing
About Kukla's Korner Hockey
Paul Kukla founded Kukla's Korner in 2005 and the site has since become the must-read site on the 'net for all the latest happenings around the NHL.
From breaking news to in-depth stories around the league, KK Hockey is updated with fresh stories all day long and will bring you the latest news as quickly as possible.
Email Paul anytime at email@example.com


text:
Mase Biography
Mason Durrell Betha, 27 August 1978, Jacksonville, Florida, USA. By the time rapper Ma$e launched his solo career, he was already an A-list celebrity among hip-hop fans by dint of appearances on gold and platinum singles by Puff Daddy (Cant Nobody Hold Me Down), Brian McKnight (You Should Hold Me), 112 (Only You) and Notorious B.I.G. (Mo Money Mo Problems). He had also performed live at the MTV Video Music Awards alongside Sting and Puff Daddy in consort with the latters extended musical family (the Bad Boy posse). Ma$es solo debut, Harlem World, eventually emerged in 1998 via a contract with Arista Records. The US number 1 album was produced by Deric Angelettie, Stevie J., Ron Lawrence and Carlos Thompson and others, collectively known as the Hitmen. Among the guests were Jermaine Dupri, Busta Rhymes, Lil Kim, Lil Caesar, Black Rob and Puff Daddy. The highlights included Feel So Good, a typically jocular effort married to a sample of Kool And The Gangs Hollywood Swinging, and I Need To Be, an attempt to write from a female perspective. Feel So Good was used as the first single, climbing to number 5 on the Billboard Hot 100 in January, and was also included on the soundtrack to the movie Money Talks. To support it, Ma$e set out on a major world tour in tandem with his mentor, Puff Daddy. The two men also enjoyed a US number 8 hit single in September with Lookin At Me. Two further transatlantic hit singles followed with the Brandy duet Top Of The World and Take Me There, a collaboration with BLACKstreet, Mya and Blinky Blink taken from the Rugrats movie soundtrack. The Movement showcased a new generation of east coast talent, with Ma$e assuming the Puff Daddy mentor role.
A second solo album was accompanied by the revelation that the rapper had decided to retire from the music business and concentrate on religious work. He stayed true to his word and in 2001 published a memoir, Revelations: Theres A Light After The Lime, in addition to establishing S.A.N.E. Ministries in Atlanta. Ma$e announced he was returning to the music business in summer 2004, and released a new studio album later in the year.
Source: The Encyclopedia of Popular Music by Colin Larkin. Licensed from Muze.


text:
Plan A
- Use a air unit bait it (Must faster than it).
- Bait to a platoon of Hellfire to fire the missile and Hover Tank will shoot the missile.
- In meanwhile use a Laser Tank that can outrange it.
- Finally The Hover Tank is destroyed.
Plan B
- Use the shock such as Shock Trooper and Shock Tank .
- Makes sure the unit is scattered to keeps the Hover Tank get shocked.
- Use any powerful unit that have much damage such as Hellstorm & Gladiator .
Plan C
- Send an Elite Rifleman to tank the damage since it's cheap to build/repair and the armor type makes it able to withstand a few hits.
- Quickly attack it with a Gladiator or two (At higher level the hover tank takes two shots to kill) or other high burst damage units.


text:
They're always a hilarious hosting duo and last night (November 5) Brad Paisley and Carrie Underwood emceed the 2014 CMA Awards in Nashville.
The "River Bank" hunk led in by restating the exciting news that the "Blown Away" babe has a bun in the oven.
Before taking over the hosting duties with Brad Paisley, Carrie Underwood walked the red carpet at the 48th Annual CMA Awards earlier this evening (November 5).
The "Blown Away" babe looked stunning in her gown as she showed off her growing baby bump before heading inside Nashville's Bridgestone Arena.
They always have a blast together and last night (October 27) Brad Paisley and Carrie Underwood showed up at Rockefeller Plaza in New York City.
With motherhood on the horizon, Carrie Underwood is excited about getting ready to welcome her little bundle of joy.
On Monday (October 27) the "Blown Away" songstress stopped by "The View" to discuss her feelings surrounding becoming a mom.
New York City's Central Park was the place to be for celebrity-watching and great music as the 2014 Global Citizen Festival kicked off on Saturday (September 27), hosted by Hugh Jackman.
She's a glowing mother-to-be, but there are a few things about pregnancy that Carrie Underwood still finds "weird."
The expecting country cutie stopped by the "Today" show on Friday (September 26) and opened up about her exciting news along with her upcoming greatest hits album.
Taking over the historic Ryman Theatre in Nashville, Tennessee, Carrie Underwood wowed the crowd at the 8th Annual ACM Honors event last night (September 9).
From "American Idol" glory to Country Music superstar, Carrie Underwood has conquered every goal she's attempted.
And now the "Blown Away" songstress has a whole new challenge ahead of her as yesterday (September 1) she announced she's pregnant.


text:
Horizon Dental has an office only in one location, Southington, CT. The office is brand new with state of the art equipment,computerised, electronic charting and digital X rays. Offer a a wide range of dental services ranging from Preventative Dental Services, Cosmetic Fillings, Root Canal Treatments, Crowns, Bridges, Dentures, Partials, Implants, Extractions, Whitening, Bite Guards, Athletic Mouth Guards etc for patients of all ages starting from 1 to 101 yrs of age or more. Very friendly and courteous staff. Extended work hours including late evenings per request. Complete family dentistry treating children of all ages as well. We participate in most insurance plans including Medicaid administered by CTDHP.However we strongly encourage to calls us to confirm participation. New Patient Specials do not apply to third party payments.
Horizon Dental CT is a state of the art high tech dental office located on Southington - Plainville line. Very convenient location on Queen street across from Shop Rite Plaza in Southington and easy access to Plainville, Bristol, New Britain, Wolcott, Plantsville, Cheshire,Meriden and neighbouring towns. Emergency walk-ins, late evening and weekend appointments also available. Accepting most insurance plans including CT Medicaid, Husky, Saga, Benecare, Aetna, Cigna, Delta,Guardian, United, Anthem. Please call to confirm accepted insurance plans.
The office utilizes digital X rays, Intra oral cameras and other diagnostic tools. The doctors are comfortable providing dental services to patients of all ages including children. Services offered include Root Canal treatments, Crowns, Implants, Conventional and Implant supported Dentures, Partials, Teeth Whitening etc. Specials and Discounts on most dental procedures available. New patient specials and free consultations for a limited time. Please call to confirm. Financing options available.
|Southington Office
View Larger Map
685 Queen Street,
Suite 3,
Southington, CT 06489
Phone: +1 (860) 863 5831
Fax: (860) 863 5832
Email: firstname.lastname@example.com


text:
We are proud to introduce Michon, another integral member of the Shapeways team based in Eindhoven. Michon will be keeping you up to date on the blog with all things supply chain related. She will let you know if you can expect any delays in your deliveries, the status of each of the materials as well as any new milestones such as installing a behemoth new 3D printer into our workflow (stay tuned). Please join us in welcoming Michon to the Shapeways blogosphere and of course if you are in the area, take a tour of Shapeways and meet Michon in person..
Hi Shapers, my name is
Michon and I work for the Supply Chain Management at Shapeways. We are in direct contact with our partner
production facilities and strive to deliver your models earlier than yesterday.
I am delighted being
part of the Shapeways family, because I believe the technology of 3D printing
and Shapeways are revolutionary. It is a perfect relation and together they can make a change, as big of a change as the invention of the
wheel and you and I are part of it, how
amazing is that!
The last couple of
months we have introduced a lot of exciting new materials and we are constantly learning ways to improve the 3D printing process for you. We are
studious and keep on striving to constantly give you a wow effect after unpacking your Shapeways delivery and in
every interaction.
Show me what you can
make, how you are part of the change, let creativity lead the way.


text:
Folks, I'm still missing a bunch of glass blogs lost in the great hard drive disaster, so if yours (or someone you know who has a great glass blog) isn't on here, drop me a line and let me know. Next time I'm out looking for glassblogs I'll add it to the pile.
Cynthia (11/8/2009)
Had a private conversation about other glassist blogs the other day, and wound up posting a query on warmglass.com with a little poll on how the warmglassers use blogs. And I've compiled a list of kilnformers' glassblogs I've discovered to date. It's interesting stuff.
Of the 70 people that have so far responded on the poll, a whopping 60% don't have a glass blog or comment on other people's blogs. 14% don't have their own blogs but post comments about glass on other people's blogs. The remaining 25% have a blog that is either about glass or sometimes discusses glass.
So…these are warmglassers, people who are doing kilnforming and are presumably pretty comfortable talking about their work online. I would imagine many more have websites…and if they're the bleeding edge of the glassist crowd, that would tell me that the glass artist community as a whole is probably underusing blogs. As Lani (of Bullseye fame) noted, a lot of those that are, seem to blog about glass beads and jewelry, not glassblowing, fusing or casting. Be interesting to figure out why.
Glass blogs (or any artist blog, for that matter) are a terrific way to gain insight into the mind of the maker. In my case, I use the glass chunk of this blog to both journal my experiments and create an archive of stuff I'm asked about frequently. I participate in a lot of online stuff, I tend to be (surprise!) long-winded in my responses, and it saves time for me to write a blogpost and simply link back to it instead of answering a question all over again.
Carol Carson said she posts on a blog because it's easier than updating a website; I wholeheartedly agree. In fact, I've been strongly recommending that people start with blogs and move to websites only as needed, at least for personal/creative sites. The upkeep is a LOT less, and I think it frees the non-Webbist to simply put stuff up instead of worrying about whether the div tags are in the right spots. These days there are so many add-ons for the most popular blog tools that you can pretty much make a blog do the tricks you need…almost for free.
Anyway, thought it would be fun to actually collect the blogs of glassists in a single place. I'm mostly doing this to make it easier for me to find them again…but if anyone reading this wants to explore as well, you're welcome to. And if you know of other blogs that incorporate glass, please let me know and I'll add them here.
So here goes, in (sorta) alphabetical order:
Abbott, Ellen: Stuff from Ellen's Head
Fascinating look into the lives of a couple of professional glass artists. Ellen Abbott and Marc Leva make exquisite pate de verre, but given the comments I'd guess their bread and butter are the wonderful sand-carved architectural panels they do for churches, businesses, private homes, etc. Ellen's got a great take on life and isn't afraid to hang out some dirty laundry every once in awhile, making this a must-read.
Bailiff's Hollow
OK, so what I really want to know is the story behind the name "Bailiff's Hollow." Mike Byers, another warmglasser, makes some really cool metal and glass sculptures (among other things) that I enjoy seeing. The real attraction of this blog, though, is the writing. This may win the prize for wittiest-blog-that-also-talks-glass. I came to view the glass, stayed to read for quite awhile. Only suggestions I'd make, Mike, is more (especially more glass) and maybe make the type on older posts a teensy bit bigger. On a Mac it looks about 6 point.
Branch, Donna: Glass Studio Blog
Glass artist Donna Branch uses a lot of processes in her glasswork. She doesn't blog a heckuva lot (when I checked, her last post was about 8 months old), and you have to dig, but she does show some studio processes and she's done some interesting projects.
Bullseye Glass
Lani McGregor, one of the owners of Bullseye, kilnformed glass supplier to the stars and the reason for my constantly empty pockets, blogs about glass art, Scotland, competition in the glass manufacturing world, and other glassist stuff. What makes the blog fun is that she's giving real opinions that haven't (I'm pretty sure) been passed through multiple layers of PR- and lawyer-types, and she's remarkably open about posting dissenting views. I will never, ever get the whole "glass brand religion" thing, but the passion she brings to her blog puts it well above the corporate blogbog and I really enjoy her posts. Now I just wish she'd adopt weekly posting practices.
Carol Carson
Gallery blog. This lady timidly approached the warmglassers (who apparently have a reputation for feistiness) and asked for suggestions on improving her work. Then she showed pictures of her glass and blew everyone away–one of the first times I've seen the word "insouciant" defined in glass. I have one of her pieces, GirlGold, in the living room and it strikes a sassy note every time I see it. This is another one of those artists whose backstory probably gives a lot to the glass (I mean, she's got a chef husband in Vegas who made this unbelievable flapper dress out of chocolate and his team just won on Iron Chef…on TV. How cool is that). I'd love to read more about her and figure out where her art relates.
Chaney, Megan: Megan Chaney Studios
This Ocala, Florida artist combines clay and glass to make some really intriguing pieces. The blog says she's primarily doing glass jewelry, but dig into a little bit and you'll see her incorporating potmelts into ceramic wall tile, fashioning some really nice relief sculpture and a bunch of other stuff.
Cheyenne Glass
Cher (yet another warmglasser, which is what comes of asking a BBS for a list) has so much to do that you'd think she doesn't have time to develop a blogpost, let alone three or four websites and blogs with veiled references to Phil Collins. The link at the top is her professional site; she also has a really nicely personalized co-blog with her husband, and then there's the one she's just starting for her husband… uhm…when do you have time to do glass, Cher? I think my favorite is the co-blog; you get a taste of her inspirations and the story behind the work.
Terrie Corbett–In My Life
Wow. I just keep saying wow. This is a good blog from many angles, not the least of which is that she's making art I can really relate to. Terrie's blog brings you into her life as well as her work, and gives you an idea of what's going on in her head when she makes this stuff. Her work is stunning, probably one of the best uses of colored enamel on glass I've seen in awhile (Don Burt's is another, but in a style that's 180 from this). She's not trying to make it look like church glass, she's not aping pastels (which is what (to me) this most looks like), she's not playing cloisonne games; she's literally taking the medium to a new level. Wow. I could put just about any of her pieces on my wall with great pride. Wow.
Corsock Glass (and its related gallery listing site)
Based in Scotland and owned by artist Amanda J. Simmons, this is another gallery blog, one that appears primarily dedicated to sales support. Ms. Simmons' glass is unique and intriguing stuff, and I really enjoy her design choices. I'd love to see her add more info on the how and why of the work because, clearly, there's a story there.
Dani: Church artist
Dani (not sure of her real name) posts about the glasswork that she, her husband and others do for churches. It's primarily about stained glass…and about staining the glass (i.e., painting it) and firing it in a kiln…but there's also a bit of other kilnforming as well. Very interesting read. (Addendum: I'm told by EllenB that Dani's last name is Greer, just in case you'd like to have one of her windows…)
Fantasy in Glass
Just saw this one quite recently, thanks to Lani's blog, and I love it. This is a stained glass store owner who's not afraid to let it all hang out, and he has some pithy commentary on the glass industry as a whole.
Frantz Art Glass
I suspect this used to be your typical small business customer newsletter, but it's morphed into much more–a kind of inside look at a lampworker's life as well as a nice collection of tips and trips for lampworkers. There's everything from studio photography tutorials to evaluations of dichroic glass… very much worth a look if you're into beads, or maybe even if you're not.
Glass Art Society
Unfortunately I can only get you so far into the site; the blog is for members only. However, if you've a membership account, this blog will tell you about GAS happenings, events, competitions, etc.
Glass Fusing Made Easy
You wanna start my left eye twitching, title your blog something like "Glass Fusing Made Easy," which puts you somewhere between "Make big money stuffing envelopes," and "One pill gives you a fuller, firmer bust." Sure enough, this site is jam-packed with salespitches, SEO fakeouts, ads and promos for everything from fusing books to Amway-like website development tools. I don't doubt that some of the fuse-by-numbers beginners' projects will turn out well–although I can't quite understand why anybody would invest abuncha money in glassmaking equipment only to do someone else's work–but there's a fair amount of, um, imperfect knowledge here that would make me leery of using this site as a technical reference. Other places–such as WarmGlass–are a much safer bet.
Glass Quilt Collaboration Project
This was another warmglass groupthink, this time asking artists to depict the traditional elements of air, fire, water, and earth in an 8×8 glass square. No other restrictions, and 36 artists from six countries submitted squares. Thanks to tremendous work by artist Toni Johnson, it's also available as a poster, and there are rumors that they're looking for an installation site (which means I need to dig mine out of mothballs).
Glass Skulls
This has to be one of the nicest photo sequences showing a reservoir casting I've ever seen. (And I'll bet photographing all those steps added a couple of days to the process.) It's also a perfect testament to the old saying I made up awhile back: There are as many ways to cast glass as there are glass casters. A couple of things they're doing here I'm going to try 'cause they look easier than my methods. And obviously, these New Zealanders are using Gaffer. The entire blog appears to be dedicated to the making of skulls. Interesting.
Gusler, Rosanna: Wanchese Art
Rosanna Gusler, terrific kilnformer, expert glassist, and "marine finisher" who gloats better about food than anyone I've ever met, has just started this gallery blog. Her work is wonderful, and I'd love to see the backstory on the how and why.
Hammer, Brit: Glass Art & Architecture
Brit Hammer's done some very cool architectural work, and she also gives lectures and demonstrations on everything from mosaics to the business of being an artist. I gotta admit I prefer her website (I'm a sucker for great mosaic), but this is an interesting, and personalizing read.
Hanses, Christine: Christine's Fused Glass
Christine Hanses has been blogging for a couple of years now. She's mostly posting pictures of her work–a combination of jewelry and some pretty cool vessels and wall art–and what's fun is seeing the growth in the work over time.
Hotel Murano
OK, this is about a hotel, but a hotel that's about art, or more specifically, glass art. It's finishing up construction now in Tacoma, Washington. Discovered it on the Bullseye blog and it just had to be added; there are some very nice posts showcasing artists. Update: Glasswise–it's kinda gone downhill since I originally wrote this, but it's still a nice precis of what's going on in Tacoma.
Keoni, John: Keoni's Artlog
There's not a lot here yet–John may set a record for spacing out blogposts–but interesting insights into making it as a glass artist. Pictures, pictures, John!!! He's doing lifecasts. Very cool.
Glenda Kronke
This is a good example of making a blog into a website for an artist–she's using the components of the blog to start with an artist statement, then move to her collections. Her "Growth" series makes me think of lilypads, really interesting. Would love to see her talking about what inspires the work and some of the processes she goes through to make them. (Update: Ms. Kronke has moved a lot of stuff to her new website, so the blog's a bit less compelling than it used to be…but the new site is great)
Krucoff, Kathleen: Reflections of a Glass Artist
Kathleen shows up here with insightful comments every once in awhile; her blog talks about her work not only in glass but also in metalworking and jewelry making, more recent sports for her.
Lewis, Deborah: A little of this and a lot of glass
Deb Lewis got the blog bug as well, and I really enjoy the combination of precision and free-flowing organics in her "Winter's Promise" piece. She's got a nice rhythm going wth a mostly gallery blog that offers long captions describing her process and design choices.
McFadyen, Janet: Warmglass on the Beach
OK, yet another warmglasser with an interesting take on both life and glass art, and a very useful blog. Janet McFadyen of Vancouver Island Kiln-fired Glassworks uses her blog for selling and talking about her work. She's a lady after my own heart, experimenting and pushing the glass envelope (you've gotta see the Buddha she made out of gin bottles), and probably my favorite work is her witty commentary on footwear.
Something sublime from the studio of Deryn Mentock
Primarily about jewelry but with a lot of notes about glass, this is an absolutely sumptuous and inspiring blog that I could explore for hours. Beautifully done; Mentock has a blogroll that goes on for miles and obviously follows the kitchen-sink school of blog add-ons. If I had a top 10 list of artist blogs, this one would probably be on it.
Mira: Evolution of a Glass Artist
Mira calls herself a "crartist," and heaven knows what that means. But I like her work, which combines casting, staining, foiling and what I like to call stack-fusing. I also like the way she journals, and you really CAN see the evolution.
OK, so this isn't a glass blog, it's a blog about Australian and New Zealand artists and what they're up to. But there's glass in enough posts–and some very cool work in other media–to make it list-worthy.
Muth, Barbara: Mostly Glass
Barbara Muth met Mom and me in the Washington DC suburbs a couple of years ago; I'd bought into a share of acrylic french cleats she'd had made and she delivered them. We had a light lunch, talked, and I discovered she not only was a wonderful glass artist (and teacher, if you've ever read her warmglass posts) but also a delightful conversationalist. Her blog is primarily a gallery of her work (which is great), but I'd love to see her add commentary, too; this is one artist who has very worthwhile things to say.
New Zealand Glass
Thanks to a comment below by Stuart Park, here's a blog by the other side of glass art, a collector. Stuart specializes in glass art by New Zealand artists, and I was tickled to see works by a number of new faces on his blog. Thanks, Stuart!
Cynthia Oliver
Speaking of warmglassers, Cynthia Oliver is another and also a multifaceted creative, just jumping into a new career as a graphic artist and already an accomplished glassist. Her website is gorgeous and blog is a combination of glassmaking and personal journaling. Plus, she's such a talented writer she's a pleasure to read (now all she has to do is get that frequency thing down, i.e., write more).
Robin's GlassPony blog
Robin of GlassPony has a new blog she says is all my fault. Maybe so, but she's caught both the spirit and the fever pretty well, and I enjoyed looking at her work. (It would be incredibly cool, Robin, if you could translate that horse rescue painting into glass.)
Self-portraits in Glass
A bunch of warmglassers gave themselves an assignment to define themselves in kilnformed glass and-thanks to the great work by artist Cynthia Oliver–held an online exhibition by blog. Fascinating look at the many views we have of ourselves and glass.
Siopa Eile
OK, this one isn't specifically about glass, but it's an interesting experiment and it does talk about glass artists. Irish artist and craftsman Paul Mahoney has chosen ten Irish artisans to populate his the blog on his "alternative shop" (Siopa Eile means "other shop" in Irish). Some of the work is pretty, some is thought-provoking, some is stunning, and all of it is interesting.
Siyeh Glass/Glass Incarnate
Atlanta artist Brenda Griffith blogs about coffee mugs and music and making glass and making a business of glass and making books about glass. Interesting read. She's got a second website for her business, she's a good writer and a cool human being (now that I've met her). She recently opened a new glass resource center for Atlanteans and staffed it with Ernie, one of my favorite cats. What's not to like?
Stanley, Terri
Terri, another warmglasser, doesn't SAY much on this blog, but her pictures say it for her. This is primarily a gallery blog and since Terri's work is exquisite, thoughtful and meticulously developed, it's a pleasure to view.
Staton, Joseph: Suffering for my art!
Yet another warmglasser, although he hasn't been there much of late, SkinMechanic (Joseph Staton) is a fellow after my own heart when it comes to experimenting, and also a talented ceramics and sketch artist. Lovely work, and he's a blogging veteran, been at it almost as long as I have.
Steider Studios
Linda Steider lives up in the mountains above the Columbia Gorge and splits her time between making and selling glasswork and teaching others how to do it. Rumor has it she's working on a book, which oughta be interesting, and she talks about her work quite eloquently on her blog.
Tippet, Sarah: Sarah's Glass
The tagline says it all here: "Despite her love of glass fusing and art making in general, Sarah still can't keep her mouth shut. Thus she has a blog." The work, the blog, it's all over the place. Just the way I like it.
Wright, Jeff: Glass Musings
Interesting combination of the technical, philosophical, artistic and just plain folks (gee, sounds familiar) from a glass blower and caster. A good read that's information-rich, very definitely worth putting on your list.
Zemach, Havi: HavivaZ
Havi Zemach, yet another warmglasser, is an Israeli whose first medium is print. She's shifted approaches with her glass, which apparently is just starting to take off in Israel. Fascinating lady to talk to, and just starting with her site (I should know, since I helped her make it). It'll be interesting to see where she takes it.
If I haven't listed your blog yet, let me know and I'll post it. There are LOTS of glass jewelry and beadmaker blogs I haven't gotten to yet…hmmmm…may need a separate list for those as this is getting VERY long. I'm in the process of switching hosts and blog tools, so it may need to wait a month or two…


text:
The Greater Boston Real Estate Board supports a comprehensive government affairs program designed to foster a political and legal environment in which members can operate their business successfully. Thousands of bills are filed at the State House during each legislative session-many impacting the real estate industry. GBREB reviews each bill for its potential impact on our members, actively tracking and testifying on all of them. Advocacy extends to the regulatory arena, making sure that government imposed mandates and regulations are rational and cost effective. GBREB keeps members up to date on all of the issues affecting them and encourages active member involvement in the political process.
Click here for the latest Members Only information
December 1stNew smoke detector requirements when selling one and two family homes take effect Click Here
August 2016SJC clarifies Massachusetts sprinkler law for some multifamily renovations
March 2016 LEGISLATIVE ALERT!
January 2016 LEGISLATIVE ALERT!
December 2015 2015 GBREB Government Affairs Report
August, 6 2015 The Political Edge2015 is the first year of a two year legislative cycle on Beacon Hill Read More
Members only: Construction Retainage vs. Click here for a legal advisory on the new law
SJC Decisions Limits Local Fire Department Rules | May 4, 2012
New Medical Marijuana Law May Create New Obligations For Property Owners and Managers
Recent Laws & RegulationsLegislative & Regulatory AccomplishmentsGBREB Housing Platform
Find Your Elected Official Massachusetts LegislatureMassachusetts Governor
Click to Donate to the PAC
Click to Apply to become a Community Observer
SMOKE DETECTOR REGULATIONS FINALIZED New Effective Date: April 5, 2010 State regulators have finalized regulations governing the installation of smoke detectors in single family homes and certain multifamily residential buildings which have not been constructed, altered ...
The Political Edge September 2009After a quiet summer break, lawmakers will return to Beacon Hill in September with an ambitious agenda. Efforts to expand casino gambling will likely take center stage as the state still grapples with how to raise revenue. Increased media attention on a series of accidents involving elderly drivers has put new momentum behind a dangerous driving bill.
The Political Edge - June 2009After several months of political wrangling between Governor Patrick and the Legislature on a series of reform bills, taxpayers will soon face up to a billion dollars in new taxes. Patrick had made his support for a
Electronic Forms
© Greater Boston Real Estate Board 2010 All rights reserved.
Web Design and Development by Wakefly


text:
Graduate Students of Color Dinner 11/5
Tuesday, November 5, 2013 from 6:00 PM to 8:00 PM (EST)
Who's Going
San Francisco, California
London, United Kingdom
Florence, Italy
Event Details
The Graduate Students of Color Dinner Series provides an intimate opportunity for graduate students of color to hear from various faculty of color about their individual journeys and best practices for navigating the academy and other professional arenas. This program is in partnership with the Office of Graduate Student Life at the Student Resource Center.
RSVP via bit.ly/cmepevents - space is limited! Please note there are only 30 spots avaiable for the dinner, after the initial 30 slots are filled you will be put on a waitlist and notified if a spot becomes available.
Tuesday, November 5, 2013 from 6:00 PM to 8:00 PM (EST)
Add to my calendar