HL2 + NPC ersetzen + Probleme mit Konvertierung

Hier kommt alles rein, was irgendwie mit Models zu tun hat.

HL2 + NPC ersetzen + Probleme mit Konvertierung

Postby Lukas Kunze » Fri 30. Sep 2011, 13:33

Hallo.

Mein Ziel ist es, ein mit Softimage 2011 "geriggtes" Modell, das als SMD vorliegt und eine Textur, die als tga vorliegt in den Police-NPC in Half Life 2 zu verwandeln, ihn zu ersetzen, sodaß in Zukunft jeder Polizist wie mein Modell aussieht und die Bewegungen auf mein Modell übertragen werden.

Kurz gesagt, ich habe schon viel hin-, und herprobiert aber nichts geht so richtig.

Das ist zum Beispiel die aktuelle qc-Datei:

$modelname "police.mdl"
$cdmaterials "D:\Eigene Programme\Steam\SteamApps\User\Half-Life 2\hl2\materials\models\Police"

//start eye/face data
$eyeposition 0 0 70

// head controllers
$attachment "eyes" "ValveBiped.Bip01_Head1" -0.0454 -3.2682 67.3843 absolute
$attachment "mouth" "ValveBiped.Bip01_Head1" 0.80 -5.50 0.10 rotate 0 -80 -90
$attachment "chest" "ValveBiped.Bip01_Spine2" 5.00 4.00 0.00 rotate 0 90 90

$model msc "Police_reference.smd"{


$include "bodyrules_xsi.qci"
}

$surfaceprop "rubber"
$bbox -13 -13 0 13 13 72
$mostlyopaque
$include "standardhierarchy.qci"
$include "standardikchains.qci"
$alwayscollapse "Male_01"
$alwayscollapse "XSISceneRoot"
$proceduralbones "male.vrd"
$include "commonbones.qci"

$includemodel "male_shared.mdl"
$includemodel "male_ss.mdl"
$includemodel "male_gestures.mdl"
$includemodel "male_postures.mdl"

$include "hitbox.qci"
$include "ragdoll.qci"


//end eye/face data


Das wird ausgegeben in Studiocompiler

