Gamestudio Links
Zorro Links
Newest Posts
Trading Journey
by howardR. 04/28/24 09:55
basik85278
by basik85278. 04/28/24 08:56
Zorro Trader GPT
by TipmyPip. 04/27/24 13:50
Help with plotting multiple ZigZag
by M_D. 04/26/24 20:03
Data from CSV not parsed correctly
by jcl. 04/26/24 11:18
M1 Oversampling
by jcl. 04/26/24 11:12
Why Zorro supports up to 72 cores?
by jcl. 04/26/24 11:09
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
1 registered members (blaurock), 750 guests, and 3 spiders.
Key: Admin, Global Mod, Mod
Newest Members
wandaluciaia, Mega_Rod, EternallyCurious, howardR, 11honza11
19049 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
[solved] Marching cubes not working #388732
12/06/11 23:40
12/06/11 23:40
Joined: Oct 2004
Posts: 4,134
Netherlands
Joozey Offline OP
Expert
Joozey  Offline OP
Expert

Joined: Oct 2004
Posts: 4,134
Netherlands
Hello all,

Some time ago I tried implementing marching cubes in 3dgs, and it only worked half. I couldn't find the problem and went off doing something else. Now I thought I'd give it another shot; exactly the same problem:



At least the holes are ordered tongue. I have culling on 1, so the faces are all visible. There are two faces drawn on the top, but one of its vertices is wrong, causing a face overlap and a gap.

I used the code from this site: http://paulbourke.net/geometry/polygonise which seems to be used everywhere, so I doubt it's a flaw in the tables. What could be messed up between that code and 3dgs?

I create a new face with 3 unique (not merged) vertices for every triangle returned by the Polygonise function, stuff it in a new Mesh and set it to an entity.
Code translated to lite-c:
Code:
typedef VECTOR XYZ;

typedef struct {
   XYZ* p[3];
} TRIANGLE;

typedef struct {
   XYZ p[8];
   double val[8];
} GRIDCELL;



/*
   Linearly interpolate the position where an isosurface cuts
   an edge between two vertices, each with their own scalar value
*/
XYZ* VertexInterp( double isolevel, XYZ* p1, XYZ* p2, double valp1, double valp2 )
{
   double mu;
   XYZ* p = vector(0,0,0);

   if (abs(isolevel-valp1) < 0.00001)
      return(p1);
   if (abs(isolevel-valp2) < 0.00001)
      return(p2);
   if (abs(valp1-valp2) < 0.00001)
      return(p1);
   mu = (isolevel - valp1) / (valp2 - valp1);
   p->x = p1->x + mu * (p2->x - p1->x);
   p->y = p1->y + mu * (p2->y - p1->y);
   p->z = p1->z + mu * (p2->z - p1->z);

   return(p);
}



int edgeTable[256]={
0x0  , 0x109, 0x203, 0x30a, 0x406, 0x50f, 0x605, 0x70c,
0x80c, 0x905, 0xa0f, 0xb06, 0xc0a, 0xd03, 0xe09, 0xf00,
0x190, 0x99 , 0x393, 0x29a, 0x596, 0x49f, 0x795, 0x69c,
0x99c, 0x895, 0xb9f, 0xa96, 0xd9a, 0xc93, 0xf99, 0xe90,
0x230, 0x339, 0x33 , 0x13a, 0x636, 0x73f, 0x435, 0x53c,
0xa3c, 0xb35, 0x83f, 0x936, 0xe3a, 0xf33, 0xc39, 0xd30,
0x3a0, 0x2a9, 0x1a3, 0xaa , 0x7a6, 0x6af, 0x5a5, 0x4ac,
0xbac, 0xaa5, 0x9af, 0x8a6, 0xfaa, 0xea3, 0xda9, 0xca0,
0x460, 0x569, 0x663, 0x76a, 0x66 , 0x16f, 0x265, 0x36c,
0xc6c, 0xd65, 0xe6f, 0xf66, 0x86a, 0x963, 0xa69, 0xb60,
0x5f0, 0x4f9, 0x7f3, 0x6fa, 0x1f6, 0xff , 0x3f5, 0x2fc,
0xdfc, 0xcf5, 0xfff, 0xef6, 0x9fa, 0x8f3, 0xbf9, 0xaf0,
0x650, 0x759, 0x453, 0x55a, 0x256, 0x35f, 0x55 , 0x15c,
0xe5c, 0xf55, 0xc5f, 0xd56, 0xa5a, 0xb53, 0x859, 0x950,
0x7c0, 0x6c9, 0x5c3, 0x4ca, 0x3c6, 0x2cf, 0x1c5, 0xcc ,
0xfcc, 0xec5, 0xdcf, 0xcc6, 0xbca, 0xac3, 0x9c9, 0x8c0,
0x8c0, 0x9c9, 0xac3, 0xbca, 0xcc6, 0xdcf, 0xec5, 0xfcc,
0xcc , 0x1c5, 0x2cf, 0x3c6, 0x4ca, 0x5c3, 0x6c9, 0x7c0,
0x950, 0x859, 0xb53, 0xa5a, 0xd56, 0xc5f, 0xf55, 0xe5c,
0x15c, 0x55 , 0x35f, 0x256, 0x55a, 0x453, 0x759, 0x650,
0xaf0, 0xbf9, 0x8f3, 0x9fa, 0xef6, 0xfff, 0xcf5, 0xdfc,
0x2fc, 0x3f5, 0xff , 0x1f6, 0x6fa, 0x7f3, 0x4f9, 0x5f0,
0xb60, 0xa69, 0x963, 0x86a, 0xf66, 0xe6f, 0xd65, 0xc6c,
0x36c, 0x265, 0x16f, 0x66 , 0x76a, 0x663, 0x569, 0x460,
0xca0, 0xda9, 0xea3, 0xfaa, 0x8a6, 0x9af, 0xaa5, 0xbac,
0x4ac, 0x5a5, 0x6af, 0x7a6, 0xaa , 0x1a3, 0x2a9, 0x3a0,
0xd30, 0xc39, 0xf33, 0xe3a, 0x936, 0x83f, 0xb35, 0xa3c,
0x53c, 0x435, 0x73f, 0x636, 0x13a, 0x33 , 0x339, 0x230,
0xe90, 0xf99, 0xc93, 0xd9a, 0xa96, 0xb9f, 0x895, 0x99c,
0x69c, 0x795, 0x49f, 0x596, 0x29a, 0x393, 0x99 , 0x190,
0xf00, 0xe09, 0xd03, 0xc0a, 0xb06, 0xa0f, 0x905, 0x80c,
0x70c, 0x605, 0x50f, 0x406, 0x30a, 0x203, 0x109, 0x0   };


