Optimierung - viele Surfaces (Haus)
Übersicht

onkelz89Betreff: Optimierung - viele Surfaces (Haus) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
habe ein Problem ![]() Ich erstelle in meinem eigenen Editor Häuser aus einzelteilen (diese sind in C4D erstellt) wie zB. eine Tür, einen Wandteil, Treppen, Fenster usw. Die haben in verschiedenen Räumen auch unterschiedliche Texturen. Ein Objekt zB die Tür besteht dann aus Wandteil, Rahmen und der Tür selbst. Sind dann Childs (auch unterschiedliche Texturen). So... Wenn ich das nun in meinem Hauseditor speichere und in dem Mapeditor lade - geht alles klar. Nur das jedes Objekt min. ein Surface benutzt, was den Editor nach schon wenigen Häusern extrem lahm werden lässt. Ich möchte jetzt wenn möglich die Teile (pro Haus) zusammenfügen. AddMesh geht schonmal nicht wegen den vielen verschiedenen Texturen und ich benutze auch eigentlich nur Entity und keine Mesh Befehle... Ein weiteres Problem ist, dass es möglichst schnell sein müsste, weil Ingame später sollte man die netten kleinen Häuser zerstören können. Dann müsste ich (dacht ich mir) das Große eine Objekt wieder löschen, dann die Hausdatei neu laden (alle Hausteile), dort schauen was verändert wird, dann wieder alles zusammenfügen ^^ Hoffe ich habs deutlich genug geschrieben. Vielen Dank im Vorraus und fürs lesen!!! mfG Onkelz |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstmal sollte CopyEntity helfen wenn du immer die gleichen Teile benutzt
wir nur ein Verweis auf das original Mesh erstellt und du kannst trotzdem Pos./Scale/Rotate benutzen etc. Wenn sich das Mesh von so nem Haus dann verformen soll mußte es als echte kopie erstellen . In C4D solltest du möglichst viel an den Flächen optimieren das keine unnötigen polygone mehr drin sind bzw. wenn es geht welche zusammen fassen . |
||
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also das mit Copy Entity mache ich schon.
Und die Polyzahl ist auf das minimal mögliche bei den Objekten gesenkt, das habe ich mir schon oft angeschaut und am Anfang konnte ich da auch noch ein paar entfernen. Zitat: Wenn sich das Mesh von so nem Haus dann verformen soll mußte
es als echte kopie erstellen . Was meintest du damit? Das Haus besteht ja noch aus vielen Teilen und ich kann somit jedes ansprechen. Aber später wenn das Haus ein Teil ist dann würde ich es komplett löschen und neu bauen lassen, damit ich wieder auf jedes Teil zugreifen und es verändern kann. Das Problem ist, diese Hausteile sind von der Größer her alle wie eine Tür+Rahmen also ca. 1,5 Meter oder so. Wenn ich also nun ein Mittelständiges Einfamilienhaus baue... da kommen richtig viele Objekte zusammen. UND die Objekte haben mehrere Childs (2-3) und das ganze wird zur Ruckelparty ![]() Ich hoffe ihr könnt mir helfen |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Aber später wenn das Haus ein Teil ist dann würde ich es komplett löschen und neu bauen lassen
Wann ist später ? |
||
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also ich wollte erst das haus laden (einzelteile) und zusammenfügen.
Damit ich in einem dorfteil (zb 8 häuser) wenig surfaces habe. Wenn jetz ein haus zb durch ne bombe "berührt wird" , wird dieses gelöscht und wieder in den einzelteilen aufgebaut - dadurch habe ich wieder zugriff auf die einzelnen stellen. Dann prüfen wo die Bombe einschlägt und wie groß der Radius ist - demnach diese Teile löschen oder verändern (je nach Stärke der Explosion) und die übrig gebliebenen Teile wieder zu einem zusammenfügen (das meinte ich mit später)... Alles das in einem Frame natürlich... Kurzfassung: - Hausdatei laden > Einzelteile erstellen - Einzelteile zusammenfügen - Bombe.. - Großes Haus löschen - Hausdatei erneut laden - Einzelteile erstellen - prüfen welche Teile bei der Explo. verändert / gelöscht werden - Rest wieder zusammenfügen |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wird nicht funktionieren "in einem Frame" ausser du spielst auf 10 FPS oder weniger.
Da musst du das Original-Einzelteilhaus irgendwo halten im Speicher. Und zusammenfügen: AddMesh Brushes mit gleicher Konfiguration werden dabei verschmolzen so das Surfaces die zusammengefügt werden können es auch werden. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie Dreamora schon sagt geht ja der Sinn vom CopyEntity flöten
wenn du alles zusammen setzt . |
||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Man könnte so ne Art Boolean-Operations machen, so wird einfach wenn die Bombe einschlägt der Krater berechnen. | ||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Über Mesh verformungen würde ich mir erstmal keine Gedanken machen,
man könnte die Einzelteile austauschen gehen welche die Kaputt aussehen und das wie Bauklötze zusammen fallen lassen . |
||
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
erstmal vielen Dank für die bisherigen Antworten!!! Dreamora hat Folgendes geschrieben: Wird nicht funktionieren "in einem Frame" ausser du spielst auf 10 FPS oder weniger.
Da musst du das Original-Einzelteilhaus irgendwo halten im Speicher. Naja das laden eines Hauses geht relativ schnell und so ne Bombe die einschlägt und berechnet werden müsste kommt nicht oft vor, ich denke einen kurzen Ruckler darf man da außer Acht lassen wenns nicht anders geht. (Ich hab ma 10 Häuser am Start geladen und wir reden von weit weniger als ne halbe Sekunde. Dreamora hat Folgendes geschrieben: Und zusammenfügen: AddMesh Brushes mit gleicher Konfiguration werden dabei verschmolzen so das Surfaces die zusammengefügt werden können es auch werden. Verschmelzen... Also so dass alle Texturen usw erhalten bleiben oder das das Objekt (Haus) ab dann mit einer auskommen muss? Markus2 hat Folgendes geschrieben: Wie Dreamora schon sagt geht ja der Sinn vom CopyEntity flöten
wenn du alles zusammen setzt . Nur warum ist es trotz CopyEntity so lahm, das ist doch wegen den vielen Surfaces so oder? Und darum dachte ich mir, wäre zusammenfügen zu einem sinnvoll ?! Ich hoffe ich irre mich und es gibt noch nen einfacheren Weg ![]() Markus2 hat Folgendes geschrieben: Über Mesh verformungen würde ich mir erstmal keine Gedanken machen, man könnte die Einzelteile austauschen gehen welche die Kaputt aussehen und das wie Bauklötze zusammen fallen lassen . Jep, so wollte ich es auch machen. |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@onkelz89
vieleicht sind die Texturen zu hochauflösend bei deinen vielen Einzelteilen . Oder benutze statt einer Texture nur eine Farbe oder für ein Objekt eine gesamt Texture und eine Farbe je unter Objekt . Sinn würde z.B. auch CopyEntity von einem Haus oder direkt einer Häusergruppe machen nur dann mußte jedes wieder zerlegen ein einzelobjekte das es zusammen fallen kann . Zeige doch mal nen Screenshot von dem was gerendert werden soll , als Wireframe wäre auch gut . |
||
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Texturen sind 256x256 alle. Ich brauch auch die Texturen, nur mit Farbe sä es nachher besch..eiden aus ![]() Ich zeig erstmal die Screens: Normal: Wireframe: |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm,
so wie das im Moment aussieht sind es wirklich zu viele unnütze Flächen . Bei den paar Polygonen und wenigen Texturen macht es schon Sinn Gleiche Texturen auf eine Surface zu bringen . Das mit dem auseinander Fallen ist dann ein anderes Problem ![]() Ich würde dir Raten ein Haus Entity zu erstellen mit den Surfaces Wand,Decke,Boden,Fenster,Tür und die Polys aus deinen einzel Objekten da zu übertragen . In Cinema kannste Gruppen benutzen und denen Namen geben bis 8 Zeichen und in BB das mit Load Anim Mesh einlesen . Damit könntest du eine Zuordnung der Flächen machen bzw. das zusammen basteln . Schwieig wird es wenn du z.B. 4 sichtbar zusammen liegende Flächen als eine haben willst . Da wäre es dann einfacher wenn du einfach größere Deckenplatten direkt in C4D machst . Bei den Wänden auch . |
||
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für die gute Hilfe erstmal bisher ![]() Grundlegend verstehe ich wie du das meinst, Problem ist dann wieder (ich weiß ich bin schlimm) dass alle Häuser / viele Häuser ganz anders aussehen und aufgebaut sind - also wo in verschiedenen Räumen andere Texturen als Tapete, Boden, Decke, Außenwand, Fensterbank, Tür ... geben werde. Dann wäre es schon wieder nicht möglich mit den verschiedenen Fläschen. Auch bei dem Bild (was man dort nicht sieht) sind im innern andere Texturen als Außen. Wenn ich einfach größere Teile machen würde, könnte ich damit bestimmt einsparen, aber glaube insgesamt werden es doch noch zu viele sein... ![]() Gibt es denn eine Möglichkeit den Surfaces "zu sagen" das sie unverändert bleiben und dadurch weniger Performace ziehen? Ich weiß gar nicht genau woran es bei der Masse, der Objekte scheitert... Beim Rendern, oder weil Blitz iwas im Hintergrund macht? |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du könntest in deinem Editor pro Abschnitte die Zeit messen
dann wirste wissen woran es liegt bzw. liegen könnte . Gibt 1000sende Dinge die man falsch machen kann . Wegen Mauer und Tapete auf einer Wand, macht dann halt je Haus und Texture eine Surface und minimaler gehts nicht . Trotzdem solltest du unsinnige Flächen vermeiden (wie in der Decke im Wireframe Screenshot), im Auto fährt man auch nicht mit angezogener Handbremse ![]() Waren das eigentlich Screenshots vom Editor ? Die Bäume im Hintergrund , sind die Low Poly und haste die mit CopyEntity kopiert . In OpenGl kann man statische Dinge kompilieren , also in BlitzMax |
||
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für die Tipps. Werde sie alle ausprobieren ![]() Das sind Bilder aus dem Editor, ja. Bäume sind sehr lowpoly und die Blätter halt auch nur sprites. Und alle per CopyEntity. Blitz Max habe ich nicht nur B3D ist das denn so viel besser? Mit der Decke muss ich mir nochwas überlegen, wegen späterer Zerstörung der Häuser Ingame, aber naja erstmal viele Dank ![]() |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
B3D ist für dich ausreichend . | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Für 3D Programmierung wenn du keine Lust hast dich Monate mit den APIs auseinander zu setzen, ist Blitz3D die richtige Wahl. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group