drawing an adaptive 2D "grapheditor-like" grid


#1

id like to draw a 2D grid which only draws some of the real space grid, like all adaptive grid in maya graph editor or shake curve editor you know.
i really cant figure out how they do it :scream::sad::shrug:( except its function of x,y and “zoom” of the view and its a modulo thing… lol )

if someone has an idea… iwould really help me

thx in advance


#2

[font=Courier, Courier New]someone gave me this (from flipcode.com forum)
i post it here if someone is looking for
same kind of code

int layerspace = 8; // 8 lines form a mayor grid
int layermax = someconst; // How many layers you would like

float gridsize = 8; // Default grid size
float zoom = 1; // Zoom from your ortho camera

// See that more than minlinecount lines are onscreen
if (gridsize * zoom / screensize > minlinecount)
{
while (gridsize * zoom / screensize > minlinecount)
{
gridsize /= layerspace;

  // Abort if gridsize < some epsilon

}
}
else
{
// See that less than maxlinecount lines are onscreen
while (gridsize * zoom / screensize < maxlinecount)
{
gridsize *= layerspace;

// Abort if gridsize &gt; some delta

}
}

glBegin(GL_LINES);

// Render each grid layer
for (int layer = 0;
layer <= layermax;
++layer)
{
// Find on-grid position nearest to camera
int camgridx = (int)_fmodf(camposx, gridsize);
int camgridy = (int)_fmodf(camposy, gridsize);

 // Build gridextents
 int gridextents = screensize / gridsize + 1;

 glColor3fv(layercols[layer]);

 // Transform to camgrid lock position
 glTranslatei(camgridx, camgridy, 0); 

 for (int i = -gridextents;
      i &lt;= gridextents;
      ++i)
 {
     // Render all grid lines not on nexthigher layer
     if (layer == layermax ||
         abs(i + camgridx) % layerspace != 0)
     {
         glLine2i(-gridextents, i);
         glLine2i(gridextents, i);
     }

     if (layer == layermax ||
         abs(i + camgridy) % layerspace != 0)
     {
         glLine2i(i, -gridextents);
         glLine2i(i, gridextents);
     }
 }

// Move on to next grid size
gridsize *= layerspace;

}

glEnd();[/font]


#3

This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.