int triTable[4096] = 
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, 8, 3, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
9, 2, 10, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2, 8, 3, 2, 10, 8, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1,
3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, 11, 2, 8, 11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1, 9, 0, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1, 11, 2, 1, 9, 11, 9, 8, 11, -1, -1, -1, -1, -1, -1, -1,
3, 10, 1, 11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, 10, 1, 0, 8, 10, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1,
3, 9, 0, 3, 11, 9, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1,
9, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, 1, 9, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1,
1, 2, 10, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3, 4, 7, 3, 0, 4, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1,
9, 2, 10, 9, 0, 2, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1,
2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1,
8, 4, 7, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
11, 4, 7, 11, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1,
9, 0, 1, 8, 4, 7, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1,
4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, -1, -1, -1, -1,
3, 10, 1, 3, 11, 10, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1,
1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, -1, -1, -1, -1,
4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, -1, -1, -1, -1,
4, 7, 11, 4, 11, 9, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1,
9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
9, 5, 4, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1,
1, 2, 10, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3, 0, 8, 1, 2, 10, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1,
5, 2, 10, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1,
2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1,
9, 5, 4, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, 11, 2, 0, 8, 11, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1,
0, 5, 4, 0, 1, 5, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1,
2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, -1, -1, -1, -1,
10, 3, 11, 10, 1, 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1,
4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, -1, -1, -1, -1,
5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, -1, -1, -1, -1,
5, 4, 8, 5, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1,
9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1,
0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1,
1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
9, 7, 8, 9, 5, 7, 10, 1, 2, -1, -1, -1, -1, -1, -1, -1,
10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, -1, -1, -1, -1,
8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, -1, -1, -1, -1,
2, 10, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1,
7, 9, 5, 7, 8, 9, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1,
9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, -1, -1, -1, -1,
2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, -1, -1, -1, -1,
11, 2, 1, 11, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1,
9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, -1, -1, -1, -1,
5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, -1,
11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, -1,
11, 10, 5, 7, 11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, 8, 3, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
9, 0, 1, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1, 8, 3, 1, 9, 8, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1,
1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1, 6, 5, 1, 2, 6, 3, 0, 8, -1, -1, -1, -1, -1, -1, -1,
9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1,
5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1,
2, 3, 11, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
11, 0, 8, 11, 2, 0, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1,
0, 1, 9, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1,
5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, -1, -1, -1, -1,
6, 3, 11, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1,
0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, -1, -1, -1, -1,
3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1,
6, 5, 9, 6, 9, 11, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1,
5, 10, 6, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4, 3, 0, 4, 7, 3, 6, 5, 10, -1, -1, -1, -1, -1, -1, -1,
1, 9, 0, 5, 10, 6, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1,
10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, -1, -1, -1, -1,
6, 1, 2, 6, 5, 1, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1,
1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, -1, -1, -1, -1,
8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, -1, -1, -1, -1,
7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, -1,
3, 11, 2, 7, 8, 4, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1,
5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, -1, -1, -1, -1,
0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1,
9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, -1,
8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, -1, -1, -1, -1,
5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, -1,
0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, -1,
6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, -1, -1, -1, -1,
10, 4, 9, 6, 4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4, 10, 6, 4, 9, 10, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1,
10, 0, 1, 10, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1,
8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, -1, -1, -1, -1,
1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1,
3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, -1, -1, -1, -1,
0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1,
10, 4, 9, 10, 6, 4, 11, 2, 3, -1, -1, -1, -1, -1, -1, -1,
0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, -1, -1, -1, -1,
3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, -1, -1, -1, -1,
6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, -1,
9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, -1, -1, -1, -1,
8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, -1,
3, 11, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1,
6, 4, 8, 11, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7, 10, 6, 7, 8, 10, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1,
0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, -1, -1, -1, -1,
10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1,
10, 6, 7, 10, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1,
1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1,
2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, -1,
7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1,
7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, -1, -1, -1, -1,
2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, -1,
1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, -1,
11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, -1, -1, -1, -1,
8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6, -1,
0, 9, 1, 11, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, -1, -1, -1, -1,
7, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3, 0, 8, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, 1, 9, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8, 1, 9, 8, 3, 1, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1,
10, 1, 2, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1, 2, 10, 3, 0, 8, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1,
2, 9, 0, 2, 10, 9, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1,
6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, -1, -1, -1, -1,
7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1,
2, 7, 6, 2, 3, 7, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1,
1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1,
10, 7, 6, 10, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1,
10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1,
0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, -1, -1, -1, -1,
7, 6, 10, 7, 10, 8, 8, 10, 9, -1, -1, -1, -1, -1, -1, -1,
6, 8, 4, 11, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3, 6, 11, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1,
8, 6, 11, 8, 4, 6, 9, 0, 1, -1, -1, -1, -1, -1, -1, -1,
9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, -1, -1, -1, -1,
6, 8, 4, 6, 11, 8, 2, 10, 1, -1, -1, -1, -1, -1, -1, -1,
1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, -1, -1, -1, -1,
4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, -1, -1, -1, -1,
10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, -1,
8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1,
0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, -1, -1, -1, -1,
1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1,
8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, -1, -1, -1, -1,
10, 1, 0, 10, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1,
4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, -1,
10, 9, 4, 6, 10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4, 9, 5, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, 8, 3, 4, 9, 5, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1,
5, 0, 1, 5, 4, 0, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1,
11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, -1, -1, -1, -1,
9, 5, 4, 10, 1, 2, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1,
6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, -1, -1, -1, -1,
7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, -1, -1, -1, -1,
3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, -1,
7, 2, 3, 7, 6, 2, 5, 4, 9, -1, -1, -1, -1, -1, -1, -1,
9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, -1, -1, -1, -1,
3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, -1, -1, -1, -1,
6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, -1,
9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, -1, -1, -1, -1,
1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, -1,
4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, -1,
7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, -1, -1, -1, -1,
6, 9, 5, 6, 11, 9, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1,
3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1,
0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, -1, -1, -1, -1,
6, 11, 3, 6, 3, 5, 5, 3, 1, -1, -1, -1, -1, -1, -1, -1,
1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, -1, -1, -1, -1,
0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, -1,
11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, -1,
6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3, -1, -1, -1, -1,
5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1,
9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1,
1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, -1,
1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, -1,
10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0, -1, -1, -1, -1,
0, 3, 8, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
10, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
11, 5, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
11, 5, 10, 11, 7, 5, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1,
5, 11, 7, 5, 10, 11, 1, 9, 0, -1, -1, -1, -1, -1, -1, -1,
10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, -1, -1, -1, -1,
11, 1, 2, 11, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1,
0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, -1, -1, -1, -1,
9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, -1, -1, -1, -1,
7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, -1,
2, 5, 10, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1,
8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, -1, -1, -1, -1,
9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, -1, -1, -1, -1,
9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, -1,
1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1,
9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1,
9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5, 8, 4, 5, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1,
5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, -1, -1, -1, -1,
0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, -1, -1, -1, -1,
10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, -1,
2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, -1, -1, -1, -1,
0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, -1,
0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, -1,
9, 4, 5, 2, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1,
5, 10, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1,
3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9, -1,
5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2, -1, -1, -1, -1,
8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1,
0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5, -1, -1, -1, -1,
9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4, 11, 7, 4, 9, 11, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1,
0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, -1, -1, -1, -1,
1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, -1, -1, -1, -1,
3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, -1,
4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, -1, -1, -1, -1,
9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, -1,
11, 7, 4, 11, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1,
11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, -1, -1, -1, -1,
2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1,
9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, -1,
3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, -1,
1, 10, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4, 9, 1, 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1,
4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, -1, -1, -1, -1,
4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
9, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3, 0, 9, 3, 9, 11, 11, 9, 10, -1, -1, -1, -1, -1, -1, -1,
0, 1, 10, 0, 10, 8, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1,
3, 1, 10, 11, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1, 2, 11, 1, 11, 9, 9, 11, 8, -1, -1, -1, -1, -1, -1, -1,
3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, -1, -1, -1, -1,
0, 2, 11, 8, 0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2, 3, 8, 2, 8, 10, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1,
9, 10, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, -1, -1, -1, -1,
1, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
};

