Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Collisions Model



Dende
14.05.2010, 01:08
Moin,

Ich habe vor kurzem damit angefangen Modele aus 3Ds Max ins Spiel zu bringen, das funktioniert auch ganz gut abgesehen davon dass ich es nicht schaffe ein Begehbares Objekt zu kompilieren.
Nach einigen versuchen des ändern der Befehle in der QC - Datei gebe ich es jetzt auf und bitte auch um Hilfe ^^,aber ich habe den Fehler entdeckt und zwar ist das Collisionsmodel der Übeltäter leider weiß ich nicht wie ich das ändern kann.

http://heite.pytalhost.com/collision.jpg

Das Linke ist meins (ist nicht das eigentliche Model aber zu testzwecken nutze ich es) und dies sollte eben mehr wie das Rechte aussehen damit man durchgehen kann.

Und hier ist meine aktuelle QC - Datei



$modelname "cylin\cylin.mdl"
$cdmaterials "cylin\"

$scale 10
$surfaceprop "plastic"

$keyvalues { "prop_data" { "cylin" "Plastic.Medium" } }


$body studio "cylin"

$sequence idle "cylin" loop fps 1

$collisionmodel "cylin.smd" {
$automass
$maxconvexpieces
}


Hoffe beim Suchen in Google und hier nichts übersehen zu haben.

MfG

