I am almost to the point of going crazy. I was going to write a notecard to a Linden, but I've been knocked out of SL for reasons unknown, so I'll have to ask here.
In my infinite lack of wisdom, I decided to start working on a project where I replace the heightmap terrain in Second Life with one based on voxels. To get to the core of the reasoning behind this switch so I don't spend too much time on it: * Voxel-based land allows creation of overhangs/caves/floating chunks of land (not possible with heightmaps) * Also adds the ability to handle up to 255 terrain materials (textures, eventually detail shaders) instead of 4, and the materials are placed where desired instead of at fractional heights. I am working on the rendering code in the SL viewer at the moment, having completed the server-side code and some of the client-side packet-handling classes. However, I have zero familiarity with OpenGL, so bear with me. My viewer needs to construct a terrain surface (a mesh) for display. I have completed an LLViewerObject to this end, except for: ::getGeometry(LLStrider<LLVector3> &verticesp, LLStrider<LLVector3> &normalsp, LLStrider<LLColor4U> &colorsp, LLStrider<LLVector2> &texCoords0p, LLStrider<LLVector2> &texCoords1p, LLStrider<U16> &indicesp) What is confusing me is indicesp. I think it has something to do with connecting vertices, but I'm not sure how. The example code I am working with uses a mess of lookup tables in the following loop for each voxel: //Draw the triangles that were found. There can be up to five per cube for(iTriangle = 0; iTriangle < 5; iTriangle++) { if(a2iTriangleConnectionTable[iFlagIndex][3*iTriangle] < 0) break; for(iCorner = 0; iCorner < 3; iCorner++) { iVertex = a2iTriangleConnectionTable[iFlagIndex][3*iTriangle+iCorner]; vGetColor(sColor, asEdgeVertex[iVertex], asEdgeNorm[iVertex]); glColor4f(sColor.fX, sColor.fY, sColor.fZ, 0.6); glNormal3f(asEdgeNorm[iVertex].fX, asEdgeNorm[iVertex].fY, asEdgeNorm[iVertex].fZ); glVertex3f(asEdgeVertex[iVertex].fX, asEdgeVertex[iVertex].fY, asEdgeVertex[iVertex].fZ); } } Can anyone give me any pointers on getting this converted? Thanks. Rob _______________________________________________ Policies and (un)subscribe information available here: http://wiki.secondlife.com/wiki/OpenSource-Dev Please read the policies before posting to keep unmoderated posting privileges