Code: Select all
D:/Eigene Programme/Steam/SteamApps/User/sourcesdk/bin/ep1/bin/studiomdl.exe -game "D:\Eigene Programme\Steam\SteamApps\User\Half-Life 2\hl2" "D:\Eigene Programme\Steam\SteamApps\HL2mods\Polizeiersatz\mdldecompiler2.qc"
qdir:    "d:\eigene programme\steam\steamapps\hl2mods\polizeiersatz\"
gamedir: "D:\Eigene
Programme\Steam\SteamApps\User\Half-Life 2\hl2\"
g_path:  "mdldecompiler2"
Working
on "mdldecompiler2.qc"
SMD MODEL Police_reference.smd
SMD MODEL ragdoll.smd
WARNING:
Can't find joint antlion_guard.arm1_r
WARNING: Can't find joint antlion_guard.arm1_r
WARNING:
Can't find joint antlion_guard.arm1_r
WARNING: Can't find joint antlion_guard.finger1_r
WARNING:
Can't find joint antlion_guard.finger1_r
WARNING: Can't find joint antlion_guard.finger1_r
WARNING:
Can't find joint antlion_guard.pelvis
WARNING: Can't find joint antlion_guard.pelvis
WARNING:
Can't find joint antlion_guard.pelvis
WARNING: Can't find joint antlion_guard.leg1_r
WARNING:
Can't find joint antlion_guard.leg1_r
WARNING: Can't find joint antlion_guard.leg1_r
WARNING:
Can't find joint antlion_guard.leg1_l
WARNING: Can't find joint antlion_guard.leg1_l
WARNING:
Can't find joint antlion_guard.leg1_l
WARNING: Can't find joint antlion_guard.leg2_l
WARNING:
Can't find joint antlion_guard.leg2_l
WARNING: Can't find joint antlion_guard.leg2_l
WARNING:
Can't find joint antlion_guard.arm1_l
WARNING: Can't find joint antlion_guard.arm1_l
WARNING:
Can't find joint antlion_guard.arm1_l
WARNING: Can't find joint antlion_guard.finger1_l
WARNING:
Can't find joint antlion_guard.finger1_l
WARNING: Can't find joint antlion_guard.finger1_l
WARNING:
Can't find joint antlion_guard.spine1
WARNING: Can't find joint antlion_guard.spine1
WARNING:
Can't find joint antlion_guard.spine1
WARNING: Can't find joint antlion_guard.claw1_r
WARNING:
Can't find joint antlion_guard.claw1_r
WARNING: Can't find joint antlion_guard.claw1_r
WARNING:
Can't find joint antlion_guard.claw2_r
WARNING: Can't find joint antlion_guard.claw2_r
WARNING:
Can't find joint antlion_guard.claw2_r
WARNING: Can't find joint antlion_guard.claw1_l
WARNING:
Can't find joint antlion_guard.claw1_l
WARNING: Can't find joint antlion_guard.claw1_l
WARNING:
Can't find joint antlion_guard.claw2_l
WARNING: Can't find joint antlion_guard.claw2_l
WARNING:
Can't find joint antlion_guard.claw2_l
WARNING: Can't find joint antlion_guard.claw3_l
WARNING:
Can't find joint antlion_guard.claw3_l
WARNING: Can't find joint antlion_guard.claw3_l
WARNING:
Can't find joint antlion_guard.spine3
WARNING: Can't find joint antlion_guard.spine3
WARNING:
Can't find joint antlion_guard.spine3
WARNING: Can't find joint antlion_guard.head
WARNING:
Can't find joint antlion_guard.head
WARNING: Can't find joint antlion_guard.head
WARNING:
Can't find joint antlion_guard.claw3_r
WARNING: Can't find joint antlion_guard.claw3_r
WARNING:
Can't find joint antlion_guard.claw3_r
WARNING: Can't find joint antlion_guard.leg2_r
WARNING:
Can't find joint antlion_guard.leg2_r
WARNING: Can't find joint antlion_guard.leg2_r
SMD
MODEL ragdoll_pose.smd
collapsing ValveBiped.Bip01
collapsing ValveBiped.SpineControl2
collapsing
ValveBiped.SpineControl3
collapsing ValveBiped.NeckControl
Collapsed 4 bones
quatinterpbone
"Bip01_R_Shoulder" unused
quatinterpbone "Bip01_L_Elbow" unused
quatinterpbone "Bip01_R_Ulna"
unused
quatinterpbone "Bip01_L_Latt" unused
quatinterpbone "Bip01_R_Wrist" unused
quatinterpbone
"Bip01_L_Trapezius" unused
quatinterpbone "Bip01_R_Elbow" unused
quatinterpbone "Bip01_R_Latt"
unused
quatinterpbone "Bip01_L_Ulna" unused
quatinterpbone "Bip01_L_Wrist" unused
quatinterpbone
"Bip01_R_Bicep" unused
quatinterpbone "Bip01_R_Trapezius" unused
quatinterpbone "Bip01_L_Shoulder"
unused
quatinterpbone "Bip01_L_Bicep" unused
Processing jointed collision model
Collision
model completed.
---------------------
writing D:\Eigene Programme\Steam\SteamApps\User\Half-Life
2\hl2\models/police.mdl:
bones        14500 bytes (57)
animations    2120 bytes (1
anims) (101 frames) [0:03]
sequences      444 bytes (1 seq)
ik/pose        828 bytes
eyeballs
        0 bytes (0 eyeballs)
flexes           0 bytes (0 flexes)
textures       
72 bytes
keyvalues        0 bytes
collision        0 bytes
tot
StudioMDL Thread complete


Klick auf View Model lädt den Betrachter, dort ist aber kein Modell zu sehen, egal wo ich mit der Maus hinklicke.

Wo könnte der Fehler liegen?
Lukas Kunze
 
Posts: 5
Joined: Fri 30. Sep 2011, 13:16
Location: Pohl

Re: HL2 + NPC ersetzen + Probleme mit Konvertierung

Postby nebukadnezar » Fri 30. Sep 2011, 16:25

Hi,

Der Compiler spuckt ja nen riesen Haufen an zeug aus.