DasMatze
14.05.2010, 01:39
Ein Kollisionsmodel besteht aus einzelnen konvexen (http://de.wikipedia.org/wiki/Konvexe_Menge) Gruppen. Alle Gruppen in Untergruppen und alle konkaven Gruppen werden zu einer konvexen Gruppe zusammengefasst. Hier ein paar Beispiele, wie es sein sollte:
http://img693.imageshack.us/img693/4157/kollisionsmodel.th.jpg (http://img693.imageshack.us/img693/4157/kollisionsmodel.jpg)

Ist anfangs etwas umständlich, aber die einzige mögliche Methode.

BTW: Du kannst die Anführungszeichen in der QC Datei weglassen. Die geschweiften Klammern bei $keyvalues sollte man ähnlich wie bei $collisionsmodel anordnen, damit die Übersicht gewahrt bleibt (QC Dateien können sehr lang werden) und $maxconvexpieces bringt nichts, wenn dahinter nicht ein Wert steht. Wenn du mit dem Orange Box Compiler compilest (solltest du), dann bringt $maxconvexpieces eh nichts mehr. Stattdessen musst du den Kommandozeilenparameter -fullcollide beim Compiler hinzufügen, damit er die maximale Anzahl an konvexen Gruppen ignoriert und alle compiled (Ich nehme an du nutzt den Studio MDL Compiler, da einfach ein Haken bei "Full Collide" setzen).

Pac_187
14.05.2010, 01:50
Gegebenenfalls noch $concave als Parameter einbauen, falls das Kollisionsmodell Konkave ist.

(Schreckliches) Beispiel:

http://pac.gmod.de/Modeling/XSI/Tutorials/ugly_example.JPG

Dende
14.05.2010, 01:57
Ne ich mach das per Konsole alles andere lief bei mir irgendwie nicht. Und die QC erstelle ich per HL2 Compile Toolkit.
Und das ist schon der von Orangebox, aber als ich den Befehl einmal genutzt habe ging es, der Rest des Befehls ist noch drin für den Fall dass ich ihn noch brauche.

Und was die konvexen etc. angeht inwiefern muss ich das dann ändern?

$concave habe ich immer mal wieder drin zum testen aber das hat irgendwie auch nicht geändert.
Und wie sieht das eigentliche Model zu der F-302 aus, würde mich interessieren. ^^

MfG

DasMatze
14.05.2010, 02:32
$concave habe ich immer mal wieder drin zum testen aber das hat irgendwie auch nicht geändert.

Weil du ja auch nichts am Kollisionsmodel geändert hast. Schau doch meine Bilder an und sieh, dass man einzelne Gruppen benötigt, die konvex sein müssen, also jedes Segment des Kreises der Röhre einzeln.

Dende
14.05.2010, 02:57
Also ich habe in 3DsMax 18 Boxen erstellt jede dieser Box stellt eines der Segmente da und damit habe ich es dann versucht aber geklappt hat es so auch nicht. habe es dann einmal so gemacht dass ich alle per Attach verbinde und einmal alle einzelnd gelassen aber das Ergebnis war das gleiche.

Wie schaut das denn aus muss ich einzelne Teile des "Tunnels" als SMD exportieren und die dann alle in der QC-Datei auflisten?


$collisionmodel "cylin.smd" {
$automass
$concave
}
$collisionmodel "cylin2.smd" {
$automass
$concave
}
$collisionmodel "cylin3.smd" {
$automass
$concave
}
$collisionmodel "cylin4.smd" {
$automass
$concave
}


so in etwa?

MfG

WeltEnSTurm
14.05.2010, 08:59
$scale 1

Dende
14.05.2010, 12:45
Und was genau willst du mir jetzt damit sagen, es ist doch egal ob ich $scale 1 oder wie in meinem Fall $scale 10 verwende ist doch am Ende dasselbe Objekt nur eben größer oder kleiner oder liege ich da falsch ?

MfG

Pac_187
14.05.2010, 15:04
$concave habe ich immer mal wieder drin zum testen aber das hat irgendwie auch nicht geändert.
Und wie sieht das eigentliche Model zu der F-302 aus, würde mich interessieren. ^^

MfG

Da gibt's Bilder:

http://www.facepunch.com/showpost.php?p=21558260&postcount=47

:D

Pac_187
14.05.2010, 15:07
Du musst die einzelnen Boxen zu einem einzigen Objekt/Mesh zusammenfüge/mergen.

DasMatze
14.05.2010, 15:29
Genau. Segmente erstellen, jedes einzelne gruppieren, als eine SMD Datei exportieren, ein Verweis in der QC Datei machen.

€r!k
14.05.2010, 17:11
$collisionmodel "cylin.smd"
{
$automass
$concave
}

Das stimmt schon, du hast nur einen entscheidenden Fehler:

1. ein richtiges Physmodel kann immer nur eine EXTRA SMD sein, in der viele convexe Meshe vorhanden sind. Wenn du XSI nutzt kann es sein, dass du zuerst was umstellen musst. Und zwar: Explorer-> ein Mesh (egal welches) -> Global Mesh Proximity (oder so) und dann auf NEIN -> Discontiunity -> Ausschalten!

Pac_187
14.05.2010, 17:16
Bzgl. dem was €r!k wegen XSI erwähnt hat, hier 'n Tutorial was ich mal für einen im FP geschrieben habe :D

http://pac.gmod.de/Modeling/XSI/Tutorials/XSI_Coll_Model.jpg

Dende
14.05.2010, 17:40
Also ich habe nun für jedes Segment eine Box erstellt und diese lasse ich dann einfach so und exportiere das ganze oder muss ich sie zuerst per attach verbinden oder was DasMatze meinte jede Box einzelnd gruppieren?

MfG

PS: nutze 3dsmax 2009 also kein XSI

Edit:

Also jede Box eine Gruppe geht bei mir nicht wirklich da kommt dann garkeine .phy datei am ende raus oder ich hab da was falsch gemacht.

Alles einfach einzeln lassen hat bei mir auch nichts gebracht das Ergebnis schaut genauso aus wie auf der 1. Seite.

Pac_187
14.05.2010, 18:53
Eine deiner Boxen auswählen, dann im rechten Menü auf den Modifyer Tab dort runter scrollen und "Attach" Button anklicken, dann alle Boxen anklicken die dazu gehören.
Mit Rechtsklick beendest du das Tool.
Schon ist alles ein einzelner Mesh ;)

Dende
14.05.2010, 19:26
funktioniert nicht das Collisiondmodel sieht so wie vorher aus.

-edit mesh ausgewählt
-per Attach alle anderen Boxen hinzugefügt

Stimmt doch so oder ?