/*
int triTable[4096] =
{
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 0,  8,  3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 0,  1,  9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 1,  8,  3,  9,  8,  1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 1,  2,  10,-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 0,  8,  3,  1,  2,  10,-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 9,  2,  10, 0,  2,  9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 2,  8,  3,  2,  10, 8,  10, 9,  8, -1, -1, -1, -1, -1, -1, -1,
 3,  11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 0,  11, 2,  8,  11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 1,  9,  0,  2,  3,  11,-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 1,  11, 2,  1,  9,  11, 9,  8,  11,-1, -1, -1, -1, -1, -1, -1,
 3,  10, 1,  11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 0,  10, 1,  0,  8,  10, 8,  11, 10,-1, -1, -1, -1, -1, -1, -1,
 3,  9,  0,  3,  11, 9,  11, 10, 9, -1, -1, -1, -1, -1, -1, -1,
 9,  8,  10, 10, 8,  11,-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 4,  7,  8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 4,  3,  0,  7,  3,  4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 0,  1,  9,  8,  4,  7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 4,  1,  9,  4,  7,  1,  7,  3,  1, -1, -1, -1, -1, -1, -1, -1,
 1,  2,  10, 8,  4,  7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 3,  4,  7,  3,  0,  4,  1,  2,  10,-1, -1, -1, -1, -1, -1, -1,
 9,  2,  10, 9,  0,  2,  8,  4,  7, -1, -1, -1, -1, -1, -1, -1,
 2,  10, 9,  2,  9,  7,  2,  7,  3,  7,  9,  4, -1, -1, -1, -1,
 8,  4,  7,  3,  11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 11, 4,  7,  11, 2,  4,  2,  0,  4, -1, -1, -1, -1, -1, -1, -1,
 9,  0,  1,  8,  4,  7,  2,  3,  11,-1, -1, -1, -1, -1, -1, -1,
 4,  7,  11, 9,  4,  11, 9,  11, 2,  9,  2,  1, -1, -1, -1, -1,
 3,  10, 1,  3,  11, 10, 7,  8,  4, -1, -1, -1, -1, -1, -1, -1,
 1,  11, 10, 1,  4,  11, 1,  0,  4,  7,  11, 4, -1, -1, -1, -1,
 4,  7,  8,  9,  0,  11, 9,  11, 10, 11, 0,  3, -1, -1, -1, -1,
 4,  7,  11, 4,  11, 9,  9,  11, 10,-1, -1, -1, -1, -1, -1, -1,
 9,  5,  4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 9,  5,  4,  0,  8,  3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 0,  5,  4,  1,  5,  0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 8,  5,  4,  8,  3,  5,  3,  1,  5, -1, -1, -1, -1, -1, -1, -1,
 1,  2,  10, 9,  5,  4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 3,  0,  8,  1,  2,  10, 4,  9,  5, -1, -1, -1, -1, -1, -1, -1,
 5,  2,  10, 5,  4,  2,  4,  0,  2, -1, -1, -1, -1, -1, -1, -1,
 2,  10, 5,  3,  2,  5,  3,  5,  4,  3,  4,  8, -1, -1, -1, -1,
 9,  5,  4,  2,  3,  11,-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 0,  11, 2,  0,  8,  11, 4,  9,  5, -1, -1, -1, -1, -1, -1, -1,
 0,  5,  4,  0,  1,  5,  2,  3,  11,-1, -1, -1, -1, -1, -1, -1,
 2,  1,  5,  2,  5,  8,  2,  8,  11, 4,  8,  5, -1, -1, -1, -1,
 10, 3,  11, 10, 1,  3,  9,  5,  4, -1, -1, -1, -1, -1, -1, -1,
 4,  9,  5,  0,  8,  1,  8,  10, 1,  8,  11, 10,-1, -1, -1, -1,
 5,  4,  0,  5,  0,  11, 5,  11, 10, 11, 0,  3, -1, -1, -1, -1,
 5,  4,  8,  5,  8,  10, 10, 8,  11,-1, -1, -1, -1, -1, -1, -1,
 9,  7,  8,  5,  7,  9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 9,  3,  0,  9,  5,  3,  5,  7,  3, -1, -1, -1, -1, -1, -1, -1,
 0,  7,  8,  0,  1,  7,  1,  5,  7, -1, -1, -1, -1, -1, -1, -1,
 1,  5,  3,  3,  5,  7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 9,  7,  8,  9,  5,  7,  10, 1,  2, -1, -1, -1, -1, -1, -1, -1,
 10, 1,  2,  9,  5,  0,  5,  3,  0,  5,  7,  3, -1, -1, -1, -1,
 8,  0,  2,  8,  2,  5,  8,  5,  7,  10, 5,  2, -1, -1, -1, -1,
 2,  10, 5,  2,  5,  3,  3,  5,  7, -1, -1, -1, -1, -1, -1, -1,
 7,  9,  5,  7,  8,  9,  3,  11, 2, -1, -1, -1, -1, -1, -1, -1,
 9,  5,  7,  9,  7,  2,  9,  2,  0,  2,  7,  11,-1, -1, -1, -1,
 2,  3,  11, 0,  1,  8,  1,  7,  8,  1,  5,  7, -1, -1, -1, -1,
 11, 2,  1,  11, 1,  7,  7,  1,  5, -1, -1, -1, -1, -1, -1, -1,
 9,  5,  8,  8,  5,  7,  10, 1,  3,  10, 3,  11,-1, -1, -1, -1,
 5,  7,  0,  5,  0,  9,  7,  11, 0,  1,  0,  10, 11, 10, 0, -1,
 11, 10, 0,  11, 0,  3,  10, 5,  0,  8,  0,  7,  5,  7,  0, -1,
 11, 10, 5,  7,  11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 10, 6,  5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 0,  8,  3,  5,  10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 9,  0,  1,  5,  10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 1,  8,  3,  1,  9,  8,  5,  10, 6, -1, -1, -1, -1, -1, -1, -1,
 1,  6,  5,  2,  6,  1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 1,  6,  5,  1,  2,  6,  3,  0,  8, -1, -1, -1, -1, -1, -1, -1,
 9,  6,  5,  9,  0,  6,  0,  2,  6, -1, -1, -1, -1, -1, -1, -1,
 5,  9,  8,  5,  8,  2,  5,  2,  6,  3,  2,  8, -1, -1, -1, -1,
 2,  3,  11, 10, 6,  5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 11, 0,  8,  11, 2,  0,  10, 6,  5, -1, -1, -1, -1, -1, -1, -1,
 0,  1,  9,  2,  3,  11, 5,  10, 6, -1, -1, -1, -1, -1, -1, -1,
 5,  10, 6,  1,  9,  2,  9,  11, 2,  9,  8,  11,-1, -1, -1, -1,
 6,  3,  11, 6,  5,  3,  5,  1,  3, -1, -1, -1, -1, -1, -1, -1,
 0,  8,  11, 0,  11, 5,  0,  5,  1,  5,  11, 6, -1, -1, -1, -1,
 3,  11, 6,  0,  3,  6,  0,  6,  5,  0,  5,  9, -1, -1, -1, -1,
 6,  5,  9,  6,  9,  11, 11, 9,  8, -1, -1, -1, -1, -1, -1, -1,
 5,  10, 6,  4,  7,  8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 4,  3,  0,  4,  7,  3,  6,  5,  10,-1, -1, -1, -1, -1, -1, -1,
 1,  9,  0,  5,  10, 6,  8,  4,  7, -1, -1, -1, -1, -1, -1, -1,
 10, 6,  5,  1,  9,  7,  1,  7,  3,  7,  9,  4, -1, -1, -1, -1,
 6,  1,  2,  6,  5,  1,  4,  7,  8, -1, -1, -1, -1, -1, -1, -1,
 1,  2,  5,  5,  2,  6,  3,  0,  4,  3,  4,  7, -1, -1, -1, -1,
 8,  4,  7,  9,  0,  5,  0,  6,  5,  0,  2,  6, -1, -1, -1, -1,
 7,  3,  9,  7,  9,  4,  3,  2,  9,  5,  9,  6,  2,  6,  9, -1,
 3,  11, 2,  7,  8,  4,  10, 6,  5, -1, -1, -1, -1, -1, -1, -1,
 5,  10, 6,  4,  7,  2,  4,  2,  0,  2,  7,  11,-1, -1, -1, -1,
 0,  1,  9,  4,  7,  8,  2,  3,  11, 5,  10, 6, -1, -1, -1, -1,
 9,  2,  1,  9,  11, 2,  9,  4,  11, 7,  11, 4,  5,  10, 6, -1,
 8,  4,  7,  3,  11, 5,  3,  5,  1,  5,  11, 6, -1, -1, -1, -1,
 5,  1,  11, 5,  11, 6,  1,  0,  11, 7,  11, 4,  0,  4,  11,-1,
 0,  5,  9,  0,  6,  5,  0,  3,  6,  11, 6,  3,  8,  4,  7, -1,
 6,  5,  9,  6,  9,  11, 4,  7,  9,  7,  11, 9, -1, -1, -1, -1,
 10, 4,  9,  6,  4,  10,-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 4,  10, 6,  4,  9,  10, 0,  8,  3, -1, -1, -1, -1, -1, -1, -1,
 10, 0,  1,  10, 6,  0,  6,  4,  0, -1, -1, -1, -1, -1, -1, -1, 
 8,  3,  1,  8,  1,  6,  8,  6,  4,  6,  1,  10,-1, -1, -1, -1,
 1,  4,  9,  1,  2,  4,  2,  6,  4, -1, -1, -1, -1, -1, -1, -1,
 3,  0,  8,  1,  2,  9,  2,  4,  9,  2,  6,  4, -1, -1, -1, -1,
 0,  2,  4,  4,  2,  6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 8,  3,  2,  8,  2,  4,  4,  2,  6, -1, -1, -1, -1, -1, -1, -1,
 10, 4,  9,  10, 6,  4,  11, 2,  3, -1, -1, -1, -1, -1, -1, -1,
 0,  8,  2,  2,  8,  11, 4,  9,  10, 4,  10, 6, -1, -1, -1, -1,
 3,  11, 2,  0,  1,  6,  0,  6,  4,  6,  1,  10,-1, -1, -1, -1,
 6,  4,  1,  6,  1,  10, 4,  8,  1,  2,  1,  11, 8,  11, 1, -1,
 9,  6,  4,  9,  3,  6,  9,  1,  3,  11, 6,  3, -1, -1, -1, -1,
 8,  11, 1,  8,  1,  0,  11, 6,  1,  9,  1,  4,  6,  4,  1, -1,
 3,  11, 6,  3,  6,  0,  0,  6,  4, -1, -1, -1, -1, -1, -1, -1,
 6,  4,  8,  11, 6,  8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 7,  10, 6,  7,  8,  10, 8,  9,  10,-1, -1, -1, -1, -1, -1, -1,
 0,  7,  3,  0,  10, 7,  0,  9,  10, 6,  7,  10,-1, -1, -1, -1,
 10, 6,  7,  1,  10, 7,  1,  7,  8,  1,  8,  0, -1, -1, -1, -1,
 10, 6,  7,  10, 7,  1,  1,  7,  3, -1, -1, -1, -1, -1, -1, -1,
 1,  2,  6,  1,  6,  8,  1,  8,  9,  8,  6,  7, -1, -1, -1, -1,
 2,  6,  9,  2,  9,  1,  6,  7,  9,  0,  9,  3,  7,  3,  9, -1,
 7,  8,  0,  7,  0,  6,  6,  0,  2, -1, -1, -1, -1, -1, -1, -1,
 7,  3,  2,  6,  7,  2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 2,  3,  11, 10, 6,  8,  10, 8,  9,  8,  6,  7, -1, -1, -1, -1,
 2,  0,  7,  2,  7,  11, 0,  9,  7,  6,  7,  10, 9,  10, 7, -1,
 1,  8,  0,  1,  7,  8,  1,  10, 7,  6,  7,  10, 2,  3,  11,-1,
 11, 2,  1,  11, 1,  7,  10, 6,  1,  6,  7,  1, -1, -1, -1, -1,
 8,  9,  6,  8,  6,  7,  9,  1,  6,  11, 6,  3,  1,  3,  6, -1,
 0,  9,  1,  11, 6,  7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 7,  8,  0,  7,  0,  6,  3,  11, 0,  11, 6,  0, -1, -1, -1, -1,
 7,  11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 7,  6,  11,-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 3,  0,  8,  11, 7,  6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 0,  1,  9,  11, 7,  6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 8,  1,  9,  8,  3,  1,  11, 7,  6, -1, -1, -1, -1, -1, -1, -1,
 10, 1,  2,  6,  11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 1,  2,  10, 3,  0,  8,  6,  11, 7, -1, -1, -1, -1, -1, -1, -1,
 2,  9,  0,  2,  10, 9,  6,  11, 7, -1, -1, -1, -1, -1, -1, -1,
 6,  11, 7,  2,  10, 3,  10, 8,  3,  10, 9,  8, -1, -1, -1, -1,
 7,  2,  3,  6,  2,  7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 7,  0,  8,  7,  6,  0,  6,  2,  0, -1, -1, -1, -1, -1, -1, -1,
 2,  7,  6,  2,  3,  7,  0,  1,  9, -1, -1, -1, -1, -1, -1, -1,
 1,  6,  2,  1,  8,  6,  1,  9,  8,  8,  7,  6, -1, -1, -1, -1,
 10, 7,  6,  10, 1,  7,  1,  3,  7, -1, -1, -1, -1, -1, -1, -1,
 10, 7,  6,  1,  7,  10, 1,  8,  7,  1,  0,  8, -1, -1, -1, -1,
 0,  3,  7,  0,  7,  10, 0,  10, 9,  6,  10, 7, -1, -1, -1, -1,
 7,  6,  10, 7,  10, 8,  8,  10, 9, -1, -1, -1, -1, -1, -1, -1,
 6,  8,  4,  11, 8,  6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 3,  6,  11, 3,  0,  6,  0,  4,  6, -1, -1, -1, -1, -1, -1, -1,
 8,  6,  11, 8,  4,  6,  9,  0,  1, -1, -1, -1, -1, -1, -1, -1,
 9,  4,  6,  9,  6,  3,  9,  3,  1,  11, 3,  6, -1, -1, -1, -1,
 6,  8,  4,  6,  11, 8,  2,  10, 1, -1, -1, -1, -1, -1, -1, -1,
 1,  2,  10, 3,  0,  11, 0,  6,  11, 0,  4,  6, -1, -1, -1, -1,
 4,  11, 8,  4,  6,  11, 0,  2,  9,  2,  10, 9, -1, -1, -1, -1,
 10, 9,  3,  10, 3,  2,  9,  4,  3,  11, 3,  6,  4,  6,  3, -1,
 8,  2,  3,  8,  4,  2,  4,  6,  2, -1, -1, -1, -1, -1, -1, -1,
 0,  4,  2,  4,  6,  2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 1,  9,  0,  2,  3,  4,  2,  4,  6,  4,  3,  8, -1, -1, -1, -1,
 1,  9,  4,  1,  4,  2,  2,  4,  6, -1, -1, -1, -1, -1, -1, -1,
 8,  1,  3,  8,  6,  1,  8,  4,  6,  6,  10, 1, -1, -1, -1, -1,
 10, 1,  0,  10, 0,  6,  6,  0,  4, -1, -1, -1, -1, -1, -1, -1,
 4,  6,  3,  4,  3,  8,  6,  10, 3,  0,  3,  9,  10, 9,  3, -1,
 10, 9,  4,  6,  10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 4,  9,  5,  7,  6,  11,-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 0,  8,  3,  4,  9,  5,  11, 7,  6, -1, -1, -1, -1, -1, -1, -1,
 5,  0,  1,  5,  4,  0,  7,  6,  11,-1, -1, -1, -1, -1, -1, -1,
 11, 7,  6,  8,  3,  4,  3,  5,  4,  3,  1,  5, -1, -1, -1, -1,
 9,  5,  4,  10, 1,  2,  7,  6,  11,-1, -1, -1, -1, -1, -1, -1,
 6,  11, 7,  1,  2,  10, 0,  8,  3,  4,  9,  5, -1, -1, -1, -1,
 7,  6,  11, 5,  4,  10, 4,  2,  10, 4,  0,  2, -1, -1, -1, -1,
 3,  4,  8,  3,  5,  4,  3,  2,  5,  10, 5,  2,  11, 7,  6, -1,
 7,  2,  3,  7,  6,  2,  5,  4,  9, -1, -1, -1, -1, -1, -1, -1,
 9,  5,  4,  0,  8,  6,  0,  6,  2,  6,  8,  7, -1, -1, -1, -1,
 3,  6,  2,  3,  7,  6,  1,  5,  0,  5,  4,  0, -1, -1, -1, -1,
 6,  2,  8,  6,  8,  7,  2,  1,  8,  4,  8,  5,  1,  5,  8, -1,
 9,  5,  4,  10, 1,  6,  1,  7,  6,  1,  3,  7, -1, -1, -1, -1,
 1,  6,  10, 1,  7,  6,  1,  0,  7,  8,  7,  0,  9,  5,  4, -1,
 4,  0,  10, 4,  10, 5,  0,  3,  10, 6,  10, 7,  3,  7,  10,-1,
 7,  6,  10, 7,  10, 8,  5,  4,  10, 4,  8,  10,-1, -1, -1, -1,
 6,  9,  5,  6,  11, 9,  11, 8,  9, -1, -1, -1, -1, -1, -1, -1,
 3,  6,  11, 0,  6,  3,  0,  5,  6,  0,  9,  5, -1, -1, -1, -1,
 0,  11, 8,  0,  5,  11, 0,  1,  5,  5,  6,  11,-1, -1, -1, -1,
 6,  11, 3,  6,  3,  5,  5,  3,  1, -1, -1, -1, -1, -1, -1, -1,
 1,  2,  10, 9,  5,  11, 9,  11, 8,  11, 5,  6, -1, -1, -1, -1,
 0,  11, 3,  0,  6,  11, 0,  9,  6,  5,  6,  9,  1,  2,  10,-1,
 11, 8,  5,  11, 5,  6,  8,  0,  5,  10, 5,  2,  0,  2,  5, -1,
 6,  11, 3,  6,  3,  5,  2,  10, 3,  10, 5,  3, -1, -1, -1, -1,
 5,  8,  9,  5,  2,  8,  5,  6,  2,  3,  8,  2, -1, -1, -1, -1,
 9,  5,  6,  9,  6,  0,  0,  6,  2, -1, -1, -1, -1, -1, -1, -1,
 1,  5,  8,  1,  8,  0,  5,  6,  8,  3,  8,  2,  6,  2,  8, -1,
 1,  5,  6,  2,  1,  6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 1,  3,  6,  1,  6,  10, 3,  8,  6,  5,  6,  9,  8,  9,  6, -1,
 10, 1,  0,  10, 0,  6,  9,  5,  0,  5,  6,  0, -1, -1, -1, -1,
 0,  3,  8,  5,  6,  10,-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 10, 5,  6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 11, 5,  10, 7,  5,  11,-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 11, 5,  10, 11, 7,  5,  8,  3,  0, -1, -1, -1, -1, -1, -1, -1,
 5,  11, 7,  5,  10, 11, 1,  9,  0, -1, -1, -1, -1, -1, -1, -1,
 10, 7,  5,  10, 11, 7,  9,  8,  1,  8,  3,  1, -1, -1, -1, -1,
 11, 1,  2,  11, 7,  1,  7,  5,  1, -1, -1, -1, -1, -1, -1, -1,
 0,  8,  3,  1,  2,  7,  1,  7,  5,  7,  2,  11,-1, -1, -1, -1,
 9,  7,  5,  9,  2,  7,  9,  0,  2,  2,  11, 7, -1, -1, -1, -1,
 7,  5,  2,  7,  2,  11, 5,  9,  2,  3,  2,  8,  9,  8,  2, -1,
 2,  5,  10, 2,  3,  5,  3,  7,  5, -1, -1, -1, -1, -1, -1, -1,
 8,  2,  0,  8,  5,  2,  8,  7,  5,  10, 2,  5, -1, -1, -1, -1,
 9,  0,  1,  5,  10, 3,  5,  3,  7,  3,  10, 2, -1, -1, -1, -1,
 9,  8,  2,  9,  2,  1,  8,  7,  2,  10, 2,  5,  7,  5,  2, -1,
 1,  3,  5,  3,  7,  5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 0,  8,  7,  0,  7,  1,  1,  7,  5, -1, -1, -1, -1, -1, -1, -1,
 9,  0,  3,  9,  3,  5,  5,  3,  7, -1, -1, -1, -1, -1, -1, -1,
 9,  8,  7,  5,  9,  7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 5,  8,  4,  5,  10, 8,  10, 11, 8, -1, -1, -1, -1, -1, -1, -1,
 5,  0,  4,  5,  11, 0,  5,  10, 11, 11, 3,  0, -1, -1, -1, -1,
 0,  1,  9,  8,  4,  10, 8,  10, 11, 10, 4,  5, -1, -1, -1, -1,
 10, 11, 4,  10, 4,  5,  11, 3,  4,  9,  4,  1,  3,  1,  4, -1,
 2,  5,  1,  2,  8,  5,  2,  11, 8,  4,  5,  8, -1, -1, -1, -1,
 0,  4,  11, 0,  11, 3,  4,  5,  11, 2,  11, 1,  5,  1,  11,-1,
 0,  2,  5,  0,  5,  9,  2,  11, 5,  4,  5,  8,  11, 8,  5, -1,
 9,  4,  5,  2,  11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 2,  5,  10, 3,  5,  2,  3,  4,  5,  3,  8,  4, -1, -1, -1, -1,
 5,  10, 2,  5,  2,  4,  4,  2,  0, -1, -1, -1, -1, -1, -1, -1,
 3,  10, 2,  3,  5,  10, 3,  8,  5,  4,  5,  8,  0,  1,  9, -1,
 5,  10, 2,  5,  2,  4,  1,  9,  2,  9,  4,  2, -1, -1, -1, -1,
 8,  4,  5,  8,  5,  3,  3,  5,  1, -1, -1, -1, -1, -1, -1, -1,
 0,  4,  5,  1,  0,  5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 8,  4,  5,  8,  5,  3,  9,  0,  5,  0,  3,  5, -1, -1, -1, -1,
 9,  4,  5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 4,  11, 7,  4,  9,  11, 9,  10, 11,-1, -1, -1, -1, -1, -1, -1,
 0,  8,  3,  4,  9,  7,  9,  11, 7,  9,  10, 11,-1, -1, -1, -1,
 1,  10, 11, 1,  11, 4,  1,  4,  0,  7,  4,  11,-1, -1, -1, -1,
 3,  1,  4,  3,  4,  8,  1,  10, 4,  7,  4,  11, 10, 11, 4, -1,
 4,  11, 7,  9,  11, 4,  9,  2,  11, 9,  1,  2, -1, -1, -1, -1,
 9,  7,  4,  9,  11, 7,  9,  1,  11, 2,  11, 1,  0,  8,  3, -1,
 11, 7,  4,  11, 4,  2,  2,  4,  0, -1, -1, -1, -1, -1, -1, -1,
 11, 7,  4,  11, 4,  2,  8,  3,  4,  3,  2,  4, -1, -1, -1, -1,
 2,  9,  10, 2,  7,  9,  2,  3,  7,  7,  4,  9, -1, -1, -1, -1,
 9,  10, 7,  9,  7,  4,  10, 2,  7,  8,  7,  0,  2,  0,  7, -1,
 3,  7,  10, 3,  10, 2,  7,  4,  10, 1,  10, 0,  4,  0,  10,-1,
 1,  10, 2,  8,  7,  4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 4,  9,  1,  4,  1,  7,  7,  1,  3, -1, -1, -1, -1, -1, -1, -1,
 4,  9,  1,  4,  1,  7,  0,  8,  1,  8,  7,  1, -1, -1, -1, -1,
 4,  0,  3,  7,  4,  3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 4,  8,  7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 9,  10, 8,  10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 3,  0,  9,  3,  9,  11, 11, 9,  10,-1, -1, -1, -1, -1, -1, -1,
 0,  1,  10, 0,  10, 8,  8,  10, 11,-1, -1, -1, -1, -1, -1, -1,
 3,  1,  10, 11, 3,  10,-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 1,  2,  11, 1,  11, 9,  9,  11, 8, -1, -1, -1, -1, -1, -1, -1,
 3,  0,  9,  3,  9,  11, 1,  2,  9,  2,  11, 9, -1, -1, -1, -1,
 0,  2,  11, 8,  0,  11,-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 3,  2,  11,-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 2,  3,  8,  2,  8,  10, 10, 8,  9, -1, -1, -1, -1, -1, -1, -1,
 9,  10, 2,  0,  9,  2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 2,  3,  8,  2,  8,  10, 0,  1,  8,  1,  10, 8, -1, -1, -1, -1,
 1,  10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 1,  3,  8,  9,  1,  8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 0,  9,  1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 0,  3,  8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
};
*/