Code: Select all
Can't find joint antlion_guard.head
WARNING: Can't find joint antlion_guard.head


Aus irgendeinem Grund sucht er nach Bones des AntlionGuards.


Code: Select all
quatinterpbone "Bip01_L_Latt" unused   (Quaternion Interpolation Bone)
quatinterpbone "Bip01_R_Wrist" unused


Das hier heißt, das du Bones hast die nicht geskinnt sind, und somit nicht vom Model benutzt werden.


Meine Annahme ist:

Aus dieser Zeile:
Code: Select all
quatinterpbone "Bip01_L_Latt" unused


Du benutz einen eigenen Rig, und nicht den Valve Rig. Desweiteren ist dein skinning anscheinend ein ziemliches Chaos. Evtl. hast du Auch noch andere Meshes oder sonstiges in der Scene (wegen der AntLionGuard Bones)
Desweiteren erschließt sich mir nicht warum die Bones in dem Rig nach Muskeln benannt sind (Trapezius, Lattisimus Dorsi), sind ja die Digitalen gegenstücke zu unseren Knochen.

Wichtig:
InEngine bestehende Animationen kannst du nur nutzen wenn dein Rig identisch ist mit dem, auf dem die Animationen gemacht wurden.
Alle Namen müssen übereinstimmen sonst weiß der Code dahinter nicht was das für Bones sind, der gesamte Scenen-Aubau(XSI) muss passen.

Mit diesen Paar Zeilen in der QC, lädst du nämlich die Standard-Hierarchy und die InverseKinematicChains dazu:

Code: Select all
$include "standardhierarchy.qci"
$include "standardikchains.qci"


Und mit diesen hier die Animationen, gepackt in mdl-Dateien.

Code: Select all
$includemodel "male_shared.mdl"
$includemodel "male_ss.mdl"
$includemodel "male_gestures.mdl"
$includemodel "male_postures.mdl"



Die Animationen funktioneren nur auf Valve's Character Rig.

Die Source Engine is in dem Bereich echt madig Dokumentiert und ich hab schon vor einiger Zeit der Engine den Rücken gekehrt und hab das alles nich mehr im Kopf.
Weiterhin kenn ich mich mit XSI nicht aus, ich hab das damals alles mit nem anderen Prog erledigt.

€: Hab hier noch nen Link gefunden:
http://developer.valvesoftware.com/wiki/Rigging_in_XSI#Rigging_a_character_model_-_the_easy_way

Mach mal ne Suche nach Valve's Rig, den müsste man über google irgendwo im Netz finden.
Pass dein Mesh an den Rig an und Skin es ordentlich. Dann musste nur noch kucken das der export hinhaut.

Desweiteren ist es extrem wichtig das du verstehst was überhaupt in der QC steht und was dir der Compiler ausspuckt, sonst kommst du zu nichts.
Ein bisschen Coden solltest du schon draufhaben wenn du an die SourceEngine ran willst.

Wie gesagt sind das alles nur Annahmen, da du etwas wenig details zum ScenenAufbau gepostet hast.

Lass von dir hören, finds cool das du das versuchst, das machen nicht viele. ;)

regards,
Neb
Man wird nicht dadurch besser, dass man andere schlecht macht

ArtBlog
User avatar
nebukadnezar
Ritter der ersten Stunde
 
Posts: 202
Joined: Fri 23. Jan 2009, 12:35
Location: Augsburg

Re: HL2 + NPC ersetzen + Probleme mit Konvertierung

Postby Lukas Kunze » Fri 30. Sep 2011, 17:06

Danke.

Vieles wird klarer werden wenn du dir diese zwei Videos anschaust. Genau nach denen habe ich meinen Character erstellt - mit Softimage 2011, nicht mit dem Mod Tool:





Ein paar Fragen zu Verzeichnissen:

1. Wo sollte die QC sein relativ zum Hauptverzeichnis D:\Eigene Programme\Steam\SteamApps\User\Half-Life 2\hl2?
2. Wo sollte die TGA sein relativ zum Hauptverzeichnis?
3. Wo sollten die Include-Dateien sein relativ zum Hauptverzeichnis?

Ist es jeweils besser, sich dorthin zu navigieren, also mit ".." und "\" zu hantieren oder alle im gleichen Verzeichnis zu haben?

