Aktuelle Zeit: 05.01.2025, 08:16

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 25 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: Verschiedene Materialien
BeitragVerfasst: 05.01.2010, 00:16 
Offline

Registriert: 05.09.2007, 15:01
Beiträge: 103
Hallo, ich arbeite zur Zeit an meinem Projekt, einem Ego-shooter.
Zurzeit versuche ich, verschiedene Materialien in mein Spiel einzubringen welche über scripts festgelegt wurden.
Die Materialien bestimmen den Schritt-sound der beim drüberlaufen abgespielt werden soll sowie einschussloch-aussehen und effekt beim Kugel einschlag.

Bis jetzt lege ich den Materialtyp eines Objekts via IrrEdit über den NodeNamen fest, welchen ich dann beim Schiessen via node->getName() bekomme und dann das dementsprechende Material benutzen kann. Aber die ganze Sache mit den Node-Namen zu handhaben wirkt irgendwie unprofessionell. Deshalb wollte ich hier fragen ob jemand eine gute idee hat, wie man dass anders machen könnte, am besten eine Idee, bei man in einem großen Mesh verschiedene Materialien festlegen kann und nicht nur eine für das ganze Mesh. Vielen Dank für Antworten!

_________________
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Verschiedene Materialien
BeitragVerfasst: 05.01.2010, 07:13 
Offline
Benutzeravatar

Registriert: 16.10.2007, 07:56
Beiträge: 229
Wohnort: Regensburg
Also bei IrrOde bin ich irgendwann dazu übergegangen, dass man für jedes Material eines Modells eigene Eigenschaften festlegen kann. Es gibt jetzt "Material1" bis "MaterialN". Funktioniert prima. Falls es dir nur um ein paar Eigenschaften geht würde ich ein Plugin für IrrEdit schreiben, mit dem man Child-Nodes an ein Mesh hängen kann, mit dem man z.B. die Namen der einzelnen Materialien festlegen kann.

Ich steh auf IrrEdit plugins, ich hab für jeden Mist ein eigenes gebaut (für alle ODE Eigenschaften der Objekte, für Respawn-Punkte, um den Pfad der Preview-Kamera festzulegen, für die Kameras im Replay (gibts aber noch nicht zum Download), ich hab auch eins für Schatten (zum Managen der Irrlicht-Schatten) und ein IrrOdeKlang Plugin gebastelt). Damit würde das gehen. Wenn man sein erstes Plugin zum Laufen bekommen hat gehen die nächsten auch wirklich leicht von der Hand.

_________________
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Verschiedene Materialien
BeitragVerfasst: 05.01.2010, 14:40 
Offline

Registriert: 05.09.2007, 15:01
Beiträge: 103
Danke, wie schreib ich ein Plugin für IrrEdit?

_________________
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Verschiedene Materialien
BeitragVerfasst: 07.01.2010, 07:37 
Offline
Benutzeravatar

Registriert: 16.10.2007, 07:56
Beiträge: 229
Wohnort: Regensburg
Im IrrEdit download package ist ein Demo-Projekt dabei. Leider funktionieren die Plugins nur mit Visual-C. Ich hab das Demo-Projekt genommen, die Pfade, Namen und Dateien geändert und bin so zu meinem ersten Plugin gekommen. Hat ein bisschen gedauert, aber das lag an VC (Code::Blocks kenn ich einfach besser). Im wesentlichen muss man seine SceneNodeFactory registrieren, die wird dann aufgerufen und erledigt das Ganze. Ach ja ... du muss auf alle Fälle für jeden neuen SceneNode ein Icon machen, sonst kommt IrrEdit durcheinander (die liegen in IrrEdit/Resources und heißen irgendwie "scenenode_*.bmp" oder so ähnlich ... einfach mal die Bilder im Resources Verzeichnis anschauen, da sieht man recht schnell, welches die Datein sind).

_________________
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Verschiedene Materialien
BeitragVerfasst: 07.01.2010, 19:21 
Offline

Registriert: 05.09.2007, 15:01
Beiträge: 103
Das heißt ich muss das mit Visual C schreiben?

_________________
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Verschiedene Materialien
BeitragVerfasst: 08.01.2010, 07:22 
Offline
Benutzeravatar

Registriert: 16.10.2007, 07:56
Beiträge: 229
Wohnort: Regensburg
Leider ja. Aber es reicht, das Ganze mit VC zusammenzubauen. Meine SceneNodes und Factories bau ich immer mit Code::Blocks und gcc, danach VC. Mit der VC-Unterstützung von Code::Blocks hab ich es leider nie geschafft, eine DLL zu kompilieren.