/*
   Given a grid cell and an isolevel, calculate the triangular
   facets required to represent the isosurface through the cell.
   Return the number of triangular facets, the array "triangles"
   will be loaded up with the vertices at most 5 triangular facets.
	0 will be returned if the grid cell is either totally above
   of totally below the isolevel.
*/
int Polygonise(GRIDCELL* grid,double isolevel,TRIANGLE **triangles)
{
   int i,ntriang;
   int cubeindex;
   XYZ* vertlist[12];

   /*
      Determine the index into the edge table which
      tells us which vertices are inside of the surface
   */
   cubeindex = 0;
   if (grid->val[0] < isolevel) cubeindex |= 1;
   if (grid->val[1] < isolevel) cubeindex |= 2;
   if (grid->val[2] < isolevel) cubeindex |= 4;
   if (grid->val[3] < isolevel) cubeindex |= 8;
   if (grid->val[4] < isolevel) cubeindex |= 16;
   if (grid->val[5] < isolevel) cubeindex |= 32;
   if (grid->val[6] < isolevel) cubeindex |= 64;
   if (grid->val[7] < isolevel) cubeindex |= 128;

   /* Cube is entirely in/out of the surface */
   if (edgeTable[cubeindex] == 0)
      return(0);

   /* Find the vertices where the surface intersects the cube */
   if (edgeTable[cubeindex] & 1)
      vertlist[0] =
         VertexInterp(isolevel,grid->p[0],grid->p[1],grid->val[0],grid->val[1]);
   if (edgeTable[cubeindex] & 2)
      vertlist[1] =
         VertexInterp(isolevel,grid->p[1],grid->p[2],grid->val[1],grid->val[2]);
   if (edgeTable[cubeindex] & 4)
      vertlist[2] =
         VertexInterp(isolevel,grid->p[2],grid->p[3],grid->val[2],grid->val[3]);
   if (edgeTable[cubeindex] & 8)
      vertlist[3] =
         VertexInterp(isolevel,grid->p[3],grid->p[0],grid->val[3],grid->val[0]);
   if (edgeTable[cubeindex] & 16)
      vertlist[4] =
         VertexInterp(isolevel,grid->p[4],grid->p[5],grid->val[4],grid->val[5]);
   if (edgeTable[cubeindex] & 32)
      vertlist[5] =
         VertexInterp(isolevel,grid->p[5],grid->p[6],grid->val[5],grid->val[6]);
   if (edgeTable[cubeindex] & 64)
      vertlist[6] =
         VertexInterp(isolevel,grid->p[6],grid->p[7],grid->val[6],grid->val[7]);
   if (edgeTable[cubeindex] & 128)
      vertlist[7] =
         VertexInterp(isolevel,grid->p[7],grid->p[4],grid->val[7],grid->val[4]);
   if (edgeTable[cubeindex] & 256)
      vertlist[8] =
         VertexInterp(isolevel,grid->p[0],grid->p[4],grid->val[0],grid->val[4]);
   if (edgeTable[cubeindex] & 512)
      vertlist[9] =
         VertexInterp(isolevel,grid->p[1],grid->p[5],grid->val[1],grid->val[5]);
   if (edgeTable[cubeindex] & 1024)
      vertlist[10] =
         VertexInterp(isolevel,grid->p[2],grid->p[6],grid->val[2],grid->val[6]);
   if (edgeTable[cubeindex] & 2048)
      vertlist[11] =
         VertexInterp(isolevel,grid->p[3],grid->p[7],grid->val[3],grid->val[7]);

   /* Create the triangle */
   ntriang = 0;
   for( i = 0; triTable[ cubeindex * 16 + i ] != -1; i += 3 )
   {
   	TRIANGLE* triangle = &(*triangles)[ntriang];
      triangle->p[0] = vertlist[ triTable[ cubeindex * 16 + i ] ];
      triangle->p[1] = vertlist[ triTable[ cubeindex * 16 + i + 1 ] ];
      triangle->p[2] = vertlist[ triTable[ cubeindex * 16 + i + 2 ] ];
      ntriang++;
   }

   return(ntriang);
}



