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

[Irrlicht] Mesh - operacje na wierzchołkach

Ostatnio zmodyfikowano 2024-02-22 15:59
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
[Irrlicht] Mesh - operacje na wierzchołkach
» 2024-02-16 02:01:20
Witam.
Chciałbym ręcznie generować/edytować Mesh (siatkę 3D) a nie wczytywać z pliku.
Jak to zrobić ?
P-180802
DejaVu
» 2024-02-16 07:42:21
Wczytuj modele zawsze z pliku. Czy myślisz, że wielkie studia gamingowe generują/edytują modele wewnątrz gier?
P-180803
tBane
Temat założony przez niniejszego użytkownika
» 2024-02-16 17:08:35
tak wiem, ale próbuję stworzyć mapę izometryczną. Mniej więcej taką jak na obrazku.



C/C++
class Tile
{
public:
   
float x, z, height;
   
waterType wtype = waterType::none;
   
   
Tile( float, float, float, waterType );
   
~Tile();
};

class Map
{
public:
   
float width, length;
   
std::set < Tile * > tiles;
   
SMesh * mesh;
   
   
Map();
   
~Map();
};
P-180804
DejaVu
» 2024-02-16 17:42:36
to zrób sobie obrazek 2D np. z odcieniami szarości i na podstawie wartości składowej koloru (np. czerwonego) decyduj na jakiej wysokości ma być wierzchołek. Wówczas uzyskasz taką mapę. Im jaśniejszy kolor tym wyżej ma być narysowany (lub na odwrót wg preferencji). Możesz również w taki sam sposób na tej samej teksturze nanieść np. obszar wody, używając składowej B.
P-180805
tBane
Temat założony przez niniejszego użytkownika
» 2024-02-16 17:47:08
hmmm ... w takim razie musiałbym dorzucić obsługę plików graficznych, bo próbuję stworzyć edytor mapy.
W takim razie jak to zrobić ?
P-180806
DejaVu
» 2024-02-16 18:10:24
To zrób zwykłą dwuwymiarową tablicę int-ów i przypisz numerki określające wysokość terenu. Nie potrzebujesz plików.
P-180807
tBane
Temat założony przez niniejszego użytkownika
» 2024-02-16 18:19:31
Wolałbym jednak użyć std::set zamiast tablic.

Wiesz jak utworzyć pod to mesh ?

C/C++
Map::Map()
{
   
width = height = 20;
   
   
IAnimatedMesh * mesh;
   
for( int z = 0; z < length; z++ )
   
for( int x = 0; x < width; x++ )
   
{
       
// złe podejście, bo tu operujemy na całym wczytanym meshu a nie tworzymy nowego używając współrzędnych wierzchołków
       
IAnimatedMeshSceneNode * node = sceneManager->addAnimatedMeshSceneNode( mesh );
       
node->setPosition( core::vector3df( x, 10, z ) );
       
node->setRotation( core::vector3df( 0, 0, 0 ) );
       
node->setScale( core::vector3df( 0, 0, 0 ) );
   
}
   

C/C++
//..
int main()
{
   
   
//...
   
Map * map = new Map();
   
//...
   
}
P-180808
pekfos
» 2024-02-16 18:40:17
Zobacz przykład 23.SMeshHandling dołączony do Irrlichta.
P-180809
« 1 » 2
  Strona 1 z 2 Następna strona