Beim Compilieren kamen einige Warnungen
_____________________________________________
warning: model has 2-dimensional geometry (less than 0.500 inches thick on any axis
warning: Error with convex element of cylin.smd, building single convex!
_____________________________________________
und die erste kommt dann auch häufiger

Wenn ich die richtig verstehe ist das Ausgangmodel also das aus 3dsmax zu klein oder lieg ich da falsch?

MfG

€r!k
15.05.2010, 13:53
Es darf kein großes ganzes Mesh sein, viele kleine!
Du musst eine beliebige Textur draufhauen, ansonsten exportiert er es nicht.

Pac_187
15.05.2010, 14:11
Natürlich müssen die Meshes zu einem Einzelnen zusammengefügt werden.
Ist bei meiner X-302 und allen anderen Modellen von mir auch so.

Hier meine QC:



$modelname "pac/X-302/x_302.mdl"

$cdmaterials "pac/X-302"

$scale 1
$body studio "x_302.smd"

$sequence idle "x_302.smd" fps 1.00
$surfaceprop metal



$collisionmodel "x_302_coll.smd"
{
$mass 1000
$concave
//$maxconvexpieces 100

}




- - - - -

Was kamen denn für Meldungen?

Dende
15.05.2010, 15:46
@ Pac_187


warning: model has 2-dimensional geometry (less than 0.500 inches thick on any axis
warning: Error with convex element of cylin.smd, building single convex!


und die erste Warnung gaaaanz oft

@€r!k
Das mit der Textur hab ich auch schon bemerkt hatte etwas gedauert aber naja


Dass sich die einzelnen Boxen in 3dsmax überschneiden kann aber nicht zu sowas führen, oder?
Und beim exportieren muss ich da irgendwas besonderes anklicken ?

MfG

Pac_187
15.05.2010, 17:56
Exportire mal das Kollisionsmodell und das Original in das *.obj Format und lade es mal hoch,
ich möchte das selber mal gerne sehen und ausprobieren. Weiter Vermutungen anzustellen bringt da auch nix ;)

Dende
15.05.2010, 19:01
hier beide Dateien ich habe das collisions model umbenannt in cylin_phy die textur hab ich auch nicht mitexportiert und bei dem modell ist die attach funktion nicht mitdrin weil es eben nicht tat und ich es deswegen rückgängig gemacht habe, das collisionsmodell ist auch nicht sehr schön gemacht weil das nur zum testen ist.

http://heite.pytalhost.com/cylin.rar

MfG

Pac_187
16.05.2010, 13:13
Soooo, habs hinbekommen und mir ist die Lösung für 3DS-Max eingefallen

http://www.imagebanana.com/img/8ooqu1bt/thumb/gm_construct0009.jpg (http://www.imagebanana.com/view/8ooqu1bt/gm_construct0009.jpg)

http://www.imagebanana.com/img/0g23ukr9/thumb/gm_construct0011.jpg (http://www.imagebanana.com/view/0g23ukr9/gm_construct0011.jpg)




Hab das allerdings alles in XSI gemacht.

So hier mal kurz ne Stichwortliste


Alle Teile des Kollisionsmodells müssen zu einem Mesh zusammengefügt werden
Kollisionsmodell braucht irgendeine Textur ( kann einfach drauf geklatscht werden, UV's müssen nicht ausgerichtet werden )
Bei XSI muss das gemacht werden: KLICK MICH HART! (http://pac.gmod.de/Modeling/XSI/Tutorials/XSI_Coll_Model.jpg)
Bei 3DS-Max müssen alle Polys in der selben Smoothing Group sein
Da das Modell Konkave ist muss $concave in der QC stehen!


Datei mit QC und SMD's:
2473


EDIT: Hier noch 'n Artikel aus der VALVe Wiki: http://developer.valvesoftware.com/wiki/Collision_model

Dende
16.05.2010, 13:49
jo geht perfekt danke :D eine Frage hätte ich allerdings noch, wenn ich jetzt zum Beispiel ein Haus exportieren möchte muss ich jede wand einzelnd machen, das Ganze dann wieder zusammen attachen dann nochmal die Smoothing Groups drauf machen und das geht ?

Edit:

kann dann eigentlich auch geclosed werden funktioniert alles wunderbar.

Pac_187
16.05.2010, 14:07
Kurzgesagt ja.

Du musst halt 'n Kollisionsmodell für das Hauserstellen und dann so verfahren wie ich es aufgelistet habe
bzw. wie es auf der VALVe Wiki Seite steht.