Last edited by Joozey; 12/07/11 21:16.

Click and join the 3dgs irc community!
Room: #3dgs
Re: Marching cubes not working [Re: Joozey] #388788
12/07/11 15:51
12/07/11 15:51
Joined: Oct 2004
Posts: 4,134
Netherlands
Joozey Offline OP
Expert
Joozey  Offline OP
Expert

Joined: Oct 2004
Posts: 4,134
Netherlands
I found the bug laugh. Nothing to do with the algorithm, my scalar field had wrong values on positions. Values of identical positions from neighbouring boxes didn't match properly >_<.


Click and join the 3dgs irc community!
Room: #3dgs
Re: Marching cubes not working [Re: Joozey] #388790
12/07/11 16:24
12/07/11 16:24
Joined: Jun 2006
Posts: 379
Flevoland, 5 meters under wate...
Roel Offline
Senior Member
Roel  Offline
Senior Member

Joined: Jun 2006
Posts: 379
Flevoland, 5 meters under wate...
At first i didn't get what marching cubes is all about...
The paper says voxels?


Check out the throwing game here: The throwing game
Re: Marching cubes not working [Re: Roel] #388794
12/07/11 16:57
12/07/11 16:57
Joined: Oct 2004
Posts: 4,134
Netherlands
Joozey Offline OP
Expert
Joozey  Offline OP
Expert