Ist es besser wie im Tutorial alles per Hand zu machen oder auf die GUI zurückzugreifen?
Lukas Kunze
 
Posts: 5
Joined: Fri 30. Sep 2011, 13:16
Location: Pohl

Re: HL2 + NPC ersetzen + Probleme mit Konvertierung

Postby nebukadnezar » Fri 30. Sep 2011, 19:36

Also diese "WerbeVideos" lassen genau die wichtigen Teil beim compilen für source aus, kein Wort darüber wie QC's funktionieren und was er da eig. macht.
Und das mit den OrdnerStrukturen ist genau das was an source penibel eingehalten werden muss, und darüber verliert er halt kein Wort.

Überprüf auch nochmal deine Scene, und kick alles raus was nicht dabei sein soll, nur Rig und das Model (in einem Stück) sollten da sein sonst nix.

Zu 1.:

Du hast unter D:\Eigene Programme\Steam\SteamApps\User
Einen Ordner mit dem Namen sourcesdk_content
Darin befinden sich mehrere Ordner mit den abkürzungen für die Games (hl2,cstrike,dod). Du musst natürlich nach hl2. Für dich Interessant beim compilen von models sind folgende unterordner von sourcesdk_content\hl2:

  • modelsrc
  • materialsrc

Zur SMD und QC:

Model und QC müssen in den modelsrc-Ordner. Dort erstellst du einen Ordner deiner Wahl (z.b MyModels):
Code: Select all
D:\Eigene Programme\Steam\SteamApps\User\sourcesdk_content\hl2\modelsrc\mymodels


Wenn du dann mittels StudioMDL compilest wird das Model (das sind mehrere Files, die .mdl, vtx. und weitere FallBack-Files für dx8 je nach Build der Engine) dann abgelegt in diesem Verzeichnis:
Code: Select all
D:\Eigene Programme\Steam\SteamApps\User\Half-Life 2\hl2\models\mymodels

Also genau dahin wo die Engine nach den Files für Modelle sucht.



Im Spoiler ist nochmal alles auf dein PoliceModel zugeschnitten:
Spoiler: anzeigen
Wenn du also gleich ohne großes rumbasteln das police-Model replacen willst legst du alles so an:
QC in police.qc umbenennen und die SMD dort referenzieren mit ihrem Namen.

Das macht diese Zeile hier, wenn du also die QC die du hier gepostet hast benutzen willst, dann muss deine aus XSI exportierte SMD auch Police_reference.smd heißen.
Code: Select all
$model msc "Police_reference.smd"


Ablegen tust du die Daten dann hier:
Code: Select all
D:\Eigene Programme\Steam\SteamApps\User\sourcesdk_content\hl2\modelsrc


Dann enden die Nach dem compilen genau da wo sie sollen nämlich in:
Code: Select all
D:\Eigene Programme\Steam\SteamApps\User\Half-Life 2\hl2\models




Zur 2.:

Die muss in den materialsrc-Ordner, dabei musst du drauf achten das du die TGA noch in den models unterordner packst.
Code: Select all
D:\Eigene Programme\Steam\SteamApps\User\sourcesdk_content\hl2\materialsrc\models\mymodels


Die endet dann hier:

Code: Select all
D:\Eigene Programme\Steam\SteamApps\User\Half-Life 2\hl2\materials\models\mymodels


Wie du siehst gleichen sich beide Pfade ab dem materialsrc- und modelsrc-Ordner

die TGA wird dann konvertiert zur VTF(ValveTextureFile). Die funktioniert aber nicht ohne eine VMT (ValveMaterialFile).
Die VMT muss in den selben Ordner wie die VTF.

Die VMT ist nichts anderes als eine TextDatei mit vmt-Endung die dem Shader sagt welche Texturen er samplen soll und wo sich diese Befinden, und noch ein paar andere Einstellungen.
Also, neue TextDatei erstellen den Code reinkopieren, und dann Speichern mit .VMT-Endung (Die VMT-Sollte den selben namen haben wie die Textur die du in XSI auf dem Model hast, bzw. die TGA)

