Faire un modèle physiques avec 3DS et Photoshop

From Valve Developer Community
Jump to: navigation, search
français (fr)
... Icon-Important.png

Dans ce tutoriel nous allons créer un modèle physique cassable. Nous partirons du premier tutoriel et continuerons, cela exige donc que vous ayez assimilé le premier. Nous utiliserons aussi les mêmes fichiers. Nous verrons aussi à la fin comment changer de skin, et comment re-dimensionner un modèle.


Général

La différence avec le modèle physique se situe au niveau du QC qui changera, les modèles SMD sont les mêmes que la version statique de la boxe. L'aspect des modèles physiques est traiter dans ces deux articles de Valve ci-dessous. La physique final de votre modèle est lier principalement à deux bloc et une instruction dans le QC :

Prop_data est un bloc dans les fichiers QC, il donne les paramètres pour la physiques du modèles. Il existe un fichiers propdata.txt définissant tous les presets. Il s'agit de présélection toute faites, par exemple si vous faîte une caisse en bois, choisissez "WOOD", et votre caisse prendra automatiquement des paramètre prédéfinies.

Le bloc avec l'instruction $collisionmodel contiendra lui aussi des paramètres pour la physiques.

  • Instruction $surfaceprop

Cette instruction, en plus de donner au modèle des impacts de balles selon la matière choisi, va aussi influencer la physique, notamment le poids. Mais les matériaux ne respecte pas les vrais masses volumiques, il est préférable de choisir le poids sois-même de votre modèle, plutôt que de laisser faire Source.


Il faut aussi comprendre la notion de priorité, ou override en anglais. C'est tous simple, si vous choisissez un preset WOOD, et que vous souhaitez changez juste le poids, vous n'avez qu'à rentrez une instruction de masse, et cette valeurs prendra la priorité sur celle de la présélections.

Fichiers Requis

Votre nouveau dossier devrais contenir ces fichiers :

Phy.jpg

Renommez vos SMD et les autres fichiers avec phy pour le distinguer de l'ancienne boxe fixe. Remarquez que nous ne renommons pas les deux fichiers de matériaux, car les SMD pointe sur le nom boxe précis.

QC

Le plus gros du travail se situe au niveau du QC, qui va prendre tous les paramètres de physiques. Sachez aussi que certains paramètres de physiques peuvent être éditer dans l'entité prop dans Hammer. Jetons un oeil sur le QC :

$modelname	"boxe_phy\boxe_phy.mdl"		//chemin vers le mods choisis
$cdmaterials	"models\boxe_phy\"
$body mybody	"boxe_phy_ref.SMD"			//SMS dans le meme dossier que le QC
$sequence idle	"boxe_phy_idle.SMD"	
$collisionmodel  "boxe_phy_phys.SMD"
{
       $mass		5
       $concave 
}
$keyvalues
{
       prop_data
       {
              base			Metal.Large
              health 			10
              breakable_model		MetalChunks
              breakable_count 	        50
       }
}

Pour les 5 première ligne vous connaissez, voyons de plus près les autres :

Bloc $collisionmodel

  • $mass

Comme son nom l'indique il s'agit de la masse, en kilo du modèle. On lui à définie manuellement. Cette option fais partie de la commande $collisionmodel, ce n'est pas le plus logique d'avoir séparé avec l'autre bloc mais c'est ainsi. Vous pouvez aussi utilisez $automass, ce qui calculera automatiquement le poids selon le volume et la matière définie dans le bloc prop_data que nous verrons plus loin.

Bloc prop_data

Ce bloc est le plus important pour un modèle physique. Il commence par l'instruction $keyvalues.

  • base

Nous avons au début parlé des présélections toutes faites, et bien les voici, voir la page prop_data de Valve pour une liste, ou vous pouvez allez voir directement dans le fichier propdata.txt. Nous pouvons par exemple lui mettre la présélections Wooden.Large, qui va aller cherchez dans le fichier propdata.txt ceci :

"Wooden.Large"
       {
             "base"			"Wooden.Base"
             "health"		"50"
             "physicsmode"		"1"
             "breakable_count"	"6"
       }

Le type "Wooden.Base" ramène quelques ligne plus haut à :