Afaik gibt es zwischen gcc und vc DLLs Inkompatibilitäten, sobald objektorientiert exportiert wird. Hat mir einer gesagt, der immer fleißig am GCC rumbastelt ;) .

_________________
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Verschiedene Materialien
BeitragVerfasst: 11.01.2010, 19:29 
Offline

Registriert: 05.09.2007, 15:01
Beiträge: 103
Ich hab mir jetzt mal Visual C(++) geladen und versucht die ExampleSceneNode Dateien zu Kompilieren, das hat laut debugger auch funktioniert, doch leider finde ich dort keine DLL...

_________________
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Verschiedene Materialien
BeitragVerfasst: 12.01.2010, 07:22 
Offline
Benutzeravatar

Registriert: 16.10.2007, 07:56
Beiträge: 229
Wohnort: Regensburg
Hmm ... hast du das Projekt für das Demo-Plugin benutzt? Ansonsten solltest du mal die ganzen Pfade überprüfen, ich finde, das Anpassen der Pfade ist in VC viel aufwendiger als in Code::Blocks. Kann sein, dass du beim Kompilieren das Demo-Plugin, das mitgeliefert wird, gleich mal überschrieben hast.

_________________
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Verschiedene Materialien
BeitragVerfasst: 12.01.2010, 13:16 
Offline

Registriert: 05.09.2007, 15:01
Beiträge: 103
Demo-PlugIn? Meinst du das ExampleSceneNode Plugin?
Ich hab deinen Post jetzt leider nicht verstanden...

_________________
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Verschiedene Materialien
BeitragVerfasst: 13.01.2010, 07:22 
Offline
Benutzeravatar

Registriert: 16.10.2007, 07:56
Beiträge: 229
Wohnort: Regensburg
Genau. Das Projekt heißt (glaub ich) ExampleNodePlugin. Meine Plugins basieren alle direkt auf diesem Projekt. Da sollte auch gleich eine DLL rauskommen.

_________________
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Verschiedene Materialien
BeitragVerfasst: 13.01.2010, 13:08 
Offline

Registriert: 05.09.2007, 15:01
Beiträge: 103
Ah hab die DLL gefunden. Hab jetzt mal nur den Klassennamen ändern wollen (warum auch immer) und jetzt bekomme ich immer in der Zeile

Code:
TestNode::TestNode(scene::ISceneNode* parent, scene::ISceneManager* mgr, s32 id)
   : scene::ISceneNode(parent, mgr, id)


Die Fehlermeldung:

Code:
1>.\exampleSceneNodePlugin.cpp(131) : error C2511: 'TestNode::TestNode(irr::scene::ISceneNode *,irr::scene::ISceneManager *,irr::s32)': Überladene Memberfunktion nicht in 'TestNode' gefunden


Ich versteh nicht ganz was der Compiler damit sagen will ._.

Und noch eine Frage:

Wie kann ich dann IRREdit sagen was für Felder bei diesem SceneNode in der Tabelle links angezeigt werden sollen?
Und wie bekomm ich die Daten für den SceneNode für mein Spiel aus der IrrScene Datei?

_________________
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Verschiedene Materialien
BeitragVerfasst: 14.01.2010, 07:52 
Offline
Benutzeravatar

Registriert: 16.10.2007, 07:56
Beiträge: 229
Wohnort: Regensburg
Also was die Fehlermeldung angeht bin ich mir nicht sicher. Solltest mal überprüfen, ob alle Deinitionen der Klasse und Methode korrekt sind.

Für die zweite Frage gibts die Methoden "serializeAttributes" und "deserializeAttributes", definiert in ISceneNode. Die musst du überladen, und alle Werte, die du dort speicherst, sind in IrrEdit vorhanden. Pass auf die Methodendeklarationen auf: ich hab irgendwo ein "const" vergessen und ziemlich lange gebraucht, bis ich das gefunden hab ;).

Noch was zur Clone-Methode: auf jeden Fall auf "NULL" überprüfen, wenn du den geklonten SceneNode anlegst:

Code:
return new <mySceneNodeClass>(newParent?newParent:getParent(),smgr?smgr:getSceneManager());


Das ist jetzt eher Pseudocode, bin mir gerade nicht sicher was die Parameter angeht. Auf alle Fälle immer auf "NULL" überprüfen (mach ich mit dem "?" Operator, den mag ich einfach), und in "NULL" Fall den entsprechenden Wert des zu-klonenden Nodes beutzen.

_________________
Bild


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 25 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 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:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de