- Home
- Products
- Integration
- Tutorial
- Barcode FAQ
- Purchase
- Company
SE TTIN G UP DIFFER ENT CA MERA MODE S IN YOUR 3 D WORLD in Word
CHAPTER 2 SE TTIN G UP DIFFER ENT CA MERA MODE S IN YOUR 3 D WORLD Creating ECC200 In None Using Barcode generator for Microsoft Word Control to generate, create Data Matrix ECC200 image in Word applications. www.OnBarcode.comCode 128 Code Set C Maker In None Using Barcode generator for Office Word Control to generate, create USS Code 128 image in Word applications. www.OnBarcode.comA quadtree is a simplified version of an octree. A quad needs to be divided only into four smaller quads, while an octree node needs to be divided into eight child cubes. An octree also needs to keep track of the position of all objects inside it, while a quadtree doesn t have to deal with this. Generate Barcode In None Using Barcode drawer for Word Control to generate, create Barcode image in Office Word applications. www.OnBarcode.comECC200 Creator In None Using Barcode generator for Microsoft Word Control to generate, create DataMatrix image in Microsoft Word applications. www.OnBarcode.comHow It Works
Encode UPC Code In None Using Barcode drawer for Office Word Control to generate, create UPC Code image in Office Word applications. www.OnBarcode.comCreating EAN13 In None Using Barcode generator for Office Word Control to generate, create GTIN - 13 image in Office Word applications. www.OnBarcode.comCreate a new class, which will represent one quad, a node of your quadtree: namespace BookCode { class QTNode { private BoundingBox nodeBoundingBox; private private private private private private private private private private private private bool isEndNode; QTNode nodeUL; QTNode nodeUR; QTNode nodeLL; QTNode nodeLR; int width; int height; GraphicsDevice device; BasicEffect basicEffect; VertexBuffer nodeVertexBuffer; IndexBuffer nodeIndexBuffer; Texture2D grassTexture; Denso QR Bar Code Printer In None Using Barcode drawer for Microsoft Word Control to generate, create QR Code image in Office Word applications. www.OnBarcode.comUSD - 8 Creator In None Using Barcode maker for Office Word Control to generate, create Code 11 image in Word applications. www.OnBarcode.compublic static int NodesRendered; } } Let s discuss the variables each node will need to remember. The first one, the bounding box, is quite important. It is the smallest box, so all vertices of the current node are inside the box. Each frame, you will check whether the current box is in sight of the camera. The current node should forward the Draw call to its child nodes only if this is true. When creating a quadtree, you should specify the maximum size of the nodes. The isEndNode variable will store whether the current node is larger than this maximum size. If it is larger, the node should create four child nodes, stored in nodeUL to nodeLR, where UL stands for UpperLeft and LR stands for LowerRight. If the node has no child nodes, the node will actually have to draw some triangles when isEndNode is true. To do this, you will need to know its width and height. You ll also need a link to the graphics device and a working BasicEffect. Furthermore, you ll need a VertexBuffer and an IndexBuffer together with a Texture to render the triangles to the screen (see recipe 5-8). A node is created by calling its constructor method, like this one: Data Matrix 2d Barcode Creation In Objective-C Using Barcode encoder for iPhone Control to generate, create Data Matrix 2d barcode image in iPhone applications. www.OnBarcode.comData Matrix ECC200 Encoder In None Using Barcode creation for Software Control to generate, create Data Matrix image in Software applications. www.OnBarcode.comCHAPTER 2 SE TTIN G UP DIFFE RENT CA MERA MODE S IN YOUR 3 D WORLD
Encode GTIN - 128 In VB.NET Using Barcode creator for Visual Studio .NET Control to generate, create EAN / UCC - 13 image in VS .NET applications. www.OnBarcode.comDrawing Code 3 Of 9 In None Using Barcode printer for Software Control to generate, create ANSI/AIM Code 39 image in Software applications. www.OnBarcode.compublic QTNode(VertexPositionNormalTexture[,] vertexArray, GraphicsDevice device, Texture2D grassTexture, int maxSize) { this.device = device; this.grassTexture = grassTexture; basicEffect = new BasicEffect(device, null); width = vertexArray.GetLength(0); height = vertexArray.GetLength(1); nodeBoundingBox = CreateBoundingBox(vertexArray); isEndNode = width <= maxSize; isEndNode &= height <= maxSize; if (isEndNode) { VertexPositionNormalTexture[] vertices = Reshape2Dto1D<VertexPositionNormalTexture>(vertexArray); int[] indices = TerrainUtils.CreateTerrainIndices(width, height); TerrainUtils.CreateBuffers(vertices, indices, out nodeVertexBuffer, out nodeIndexBuffer, device); } else { CreateChildNodes(vertexArray, maxSize); } } A node needs a 2D array containing all of its vertices, together with a link to the device and texture, as well as the size after which the nodes should stop splitting themselves into child nodes. A link to the device and texture are immediately stored inside the node. The width and height of the current node are extracted from the 2D array containing the vertices. Given all vertices of this node, you calculate the bounding box using the CreateBoundingBox method that you ll define in a minute. Finally, you check whether the width and height of the current node are smaller than the maximum size. If this is the case, you create a valid VertexBuffer and IndexBuffer from the vertices of the current node. If the node is larger than the maximum size, you split the node into four child nodes. Encode Data Matrix ECC200 In None Using Barcode creator for Online Control to generate, create Data Matrix 2d barcode image in Online applications. www.OnBarcode.comCode 39 Full ASCII Creator In Visual Basic .NET Using Barcode creation for Visual Studio .NET Control to generate, create Code 3/9 image in VS .NET applications. www.OnBarcode.comCreating the BoundingBox
Print GS1-128 In None Using Barcode generator for Software Control to generate, create GS1 128 image in Software applications. www.OnBarcode.comDraw EAN / UCC - 13 In Visual Basic .NET Using Barcode generation for .NET framework Control to generate, create EAN 13 image in VS .NET applications. www.OnBarcode.comGiven the 2D array containing the vertices, you can easily store all their positions inside a list. The CreateFromPoints method of the BoundingBox class can generate a BoundingBox from this list of positions: private BoundingBox CreateBoundingBox(VertexPositionNormalTexture[,] vertexArray) { Encoding PDF417 In Java Using Barcode drawer for Java Control to generate, create PDF417 image in Java applications. www.OnBarcode.comGS1 - 12 Reader In None Using Barcode reader for Software Control to read, scan read, scan image in Software applications. www.OnBarcode.comCHAPTER 2 SE TTIN G UP DIFFER ENT CA MERA MODE S IN YOUR 3 D WORLD
Creating Barcode In Java Using Barcode printer for Android Control to generate, create Barcode image in Android applications. www.OnBarcode.comBarcode Encoder In Java Using Barcode generator for Android Control to generate, create Barcode image in Android applications. www.OnBarcode.comList<Vector3> pointList = new List<Vector3>(); foreach (VertexPositionNormalTexture vertex in vertexArray) pointList.Add(vertex.Position); BoundingBox nodeBoundingBox = BoundingBox.CreateFromPoints(pointList); return nodeBoundingBox; } Generating the VertexBuffer and IndexBuffer
You can use the CreateVertices and CreateIndices methods explained in recipe 5-8, which create a VertexBuffer and an IndexBuffer given a 1D array of vertices. This means you ll have to reshape your 2D array into a 1D array first, which you can do using this method: private { int int T[] T[] Reshape2Dto1D<T>(T[,] array2D) width = array2D.GetLength(0); height = array2D.GetLength(1); array1D = new T[width * height]; int i = 0; for (int z = 0; z < height; z++) for (int x = 0; x < width; x++) array1D[i++] = array2D[x, z]; return array1D; } This generic method accepts a 2D array of a type T (VertexPositionNormalTexture in your case), finds its size, and copies its contents into a 1D array.
|
|