Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Irrlicht] Generowanie trójwymiarowej siatki heksagonalnej

Ostatnio zmodyfikowano 2024-03-17 11:35
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
» 2024-03-06 06:23:38

C/C++
HexTile * nleft = neighbours[ getDirection( i ) ];
HexTile * nright = neighbours[ getDirection( i + 1 ) ];

if( nleft != nullptr && nright != nullptr && height > nleft->height && height > nright->height )
{
   
sidesMeshBuffer[ 6 ]->Indices.push_back( 0 );
   
sidesMeshBuffer[ 6 ]->Indices.push_back( 1 );
   
sidesMeshBuffer[ 6 ]->Indices.push_back( 2 );
   
   
sidesMeshBuffer[ 6 ]->Vertices.push_back( S3DVertex(
   
hexVertices[ 2 *( i + 1 ) ],
   
h * heightStep,
   
hexVertices[ 2 *( i + 1 ) + 1 ],
   
0, 0, 0, color, texture_uv[ 2 * i ], texture_uv[ 2 * i + 1 ] ) );
   
   
   
sidesMeshBuffer[ 6 ]->Vertices.push_back( S3DVertex(
   
float( nleft->x ) + hexVertices[ 2 * getDirection( i + 3 ) ] * tileBaseFactor,
   
height * heightStep,
   
float( nleft->z ) + hexVertices[ 2 * getDirection( i + 3 ) + 1 ] * tileBaseFactor,
   
0, 0, 0, color, 0, 0 ) );
   
   
   
sidesMeshBuffer[ 6 ]->Vertices.push_back( S3DVertex(
   
float( nright->x ) + hexVertices[ 2 * getDirection( i + 4 ) ] * tileBaseFactor,
   
height * heightStep,
   
float( nright->z ) + hexVertices[ 2 * getDirection( i + 4 ) + 1 ] * tileBaseFactor,
   
0, 0, 0, color, 0, 0 ) );
   
}
P-180922
pekfos
» 2024-03-06 18:31:13
Dopuszczasz styk kafli z trzema różnymi wysokościami? Jeśli tak, to byłby lepszy przypadek do analizy.
P-180923
tBane
Temat założony przez niniejszego użytkownika
» 2024-03-06 20:10:26

W tę stronę iść ?

C/C++
if( left != nullptr )
{
   
if( left->height == this->height )
   
{
       
    }
   
else if( left->height < this->height )
   
{
       
    }
   
else // left->height > this->height
   
{
       
    }
}
P-180924
pekfos
» 2024-03-06 22:56:04
Pytanie czy te poziome przejścia między kaflami są ok jeśli wypadają na różnych wysokościach. Co do dziury, masz ją dlatego że rozerwałeś model kafla ciągnąc jeden z zewnętrznych boków w górę. Według schematu z pierwszego postu, ciągniesz bok (v2,v3) w górę wprowadzając drugi wierzchołek v3'. Można by to załatać dodając trójkąt (v3, v4, v3'), ale będzie stał pionowo, więc raczej słabo. 3 sąsiednie sześciokąty powinny być połączone trójkątem, jak na rysunku referencyjnym, potem ten trójkąt podziel pod teksturowanie przejść.
P-180925
tBane
Temat założony przez niniejszego użytkownika
» 2024-03-07 04:34:14
nic nie rozumiem z tego co napisałeś
P-180926
pekfos
» 2024-03-08 16:32:11
To zrobiłeś:

Przejścia mogłyby wyglądać tak:
P-180927
tBane
Temat założony przez niniejszego użytkownika
» 2024-03-09 01:07:58
Tak, właśnie coś takiego próbuję zaprogramować. Z tym, myślałem że trójkąt pomiędzy kaflami składa się z trzech trójkątów a nie czworoboków. Teraz to już kompletnie nie mam pojęcia jak to napisać :-/
P-180928
pekfos
» 2024-03-09 17:49:39
Jak się lepiej przyjrzysz, to u mnie sześciokąt też jest sześciokątem, a z tym sobie jakoś poradziłeś. Rozbij to sobie na 2 trójkąty, co za różnica. Wszystkie współrzędne dodatkowych punktów można obliczyć jako średnią z 2 lub 3 punktów dużego trójkąta.
P-180930
1 « 2 » 3 4
Poprzednia strona Strona 2 z 4 Następna strona