# Papervision Rendering Problem (Clipping & Culling)

**URL:** <https://forum.kirupa.com/t/papervision-rendering-problem-clipping-culling/319000>\
**Category:** flash\
**Created:** [February 6, 2011, 1:55am UTC](https://forum.kirupa.com/t/papervision-rendering-problem-clipping-culling/319000 "2011-02-06T01:55:54Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![gamebeetle](https://avatars.discourse-cdn.com/v4/letter/g/9e8a1a/32.png) [@gamebeetle](https://forum.kirupa.com/u/gamebeetle)\
**Post date:** [February 6, 2011, 1:55am UTC](https://forum.kirupa.com/t/papervision-rendering-problem-clipping-culling/319000/1 "2011-02-06T01:55:54Z")

</div>

Hey Everyone, so I have a simple **rendering problem**. It seems that when I move the camera around my scene the rendering at certain points is odd. **Triangles become missing** and it seems as though its just **not working correctly**. When you move the camera beside the cube, triangles along the side of the cube go missing.

Is there a way I can turn the clipping off?

Should I use more triangles?

Is it a material/render engine/viewport problem?

What can I change here?

**Example: (Click on Flash window to use controls.)**  
[indieeddy.com/bin-debug/KillFarm.html](http://indieeddy.com/bin-debug/KillFarm.html)

**Controls:**  
W, S, A, D

**The Code:**

```auto
package 
{
	import br.com.stimuli.loading.BulkLoader;
	
	import com.greensock.*;
	
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.events.MouseEvent;
	import flash.geom.Vector3D;
	import flash.media.Sound;
	import flash.media.SoundChannel;
	
	import jiglib.geometry.*;
	import jiglib.math.*;
	import jiglib.physics.*;
	import jiglib.physics.constraint.*;
	import jiglib.plugin.papervision3d.*;
	
	import org.papervision3d.cameras.Camera3D;
	import org.papervision3d.core.utils.Mouse3D;
	import org.papervision3d.materials.*;
	import org.papervision3d.materials.shadematerials.*;
	import org.papervision3d.materials.utils.MaterialsList;
	import org.papervision3d.objects.primitives.*;
	import org.papervision3d.render.BasicRenderEngine;
	import org.papervision3d.scenes.Scene3D;
	import org.papervision3d.view.Viewport3D;
	import org.papervision3d.view.layer.ViewportLayer;
	import org.papervision3d.view.layer.util.ViewportLayerSortMode;
	import org.papervision3d.view.stats.StatsView;
	
	import src.*;

	[SWF(width="800", height="600", backgroundColor="#000000", frameRate="60")]
	public class Test extends Sprite
	{

		/*
		-----
		GAME VARs
		-----
		*/

		private var scene:Scene3D;
		private var viewport:Viewport3D;
		private var camera:Camera3D;
		private var renderEngine:BasicRenderEngine;
		private var physics:Papervision3DPhysics;
		
		public function Test()
		{
			super();
			trace( "Program Started..." );
			
			this.loadInGame();
		}
				
		public function startInGame( evt:Event ):void
		{
			scene = new Scene3D();
			physics = new Papervision3DPhysics( scene , 5 );
			Mouse3D.enabled = true;

			camera=new Camera3D();
			camera.x = 0;
			camera.y = 60;
			camera.z = 0;

			viewport = new Viewport3D();
			this.addChild(viewport);
			renderEngine = new BasicRenderEngine();
			
			var bitmapdata:BitmapData = this.bulkGameFiles.getBitmapData( "image-wall-a" );
			var shadeMateria:BitmapMaterial = new BitmapMaterial(bitmapdata);
			shadeMateria.baked = true;
			shadeMateria.precise = true;
			shadeMateria.smooth = true;
			shadeMateria.doubleSided = true;
			shadeMateria.tiled = true;
			
			var materiaList:MaterialsList = new MaterialsList();
			materiaList.addMaterial(shadeMateria, "all");
						
			var wall:Cube = new Cube( materiaList , 500, 500, 100 , 2, 2,2 );
			var wallViewport:ViewportLayer = new ViewportLayer(viewport, wall);
			viewport.containerSprite.addLayer(wallViewport);
			scene.addChild(wall);
						
			viewport.containerSprite.sortMode = ViewportLayerSortMode.INDEX_SORT;
			wallViewport.layerIndex = 1;
			
			var stats:StatsView = new StatsView( renderEngine );
			this.addChild( stats );

			stage.addEventListener( KeyboardEvent.KEY_DOWN , this.keyDownHandler );
			this.addEventListener( Event.ENTER_FRAME , render );
		}
		
		private function keyDownHandler( event:KeyboardEvent ):void
		{
			if ( event.keyCode == 87 )
			{
				camera.moveForward( 50 );
			}
			if ( event.keyCode == 65 )
			{
				camera.moveLeft( 50 );
			}
			if ( event.keyCode == 68 )
			{
				camera.moveRight( 50 );
			}
			if ( event.keyCode == 83 )
			{
				camera.moveBackward( 50 );
			}
		}
		
		private function render(e:Event):void
		{
			physics.engine.integrate(0.1);
			renderEngine.renderScene(scene, camera, viewport);
		}
	}	
}

```

## Cheers everyone,

Nick.
