Forum > FSX / Prepar3D / X-Plane

FSX et objets 3D

<< < (2/3) > >>

Vyrtuoz:
Désole pour le délai, j’ai complétement loupe ton dernier post…

Oui, dans FSX, Tacview ignore les objets qui sont « très haut », car certains addons créent des objets bidon dans « l’espace » et je ne voulais pas que cela spam les enregistrements de vol…

Quel aéronef, et a quelle altitude as-tu besoin de voler dans FSX ? Je vais vois s’il je peux étendre la limite.

Pascal:
Bonjour,

 D'abord un grand bravo pour ton logiciel Tacview. Il est tout ce que l'on peut attendre de ce type d'outil : efficace, rapide, simple à utiliser, puissant
et surtout ouvert afin de pouvoir inclure des textures, objets et graphiques pour l'enregistrement.

 Voici rapidement ce que je fais : j'ai définit une zone de jeu (la Corse) sur laquelle se déroulent des missions militaires fictives face à 4 types
d'ennemis (Russes, Nazis, Aliens et Super-Soldats) . J'ai conçu plusieurs base ennemies et placé différents objets récupérés sur internet.
J'ai créé plusieurs campagnes militaires avec "Instant Mission Maker", plan de vol, documents de missions.
Je rejoue ces campagnes soit seul pour m'entrainer, soit en réseau avec d'autres.
L'appareil que j'utilise pour ces missions est "Airwolf" de la série du même nom revu et corrigé : Pas de limite de plafond, vitesse maximale Mach 4, ...
Évidement, tout ceci est fait dans un but non lucratif.

 Pour répondre à ta question, soit tu utilises la valeur maximale de cette variable d'altitude (d'un point de vue informatique suivant son type)
soit une valeur de 100 000 pieds ferait l'affaire.

 Sinon, j'ai créé une petite macro Excel pour la modification des objets soit par leur remplacement soit en modifiant sa couleur.
Voici ce code pour ceux qui seraient intéressés, il faudra réajuster les objets dans la fonction ListeObjets à vos objets.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sub Les_Missions_De_Pascal()
    Dim l_lngMaxLig As Long, l_lngNumLig As Long
    Dim l_strTexte As String
   
    l_lngMaxLig = Range("A1", Range("A1").End(xlDown)).Rows.Count
   
    For l_lngNumLig = l_lngMaxLig To 11 Step -1
        l_strTexte = Range("A" & CStr(l_lngNumLig)).Text
       
        If Left(l_strTexte, 1) = "-" Then
            Rows(l_lngNumLig).Delete
        Else
            If InStr(1, l_strTexte, "Name=") > 0 Then
                Range("A" & CStr(l_lngNumLig)) = ListeObjets(l_strTexte)
            End If
        End If
    Next
End Sub

