Aktuelle Zeit: 14.05.2024, 04:12

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
 Betreff des Beitrags: Mesh mit 2 Texturen
BeitragVerfasst: 04.10.2009, 13:19 
Offline

Registriert: 04.10.2009, 11:58
Beiträge: 1
Hallo liebe Community.

Ich arbeite mich derzeit in Irrlicht ein und habe bereits viele Tutorials durchgearbeitet. Nun versuche ich als erste kleine "eigene" Übung, ein einfaches Kartenspiel, welches ich in 2D (ohne Irrlicht) geschrieben hatte, mit Irrlicht in 3D umzuschreiben.

Dazu habe ich mit Blender ein mesh erstellt und mit 2 Texturen versehen. Eine Textur für die Vorderseite und eine für die Rückseite. Exportiert habe ich das mesh in das 3ds-Format. Das Laden und Anzeigen mit Irrlicht klappt inzwischen wunderbar (Ich benutze Code::Blocks, falls das wichtig ist).

Nun zu meinem Problem:
Für das Spiel brauche ich 32 Karten und möchte das mesh entsprechend für alle Karten benutzen. Natürlich sollen die Vorderseiten der Karten alle verschieden sein. Daher versuche ich beim Erstellen der SceneNodes jedem der 32 meshes eine andere Textur als Vorderseite zuzuweisen. Nur leider wird auch immer gleich die Rückseite mit geändert. Irgendetwas mache ich also falsch. Nur was...?

Hier mein Testcode:

Code:
#include <irrlicht.h>
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;

int main(int argc, char** argv)
{
    IrrlichtDevice *device =
        createDevice(EDT_SOFTWARE, dimension2d<s32>(640, 480), 16,
            false, false, false, 0);
    IVideoDriver* driver = device->getVideoDriver();
    ISceneManager* smgr = device->getSceneManager();
    IMeshSceneNode* node = smgr->addMeshSceneNode(smgr->getMesh("Sets/ABC/card.3ds"));
    if (node)
    {
        int i = node->getMaterialCount();  // zeigt i=2 an
        node->setMaterialFlag(EMF_LIGHTING, false);
        node->setScale(core::vector3df(10,10,10));
        node->setPosition(vector3df(0,0,0));
        node->setMaterialTexture( 0, driver->getTexture("Sets/ABC/3.jpg") ); //gibt allen Seiten die Textur 3.jpg
        node->setMaterialTexture( 1, driver->getTexture("Sets/ABC/33.jpg") ); //keine Wirkung ?!?
    }
    smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));
    while(device->run())
    {
        i+=0.1;
        node->setRotation(vector3df(0,i,0));

        driver->beginScene(true, true, SColor(0,200,200,200));
        smgr->drawAll();
        driver->endScene();
    }
    device->drop();
    return 0;
}


Ohne SetMaterialTexture() werden Vorder- und Rückseite korrekt angezeigt. GetMaterialCount gibt mir 2 zurück und im Consolenfenster werden die 2 Texturen als "Loaded..." korrekt ausgewiesen. SetMaterialTexture(0, ...) gibt allen Seiten die Textur 3.jpg. SetMaterialTexture(1, ...) scheint keinerlei Wirkung zu haben.

Was mache ich falsch bitte? Bin für jeden kleinen Hinweis sehr dankbar...

Vielen Dank schonmal für Eure Mühen, Jane.


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de