 				{
 					var iy : Number = j / (numRows - 1) - 0.5;
 
-					vb.push(0.5 * Math.cos(ix), iy, 0.5 * Math.sin(ix));
-					uv.push(i / (numCols - 1), 1. - j / (numRows - 1));
+					xyzUv.push(
+						0.5 * Math.cos(ix),
+						iy,
+						0.5 * Math.sin(ix)
+					);
+					
+					if (generateUVs)
+						xyzUv.push(i / (numCols - 1), 1. - j / (numRows - 1));
 				}
 			}
 

			{
				for (var jk : int = 0; jk != numRows - 1; jk++)
				{
					ib.push(ii, ii + numRows + 1, ii + 1,
							ii + numRows, ii + numRows + 1, ii++);
				}
				++ii;
			}

			super(
				new <IVertexStream>[
					VertexStream.fromPositionsAndUVs(vb, uv, streamsUsage)
				],
				new IndexStream(streamsUsage, ib)
			);
		}


	import aerys.minko.scene.node.mesh.geometry.Geometry;
	import aerys.minko.type.stream.IVertexStream;
	import aerys.minko.type.stream.IndexStream;
	import aerys.minko.type.stream.StreamUsage;
	import aerys.minko.type.stream.VertexStream;
	import aerys.minko.type.stream.format.VertexFormat;

	/**
	 * The CylinderGeometry class represents the 3D geometry of a cylinder.
	 */
	public class CylinderGeometry extends Geometry
	{
		private static const DEFAULT_NUM_COLS	: uint	= 8;
		private static const DEFAULT_NUM_ROWS	: uint	= 2;
		
		private static var _instance	: CylinderGeometry	= null;
		
		public static function get cylinderGeometry() : CylinderGeometry
		{
			return _instance || (_instance = new CylinderGeometry());
		}

		/**
		 * Creates a new CylinderMesh object.
		 */
		public function CylinderGeometry(numCols		: uint		= DEFAULT_NUM_COLS,
										 numRows		: uint		= DEFAULT_NUM_ROWS,
										 generateUVs	: Boolean	= true,
										 streamsUsage	: uint		= StreamUsage.STATIC)
		{
			var xyzUv	: Vector.<Number>	= new <Number>[];
			var indices	: Vector.<uint>		= new <uint>[];
			var ii  	: int 				= 0;

			for (var i : uint = 0; i < numCols; ++i)
			{
