Find-Child-Bewegung und Resourcen bei komplexen Modellen
Übersicht

Cedric30003Betreff: Find-Child-Bewegung und Resourcen bei komplexen Modellen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey!
Ich habe 2 Fragen. 1.) Is es möglich eine Bewegung mit einem Objekt zu machen, welches man mit FindChild rerausgepickt hat, zu machen? Also quasi: Code: [AUSKLAPPEN] objekt=LoadAnimMesh("objekt.3ds") teil=FindChild(objekt,"mesh01") If KeyHit(10) Then RotateEntity teil,0,90,0 ;Dies hat in früheren Tests nicht funktuiniert EndIf Gibt es da einen Trick oder muss ich das Objekt seperat laden? Zum 2.) Wir haben ein sehr komplexes Model gebaut, welches laut Aussage von Midimaster sehr viel Resourcen fressen soll. Kann man da codetechnisch was machen? Danke im Voraus MfG Phillip & Cedric |
||
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB) |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
1) Wie meinen? Ich verstehe die Frage nicht.
2) Nein. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Cedric30003 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es wurde immer ein Fehler angezeigt, (Entity does not exist) wenn ich dann Key10 gedrückt habe | ||
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB) |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das liegt daran, dass das Child nicht gefunden wird. Exportiere das Modell mit Blender nach .b3d, dann wirds funktionieren. Das .3ds Format wird von Blitz nicht vollständig importiert. Du kannst auch keine Bone-Animationen in .3ds benutzen. Ich denke daran liegt es. Es kann natürlich auch sein, dass du einen falschen Namen für das Child verwendest, was ich aber nicht denke. Ebenso können Vertexgruppen vllt nicht als Child geladen werden... es kann an so vielem liegen, doch ich vermute, dass es die beschränktheit von .3ds unter Blitz ist ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
also, ich werde das ganze Problem mal etwas genauer beschreiben, damit jemand uns einen Tipp geben kann, wie man zu dem gewünschten Ergebnis kommen könnte.
Frage 1: Cedric und Phillip habe ein echt tolles 3D-Modell einer Tram erstellt. Diese Tram ist dreiteilig und soll an zwei Gelenk-Stellen abknicken, wenn sie um die Kurve fährt. Dazu müssten wir jedem der einzelnen Elemente mitteilen, das es knicken muss. Wie macht ihr das immer bei 3D-Figuren? Die bewegen doch auch oft die Arme zum Schiessen oder laufen mit ihren Füßen. Oder ist es so, dass man tatsächlich jedes bewegliche Element als ein eigenständiges Mesh laden sollte um es unabhängig bewegen zu können? Frage 2: Die Tram hat schon ohne die Texturen 3.7MB und über 100.000 Vertices. Gibt es irgendwelche Tricks, die Genauigkeit der Darstellung zu reduzieren um die Performance nicht einbrechen zu lassen. Oder arbeitet man mit Dateien verschiedener Qualität ein und des selben Objektes je nachdem, wieviel zu sehen ist. Aktuell ist, auch wenn man aus dem Fahrerfenster schaut und eigentlich gar nichts von der Tram zu sehen ist, die Performance suboptimal. |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das sind etwa 99.000 Vertices zu viel. Da kann man automatisch auch nichts dran ändern.
Solange ein Dreieck davon im Blickfeld der Kamera liegt, wird - so ich mich nicht stark irre - das gesamte Modell gerendert. Die Größenverhältnisse & wie das abknicken aussehen soll, wären noch interessante Informationen, um an den richtigen Stellen zu optimieren. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
sowas hab ich mir schon gedacht! wie können die Jungs nun die datenmenge reduzieren? Da müßte sich doch was im 3D-Programm abändern lassen?
Wie meinst du das mit den Größenverhältnissen? Das Abknicken ist wird so zwischen 10° und 30° liegen. Du kennst das sicher von realen Straßenbahnen wo in der Mitte so ein Gelenk sitzt... |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn es eine Funktion gibt, die überzählige Vertices entfernt, könnte man sie in jedem Fall ausprobieren.
Die Erkennung, was entfernt werden kann, ohne das Modell zu Verunstalten, hielte ich schon mal für kompliziert umzusetzen - und sie wird entsprechend Fehleranfällig sein. Ich bin keine Autorität auf dem Gebiet von 3D Modellen, aber weniger ist mehr: Details immer über Texturen realisieren. Startet lieber mit einer leeren Box, bis die Mechanik läuft. In Sachen Größenverhältnisse: Was wird der Spieler davon eigentlich je sehen? Die Unterseite benötigt keine Details. Fenster müssen nicht rund sein (siehe Textur.). Ein Gelenk könnte man nun am einfachsten realisieren, indem man zwei Meshes ineinander schiebt. Dann braucht es auch keine Animation und eine Verwaltung dessen. Anfang, Gelenk und Ende des Bahn werden auf Strecke fixiert, etwa durch Pivots, die der Strecke folgen und die Tramteile orientieren sich eben an diesen Pivots. Wie auch immer ihr es genau löst: Benutzt dazu keine Kollision. Eine Mathematische Lösung ist hier gefragt. Wenn sie funktioniert, funktioniert sie immer. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das die Modelle viel zu komplex sind hatten wir mit den beiden schonmal durchgehechelt. Es bringt nichts superkomplex zu starten und dann reduzieren zu wollen. Solch ein Modell ist für einen Renderscreen toll, aber nicht für ein Spiel. Man kann es vielleicht noch benutzen um Bumpmaps zu generieren, aber ab davon sollte das Modell mit dem Gedanken "so wenig Polys wie möglich" im Hinterkopf erstellt werden.
Der Innenraum muss gar nicht generiert werden, ebenso sind alle feineren Details per Textur zu realisieren. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Xeres
ich habe die gesamte Schienenlogik bereits genauso wie du es vorschlägst entwickelt. Meine "primitive" Tram besteht aus nur 3 Cubes, die auf 4 "Achsen" über die Strecke gezogen wird. Jede Achse fragt pro Bildaufbau Ihre Position im Raum aufgrund Ihrer Streckenposition ab. Die Streckenfunktion gibt jeweils Richtung und Koordinaten zurück. Die "Achsen" richten sich aus, die Cubes werden dann ganz einfach "dazwischen" positioniert. Hier scheine ich also auf dem richtigen Weg zu sein. @Bladerunner Ich habe ja noch nicht viel in 3D gemacht, daher bin ich unsicher, wo man mit den Feinheiten aufhört. Deshalb schildere ich dir hier mal, wie ich das Schienennetz erstellen möchte. Es soll immer erst im Programm entstehen. Meine Idee ist aus 4 Vertices/2Triangles ein Viereck zu generieren, dass man von oben sehen kann, darauf soll eine Schienentextur. Bei GERADEN wird durch die Berechnung von UV erreicht, dass sich die Textur wiederholt. Nun kommen für jeden weiteren Teilabschnitt immer 2 neue Vertices/Triangles hinzu, die mit der bestehenden Strecke verbunden werden. In Kurven wird je 1° ein neuen Abschnitt hinzukommen. Die UVs der beiden neuen Vertices werden dort immer um genau 1 erhöht. So müßte die Textur doch "um die Kurve" laufen, oder? so. z.b.: BlitzBasic: [AUSKLAPPEN] Graphics3D 800,600Textur dazu: Cedric meint nun, man müsse aber die "Tiefe" der Rillenschienen in echtem 3D nachbilden. Wird das nötig sein? Reicht nicht nur ein Fake? Ich denke, das man damit sehr schnell Probleme mit dem Terrain bekommen kann... Bisher fake ich das Schienennetz durch sehr viele kurze CYLINDER die jeweils einen Eisenstrang darstellen. In den Kurven sind die nur 1Meter lang und liegen immer 1-5° versetzt zur Vorschiene. Allerdings verbrauche ich auf diese Art etwa 100 CYLINDER pro 100Meter. Das läßt irgendwann die Performance einknicken... |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde nicht mit 1°-Schritten arbeiten, aber prinzipiell sollte eine Textur reichen, ja.
Wenn ihr es unbedingt plastisch modellieren wollt, würde ich cubes statt cylinder nehmen, da hier wesentlich weniger Polys zu verzeichnen sind. (siehe Half Life, da sind die Schienen auch texturierte Cubes.) Oder ich steigt gleich auf ein Single Surface System um, da euch ob Cube- oder Cylinder - die vielen Surfaces die BB erstellt die Performance auf jeden Fall zerschrotten werden. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich habe mal so ein Schienenmodell gemacht, nur gerade nur aus Cubes. Wie man sieht, existieren keine Faces an der Unterseite und man könnte so ein Modell immer wieder hintereinander setzen (habe ich beim modelln auch schon 3mal gemacht wie man sieht) und fertig ist die gerade Strecke. Die Schienen die nicht in Sichtweite sind würde ich in jedem Fall mit HideEntity ausblenden. lg, Count-Doku |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kommt der Spieler den Schienen nah genug, um den Unterschied mit zu bekommen? Nochmal die Frage: Steigt man in die Bahn ein, oder sieht man das aus der Vogelperspektive von oben?
In jedem Fall kann man diese Späße auch später noch einbauen, wenn man noch Ressourcen übrig hat, nachdem die essentiellen Teile stehen. Oder es gibt einen Schalter in den Optionen, um das ein/aus zu stellen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
erst mal danke für Euere Tipps. Aber ich habe noch Fragen:
@BladeRunner Zitat: ...Ich würde nicht mit 1°-Schritten arbeiten... sondern?... in meinem obigen Beispiel scheint es mit 5° auch schon ganz gut auszusehen. irgendwo dazwischen wird wohl die effizienteste Einteilung sein.
Der Cylinder hatte nur 3 Punkte und sieht eshalb eher wie ein langgezogenes Dreieck aus. ich vermutete, das wegen des fehlenden Deckels/Boden weit weniger Resources verbraucht werden als mit Cubes. Die hatte ich vorher. Letzendlich wird es auf eine einziges Mesh mit nur 1 Surface wie im obigen Beispiel hinauslaufen. Die Berechnung der Vertices ist sehr leicht zu bewerkstelligen. Ist das das, was Du als Single Surface bezeichnest, oder gibt es da noch Tricks? Blöd ist ja auch, dass es unterschiedliche Texturen bei einer Straßenbahn gibt. Mal fährt sie in Asphalt oder Pflastersteinen, mal in Gras oder Schotter mit Schwellen. Dafür wären wahrscheinlich jeweils eigene Surfaces nötig, gell? @countdoku das Problem ist dabei, das es hunderte solcher Stücke werden, jedes mit einer eigenen Surface. Geht das nicht irgendwann auf die Performance? Und dies löst noch nicht das Problem der Oberflächen zwischen den Gleise. Daher dachte ich, ein kompakter Gleiskörper der gleichzeitig Schienen und Untergund enthält wäre am effizientesten. @Xeres Man kann die Bahn aus beliebigen Perspektiven betrachten: Fahrersicht, Vogelperspektive, Straßenrand oder auch Fahrgastblick,.... Die Türen werden auf und zu gehen. |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit einer Textur die alles enthält müsste man noch die richtigen UV Werte setzen, was sowieso nötig sein wird, wenn es mehr als eine Rundstrecke geben soll - Weichen sollte es ja vermutlich auch noch geben.
Ob 1° oder 5° hängt ja vom Abstand ab. Das Streckensystem ist nicht Trivial... |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mehrere perspektiven? Mhh ![]() Da hätte ich eine alternative idee : Anstatt ein sehr hochauflösendes Mesh für alle erdenklichen Perspektiven zu nutzen, lieber mehrere erstellen. Jeweils für eine "ansicht" optimiert - in der vogelperspektive zb braucht man doch nicht wirklich die räder sehen, oder? Allerdings weiß ich nicht, ob in BB ein wechsel zwischen den ressourcen so einfach zu realisieren wäre :/ Auf der anderen seite könnte man hier sicher einiges sparen. |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Xeres
das Streckensystem ist bereits gelöst. Ich habe eine sehr leicht zu verarbeitende textbasierte Gleisbeschreibungssprache erarbeitet, in der man nur pro Gleisabschnitt nur den Parameter Länge (bei GERADE) und Radius/Winkel (bei KURVE) angeben muss, sowie das Gleis benennen muss, an dem das neue Gleistück angehängt werden soll. Code: [AUSKLAPPEN] Gleis Nr=0,START,Richtung=56°
Gleis Nr=1,GERADE,Länge=100,An=0 Gleis Nr=2,KURVE,Radius=10m,Winkel=30°,An=1 Gleis Nr=3,GERADE,Länge=10,An=2 ....usw Daraus errechnet ein Algo den 3D-Streckenverkauf und erstellt das Gleismodell und gibt auf Eingabe eines best. Bahn-km (z.b. km 20,5653) die genaue x/y/z-Position im 3D-Raum zurück. So erfragen die Fahrgestelle ihre aktuelle Position während der Fahrt. Beispiel: Ein 2.Fahrgestell fährt ja immer 10m hinter dem ersten her: z.b. erstes Fahrgestell ist bei km 20,5653, dan folgt daraus: zweites Fahrgestell ist bei km 20,5553. Daraus läßt sich mit dem Algo dann die Tram positionieren. |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
Cedric30003 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Midimaster: Als du weiter oben vom Gelenk sprachst, meintest du doch soein Faltbalg ?
@Xeres: Mit welchem 3D Programm könnte man überflüssige Vertices denn entfernen? In Anim8or ist mir keine Funktion bekannt. Zum Thema Mesh in einanderschieben, das haben wir schon in anderen Programmen gesehen, das sieht überlst **** aus. Und ich möchte gerne wissen, wie du eine runde Scheibe durch eine Textur ersetzen willst? Man soll ja schon noch durchschauen können. @BladeRunner: Sorry, aber vllt habe ich es einfach vergessen, in welchem Thema hatten wir uns darüber unterhalten? Und der Innenraum sollte schon dabei sein, damit man nacher zB im Egomodus sich auch in der Bahn bewegen kann. @Midimaster: Die Rillen sind schon nötig, da wenn man zB auf Asphalt fährt, würde die Bahn ohne Rillen ja auf der Straße stehen. @BladeRunner & Xeres: Die Schienen kommt man schon so nah, dass man sie schon detailreich ansehen können muss. Sorry wenn ich jetzt etwas chaotisch geschrieben habe, bin die ganzen Posts nur von oben nach unten durchgegangen. MfG Cedric |
||
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB) |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wir hatten uns schon zu Anfang eurer beider Karrieren hier (PhillipB und Deiner) über Polycounts unterhalten. Im Chat als auch hier im Forum. Einhellige Meinung aller war dass ihr von den hochauflösenden Modellen ablassen müsst wenn ihr voran kommen wollt. Daran hat sich nix geändert.
Wenn Du nun drauf drängst dass die Schienen hochauflösend modelliert werden (ebenso wie der absolut unnötige Faltbalg korrekt dargestellt werden soll) sehe ich dass ihr keinen Stratz dazu gelernt hab und verabschiede mich aus weiteren Diskussionen. Schon damals erwähnte ich dass es sinniger wäre eine funktionierende Spielmechanik zu haben. Ihr wollt Stop-Motion-Kino mit 3-Millionen-Poly-Modellen? Bitte schön, euer Bier. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Propellator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ihr könntet eine Art Level of Detail einbauen - Nahe befindliche Objekte benutzen das detailierte Objekt, weit entfernte das lowpoly-objekt. Mit der Distanz von Spieler<->Objekt ([EntityDistance]) könnt ihr dann beurteilen welches Objekt genutzt werden soll.
Und 100'000 Vertices sind zu viel. Eindeutig zu viel. Benutzt anstatt ausmodelierter Details lieber Texturen. Half-Life 2 hatte auch Trams, und die habens irgendwie geschafft. ![]() |
||
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group