Joined: Oct 2004
Posts: 4,134
Netherlands
A voxel is merely a weighted point in space. A scalar field is defined by many of such points, all contained in conceptual boxes (of 8 points each).
Now, between each point (on each edge of the box) is a linear set of values: between point 1 with value 1 and point 2 with value 5 lay the values 2, 3 and 4 somewhere on the edge. Supposing your "iso" value is 3, you could calculate the position on each edge where the value between two points is 3.
After collecting all points that hold value 3, you can draw triangles (or faces) and create a mesh resulting in an isosurface.

Exactly how you draw those triangles in a box of 8 points is calculated by an algorithm; marching cubes!




Result:


Last edited by Joozey; 12/07/11 19:49.

Click and join the 3dgs irc community!
Room: #3dgs
Re: Marching cubes not working [Re: Joozey] #388809
12/07/11 19:59
12/07/11 19:59
Joined: Oct 2008
Posts: 513
Carlos3DGS Offline
User
Carlos3DGS  Offline
User

Joined: Oct 2008
Posts: 513
After seeing this thread this morning I was curious to know what "marching cubes" was. After seeing a few videos and reading a bit on the subject this blew my mind, the possibilities seem amazing! I have been reading on the subject alot today and even though I still have alot to understand on how this works (or how to get it to work) I cannot avoid thinking how this could be applied for dynamic terrains in A8.
This question might seem a little noobish but...
When you have calculated all the triangles, how do you tell 3dgs to create a triangle?
Is there any function in 3dgs to create a polygon that I seem to be unable to find in the manuall?
like:
poly_create(v1*,v2*,v3*);
or:
face_create(v1*,v2*,v3*);