"Wooden.Base"
           {
                 "dmg.bullets"		"0.75"
                 "dmg.club"		"2.0"
                 "dmg.explosive" 	"1.5"
                 "breakable_model"	"WoodChunks"
                 "breakable_skin"	"0"
           }

Voilà le principe, on définie au modèles tous ces paramètre avec un seule ligne. Explication :

"health"

On attribut tout simplement 50 de vie au modèles

"breakable_count", "breakable_model" et "breakable_skin"

Ca définie ce qu'on appelle en anglais Gibs, ou débris. Quand votre modèle se casse des débris apparaissent, pour simulé votre objet en miette, pour la présélections WOOD on utilise des débris standard, ici WoodChunks, sachez qu'il en existe quatre standard. Mais vous pouvez aussi mettre vos propres Gibs personnalisés. "breakable_count" sert à définir le nombre de débris, et "breakable_skin" le skin.

Mais revenons à notre QC de notre boxe, nous avons donc choisis Metal.Large, ce qui donne ceci dans le propdata.txt :

"Metal.Large"
{
                 "base"		"Metal.Base"
                 "physicsmode"	"1"
}

Qui nous ramène à "Metal.Base" :

"Metal.Base"
{
                 "dmg.bullets"		"1.0"
                 "dmg.club"		"1.0"
                 "dmg.explosive" 	"1.0"
                 "health"		"0"		// By default, metal objects aren't breakable
}

Comme on peut le voir le paramètre "health" est à 0, ce qui signifie qu'il ne sera pas cassable, et deuxièmement il n'y à pas de débris définie contrairement au type WOOD. Malheureusement pour nous seul le type WOOD possède des Gibs, les autres types n'en possèdent pas et il va falloir les définir.

  • health

Le type que nous avons choisis à le paramètre de bases health à 0, mais définissons lui une vie manuellement afin que ce paramètre prenne l'avantage sur la présélections.

  • breakable_model et breakable_count

Excepter le type WOOD, aucune autre présélection ne possède de Gibs, nous allons donc choisir parmi un des 4 types de bases, nous prendrons MetalChunks. Mais nous devons accompagné ce paramètre de breakable_count, ou vos Gibs n’apparaîtrons pas, ou pire votre modèle ne se cassera même pas. Mettons 50 débris.

Hammer

Si vous ne vous êtes pas trompé vous devriez voir ceci dans l'explorateur de modèles :

Phys1.jpg

Si Hammer n'a pas planté alors il y à des chances que votre modèle soit correct. On vois bien la masse de 5 kilos, que c'est un modèle physique et les différents paramètres qu'on lui à attribués. Vous n'avez plus qu'à compilé et voir votre modèles in-game pour vous assuré que tous est correct.


Skins

Si vous souhaitez mettre plusieurs skins, ou textures, pour un même modèle, créer un nouveau VMT et VTF nommez boxe2, et rajoutez ceci au QC :

$texturegroup skinfamilies
{
      { "boxe" }
      { "boxe2" }
}

Les skins permettent de choisir dans Hammer la texture à appliquer. Si par exemple vous avez une voiture et que vous souhaitez lui attribuer plusieurs couleurs, alors les skins sont la solution.

La première ligne est le nom du matériau de base, qui dois garder le nom original. Pour le Deuxième vous pouvez l'appeler comme vous souhaitez. Si votre modèle n'a pas la jolie texture rose en damier, alors tous est ok.

Scale

Si vous souhaitez changé l'échelle de votre modèle, rien de plus simple, mettez cette ligne dans votre QC :

$scale    1

1 pour son échelle normal, 2 pour le double....


Plusieurs texture

Si votre modèle nécessite plusieurs map UV, ou texture, comme par exemple pour un grand croiseur, il vous faut utiliser le matériau "Multi/Sub-object", 3DS va attribuez à chacun un numéro ID. ID = texture 1, ID 2 = texture 2.... Tout comme avec un matériaux à une seul et unique texture, le nom de chaque matériaux est important, quand vous allez exportez votre modèle ira cherchez les nom précis donné dans 3DS. Il n'y à rien de plus à ajouter au QC.

Conclusion

Voilà vous savez maintenant faire un modèles physique de base. Vous avez toutes les bases pour faire des modèles beaucoup plus complexes, n'hésitez pas à visitez le wiki anglais qui est la référence, même si il est en anglais il ne s'agit principalement que de commandes vous devriez vous en sortir avec un traducteur.