Function ListeObjets(ByVal p_strTexte As String) As String
    If InStr(1, p_strTexte, "Name=AirWolf") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Air+Light+Rotorcraft", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=CS_Weapon_Flares") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Weapon+Light+Flare", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=CSWeapon_Temp") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Weapon+Medium+Missile", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=KC135RT") > 0 Then
        p_strTexte = Replace(p_strTexte, "Name=KC135RT", "Name=C-135", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Parachutiste") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Misc+Minor+Parachutist", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Missile") > 0 Then
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=RQ-4A") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Weapon+Heavy+Missile", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Scud") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Ground+Medium+AntiAircraft", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=HX-1") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Air+Light+Rotorcraft", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Ka50") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Air+Light+Rotorcraft", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=AirForce 1") > 0 Then
        p_strTexte = Replace(p_strTexte, "Name=AirForce 1", "Name=C-135 AirForce 1", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Aile") > 0 Then
        p_strTexte = Replace(p_strTexte, "Name=Aile", "Name=B-2 Aile", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Avion Cargo") > 0 Then
        p_strTexte = Replace(p_strTexte, "Name=Avion Cargo", "Name=C-135 Avion Cargo", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Avion") > 0 Then
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Chasseur") > 0 Then
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=MiG") > 0 Then
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Sukhoi") > 0 Then
        p_strTexte = Replace(p_strTexte, "Name=Sukhoi SU-34A", "Name=MiG-29", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Zeppelin") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Air+Heavy+AircraftCarrier", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Porte-Avion") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Sea+Heavy+AircraftCarrier", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Cuirasse") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Sea+Heavy+Warship", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Croiseur") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Sea+Heavy+Warship", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Destroyer") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Sea+Medium+Warship", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Navire") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Sea+Heavy+Watercraft", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Sous-Marin") > 0 Then
        p_strTexte = Replace(p_strTexte, "Name=Sous-Marin", "Name=Kilo Sous-Marin", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Camion") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Ground+Heavy+Vehicle", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Tank") > 0 Then
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Voiture") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Ground+Medium+Vehicle", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=FSXatWarPack1_Building") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Ground+Static+Building", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=FSXatWarPack1_ControlTower") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Ground+Static+Building", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=FSXatWarPack1_Bunker") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Ground+Static+Building", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=FSXatWarPack1_Transfo") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Ground+Static+Building", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=FSXatWarPack1_Chemistry") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Ground+Static+Building", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=FSXatWarPack1_Cuve") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Ground+Static+Building", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=FSXatWarPack1_Barrel") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Ground+Static+Building", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=FSXatWarPack1_Crane") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Ground+Static+Building", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=FSXatWarPack1_Truck") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Ground+Heavy+Vehicle", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=FSXatWarPack1_KS12") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Ground+Medium+AntiAircraft", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=FSXatWarPack1_SAM") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Ground+Light+AntiAircraft", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=FSXatWarPack1_VAB") > 0 Then
        p_strTexte = Replace(p_strTexte, "Type=Air+FixedWing", "Type=Ground+Medium+AntiAircraft", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=FSXatWarPack1_Tank") > 0 Then
        p_strTexte = Replace(p_strTexte, "Name=FSXatWarPack1_Tank", "Name=Tank ", 1, 1, vbTextCompare)
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    Else
    If InStr(1, p_strTexte, "Name=Bomb") > 0 Then
        p_strTexte = Replace(p_strTexte, "Color=Blue", "Color=Red", 1, 1, vbTextCompare)
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    ListeObjets = p_strTexte
End Function

Vyrtuoz:
Merci pour ces précisions Pascal !

Je viens de vérifier mon code d’export pour FSX : Comme les missiles de MILVIZ sont créés à une altitude de 60000ft (18 288 m), FSX2ACMI ignore tous les objets qui sont au-dessus de cette altitude… Il va me falloir plus de tests pour voir comment modifier ce test pour quelque chose de plus transparent.

Est-ce que tu peux me partager un de tes scenarios ? J’aimerais le tester pour voir si je peux mieux détecter les types des objets de ta map pour t’éviter de devoir utiliser ton programme Excel après chaque vol. Je ne garantis rien, mais plus j’ai de données exotiques de ce genre, plus je peux améliorer FSX2ACMI.

Pascal:
Bonjour,

 Les noms des objets utilisés dans mes missions ne peuvent correspondre aux codes OTAN : pour certain ils n'existent pas comme les vaisseaux Alien,
pour d'autre cela serait trop compliqué voir impossible à trouver ( j'y ai passé plusieurs heures sans succès ).

Afin que je puisse avoir un objet 3D le plus ressemblant possible sur l'enregistrement Tacview, il n'y a que 2 solutions :
 - Soit j'utilise ma macro Excel après l'enregistrement du fichier ACMI,
 - Soit c'est Tacview qui permet, comme déjà proposé au début de ce post, grâce à une table de faire correspondre à un "Name" une couleur ainsi qu'un fichier .obj
Pourquoi choisir comme référence le "Name" car dans FSX il doit être unique.

Cette dernière solution ouverte permet d'avoir n'importe quel objet sans ces complications de code OTAN. Tu te dédouanes aussi du fait que tu n'as plus besoin de
 créer tous les objets 3D dans Tacview! Sinon attention à la taille de ta base d'objets 3D.
Je pense qu'il peut être intéressant de laisser aux utilisateurs le choix de leurs objets surtout comme pour moi où ceux-ci n'existent pas. Pour moi c'est juste du fun.

Quant au problème de l'altitude, actuellement je ne dispose pas de scénario où les aéronefs seraient aussi haut. C'est juste lors d'un test que j'ai vu le problème.
Je t'ai proposé une valeur d'altitude de 100 000 pieds car j'ai placé un objet de scène, dans FSX, qui est l'anneau de Halo ( du jeu du même nom ).
Bien sûr ceci n'est pas très réaliste de voir Halo sur la Corse, mais bon c'est pour le fun.

Vyrtuoz:
Alors je pense que les prochaines mises a jour vont te plaire :

Je suis en train de travailler sur un éditeur pour les objets reconnus pas Tacview. Il permettra de faire exactement ce que tu fais actuellement avec Excel : Tu pourras déclarer tes propres noms, types et couleurs. Et Tacview filtrera automatiquement tes enregistrements au chargement.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version