"The more you know, the more you realize how little you know..."

I <3 HORUS
http://www.opserver.de/ubb7/ubbthreads.php?ubb=showflat&Number=401929&page=1
Re: Marching cubes not working [Re: Carlos3DGS] #388812
12/07/11 20:39
12/07/11 20:39
Joined: Feb 2009
Posts: 3,207
Germany, Magdeburg
Rei_Ayanami Offline
Expert
Rei_Ayanami  Offline
Expert

Joined: Feb 2009
Posts: 3,207
Germany, Magdeburg
You got to do this with yourself, via DirectX laugh

Re: Marching cubes not working [Re: Rei_Ayanami] #388819
12/07/11 21:02
12/07/11 21:02
Joined: Oct 2008
Posts: 513
Carlos3DGS Offline
User
Carlos3DGS  Offline
User

Joined: Oct 2008
Posts: 513
Originally Posted By: Rei_Ayanami
You got to do this with yourself, via DirectX laugh


Will that mean I also have to do the collision detection myself since they will not be 3dgs engine objects?
Learning marching cubes + learning directX + programming a new collision system from scratch = not worth it for my game.
Ouch! that hurt... :sadface
I guess no marching cubes for me then! Back to the mobile randomized terrains system I was working on, lol.


"The more you know, the more you realize how little you know..."

I <3 HORUS
http://www.opserver.de/ubb7/ubbthreads.php?ubb=showflat&Number=401929&page=1
Re: Marching cubes not working [Re: Carlos3DGS] #388832
12/07/11 21:52
12/07/11 21:52
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
You don't have to start from scratch, though.
There are example codes for creating meshes in the forum and in resources, from fogman and ventilator as far as I know.
And, there is the dll from TechMuc to save a mesh as an mdl.
When you got your mesh as mdl, then you have the common collision system.

Re: Marching cubes not working [Re: Pappenheimer] #388833
12/07/11 22:06
12/07/11 22:06
Joined: Feb 2009
Posts: 3,207
Germany, Magdeburg
Rei_Ayanami Offline
Expert
Rei_Ayanami  Offline
Expert

Joined: Feb 2009
Posts: 3,207
Germany, Magdeburg
You only need to create it, collision [I only tested bouding boxes yet, but I am sure you can use polygon detection, too] is done by the engine wink
[you can just treat it like a normal entity]


Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1