3D - verschiedene Texturen auf Mesh legen
- Hoessi666
- Beiträge: 19
- Registriert: 09.12.2009 11:34
- Computerausstattung: eMachine Notebook G520, Intel 575 @ 2GHz, 2GB Ram,Intel Mobile 4 Series Express
- Wohnort: R´Lyeh
3D - verschiedene Texturen auf Mesh legen
Hi!
Ist es irgendwie möglich in der Ogre-Engine von PB ein großes Mesh für z.b einen Level mit verschiedenen Texturen zu belegen?
Alleine für Boden, Decke und Wände bräuchte man 3 Texturen, mit ein bischen Abwechslung entsprechend mehr.
Bei kleineren Modellen kann man wohl über die u-/v-Koordinaten einen Teil der Textur "wiedergeben" (wenn man vorher alle benötigten Texturen in eine große gepackt hat). Aber nicht jede Graka wird mit 8192x8192 oder gar größeren Texturen fertig, oder?
Selbst wenn, wie würde man dann eine "Kachelung" der Textur auf einem Mesh hinkriegen? Be einer Einzeltextur würden Werte grösser als 1 so funktionieren (z.B. eine 2 würde die Textur zweimal in Höhe oder Breite auf das Objekt legen), die u-/v-Koordinaten wären aber jetzt doch genutzt um eine Einzeltextur aus der "Großen" zu ziehen...
Oder sehe ich das falsch?
Auf der Ogre-Website ist etwas von SubMeshes zu lesen, die wohl ähnlich wie die Surfaces von Blitz3D Teile eines Meshes definieren, die dann mit anderen Texturen belegt werden können. Gibt es so eine Funktion auch in PB-Ogre (In der .dll scheint nix drin zu sein, hatte sie mal ausgelesen)? Vielleicht über eine undokumentierte Funktionsweise bei SetMeshData?
Irgendwie muss so was doch möglich sein...?!
Ist es irgendwie möglich in der Ogre-Engine von PB ein großes Mesh für z.b einen Level mit verschiedenen Texturen zu belegen?
Alleine für Boden, Decke und Wände bräuchte man 3 Texturen, mit ein bischen Abwechslung entsprechend mehr.
Bei kleineren Modellen kann man wohl über die u-/v-Koordinaten einen Teil der Textur "wiedergeben" (wenn man vorher alle benötigten Texturen in eine große gepackt hat). Aber nicht jede Graka wird mit 8192x8192 oder gar größeren Texturen fertig, oder?
Selbst wenn, wie würde man dann eine "Kachelung" der Textur auf einem Mesh hinkriegen? Be einer Einzeltextur würden Werte grösser als 1 so funktionieren (z.B. eine 2 würde die Textur zweimal in Höhe oder Breite auf das Objekt legen), die u-/v-Koordinaten wären aber jetzt doch genutzt um eine Einzeltextur aus der "Großen" zu ziehen...
Oder sehe ich das falsch?
Auf der Ogre-Website ist etwas von SubMeshes zu lesen, die wohl ähnlich wie die Surfaces von Blitz3D Teile eines Meshes definieren, die dann mit anderen Texturen belegt werden können. Gibt es so eine Funktion auch in PB-Ogre (In der .dll scheint nix drin zu sein, hatte sie mal ausgelesen)? Vielleicht über eine undokumentierte Funktionsweise bei SetMeshData?
Irgendwie muss so was doch möglich sein...?!
- dllfreak2001
- Beiträge: 2925
- Registriert: 07.09.2004 23:44
- Wohnort: Bayern
Re: 3D - verschiedene Texturen auf Mesh legen
Also in Milkshape konnte man das wie bei einem leveleditor machen
Da hatte mal meine Rakete 4 verschiedene Texturdateien.
Soweit ich weiß standen diese auch in der Materialdatei des Models.
Allerdings die Models sind als Level nur bedingt brauchbar, weil immer alles gerendert wird. Ich würde eine Welt aus vielen verschiedenen Entitys bauen die ich dann per Routine selbst ausblenden kann.
Da hatte mal meine Rakete 4 verschiedene Texturdateien.
Soweit ich weiß standen diese auch in der Materialdatei des Models.
Allerdings die Models sind als Level nur bedingt brauchbar, weil immer alles gerendert wird. Ich würde eine Welt aus vielen verschiedenen Entitys bauen die ich dann per Routine selbst ausblenden kann.
I´a dllfreak2001
- Hoessi666
- Beiträge: 19
- Registriert: 09.12.2009 11:34
- Computerausstattung: eMachine Notebook G520, Intel 575 @ 2GHz, 2GB Ram,Intel Mobile 4 Series Express
- Wohnort: R´Lyeh
Re: 3D - verschiedene Texturen auf Mesh legen
Habe mit PB-Ogre noch nix gemacht, deswegen frage ich jetzt mal dumm:
Ansonsten: Sind die Material-Dateien für Ogre die Lösung für meine Frage? Ich hatte die bisher so interpretiert, dass damit nur komplexere Materialien für Bump-Mapping, Normal-Mapping usw. erstellt werden können...
Werden bei PB die Entities ausserhalb der CameraRange nicht automatisch ausgeblendet.. sprich: nicht gezeichnet?dllfreak2001 hat geschrieben:Also in Milkshape konnte man das wie bei einem leveleditor machen
Allerdings die Models sind als Level nur bedingt brauchbar, weil immer alles gerendert wird. Ich würde eine Welt aus vielen verschiedenen Entitys bauen die ich dann per Routine selbst ausblenden kann.
Ansonsten: Sind die Material-Dateien für Ogre die Lösung für meine Frage? Ich hatte die bisher so interpretiert, dass damit nur komplexere Materialien für Bump-Mapping, Normal-Mapping usw. erstellt werden können...
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Re: 3D - verschiedene Texturen auf Mesh legen
>> Werden bei PB die Entities ausserhalb der CameraRange nicht automatisch ausgeblendet.. sprich: nicht gezeichnet?
Kann man ausprobieren. Soweit ich weiß ist das aber wie fast überall nur Entityweise und nicht partiell.
>> Ansonsten: Sind die Material-Dateien für Ogre die Lösung für meine Frage? Ich hatte die bisher so interpretiert, dass damit nur komplexere Materialien für Bump-Mapping, Normal-Mapping usw. erstellt werden können...
Damit ist noch viel mehr möglich. Aber vielleicht erfüllt AddMaterialLayer schon deine Wünsche.
Kann man ausprobieren. Soweit ich weiß ist das aber wie fast überall nur Entityweise und nicht partiell.
>> Ansonsten: Sind die Material-Dateien für Ogre die Lösung für meine Frage? Ich hatte die bisher so interpretiert, dass damit nur komplexere Materialien für Bump-Mapping, Normal-Mapping usw. erstellt werden können...
Damit ist noch viel mehr möglich. Aber vielleicht erfüllt AddMaterialLayer schon deine Wünsche.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
- Hoessi666
- Beiträge: 19
- Registriert: 09.12.2009 11:34
- Computerausstattung: eMachine Notebook G520, Intel 575 @ 2GHz, 2GB Ram,Intel Mobile 4 Series Express
- Wohnort: R´Lyeh
Re: 3D - verschiedene Texturen auf Mesh legen
Zu 1: Das ist wirklich bei den meisten Engines/Sprachen, die ich kenne so. Würde aber reichen... Der Level wir halt komplett dargestellt; Hebel, Objekte, Türen extra...DarkDragon hat geschrieben:>> Werden bei PB die Entities ausserhalb der CameraRange nicht automatisch ausgeblendet.. sprich: nicht gezeichnet?
Kann man ausprobieren. Soweit ich weiß ist das aber wie fast überall nur Entityweise und nicht partiell.
>> Ansonsten: Sind die Material-Dateien für Ogre die Lösung für meine Frage? Ich hatte die bisher so interpretiert, dass damit nur komplexere Materialien für Bump-Mapping, Normal-Mapping usw. erstellt werden können...
Damit ist noch viel mehr möglich. Aber vielleicht erfüllt AddMaterialLayer schon deine Wünsche.
Zu 2: Ich glaube, da hast Du mich mißverstanden...
Ich will keine verschiedenen Schichten von Texturen übereinander haben (dafür würde AddMateialLayer reichen), sondern der Level besteht ja aus mehreren Texturen (mehrere Böden, Decken, Wände...).
Wie kann man in PB das hinkriegen: also SetMeshData für Vertices, Triangles etc. und dann an den gewollten Stellen die entsprechenden Texturen (nebeneinander, nicht übereinander, sonst sähe ja der ganze Level gleich aus...).
Die Level sollen nicht mit exorbitanten Polygonzahlen protzen, sondern eher oldschoolig rüberkommen á la Rise of the Triad, Doom, Quake 1 und aus Standard-Wänden, -Decken, -Rampen usw zur Laufzeit (also beim Start des Levels) erstellt werden.
Die Daten dafür würden aus einem File gelesen und dann die entsperchenden Aufrufe zur Erstellung in der 3D-Welt starten.
Wenn das mit PB-Ogre so ohne weiteres nicht drin ist, welche Engines gäbe es denn, die das können (mal mit Ausnahme vom B3D SDK)?
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Re: 3D - verschiedene Texturen auf Mesh legen
Ja.Hoessi666 hat geschrieben:Zu 1: Das ist wirklich bei den meisten Engines/Sprachen, die ich kenne so. Würde aber reichen... Der Level wir halt komplett dargestellt; Hebel, Objekte, Türen extra...
Desshalb hab ich geschrieben "vielleicht". Aber damit würde es sicher auch gehen (mit Shader dazu). Nur PB OGRE hat eben keine Methoden um alternative Meshdaten zu speichern. Was allerdings geht ist wenn du eine Textur nimmst und dort angibst welche Textur draufsoll. Dann lässt du im Shader die entsprechende Textur anzeigen und hast einen Vorteil: du musst nicht Vertexweise arbeiten, sondern kannst auch Texelweise die Textur ändern.Hoessi666 hat geschrieben:Zu 2: Ich glaube, da hast Du mich mißverstanden...
Ich will keine verschiedenen Schichten von Texturen übereinander haben (dafür würde AddMateialLayer reichen), sondern der Level besteht ja aus mehreren Texturen (mehrere Böden, Decken, Wände...).
Wie kann man in PB das hinkriegen: also SetMeshData für Vertices, Triangles etc. und dann an den gewollten Stellen die entsprechenden Texturen (nebeneinander, nicht übereinander, sonst sähe ja der ganze Level gleich aus...).
Die Level sollen nicht mit exorbitanten Polygonzahlen protzen, sondern eher oldschoolig rüberkommen á la Rise of the Triad, Doom, Quake 1 und aus Standard-Wänden, -Decken, -Rampen usw zur Laufzeit (also beim Start des Levels) erstellt werden.
Die Daten dafür würden aus einem File gelesen und dann die entsperchenden Aufrufe zur Erstellung in der 3D-Welt starten.
Wenn das mit PB-Ogre so ohne weiteres nicht drin ist, welche Engines gäbe es denn, die das können (mal mit Ausnahme vom B3D SDK)?
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
- Hoessi666
- Beiträge: 19
- Registriert: 09.12.2009 11:34
- Computerausstattung: eMachine Notebook G520, Intel 575 @ 2GHz, 2GB Ram,Intel Mobile 4 Series Express
- Wohnort: R´Lyeh
Re: 3D - verschiedene Texturen auf Mesh legen
Sorry, aber ...: Bahnhof !!!DarkDragon hat geschrieben: Desshalb hab ich geschrieben "vielleicht". Aber damit würde es sicher auch gehen (mit Shader dazu). Nur PB OGRE hat eben keine Methoden um alternative Meshdaten zu speichern. Was allerdings geht ist wenn du eine Textur nimmst und dort angibst welche Textur draufsoll. Dann lässt du im Shader die entsprechende Textur anzeigen und hast einen Vorteil: du musst nicht Vertexweise arbeiten, sondern kannst auch Texelweise die Textur ändern.
Bin kein 3D-Guru und habe mit Shadern noch nie gearbeitet (war auch nie ein Anlass für mich gegeben).
Wie können Shader mir helfen verschiedene Teile eines Meshes anders zu texturieren? Und selbst wenn...ist das für so eine simple Sache nicht vollkommen überzogen?
In Blitz3D z.B. besteht ein Mesh aus mindestens einem Surface, man kann aber unzählige zusätzliche dazu in das Mesh packen. Jedes Surface kann ich anders texturieren. Würde ich einen Würfel als Raum erstellen wollen, müßte ich insgesamt drei Surfaces haben, wenn Boden, Decke und die vier Wände andere Texturen haben sollen.
Ogre3D hat laut Webseite sogenannte SubMeshes, die wohl genau diesem Zweck dienen können http://www.ogre3d.org/docs/api/html/cla ... bMesh.html.
Kann man das über PB nicht ansprechen, oder auf andere (simple) Weise zumindest diesen Effekt erreichen?
Selbst wenn man Shader dafür nützen könnte (s.o)... Wäre das nicht mit Kanonen auf Spatzen zu schiessen?
Wie werden denn bei kompletten Modellen, die man aus Editoren wie DelEd heraus exportiert und in PB lädt, die verschiedenen Texturen verwaltet?
P.S. Übrigens fällt mir gerade auf: Kann man die REichweite von Lights gar nicht verändern?
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Re: 3D - verschiedene Texturen auf Mesh legen
Das geht mit PureBasic OGRE so nicht.Hoessi666 hat geschrieben:In Blitz3D z.B. besteht ein Mesh aus mindestens einem Surface, man kann aber unzählige zusätzliche dazu in das Mesh packen. Jedes Surface kann ich anders texturieren. Würde ich einen Würfel als Raum erstellen wollen, müßte ich insgesamt drei Surfaces haben, wenn Boden, Decke und die vier Wände andere Texturen haben sollen.
Ogre3D hat laut Webseite sogenannte SubMeshes, die wohl genau diesem Zweck dienen können http://www.ogre3d.org/docs/api/html/cla ... bMesh.html.
Grafikkarten werden immer mehr darauf ausgerichtet. Du kannst auch uralt shader nehmen. Ob es bis zu Register Combiners zurückgeht weiß ich nicht, aber bis cG und assembler shaders gehts zurück.Hoessi666 hat geschrieben:Kann man das über PB nicht ansprechen, oder auf andere (simple) Weise zumindest diesen Effekt erreichen?
Selbst wenn man Shader dafür nützen könnte (s.o)... Wäre das nicht mit Kanonen auf Spatzen zu schiessen?
Also du erstellst erstmal eine Textur für die Modelle, die praktisch sagt welche "echte" Textur da jetzt drauf soll. So entspricht z.B.:Hoessi666 hat geschrieben:Wie werden denn bei kompletten Modellen, die man aus Editoren wie DelEd heraus exportiert und in PB lädt, die verschiedenen Texturen verwaltet?
Farbwert (0, 0, 0) -> Textur Stein
Farbwert (0, 0, 128) -> Textur Holz
Farbwert (0, 0, 255) -> Textur Graß
Farbwert (0, 128, 0) -> Textur Metall
...
Oder wenn du sogar überblenden möchtest und nur 3 oder 4 Texturen brauchst kannst du auch
Farbwert (0, 0, x) -> Textur Stein * x
Farbwert (0, x, 0) -> Textur Holz * x
...
machen. Im Shader wird dann einfach die entsprechende Textur gewählt und der Farbwert an derselben Position gewählt.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Re: 3D - verschiedene Texturen auf Mesh legen
auch wenn der thread jetzt schon bissl alt ist....
geht das inzwischen?
also texturen pro surface zuweisen(ohne shader)
also ein modell und mehrere texturen.und zwar nicht als layer(normal, bump map o.ä.)
sondern wenn ich z.b. ein modell habe welches boden und wände hat und ich kann jeweils eine seperate textur zuweisen.
geht das inzwischen?
also texturen pro surface zuweisen(ohne shader)
also ein modell und mehrere texturen.und zwar nicht als layer(normal, bump map o.ä.)
sondern wenn ich z.b. ein modell habe welches boden und wände hat und ich kann jeweils eine seperate textur zuweisen.
Laptop: Win10@64bit - i3 2x2Ghz - 8GB Ram - 1TB HDD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
Re: 3D - verschiedene Texturen auf Mesh legen
Das ging vermutlich auch schon damals ...
http://www.ogre3d.org/docs/manual/manua ... rd_005fset
Wenn man sich nur mal die Doku von OGRE durchlesen würde
tex_coord_set + Mesh mit mehreren Sätzen Texturkoordinaten
http://www.ogre3d.org/docs/manual/manua ... rd_005fset
Wenn man sich nur mal die Doku von OGRE durchlesen würde

tex_coord_set + Mesh mit mehreren Sätzen Texturkoordinaten