[Irrlicht] Mesh - operacje na wierzchołkach
Ostatnio zmodyfikowano 2024-02-18 21:37
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ć ? |
|
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? |
|
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. 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(); };
|
|
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. |
|
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ć ? |
|
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. |
|
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 ? Map::Map() { width = height = 20; IAnimatedMesh * mesh; for( int z = 0; z < length; z++ ) for( int x = 0; x < width; x++ ) { 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 ) ); } int main() { Map * map = new Map(); }
|
|
pekfos |
» 2024-02-16 18:40:17 Zobacz przykład 23.SMeshHandling dołączony do Irrlichta. |
|
« 1 » 2 |