Code: Select all
vertexlitgeneric
{

$baseTexture "models\police"

}


Das hier ist die wohl simpelste VMT und sagt dem ShaderCode, die Textur-VTF liegt in materials\models und heißt police.vtf (das .vtf muss man in der VMT nicht zwingend hinter den Texturnamen setzen, daher models\police)
Die PfadAngabe ist also relativ zum Materials-Verzeichnis (D:\Eigene Programme\Steam\SteamApps\User\Half-Life 2\hl2\materials), d.h du musst nur UnterOrdner angeben.


Zu 3.:

Die müssen mit zur QC in den Ordner, da keine PfadAngabe dabei ist, in der die du gepostet hast.



Zu KommandoZeile.:

Du musst dich nicht wirklich mit der KommandoZeile abquälen da gibts ein paar bessere Methoden.
Von den GUI Varianten halte ich überhaupt nichts weil die meistens nur StatischeModels einfach und schnell kompilieren können.
Sobald es an Playermodels, Ragdolls etc. geht bringen die größtenteils gar nichts.

Was du Tun kannst:

Du erstellst eine Verknüpfung mit StudioMDL.exe auf deinem Desktop und ziehst die QC-File auf die Verknüpfung (Hat der Herr im Video ja auch)
Das gleiche kannst du auch mit VTex.exe machen. Bei Vtex ziehst du eine normale .TXT-Datei auf die Exe, die den gleichen Namen hat wie die TGA. In der muss nichts drinstehen, da könnten aber bestimmte Befehle rein, die brauchst du aber erstmal nicht.

CrashKurs in sachen compilen, ENDE.

regards,
Neb
Man wird nicht dadurch besser, dass man andere schlecht macht

ArtBlog
User avatar
nebukadnezar
Ritter der ersten Stunde
 
Posts: 202
Joined: Fri 23. Jan 2009, 12:35
Location: Augsburg

Re: HL2 + NPC ersetzen + Probleme mit Konvertierung

Postby Lukas Kunze » Sat 1. Oct 2011, 07:07

Ich kam damit zum gleichen Ergebnis.

Anbei die Dateien. Vieleicht erkennst du hier den Fehler.
Attachments
Inhalt.part03.rar
(240.29 KiB) Downloaded 426 times
Inhalt.part02.rar
(250 KiB) Downloaded 427 times
Inhalt.part01.rar
(250 KiB) Downloaded 432 times
Lukas Kunze
 
Posts: 5
Joined: Fri 30. Sep 2011, 13:16
Location: Pohl

Re: HL2 + NPC ersetzen + Probleme mit Konvertierung

Postby nebukadnezar » Sat 1. Oct 2011, 07:33

Ich kuck da heute mal durch, bin jetz aber erstmal ne Zeitlang unterwegs, denke ich komme gegen Abend dazu.

regards,
Neb
Man wird nicht dadurch besser, dass man andere schlecht macht

ArtBlog
User avatar
nebukadnezar
Ritter der ersten Stunde
 
Posts: 202
Joined: Fri 23. Jan 2009, 12:35
Location: Augsburg

Re: HL2 + NPC ersetzen + Probleme mit Konvertierung

Postby Lukas Kunze » Sun 2. Oct 2011, 09:50

Kennst du ein besseres Video, das mir das Prozedere zeigt?
Lukas Kunze
 
Posts: 5
Joined: Fri 30. Sep 2011, 13:16
Location: Pohl

Re: HL2 + NPC ersetzen + Probleme mit Konvertierung

Postby nebukadnezar » Sun 2. Oct 2011, 13:53

Also, ich hab jetz mal mit der QC gespielt und es compiled, ich hab es soweit gebracht das man es im MDLViewer ankucken kann, aber es funktioniert sonst nichts.

Der AntlionGuard Fehler:

Deine ragdoll.qci ist nicht die des Police.mdl sonder die des AntlionGuards, deswegen sucht er in der SMD nach diesen Bones (QCI-Dateien kann man mit dem NotePad oder Editor öffnen und lesen wie QC's)

Der Fehler: quatinterpbone "Bip01_L_Latt" unused:

Das kommt aus der male.vrd das ist eine File die ich noch nie benutzt habe, nachdem ich mir den Code dadrin angeschaut hab, sind das 3D-Helper und deren Positionen.
Im StandardValveBiped sind diese Helper mit dabei, bei dir fehlen sie, aus der Position der Helper schließe ich, das das TwistHelper sind.

Aufjedenfall, compile ich dein Model und benutze male.vrd, dann ist das Model zwar da aber nicht sichtbar (umstellen auf WireFrame dann sieht man zumindest das es da ist).
Zudem ist es Off-Center, also ziemlich weit vom ScenenUrsprung entfernt und insgesamt einfach unbrauchbar.


Weiterhin hab ich deine SMD mal nach 3dsMAX importiert.

Mal abgesehen davon das das Model nicht abgeschlossen ist, tausende von löchern hat und das Skinning ordentlich arbeit braucht. (Aber das tut ja nichts zur Sache).
Liegen ControllHelper irgendwo herum (am Boden, bild rechts), und derRig sieht ziemlich deformiert aus, da bin ich jetz nich ganz sicher inwiefern, positionsänderung und längeänderung der Bones das funktionieren beinflusst.
Bei dir fehlen auch die TwistHelper über die ich oben gesprochen hab, was zu fehlern führt.

rigs.jpg


Auf jeden fall kriege ich ein normales Playermodel das an den Rig links geskinnt ist ohne etwaige fehler mit der police.qc compiled (Nachdem ich natürlich die ragdoll.qci ausgetauscht habe).
Nur die Animationen funktionieren nicht, aber das liegt meiner Meinung nach daran, das ich es für HL2:Episode 2 compiled habe(HL2 nicht installiert grade), und dort wsl die Pfade zu den MDL-Dateien die die SharedAnimations halten anders sind.

Ein besseres Video, kenn ich natürlich aber das gibts nicht umsonst, über das redet auch der Herr in deinem Video. Das sind die NOESIS INTERACTIVE DVD's (Character Design & Integration with HL2 and XSI), google hilft dir da sicher weiter.
Ich hab mir die vor ein, zwei Jahren mal mit nem ModTeam zusammen gekauft, die sind nicht schlecht, an sich aber etwas outdated wenns um EP2 geht.

Aber bevor du dich an Charaktere herantraust solltest du dich vll. erstmal mit statischen models beschäftigen und verstehen was da in den QC's und VMT's steht, das würde helfen.
Und du solltest fit in 3D sein, den du musst ordentlich arbeiten, und solltest Fehler vermeiden. Das ist alles sehr ZeitIntensiv, du musst dich damit schon eingehend beschäftigen, allein durch VideoTutorials wird das schwer, denn die behandeln keine Bugs und Fehler die bei dir auftauchen.


Das ist schon echt nicht einfach bei allem was man wissen und beachten muss, aber wenn du dranbleibst kann das schon funktionieren, ich wünsch dir da viel Erfolg, und den Elan das weiter zu versuchen. Fragen immer gern hierher, oder wenns um was Grundlegendes geht helfen wir gern weiter.


regards,
Neb
Man wird nicht dadurch besser, dass man andere schlecht macht

ArtBlog
User avatar
nebukadnezar
Ritter der ersten Stunde
 
Posts: 202
Joined: Fri 23. Jan 2009, 12:35
Location: Augsburg

Re: HL2 + NPC ersetzen + Probleme mit Konvertierung

Postby Lukas Kunze » Sun 2. Oct 2011, 17:39

Es ist bei weitem nicht so schwer wie du es hier darzustellen versuchst.
Lukas Kunze
 
Posts: 5
Joined: Fri 30. Sep 2011, 13:16
Location: Pohl

Re: HL2 + NPC ersetzen + Probleme mit Konvertierung

Postby nebukadnezar » Sun 2. Oct 2011, 19:16

Lest sich das so?
Hast du's hingekriegt?

regards,
Neb
Man wird nicht dadurch besser, dass man andere schlecht macht

ArtBlog
User avatar
nebukadnezar
Ritter der ersten Stunde
 
Posts: 202
Joined: Fri 23. Jan 2009, 12:35
Location: Augsburg


Return to Models Allgemein

Who is online

Users browsing this forum: No registered users and 0 guests

cron